学习目标:
win10+cpu+yolov5实现安全帽绝缘鞋绝缘手套等的检测
学习内容:
- 搭建 yolov5环境
- 找到合适的数据集训练
- 跑跑看看效果
一.搭建yolov5环境:
之前装过anaconda 直接从(二、利用Anaconda3下载PyTorch)开始:
1.创建pytorch环境
第一条命令是:conda create --name pytorch python==3.8
输入y
第二条命令是“conda info -e
第三条命令:conda activate pytorch
base变成了pytorch环境了。
2.安装Pytorch
去网页Pytorch官网根据自己需要选择,我的是这样:
在刚刚的Anaconda prompt里面输入得到的命令:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
输入y
3.验证PyTorch是否安装成功
首先激活pytorch环境,再使用python,其次调torch库,最后输出torch的版本号:
4.安装python-opencv
不知道为啥安装报错:
解决办法: pip3 install opencv-python
测试一下有没有安装成功:
5. 下载yolo
直接到github下载zip
再下载yolo模型:
下载ASSET里面的yolo(smxl)
反正就是下这几个。太慢了,我就直接csdn找了个资源下了。
源码下完后,下面开始安装Yolov5所需模块:python -m pip install -r requirements.txt
6.打开detect.py设置Interpreter
7.运行
查了一下是权重文件有问题,果然不能在外面随便乱下。。
下了这个链接的网盘的yolov5s,替换以后就可以跑了
输出结果:
二、找到合适的数据集训练
找了两千多张变电站图片,但是这些图没有绝缘鞋,先试一下测试安全帽和绝缘手套。后续自己找一些图再标
数据集标注的类有:
badge:监护袖章(只识别红色袖章)
person:图中出现的所有在场人员
glove:绝缘手套(橡胶材质)
wrongglove:未佩戴绝缘手套(其他手套或裸露手掌)
operatingbar:操作杆
powerchecker:验电笔
标签数量
person:4792个
wrongglove:5177个
badge:789个
operatingbar:917个
glove:1847个
powerchecker:794个
三、yolov5训练自己的数据集
参考链接从第四个部分划分数据集开始:
出现的问题:
问题1:3.2. XML格式转yolo_txt格式
‘NoneType’ object has no attribute ‘text’
注:原链接yolov5/data
对应我的D:\cubemos_SDK\SkeletonTracking\samples\python\yolov5-master\data
)
myvoc.yaml
文件我放在这里。
问题2:4.2.2生成anchors
下载的yolov5没有hyp.cratch.yaml
文件,只有三个
不知道选哪个三个超参数文件运行后的对比
我就先选了hyp.scratch-low.yaml
练手。
问题3:3.2 修改模型配置文件
选择yolov5s.yaml
将标注类目数改成6
问题4:第五部分的时候告诉我yolov5只能在python3.7以上跑。。。
所以新建了一个Python3.8的环境开始弄。中间一直出现因为路径导致的问题:
问题4:训练过程中遇到的问题:
No labels found in D:\VOCGlovesDetection\dataSet_path\train.cache
找不到labels,查看在D:\VOCGlovesDetection\dataSet_path
下生成的train文件,看看自己的图片路径里面是不是有图片。
我数据集jpg存放的文件夹实际是JPEGImages,但是上面的xml_to_yolo.py里把train.txt文件里的文件夹名设置成images了
修改xml_to_yolo.py文件,换成自己的文件名
再次运行xml_to_yolo.py文件后可以看到文件路径是对的,重新运行train.txt文件还是不行
因为生成train.cache是要先找到labels文件夹的txt文件,labels文件夹是根据刚刚的图片路径改名得到的,改名的方式是:
这段代码位于dataloaders.py文件,本来JPEGImages是images,如果不改成JPEGImages的话,就没办法找到Labels文件,所以一直显示missing。
更改以后train.py就可以正常运行了。但是cpu运行实在太慢了,明天试一下用云服务器跑。
四、在云服务器上训练yolov5
因为pycharm专业版有ssl功能,所以下了一个专业版,免费试用30天。不用专业版也可以直接用ssl软件登录远端服务器
参考链接:租用服务器,以及部署在pycharm专业版上的pytorch环境训练yolov5模型
pycharm ssl使用教程:注意map隐射路径的选择,尽量按官方例程来
在pycharm专业版打开远程服务器终端:工具-启动SSH会话
终端操作:
1.cd到yolov5-master所在的文件夹(在你映射的路径下,找不到就去interpreter看一下)
cd /root/autodl-tmp/yolov5-master
2.下载一下requirements.txt里的package,最好用国内源下,不然有些找不到新版本
pip install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
3.直接跑一下train.py文件,这时候肯定会说路径有问题。
改一改然后重新运行一下之前的split_train_val.py、xml_to_yolo.py、myvoc.yaml文件
让train.val.txt里面的路径跟远程服务器里的路径匹配就可以。
python train.py
4、待解决的问题:中间python train.py的时候有报错一次连接不到远程服务端,搜索csdn这个问题都是在爬虫才会遇到
没有特别适配的解决方案,过一会重新python train.py又可以正常跑了。不知道为啥。
训练完成以后在最后一个runs/train/exp文件夹里面可以得到权重文件,通过公用网盘下载到本地进行验证。
打开detect.py改一下weight和data然后看看程序输出:
![在这里插入图片描述](https://img-blog.csdnimg.cn/efc2e4476f07449e8f9d6e3968376baa.jpeg#pic_center