yolov5使用教程

yolov4的热度还没有过去,yolov5就来了,但是,Yolov5并不是yolov4的作者开发的,是一个牛逼团队开发的,据这个团队在github上的介绍,yolov5速度更快,精确到更高,模型也只有几十兆到一百兆之间,瞬间觉得很牛逼呀,但是一直对其保持着怀疑态度,正巧,这段时间,报了一个小比赛,就用yolov4和yolov5都去跑了一下,效果还在对比中,后续可能会给出结论来,估计跟作者说的也差不多。

yolov5的操作流程,比yolov4的操作流程,我个人觉得,要简单一些,大家有兴趣可以去看看开发团队给的教程:yolov5官方教程

我这呢,也就是总结一下我的操作过程:

第一步:将整个代码从github上下载下来,这个我就不细说了

第二步:创建自己的数据集,数据集的目录格式如下:
yolov5使用教程_第1张图片
基本上就是在你的yolov5目录下面的data文件夹下面创建一个属于你的数据的文件夹A,然后在A里面创建两个子目录,images和labels,然后再这两个文件夹下面又创建两个子文件夹,注意images和labels下面的子文件夹的名字要一样。

至于你要如何将你的数据弄成上面的这种形式,我这就不细说了,注意一点,图片和标签文件的名字要对应上,然后就是标签文件的形式是 类别 中心点x,中心点y, 边框宽度w, 边框高度h, 每个人的情况不一样,我的yolov4的那篇文章有些代码可以借鉴一下,大家如果觉得这块比较麻烦头疼,留言就行,我看情况将自己做这的代码给出来。我觉得这块对你们应该都不是问题。

第三步:修改两个文件,这两个文件的模板分别在你的yolov5目录下面的data和models目录下面。比如作者给的data目录下的coco128.yaml文件:
yolov5使用教程_第2张图片在这里,我们需要修改的地方就是train和val以及nc和names那四行,分别对应的是训练图片的路径,验证图片的路径,以及你的数据总的类别数量,和那些类别有哪些。这里有一个需要注意的地方,train:和val:以及nc:,name:这些后面要有一个空格跟路径这些隔开,不然会报错。。接下来,我们修改第二个文件,这第二个文件在models目录下面,比如models/ yolov5s.yaml,如下所示:
yolov5使用教程_第3张图片这个文件就更简单了,只需要nc:那行跟第一个文件对应上就可以了,还是要注意空格这个问题。

第四步:直接开始训练,训练命令如下:

python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --cfg ./models/yolov5s.yaml --weights weighs/yolov5s.pt

这里的–img代表的是输入网络的图片预处理后的照片尺寸,这里貌似没有像yolov4那种最低尺寸要四百多(纠正一个错误,刚刚发现yolov4里面只要输入尺寸是32的倍数都可以,所以128的尺寸输入也是可以训练的),我输入128也能训练,–batch就是每次输入网络的照片数量,这里如果太大了会超过gpu的显存,根据实际情况调整吧。–epoch代表要训练的循环次数,根据你的想法调。–data后面就是我们上一步更改的第一个文件,–cfg就是上一步更改的第二个文件,–weights就是开发团队训练好的模型,用来进行迁移训练,你可以加上也可以不加,不加的话可能就是训练效果不好以及训练时长更长。这个需要自己去作者给的链接去下载,我直接给你们链接吧,也是其它大佬分享的,训练好的模型这些应该都在里面,让那些没有梯子的老铁去百度云下载

链接:https://pan.baidu.com/s/1wqlTgj5EdlTpK4n_CKDRwQ
提取码:hfrp

好了,基本步骤就是这样了,大家要注意一下模型的选择,开发团队给了四个模型,这四个模型的效果如下所示:
yolov5使用教程_第4张图片我们在第四步中输入命令的时候,–cfg 和–weights要注意选择,看上面那张图我们可以发现,速度越慢,fps越高,模型越大,ap值就越大,准确度就越高,你要根据你的应用场景去选择。

至于效果,由于是训练的自己的比赛数据,所以就不展示了,我感觉效果还不错。我其实对这个团队的设计原理,模型框架还是很感兴趣的,希望这个团队后面能出论文来介绍一下他们这个网络和创新点吧。

刚刚看了哈我用yolov5-x的预训练模型去跑我的数据,跑下来的模型大小有接近700M,而我用yolov4跑下来的模型,大小只有200多M,所以,我开始对这个团队说的模型更小开始保持怀疑了,而且这个效果,我的数据是那种非常规的数据,感觉没有yolov4好。

2020 6.23

你可能感兴趣的:(yolov5)