目标检测—基于Yolov5的目标检测项目(学习笔记)

今天学习了炮哥带你学的yolov5入门教程,并成功的训练出了模型,原博客地址:
目标检测—教你利用yolov5训练自己的目标检测模型

本文主要讲述了在Windows10环境下复现此项目的具体过程和遇到的一些问题及解决方法。

本文和此篇博客互为参考:
yolov5模型训练(学习笔记)

主要包括以下内容:

  • 一、环境搭建
    • (1)pytorch安装
    • (2)将pytorch应用到工程
    • (3)requirements中的依赖包安装
    • (4)环境搭建可能遇到的问题
  • 二、数据集制作
  • 三、yolov5模型训练
    • (1)配置文件修改
    • (2)模型训练
    • (3)模型训练可能遇到的问题
  • 四、测试结果
    • (1)图片测试步骤
    • (2)测试可能遇到的问题

代码下载:
yolov5的github地址:yolov5
本项目百度网盘地址:yolov5-hat
提取码:pVG2 (来自up主炮哥带你学)
本文以百度网盘中的工程文件为例~

软件准备:
已安装好anaconda、pycharm
anaconda安装步骤可以参考此篇博客:
Anaconda安装步骤(Windows10)

一、环境搭建

(1)pytorch安装

windows10系统中通过anaconda安装pytorch的具体步骤可以阅读此篇博客:
anaconda安装pytorch(anaconda3,Windows10)

(2)将pytorch应用到工程

在上一步中我们通过anaconda安装了pytorch,并将其导入了pycharm,下面我们来将名称为pyotch环境中的编译器应用到工程文件中去。

1.我在D盘下新建了一个名为project的文件夹,将下载好的压缩包解压在此文件夹下,下载并解压好的文件如图所示:
目标检测—基于Yolov5的目标检测项目(学习笔记)_第1张图片

2.右键点击yolov5-hat工程文件夹,点击Open Folder as PyCharm Project打开yolov5-hat工程文件,打开的界面如图所示:
目标检测—基于Yolov5的目标检测项目(学习笔记)_第2张图片

3.点击文件设置
目标检测—基于Yolov5的目标检测项目(学习笔记)_第3张图片
4.选择Project Interpreter,选择刚刚导入pycharm的pytorch环境(见步骤(1)中博客),点击应用,最后点击确认
目标检测—基于Yolov5的目标检测项目(学习笔记)_第4张图片
这样我们就成功将名称为pytorch环境中的编译器应用到了yolov5-hat工程中。

(3)requirements中的依赖包安装

1.接下来对工程所需的依赖包进行安装,首先打开terminal
目标检测—基于Yolov5的目标检测项目(学习笔记)_第5张图片
2.复制requirements.txt文件中的命令行:

pip install -r requirements.txt

粘贴在terminal中,并按回车键运行命令行,requirements中的依赖包就开始安装了
目标检测—基于Yolov5的目标检测项目(学习笔记)_第6张图片

(4)环境搭建可能遇到的问题

1.运行命令pip install -r requirements.txt出现错误:
ERROR: Could not build wheels for pycocotools which use PEP 517 and cannot be installed directly
如下图所示:
目标检测—基于Yolov5的目标检测项目(学习笔记)_第7张图片
分析原因:
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,并按回车键
目标检测—基于Yolov5的目标检测项目(学习笔记)_第8张图片
3.等待pycocotools安装完成后,我们再次在terminals中输入命令pip install -r requirements.txt并按回车键,就可以顺利安装所有的依赖包了

目标检测—基于Yolov5的目标检测项目(学习笔记)_第9张图片
目标检测—基于Yolov5的目标检测项目(学习笔记)_第10张图片
4.在Anaconda Prompt中进入pytorch环境之后,输入下面的命令行可以查看pytorch环境下已经安装好的依赖包

conda list

目标检测—基于Yolov5的目标检测项目(学习笔记)_第11张图片
同时我们还可以看到安装了2.0.2版本的pycocotools目标检测—基于Yolov5的目标检测项目(学习笔记)_第12张图片
(如遇到其他错误会后续更新…)

二、数据集制作

