目录
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
解决方案:
修改权重文件下载指令,直接注释相关行
相关阅读
发表评论