YOLO5实战口罩检测识别(win下 + 环境部署配置 + 口罩YOLO格式数据集+训练好的权重)


还是先贴下结果图,

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
最后收敛的pr都接近0.9。
在这里插入图片描述

一、环境搭建

可以先参考博主的另一篇文章pytorch相关安装

1.1、源码下载

安装完成后在pycharm中配置好新建的虚拟环境,通过pycharm编辑器打开YOLO工程(在YOLO源码官网下载即可)。

用pycharm打开YOLO项目后,编辑器一般会自动读取YOLO中requirments.txt,提示是否需要安装其中的组件,可以不急,等虚拟环境配置好了,再安装。

虚拟环境非必需项,只是方便管理。

1.2、切换虚拟环境

  • step1: 点击pycharm左上角【File】→【Settings】:

在这里插入图片描述
在这里插入图片描述

  • step2: 选择step1中的项目→【Python Interpreter】→右上角的设置图标【add】

在这里插入图片描述

  • step3: 【Virtualenv Envirionment】→【Existing environment】→【…】下拉选取创建好的虚拟环境中的python.exe即可完成虚拟环境配置。
    注意:创建的虚拟环境目录一般为D:\Anaconda\envs也就是安装的anaconda/envs目录下,博主为jpytorch。
    在这里插入图片描述
  • step4: 打开pycharm终端,如果终端有显示虚拟环境则表示切换成功。
    如果没有显示,终端输入命令:
conda activate jpytorch

若显示为【PS】如下(博主环境已经成功切换,没有实例图了,所以找了个网图代替供大家参考)而非虚拟环境,下一步再见:
在这里插入图片描述

  • step5: 【File】→【Setting】→【Tools】→【Terminal】→【Shell path:】如下选择后下拉按钮选择博主图里的选项C:\Windows\system32\cmd.exe

在这里插入图片描述

  • step6: 上述操作完成后重启编辑器。

在这里插入图片描述
成功切换。

1.3、安装组件

执行pycharm自动安装YOLO中的requirments.txt,时间可能会久一点。

可能会若存在部分组件自动无法安装的情况,

博主这里列一下部分解决办法。
在这里插入图片描述
上图中格式为组件名称+版本要求

  • 方法1:pip安装
    在执行这个方法之前最好是先更新一下:pip install --upgrade
    终端输入:pip install XXX
    xxx表示组件名称:比如上图中的第一个,输入
pip install tensorboard

便会自动安装t组件tensorboard的最新版本,都满足图中要求的版本。

在这里插入图片描述
在这里插入图片描述

-方法2:源码安装

输入组件名找到组件的源码.whl文件,选择匹配版本进行安装。例如博主的opencv-python>=4.1.2,当时通过方法1也无法安装。
OpenCV下载地址,选择

在这里插入图片描述
上图中是博主选择的【版本4.5.5】+【Python3.8】+【win64】。

下载后打开电脑cmd终端,依然使用conda activate jpytorch先切换到YOLO的虚拟环境,
在这里插入图片描述
终端进入到openCV的下载目录通过pip安装:

pip install XXX.whl

这里直接在文件目录中通过【control+c】复制.whl的文件名和后缀粘贴在终端后【Enter】。
在这里插入图片描述
在这里插入图片描述
博主这里以安装的pycuda为例,因为OpenCV当时忘记截图了,pycuda也是.whl文件安装,除了文件名不一样外其余都一模一样。

至此环境配置部署结束。

二、数据集

在这里插入图片描述
数据集是博主整理好的YOLO格式的数据集,一共有7959张图片,可根据需要按比例重新划分数据集。

博主是按照721比例划分的数据集给YOLOv5训练。

数据集部分截图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、训练

这是博主第一次在win下训练,也是踩了些雷,因为部分参数还是区别于Ubuntu的。

数据集放置目录:
在这里插入图片描述

博主是直接在编辑器终端运行的,输入命令(容可能出错):

python train.py --data data/maskYOLO.yaml --cfg yolov5s.yaml --weights '' --batch-size 40

这里博主没有给weights的地址,Ubuntu里边会自行去YOLO官网下载初始权重文件,但win出错了(可能解压过程中的错误吧)。
在这里插入图片描述
那就直接在官网下载yolov5s.pt,放置在如下目录(可自定义):
在这里插入图片描述
重新输入命令:

>python train.py --weights yolopt/yolov5s.pt --data data/maskYOLO.yaml --cfg yolov5s.yaml  --batch-size 40

有的这一步就是直接开始训练了。
但也可能会报错,因为网络结构的些许不一样导致的错误:

在这里插入图片描述
解决办法:修改【utils】中的【loss.py】。
step1:
将图中红色部分代码改为绿色框框中的代码:anchors, shape = self.anchors[i], p[i].shape
在这里插入图片描述

step2:
在这里插入图片描述

不知道代码位置的可以直接根据图中左侧代码行数去匹配位置。
修改好后再重新运行上述代码:

在这里插入图片描述
开始训练。。。

四、检测

首先拷贝训练好的best.pt的相对路径:
在这里插入图片描述
终端运行:

python detect.py --weights runs/train/exp10/weights/best.pt

在这里插入图片描述
这是博主在网上随意查找的网图哈。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 可能BUG1RuntimeError: The size of tensor a (80) must match the size of tensor b (84) at non-singleton dimension 3
    在这里插入图片描述

这是因为博主最开始在给权重文件的时候给错权重文件了,将权重文件改为训练好的权重文件就好啦。

这个问题比较常见,如果不是终端命令行运行指定了权重文件路径的话,则需要在源码detect.py中修改下图路径为权重路径。
在这里插入图片描述

  • 可能BUG2:AttributeError: 'Upsample' object has no attribute 'recompute_scale_factor'
    在这里插入图片描述

定位到图中红色框框的py文件位置,同样是将红色框框的的代码改为绿色框框代码即可,实质就是将原return()中的第二行代码删掉,当然一起的,也应一块删除。

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

这是因为YOLO版的问题导致的,这里博主没有深究。
在这里插入图片描述

完结撒花,,,

五、写在最末

  • 对于刚接触这个的小白同学,如果有什么环境配置部署等问题也可以私信博主;
  • 如果不想自己运行,想要已经跑好的数据集或者权重文件直接提供给YOLO的同学,私信博主(非无偿);
  • 想要coco格式或者voc格式口罩数据集的也可以私信博主(非无偿)。

猜你喜欢

转载自blog.csdn.net/qq_37346140/article/details/129739691