使用YOLOv5训练自己的数据集

使用YOLOv5训练自己的数据

新东西出来,总是要试试,这几天使用了yolov5跑了几个模型,特来记录一下心得与坑。
作者给出的教程,可以先浏览一下: link.
源码下载链接: link.

一.环境部署

yolov5基于pytouch,在测试时发现与环境内的tensorflow会产生冲突,建议用ANACONDA新建pytouch的独立环境。
打开文件夹里的requirements.txt文件,用ANACONDA手动安装,或

pip install -U -r requirements.txt

在这里插入图片描述

二.数据集准备

yolov5使用的是yolo格式的标注文件,内容长这样,第一个数是标签的序号,后面四个是坐标。
在这里插入图片描述
标注软件依然是labelimg,在使用前将VOC格式转换为YOLO即可
在这里插入图片描述
如果有之前标注好的xml文件,可以通过脚本直接转成yolo所需的txt格式: link.
不过在转换完成后记得添加labels文件,标注文件根据序号从labels里面对应标签。
在这里插入图片描述
标注完后,建立如下目录,目录要求除了images/labels不同外,其他文件夹名必须相同,程序会根据images的路径推算出labels的路径。
在这里插入图片描述
到此数据集准备完毕,在data/coco128.yaml文件里,修改为自己的参数,到这一步就可以尝试train。

三.参数调整

yolov5提供了几种权重供选择,其中5l的性价比最高,适合CV爱好者日常研究;5x效果最好,如果硬件配置低,还可以选用只有27M的5s
在这里插入图片描述
在train.py修改你选用的权重,并前往权重文件中将nc改为和你样本库匹配的值。
根据要求修改epoch和batchsize,就可以开始初步的训练了。
在这里插入图片描述

四:常见问题

下面有朋友遇到了这个问题:

// File "D:\yolov5-master\test.py", line 89, in test img = img.half() if half else img.float() # uint8 to fp16/32 UnboundLocalError: local variable 'half' referenced before assignment

我们常见的float数据占用32bit, double数据占用64bit,而half()这个函数将数据占用降到了16bit,称为半精度,在yolov5中也内置了这个函数,降低精度换来速度。
这边主要是在用GPU跑时正常,在用CPU跑时使用半精度。
而部分版本的yolov5里half代码是不完整的(三个朋友下了三个不同的版本)
而报上面那个错的原因主要是在test.py里面,在判断 if modle is none:时,未定义half的值

    if model is None:
        training = False
        device = torch_utils.select_device(opt.device, batch_size=batch_size)
        half = device.type != 'cpu'  # half precision only supported on CUDA;
    else:  # called by train.py
        training = True
        device = next(model.parameters()).device  # get model device
        # half disabled https://github.com/ultralytics/yolov5/issues/99
        half = False  # device.type != 'cpu' and torch.cuda.device_count() == 1
        if half:
            model.half()  # to FP16

在if else中都有体现half,根据上述代码查验即可,当然,也可以直接ctrl+f搜索half,将后续用到half的地方,如

img = img.half() if half else img.float()

在此调用了half,half的值应为(t or f)
直接改成

img = img.half() #二选一
img = img.float() #half都没用上,自然也不会报错了(狗头.jpg)

在windows下训练时不定时报错[win error5],原因大概是在多线程的时候出了问题,具体解决方法未找到,换成ubuntu后一切正常。

版权声明:本文为CSDN博主「Laovife」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/laovife/article/details/106802725

Laovife

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

yolov5模型训练(自制数据集)

这些东西是我从什么都不知道 熬了十天晚上左右 摸打滚爬于csdn、github总结出来的 在训练过程中遇到什么问题可以在评论区留言或者私信 看到会一一回复 呜呜呜/(ㄒoㄒ)/~~ 1.制作数据集 1.1 lableimg使用&#xff08