当前位置:   article > 正文

yolov5模型训练&opencv-dnn推理全过程_yolov5训练过程

yolov5训练过程

目录

1、环境搭建

2、数据处理

图片的获取

图片打标签

shep1:

step2:

step3:

3、数据变成yolo格式

对数据集进行整理

4、训练模型

编写数据配置文件

编写训练文件参数

运行训练代码

测试训练结果

5、opencv DNN 推理

前期准备活动

导出dnn

推理测试-python

关键代码:

6、遇到得问题总结

a、protobuf的版本问题

b、libiomp5md.dll已经存在

c、路径问题

d、无法顺利下载权重文件yolov5n6.pt


1、环境搭建

在训练模型前,我们需要搭建一个项目环境,这边使用Anaconda创建一个新环境

conda create -n yolo python=版本号

我们需要去获取yolov5s-6.2代码:https://github.com/ultralytics/yolov5

获取后,安装需要的库:

pip install -r requirements.txt

2、数据处理

在配置好环境以后,我们需要针对自己的任务,收集数据集,对其进行处理用以后续的训练

图片的获取

可以通过开源网站、爬虫爬取、视频抽帧、拍照来获取

图片打标签

数据集标注工作可以使用使用labor image软件,使用步骤如下

shep1:

进入虚拟环境,pip安装

pip install labelimg

step2:

安装完成后直接输入labelimg,即可直接打开软件

(其中快捷键的使用:

  • W: 创建一个标记的框选

  • A: 上一张图

  • D: 下一张图

  • Ctrl+S: 保存当前标图

  • Enter: 填好 class 后按 Enter 相当于点 OK)

step3:

完成标注后, 在目录下会自动生成 classes.txt 文件和图片对应的标记文件的.txt

对文件内容进行分析:

  • classes.txt记录标记时分出来的类目,序号从0开始, 从上到下,每个使用换行符

  • 图片.txt每行有5个数据, 第一个是 类目索引, 后面4个是归一化(把长宽看成是1,其他点等比缩小)的 xCenter, yCenter, width, height

3、数据变成yolo格式

对数据集进行整理

1、遍历txt和jpg,删除没有标签的图片(数据清洗)

2、对数据集进行7:2:1划分

划分后文件夹格式,如下图

4、训练模型

编写数据配置文件

a、拷贝项目下的 data/coco128.yaml 更名为 ***.yaml 并修改内容

b、拷贝项目下的 models/yolov5s.yaml 更名为 ***.yaml 并修改内容

编写训练文件参数

打开项目文件夹下train.py进行修改

修改画框部分,其中epochs:迭代次数、batch-size:一次训练所选取的样本数,需要根据自身训练机改变相应大小

运行训练代码

在完成上述操作后,开始运行train.py文件,训练完毕后,会在项目目录下runs/train/exp/下生成大量文件

其中,weight文件夹下会保存训练产生的最优模型和最终模型

测试训练结果

打开项目文件夹下detect.py进行修改

在完成上述操作后,开始运行detect.py文件,验证完毕即可查看内容

5、opencv DNN 推理

前期准备活动

在进入项目指定环境后,安装合适版本的onnx

pip install onnx

修改转出的模型文件export.py,按需修改下面的内容

导出dnn

在完成上述操作后,开始运行export.py文件,转出后就生成了best.onnx的模型文件,查看onnx的模型文件,可以看到模型文件的输入输出及类型都显示在上面。

推理测试-python

关键代码:

1.读取模型 net = cv2.dnn.readNetFromONNX(model)

2.输入(类似Tensor) blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (640, 640), swapRB=True, crop=False) swapRB:BGR->RGB net.setInput(blob)

3.推理 preds = net.forward()

4.非极大值抑制 cv2.dnn.NMSBoxes(boxes,confidences,0.25,0.45)

6、遇到得问题总结

a、protobuf的版本问题

解决方案:安装匹配版本

pip install protobuf==3.19.0

b、libiomp5md.dll已经存在

解决方案:根据python interpreter的路径,删除其目录下多余的libiomp5md.dll

  • 如果是在Anaconda的base环境下,删除…\anaconda3\Library\bin\libiomp5md.dll(目录中的第二个,第一个是torch下的)

  • 如果是在某个env(例如名为work)下:删除…\Anaconda3\envs\环境\Library\bin\libiomp5md.dll

c、路径问题

FileNotFoundError: [Errno 2] No such file or directory: 'VOCdevkit/VOC2012/ImageSets/Main/aeroplane_train.txt'

解决方案:将相对路径换成绝对路径

d、无法顺利下载权重文件yolov5n6.pt

解决方案:

修改权重文件下载指令,直接注释相关行

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/573674
推荐阅读
相关标签
  

闽ICP备14008679号