YOLO v5训练自己的模型
1.1 前期准备
1.1.1 数据集的准备
数据集VOCdevkit文件夹内设置如下:
其中:
images和labels文件夹内都包含着train文件夹和val文件夹:
Images/train文件夹里面保存着训练集的照片;
Images/val文件夹里面保存着验证集的照片;
Labels/train文件夹里面保存着训练集的标签;
Labels/val文件夹里面保存着验证集的标签。
1.1.2 预训练权重准备
下载yolov5s.pt文件并将其放入weights文件夹中。
1.2 修改yaml文件
1.2.1 修改数据配置文件中
找到data目录下的voc.yaml文件,将该文件复制一份,将复制的文件重命名,最好和项目相关(如data_pothole),这样方便后面操作。
打开data_pothole.yaml文件,将箭头1中的那一行代码注释掉后,一共修改3处:箭头2中需要将训练和测试的数据集的绝对路径填上,箭头3中需要检测的类别数,箭头4中填写需要识别的类别的名字。
1.2.2 修改模型配置文件
由于该项目使用的是yolov5s.pt这个预训练权重,所以要使用models目录下的yolov5s.yaml文件中的相应参数(因为不同的预训练权重对应着不同的网络层数,所以用错预训练权重会报错)。
同上修改data目录下的yaml文件一样,将yolov5s.yaml文件复制一份,然后将其重命名,将其重命名为yolov5s_pothole.yaml。
打开yolov5s_pothole.yaml文件,修改数字就好了。
1.3 训练自己的模型
(1)将train.py文件中这三个文件位置换成自己的;
(2)更改模型的训练轮次epochs参数;
(3)根据自己电脑的配置,修改--batch-size:每次喂入批次文件的多少;修改--workers:最大工作核心数;
(4)运行train.py。
1.4 启用tensorbord查看参数
打开pycharm终端,cd到runs文件夹的上一层文件夹(应该是yolov5-5.0),然后输入tensorboard --logdir=runs/train,回车。
下图为训练20轮的结果:
1.5 进行预测
打开detect.py文件后,将权重--weights的路径设置为训练时产生的最好权重文件的路径(注意修改exp2即可);将—source设置为验证集图片的文件夹,批量预测验证集中的图片。
detect.py运行完成后,在runs下面会生成一个detect目录,预测结果会保存在exp目录下。