赞
踩
【 如果看完此文章有啥疑问,或者有啥错误的地方,大家都可以在下面的评论区,讨论指出。】
【作者码字不易。希望可以得到你们的点赞关注,有你们的鼓励支持,往后一定会出更多优质的文章,谢谢大家!!】
如图,图中和本文有关的(也是必须要用到的)几个文件夹:
(1)data:里面存放数据集的配置文件,也可以将自己的数据集放在此文件夹中
文件夹内容如图所示,其中我们可以根据coco128.yaml配置文件中的代码存储格式来创建自己的yaml配置文件,简单的说就是将coco128.yaml文件中的代码复制到自己创建的文件夹中。然后根具自己的需要进行修改,讲解如下图1所示。
图1
如图1,path路径是数据集存放的总路径,其中数据集框架如下图2所示建立(仅供参考)。
图2
如果你还是不知道如何放置数据集,你可以在下面训练代码时,将data数据集改成coco128数据集,这样代码会帮你自动从官网下载coco128数据集,可以参考此文件夹格式。
图1中,train和val的路径如图所示放置,紧接着下面会出现classes,这个是你需要训练模型的目标的分类,如图原yolov5代码中分为80类,你可以修改成自己需要的类别,其格式和源代码保持一致。
图3
如图3,在models文件夹中yolov5提供了五个可以训练的网络模型,其中他们的区别图如图4
图4
通过图4,可以得出以下结论:
YoloV5提供了5个主要的预先训练的网络模型,分别是YoloV5S、YoloV5M、YoloV5L、YoloV5X和YoloV5N。下面是它们的主要区别:
1. YoloV5S:最小,轻量级,适用于移动设备以及低功耗设备上的实时目标检测。但是检测精度相对较低。
2. YoloV5M:中等大小,速度快,检测精度相对于YoloV5S更高。适合于中等硬件性能的设备。
3. YoloV5L:较大,更精确,适合于高功率设备或需要高分辨率检测的应用。
4. YoloV5X:大型,包含更多的卷积层和更高的容量,性能最好。但是需要更多的内存和计算资源。
5. YoloV5N:轻量级网络,适合于嵌入式设备或边缘计算设备,快速识别难以检测的小目标等。
因此,选择哪种预训练模型通常取决于应用需求和硬件资源。如果需要高精度和高速度,则可以使用较大的模型。若需要低功耗运行,则可以选择较小的模型。
所以可以根据自己的需要,来选择自己的网络模型进行训练。
接下来,我们以yolov5s的yaml文件为例,如图5:
图5
图5为yolov5s.yaml文件中上面的一部分,在修改配置文件时,我们需要修改的地方为nc变量,nc的值和我们前面图1中的classes中的类别相对应,那边有几类,这边就填写几。下面anachors为候选框,等下一次整理优化模型模型调参数时,会讲到。
当我们做完上面的工作时,就已经完成前期的准备工作了,下面我们讲讲train中的参数的含义,以及常用的参数。
如图6,在yolo文件中,我们会常看到如下的参数列表:
图6
相信大家看到,一定会想,这么多参数,我怎么记得住啊!!!!
那么我将会引领大家,熟悉几个常用的参数:
(1)weights:此参数是传入模型训练时的预训练权重的,如yolov5中的yolov5s.pt文件,在本文的第二张图片中可以看到,这个是官方给的配置文件,在自己第一次训练模型时,可以拿出来使用,来提高模型的训练成效。如果不需要,也可以将此参数设置为空。如 default=' '。
(2)cfg:这个参数传入的是我们前面讲的models中的网络模型的yaml文件的地址。
(3)data:传入的是data文件夹中的配置文件的地址,而不是我们数据集的地址。
(4)epochs:此参数表示训练的轮次,这个由自己定义,传入的是数字。
(5)batch-size:表示一次传入图片的量,也是数字,但这个数字是根据自己电脑的显卡的内存来决定的,如果设置太大,导致超出了显卡内存,会报错。如果设置太小,会导致训练时间太长。所以大家更具自己电脑的显卡配置来设置。
(6)device:此参数是设置使用cpu训练还是gpu训练,更具自己电脑配置来。
常用参数我们就已经讲完了,现在大家可以训练了。我一般都是通过pycharm终端训练,终端输入conda activate 自己的虚拟环境,转到自己的环境下面,输入以下命令(仅供参考,为了大家可以使用上面参数,我将会都写一遍)
python train.py --weights '' --data helmet.yaml --cfg v5s_helmet.yaml --epochs 5 --device cpu --batch-size 16 (此命令使用cpu训练,如果需要gpu可以将cpu改为0。0代表电脑中第一个独显)
接着我们训练完模型就可以得到runs文件夹下的一个train文件下的exp文件夹,这里面存放的就是我们训练完结果的一些报告,后期我们可以根据这些报告来优化我们的模型。
到此我们已经训练完我们的模型了,上文中的exp文件夹下的weights文件夹是中有两个权重文件best和last,我们一般使用best文件进行我们接下来的推理过程。
在detect.py中,也有和train.py类似的参数列表如图7:
图7
我们进行模型推理时,也只需要了解其中的几个参数即可:
(1)weights:这个参数传入的是我们训练出的模型中的权重(exp文件夹下的weights文件夹中的best.pt文件),传入的此文件的地址。
(2)source:传入需要推理的图片或者视频的地址
推理时,我们目前只需要用到这两个参数。(命令如下)
python detect.py --weights F:\about_yolov5\yolov5-master\runs\train\exp6\weights\best.pt --source F:\SuJuJi\video\jiance.avi
推理完的视频存在runs文件夹下的detect文件中。
到此我们的模型训练和推理就已经全部结束啦!!!!
码字不容易,希望屏幕前可爱帅气的你,留下关注和点赞再走叭!!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。