小白使用YOLO5—v5.0训练猫狗数据的全过程及所遇到的坑

目录

1.YOLO5下载

YOLO预训练模型下载

2. 数据集的准备

3.搭配YOLO5环境

1.安装CUDA和pytorch(网上教程很多此处不再赘述,注意pytorch不要安装成CPU版本的)

2.在终端里cd 到 yolov5-v5.0目录下 安装requirements.txt文件里的包

4.配置YOLO5代码

5.结果展示

6.遇到的问题 

1.AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘XXX‘问题

2.RuntimeError: result type Float can‘t be cast to the desired output type __int64

3.数据集定义了两个猫狗两个类别,但是训练结果只有一个


1.YOLO5-v5.0下载

地址:项目目录预览 - yolov5 - GitCode

YOLO预训练模型下载

(我这里选择yolo5s.pt轻量级的,文件一般越大精度越高但所需的时间,要求的配置也相应增加)

官方地址:(点击直接访问,不用github加速,打开后划到页面最下面即可)

(建议下载Watt Toolkit加速github网页)Release v6.0 - YOLOv5n 'Nano' models, Roboflow integration, TensorFlow export, OpenCV DNN support · ultralytics/yolov5 · GitHubYOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.icon-default.png?t=N7T8https://github.com/ultralytics/yolov5/releases/tag/v6.0

这里下载速度可能会很慢给大家推荐给好用的软件 motrix

复制下载链接到软件上提交即可

2. 数据集的准备

下载地址:Dogs vs. Cats | Kaggle

 可以参考大佬文章:目标检测---数据集格式转化及训练集和验证集划分_训练集和验证集的划分代码-CSDN博客

使用labelimg工具对数据集打标签

注意:yolo5使用的是txt文件格式(xml和txt文件可以互转)

        voc标签格式,保存为xml文件。

        yolo标签格式,保存为txt文件。

将下载的图片和打的标签分别保存在不同的文件夹 

数据集划分为训练集和测试集

按照这种格式划分数据集(images里放图片,labels里放标签),(train里放训练集,val里放测试集)

3.搭配YOLO5环境

1.安装CUDA和pytorch(网上教程很多此处不再赘述,注意pytorch不要安装成CPU版本的)

安装完成后可以用以下代码测试

import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.cuda.is_available())  #输出为True,则安装无误

结果:

这里cu121代表安装的是GPU版本 

2.在终端里cd 到 yolov5-v5.0目录下 安装requirements.txt文件里的包

cd yolov5-v5.0
pip install -r requirements.txt

4.配置YOLO5代码

1.找到data文件下的voc.py文件复制粘贴

修改其中的文件  

这里的  nc 是标签类别的个数

2.找到models文件下的yolov5s.yaml文件复制粘贴(这里根据自己下载的预训练模型来、,我下载的是yolo5s.pt 所以选择yolov5s.yaml)

修改其中的nc=2

3.修改主目录下的train.py文件

将weights  , cfg,data 里的help 改为对应的路径  (这里我将下载好的yolov5s.pt放在了weights 文件夹下)(Windows电脑所有路径都应gaiw)

epochs :200 :训练的轮数

batch-size:12 : 根据自己的电脑配置来出现GPU不足就调低

img-size :640,640 :图片的分辨率也是根据自己的电脑配置

完成上述操作之后就可以运行了

运行开始时会在你的数据集文件夹下下载 两个文件

训练结束后可以在runs文件夹下的train文件里的exp 查看训练结果

这里的weights文件夹下存放着如下两个(训练结果)文件(待会用到)

4.找到主目录下的detect.py文件(我们用它来测试训练结果)

weights  修改其中的路径为刚刚训练出来的best.pt文件路径

source  放置想要测试的图片路径(视频路径和图片一样,如果想打开摄像头设置为0即可)

运行结果可在runs文件夹下的detect里的exp下查看

5.找到主目录下的text.py文件  测试训练的模型的精度 

修改其中的weights和data  (方法同上)并在runs文件下会生成text.py文件

5.结果展示

6.遇到的问题 

1.AttributeError: Can‘t get attribute ‘SPPF‘ on <module ‘models.common‘ from ‘XXX‘问题

解决:这里是YOLO5的common.py文件缺少了SPPF类在官网找到YOLO的common.py里的SPPF类复制粘贴到本地文件即可

在model文件下找到common.py文件

地址:项目文件预览 - yolov5 - GitCode

2.RuntimeError: result type Float can‘t be cast to the desired output type __int64

解决方法:找到utils文件夹下的loss.py文件,搜索  gain = torch.ones(7, device=targets.device)  将其修改为gain = torch.ones(7, device=targets.device).long()

3.数据集定义了两个猫狗两个类别,但是训练结果只有一个

查看runs文件下的exp文件里的图片发现dog没有

这是正常的

   原因:猫狗数据集的标签TXT里只定义了一种类别'0'

   解决办法:将猫狗分别定义为0,1

大佬文章


dd目标检测---教你利用yolov5训练自己的目标检测模型_目标检测 教你利用-CSDN博客

后续

使用YOLO5—V7.0转成onnx并测试-CSDN博客

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值