.pth转.weights/openCV-python + YOLO v3实现目标检测

文章目录

前言

  毕设做的是水面目标的目标检测,因为要用Tkinter制作用户界面,于是采用openCV库来实现图像的处理,恰好openCV支持YOLO v3的部署……

一、基于Pytorch框架的YOLO v3

  因为对Python比较熟悉,综合考虑后选择用Pytorch框架实现,奈何自己太菜,只能去Github上找现成的YOLO v3代码,这个项目里面有详细的使用说明,很容易就上手了,非常感谢作者👍
  网络模型有了,加上数据就可以炼丹了,这里用的数据集是SeaShips(7000),格式是VOC格式,代码需要的也是VOC格式,所以改好文件夹路径就可以直接上了。训练用的是Google Colab,白嫖虽爽,但是也有很多不方便,后面再单独整理一篇使用记录吧

二、openCV-python

  openCV是很常用的图像处理库,支持python、C++等语言,这里用的是openCV-python
  openCV中的dnn模块实现了基于Darknet框架的YOLO v3网络,也就是说,模块给你搭好了网络,只需要你自己填入网络参数就好了,这个网络参数就是训练模型得到的权重文件
  训练模型时用的框架是Pytorch,而Pytorch框架下的权重文件是.pth格式,而openCV的dnn模块对于YOLO网络仅支持Darknet框架,于是乎,需要把.pth转为.weights格式(.weights是Darknet框架下的权重文件格式)

三、.pth转.weights

图1-.pth权重文件的网络结构示意图
  图1是训练得到的权重文件的网络结构,实际上这个.pth文件保存的是网络结构+权重参数,具体来说是嵌套的ordereddict
图2-转换格式的部分代码
  图2是转换格式的部分代码,因为在Darknet框架下,YOLO v3的cfg文件是不变的,因此对照cfg文件的网络配置,就可以一层一层的,按照顺序将.pth格式的网络权重参数(numpy数组)转换成.weights所需的二进制格式。如果需要转换代码的话,在评论区留邮箱吧

四 模型部署

  模型部署可以参考这篇博客的正文,代码都有注释,很容易理解

总结

  上面主要讲了对于YOLO v3网络,如何将.pth格式的权重文件转成.weights,其他的像训练模型、部署模型有很多现成的资料供参考,这里就不重复了

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2023年5月5日
下一篇 2023年5月5日

相关推荐