1.在github下载源码

yolov5项目rknn模型精度优化 yolov5 模型训练_人工智能

2.准备数据集

(1)创建数据集文件夹

        在yolov5文件夹里创建一个shujuji文件夹,可以自己命名,不要中文。

        

yolov5项目rknn模型精度优化 yolov5 模型训练_迁移学习_02

         shujuji文件夹里再创建两个文件夹分别是训练集和验证集

yolov5项目rknn模型精度优化 yolov5 模型训练_人工智能_03

        接着分别在train 和 val 文件夹里创建images 和 labels ,第一个文件夹里放要训练的图片

        第二个用labelimg工具标注后生成的标注文件(举例:.txt,  .xml)

yolov5项目rknn模型精度优化 yolov5 模型训练_迁移学习_04

(2)下载标注工具labelimg

pip install labelimg

        下载到对应的环境,接着输入labelimg,就打开了

yolov5项目rknn模型精度优化 yolov5 模型训练_人工智能_05

(3)标注图片 

        打开labelimg工具,在工具里打开要标注的图片文件夹,设置生成的文本保存位置到         train/labels 下(保存路径一般会自动提示)

yolov5项目rknn模型精度优化 yolov5 模型训练_迁移学习_06

yolov5项目rknn模型精度优化 yolov5 模型训练_迁移学习_07

        我的文件夹里准备了56张口罩图片,接下来就是标注工作~ 

        如果图片太多,一次不能全部标注完,关闭labelimg工具继续上次标注,

(4)标注完成

yolov5项目rknn模型精度优化 yolov5 模型训练_人工智能_08

 给val文件夹里也拷贝一份,要放到对应目录!

声明一下:因为没有验证集会报错,其实我这里是不规范的,只是为方便跑起来将训练集和验证集用的一样了

最终是这样子的:

yolov5项目rknn模型精度优化 yolov5 模型训练_权重_09

3.修改yaml文件

        在目录下找到data 和 models 这两个文件夹

yolov5项目rknn模型精度优化 yolov5 模型训练_人工智能_10

        编辑data/coco128.yaml文件

        names根据自己标注的类别填

yolov5项目rknn模型精度优化 yolov5 模型训练_yolov5项目rknn模型精度优化_11

       

        接着再编辑models/yolov5s.yaml文件

        有几个类别,nc就填几

yolov5项目rknn模型精度优化 yolov5 模型训练_YOLO_12

         

4.下载权重文件

         打开官网下拉就可以看到

yolov5项目rknn模型精度优化 yolov5 模型训练_yolov5项目rknn模型精度优化_13

         将yolov5s.pt放到yolov5-master目录下

5.train.py 指令运行 

常规参数解释:   

weights:权重文件路径

cfg:存储模型结构的配置文件

data:存储训练、测试数据的文件

epochs:指的就是训练过程中整个数据集将被迭代(训练)了多少次,显卡不行你就调小点。

batch-size:训练完多少张图片才进行权重更新,显卡不行就调小点。

img-size:输入图片宽高,显卡不行就调小点。

device:cuda device, i.e. 0 or 0,1,2,3 or cpu。选择使用GPU还是CPU

workers:线程数。默认是8

(1)第一次运行

python train.py --weights yolov5s.pt  --cfg models/yolov5s.yaml  --data data/coco128.yaml --epoch 100 --batch-size 8 --img 640   --device cpu

GPU训练的话将device后面的改成0

我按了回车后,不一会就报错了

yolov5项目rknn模型精度优化 yolov5 模型训练_人工智能_14


 

 解决这个问题仅需要修改一下 utils/dataloaders.py 里的一个参数num_workers

将nw改成0

yolov5项目rknn模型精度优化 yolov5 模型训练_权重_15

(2)第二次运行 

跑起来了

yolov5项目rknn模型精度优化 yolov5 模型训练_YOLO_16

yolov5项目rknn模型精度优化 yolov5 模型训练_迁移学习_17

 

yolov5项目rknn模型精度优化 yolov5 模型训练_YOLO_18

6.测试训练结果

python detect.py --weights best.pt  --device cpu --source img/

        从shujuji中拿出四张图片测试了一下,结果如下

yolov5项目rknn模型精度优化 yolov5 模型训练_人工智能_19

总结:

        比较麻烦的训练前的工作,比如数据的准备,有图片,有将要生成的标注文件,这些路径都不能搞错,然后就是修改yaml文件,coco128.yaml里不要空行,特别是最后一行,整行都是注释的也不要。