今天学习了炮哥带你学的yolov5入门教程,并成功的训练出了模型,原博客地址:
目标检测—教你利用yolov5训练自己的目标检测模型
本文主要讲述了在Windows10环境下复现此项目的具体过程和遇到的一些问题及解决方法。
本文和此篇博客互为参考:
yolov5模型训练(学习笔记)
代码下载:
yolov5的github地址:yolov5
本项目百度网盘地址:yolov5-hat
提取码:pVG2 (来自up主炮哥带你学)
本文以百度网盘中的工程文件为例~
软件准备:
已安装好anaconda、pycharm
anaconda安装步骤可以参考此篇博客:
Anaconda安装步骤(Windows10)
windows10系统中通过anaconda安装pytorch的具体步骤可以阅读此篇博客:
anaconda安装pytorch(anaconda3,Windows10)
在上一步中我们通过anaconda安装了pytorch,并将其导入了pycharm,下面我们来将名称为pyotch环境中的编译器应用到工程文件中去。
1.我在D盘下新建了一个名为project的文件夹,将下载好的压缩包解压在此文件夹下,下载并解压好的文件如图所示:
2.右键点击yolov5-hat工程文件夹,点击Open Folder as PyCharm Project打开yolov5-hat工程文件,打开的界面如图所示:
3.点击文件→设置
4.选择Project Interpreter,选择刚刚导入pycharm的pytorch环境(见步骤(1)中博客),点击应用,最后点击确认
这样我们就成功将名称为pytorch环境中的编译器应用到了yolov5-hat工程中。
1.接下来对工程所需的依赖包进行安装,首先打开terminal
2.复制requirements.txt文件中的命令行:
pip install -r requirements.txt
粘贴在terminal中,并按回车键运行命令行,requirements中的依赖包就开始安装了
1.运行命令pip install -r requirements.txt出现错误:
ERROR: Could not build wheels for pycocotools which use PEP 517 and cannot be installed directly
如下图所示:
分析原因:
pycocotools即python api tools of COCO。COCO是一个大型的图像数据集,用于目标检测、分割、人的关键点检测、素材分割和标题生成。
查阅资料后得知,coco作者早期只发布了linux版本的coco数据集,在windows下使用coco需要通过其他的安装命令;
同时通过requirements安装依赖包,系统会先读取整个txt的依赖包名称并下载,只有全部读取并下载完成之后再一起安装,因此出现此错误时,因为pycocotools下载失败而终止了进程,导致requirements中的依赖包一个也未能安装
解决方案:
我们可以通过单独安装pycocotools的方法解决这一问题
1.打开Anaconda Prompt,输入下面的命令行并按回车键,进入pytorch环境
conda activate pytorch
2.输入下面的命令行安装pycocotools
conda install pycocotools -c Esri
输入y,并按回车键
3.等待pycocotools安装完成后,我们再次在terminals中输入命令pip install -r requirements.txt并按回车键,就可以顺利安装所有的依赖包了
4.在Anaconda Prompt中进入pytorch环境之后,输入下面的命令行可以查看pytorch环境下已经安装好的依赖包
conda list
同时我们还可以看到安装了2.0.2版本的pycocotools
(如遇到其他错误会后续更新…)
我们可以通过使用labelimg来制作我们自己的数据集,具体步骤可以阅读此篇博客:
数据集制作——使用labelimg制作数据集
yolov5作者给我们提供了相关的预训练权重,应用预训练权重能够使模型训练速度更快,精度更高
预训练权重地址
此项目的预训练权重为yolov5s.pt,并且百度网盘压缩包中提供了数据集和标签文件,此处不再赘述,想要训练其他模型的根据数据集自行打标签即可
同时为了方便起见,接下来我们就还使用此预训练模型进行复现
1.打开hat.yaml,yolov5_hat.yaml,train.py三个文件
将hat.yaml文件中的图片路径改为自己电脑中的路径,同时确保标签种类(number of classes)为2,标签名称(class names)是标记的两种
2.确保yolov5_hat.yaml中标签种类(number of classes)为2
3.在train.py文件中确保权重(weight)、模型(model)、数据(data)三者的路径正确
weights:初始化的权重文件的路径地址
cfg:模型yaml文件的路径地址
data:数据yaml文件的路径地址
1.代码中的epochs是指整个模型一共在数据集上训练多少次;batch-size则是指一次训练用几张图片
下面以epochs=50,batch-size=4为例
2.运行train.py文件,开始训练模型
因为训练模型时间较长,结果就不展示了~
1.遇到错误AssertionError: Image Not Found D:\PycharmProjects\yolov5-hat\VOCdevkit\images\images\train\00000.jpg
如下图所示:
解决方案:
在模型训练过程中,会创建新的模型训练附属文件
此工程中有残留的上次的模型训练附属文件,在label文件夹下删除train.cache和val.cache后再重新运行train.py即可
2.如果遇到out of memory等错,是因为显卡内存不够,就降低batch-size;还有number workers等等,不再赘述
(如遇到其他错误会后续更新…)
效果测试将以压缩包中自带的best.pt权重文件进行测试
2.将想进行测试的图片放在工程目录下,如图所示:
3.将source名称改为要测试的图片名称
4.运行defect.py,可以看到运行结果在runs\detect\exp11文件夹下,得到结果如下图所示:
1.遇到错误AttributeError: ‘Upsample’ object has no attribute ‘recompute_scale_factor’
解决步骤:
1.点击upsampling.py
2.在第153和154行找到下图所示代码
3.将其更改为:
return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)