我们可以通过使用labelimg来制作我们自己的数据集,具体步骤可以阅读此篇博客:
数据集制作——使用labelimg制作数据集
yolov5作者给我们提供了相关的预训练权重,应用预训练权重能够使模型训练速度更快,精度更高
预训练权重地址
目标检测—基于Yolov5的目标检测项目(学习笔记)_第13张图片
此项目的预训练权重为yolov5s.pt,并且百度网盘压缩包中提供了数据集和标签文件,此处不再赘述,想要训练其他模型的根据数据集自行打标签即可
同时为了方便起见,接下来我们就还使用此预训练模型进行复现

三、yolov5模型训练

(1)配置文件修改

1.打开hat.yaml,yolov5_hat.yaml,train.py三个文件
将hat.yaml文件中的图片路径改为自己电脑中的路径,同时确保标签种类(number of classes)为2,标签名称(class names)是标记的两种
目标检测—基于Yolov5的目标检测项目(学习笔记)_第14张图片
2.确保yolov5_hat.yaml中标签种类(number of classes)为2

目标检测—基于Yolov5的目标检测项目(学习笔记)_第15张图片
3.在train.py文件中确保权重(weight)、模型(model)、数据(data)三者的路径正确
目标检测—基于Yolov5的目标检测项目(学习笔记)_第16张图片weights:初始化的权重文件的路径地址
cfg:模型yaml文件的路径地址
data:数据yaml文件的路径地址

(2)模型训练

1.代码中的epochs是指整个模型一共在数据集上训练多少次;batch-size则是指一次训练用几张图片
目标检测—基于Yolov5的目标检测项目(学习笔记)_第17张图片
下面以epochs=50,batch-size=4为例

2.运行train.py文件,开始训练模型

目标检测—基于Yolov5的目标检测项目(学习笔记)_第18张图片

因为训练模型时间较长,结果就不展示了~

(3)模型训练可能遇到的问题

1.遇到错误AssertionError: Image Not Found D:\PycharmProjects\yolov5-hat\VOCdevkit\images\images\train\00000.jpg
如下图所示:
目标检测—基于Yolov5的目标检测项目(学习笔记)_第19张图片
解决方案:
在模型训练过程中,会创建新的模型训练附属文件
目标检测—基于Yolov5的目标检测项目(学习笔记)_第20张图片

此工程中有残留的上次的模型训练附属文件,在label文件夹下删除train.cache和val.cache后再重新运行train.py即可
目标检测—基于Yolov5的目标检测项目(学习笔记)_第21张图片
2.如果遇到out of memory等错,是因为显卡内存不够,就降低batch-size;还有number workers等等,不再赘述
(如遇到其他错误会后续更新…)

四、测试结果

效果测试将以压缩包中自带的best.pt权重文件进行测试

(1)图片测试步骤

1.将权重文件保存于weights文件夹中
目标检测—基于Yolov5的目标检测项目(学习笔记)_第22张图片

2.将想进行测试的图片放在工程目录下,如图所示:
目标检测—基于Yolov5的目标检测项目(学习笔记)_第23张图片
3.将source名称改为要测试的图片名称
目标检测—基于Yolov5的目标检测项目(学习笔记)_第24张图片
4.运行defect.py,可以看到运行结果在runs\detect\exp11文件夹下,得到结果如下图所示:

目标检测—基于Yolov5的目标检测项目(学习笔记)_第25张图片

(2)测试可能遇到的问题

1.遇到错误AttributeError: ‘Upsample’ object has no attribute ‘recompute_scale_factor’
目标检测—基于Yolov5的目标检测项目(学习笔记)_第26张图片
解决步骤:
1.点击upsampling.py
目标检测—基于Yolov5的目标检测项目(学习笔记)_第27张图片
2.在第153和154行找到下图所示代码
目标检测—基于Yolov5的目标检测项目(学习笔记)_第28张图片
3.将其更改为:

        return F.interpolate(input, self.size, self.scale_factor, self.mode, self.align_corners)

在这里插入图片描述
然后再次运行defect.py就能顺利得出结果了~

你可能感兴趣的:(YOLO学习,目标检测,学习,python)