关于上一篇的YOLOv5讲到数据集打包结束,之后的后续训练工作会在此篇继续进行说明。(Linux系统下训练数据集,在此用的是Ubuntu20.04)

  第一步准备工作先是配置环境:

    在当前文件目录下打开终端输入:

pip install -r requirements.txt

安装cuda 11.2,在根目录下打开终端:

wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run

sudo sh cuda_11.2.0_460.27.04_linux.run

这里大家可以做一个参考,需要详细内容的请自行在官网查看,在这里附上官网链接:https://developer.nvidia.com/cuda-toolkit-archive

  接下来运用官网给的模型运行程序:

在当前文件夹下打开终端输入命令:

python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/

这行命令其中:weights是要导入模型的路径;img是传入图片的像素大小;conf是阈值,识别的结果超出阈值才会输出;source是识别图像的路径。

更多的操作可以打开detect.py查看,用摄像头打开的程序命令为:

python vedio_detect.py

  下一步正式进入自己的数据集训练部分:

先进入“./datasets/Own_coco/”里面有三个文件夹,分别是“images,labels,xml_dir”,依次进入“images/train2017”,“labels/train2017”,“xml_dir”,将里面的文件清空;

1.将自己打标好的“.xml”文件放在“./datasets/Own_coco/xml_dir”,将图片放在“./datasets/Own_coco/images/train2017”;

2.回到当前文件的目录下运行:

voc_lable.py

进入此修改第12行,加入训练物品的名称,命令:

python voc_lable.py

3.配置文件

在当前文件目录下进入“./data”,打开Own_coco.yaml;

配置文件解释:(第11行的“path: datasets/Own_coco”是数据集的目录,不需要改动;第12行的“train: images/train2017”是训练图片的文件位置,不需要改动;第13行的“val: images/train2017”是评估的文件位置,可以自行改动;第14行的“test:”是测试集的文件位置,可以添加自己的测试集;第17行的“nc:1”是自己数据集的类别数量,第18行的“names: ['glasses']”是类别名称,有多少就写多少,各个类别之间用逗号隔开。)

4.开始训练:

在当前文件夹下打开终端输入:

python3 train.py --img 640 --batch 16 --epochs 1000 --data Own_coco.yaml --weights yolov5s.pt --cache

注释:(img是传入图片像素的大小;batch是每一次迭代送到网络的图片数量,也称作批数量,增大这个可以让网络在较少的迭代次数下完成一个epoch,在固定最大迭代次数的前提下,增加batch会延长训练时间,但会更好的寻找到梯度下降的方向,如果在大家的显存足够大,可以适当的增大这个值来提高内存的利用率,需要不断地尝试选取,过小会让训练不够收敛,过大会陷入局部最优;epoch是迭代的次数;data是配置文件;weights是模型。)

等待训练结束会输出:

Results saved to runs/train/exp4

训练出的模型在“./runs/train/exp/weights/best.pt

最后一步就是运行自己的模型啦:

 python detect.py --weights runs/train/exp/weights/best.pt --img 640 --conf 0.25 --source data/images/

成果展示:(以我自己训练的药品数据集为例给小伙伴们看一下)

1.文件detect.py的源码:(只截取了两页,这两页是改动较多和相对来说比较重要的部分)

2.在进行训练过程中,终端会显示:

3.训练结束后,训练的数据集结果图片:

4.运行自己的模型,在终端输入python3 detect.py,会显示:

5.如果是直接用自己电脑自带的摄像头代号“0”投出的图像:

6.如果是用外接摄像头,我这里接了深度相机,代号“2”,投出的图像:

————————————————————————————————————华丽的分割线——————————————————————————————————————————

到这里就全部讲完啦,两篇之间隔得时间有点久了,但总归还是结束了,下篇我会继续写有关于上一篇发布的旭日X3派的项目实战的详细内容,可能篇幅和每篇之间更新时间会稍微有些长,毕竟是个比较大的工程啦,祝小伙伴们秋日顺遂!