1、YOLOv5的训练
yolov5的原理什么的就不说了,百度搜一搜不少,这里具体说一下怎么训练本身的数据集,官方的yolov5是在coco数据集上训练的,本文是在voc数据集上进行训练,对于本身的训练数据能够仿照voc数据集进行制做!python
YOLOv5的git项目:参考github项目YOLOv5,若须要官方的预训练权重,该项目的大佬也给出了,感谢大佬作出的工做!将项目git到本地!git
1.建立数据集文件夹
数据存放的目录以下:在datasets文件夹下创建以下文件目录,其中训练须要用到的是score/images和score/labels两个,image下分为了train和val两个文件夹,其中分别放的是训练图片和测试图片,以下所示:
labels文件夹下放的对应的labels文件,labels文件格式以下:
每个txt文件都是一张图片的label和location信息,这里面的数据是从xml文件中提取出的,第一个表示类别,后面时归一化后的坐标值,至此数据就准备结束!github
2.修改数据集配置文件
在data文件下存放着数据集对应的配置文件yaml文件,主要指明了数据集的路径信息,以下:须要根据本身的数据集修改相应的信息!测试
3.选择模型,修改相应的配置文件
yolov5官方一共提供了yolov5s.yaml、yolov5m.yaml、yolov5l.yaml、yolov5x.yaml四个不一样大小的模型,他们的精度与速度也各有不一样,官方有给出具体的数据,以下所示:你们能够根据本身的需求选择相应的模型,我这里选择的时最小的yolov5s模型,由于速度最快!!!选择什么模型,就须要修改models文件夹下对应的yaml文件,这里咱们须要修改yolov5s.yaml文件:
须要修改的地方就一个,就是本身的类别数量nc,voc数据集是20类,所以将nc改成20!spa
4.开始训练
在train.py文件里修改相应的训练参数:batch、epoch、cfg、data等参数,可参考个人设置以下如若须要加载预训练权重或者断点续训,可将train.py中下面两行代码进行修改,从头开始训练就将下面第一行代码打开,第二行注释,反之就是加载预训练权重或断点续训:code
# parser.add_argument('--resume', action='store_true', help='resume training from yolov5s_last.pt')#从头开始训练 parser.add_argument('--resume', default='weights/yolov5s_last.pt', help='resume training from yolov5s_last.pt')#加载预训练权重或断点续训
2、YOLOv5模型的测试
1.测试MAP
测试map的代码时test.py,根据须要修改weights、batch、data等参数,可参考以下:可能会报错cuda内存不够,此时将batch改小就行,根据须要修改conf-thres阈值(分类得分阈值)和iou-thres(iou阈值)。
本文一共训练了500个epoch,测试map结果以下:最终的MAP值为51.5,比官方差点(毕竟是官方)!!!视频
2.测试图片或者视频
这部分的代码在detect.py里,也是自行按需修改,可参考本文的设置:里面我作了一些小的调整,主要是要修改测试图片和视频的路径,你们根据本身实际状况来,若有疑问,评论区可留言!!!测试图片和视频都是这个代码,很方便!!!!xml
下面就是摆效果图的时刻了!!!!
不得不说,yolov5是真的很强,速度还贼快!!!!
视频测试的效果就不放了,太大了,你们本身去尝试吧!!!图片
YOLOv5训练测试这块说完了,下面就要介绍pt模型转onnx转ncnn了,下次见!!!!!!!!!内存