本文将YOLOv5从环境搭建到模型训练及与业务系统(智慧水务维护工单系统)相结合的整个过程。最后训练出识别供水管道维修材料的模型,利用目标检测算法实现维修材料使用自动追溯。
一、Anconda环境搭建(作者测试用的系统为win10)
二、yolov5下载
三、素材的整理
四、维修材料模型训练
五、实际效果预测
Anconda(win10)环境搭建
提示:以下所有操作都是在Anconda的yolo的环境下进行的,在创建yolo的环境后,之后每次进入CMD都需要切换到yolo环境中去(否则将进入默认的base环境中)
(anaconda下载地址) https://www.anaconda.com/products/individual#Downloads
下载对应版本Anconda即可,本文作者使用的是window10,选择相应的版本下载安装即可。
Anconda安装完成后,conda可以创建多个运行环境,默认是base环境。这里我们为yolo创建一个环境。打开CMD命令行,为yolov5创建一个环境,本文中使用的python版本是3.8,版本过低后面可能会报错。
(base) C:\> conda create -n yolo python=3.9.7
运行
(base) C:\> conda info -e
即可看到我们刚刚创建的yolo环境
(base) C:\> conda info -e
# conda environments:
#
base * C:\Anaconda3
yolo C:\Anaconda3\envs\yolo
运行切换到yolo环境
(base) C:\> activate yolo
yolov5下载
https://github.com/ultralytics/yolov5
下载yolov5源码,解压,可以看到里面有requirements.txt文件,里面记录了需要安装的包,这个txt文件可以帮助我们一键下载这些依赖包。
在cmd命令行打开之后,大家千万记得要切换到我们的yolo环境下,不然就安装到base环境中去了。
(base) C:\test\yolov5>activate yolo
然后运行
(yolo) C:\test\yolov5>pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
就会自动帮我们把这些依赖安装好了。接下来我们就要开始训练yolo模型了。
整理yolov5模型
训练模型参考
https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data
接下来我们就要进行图片的标注工作了,图片标注我们用到了一个名为labelimg的工具:https://github.com/tzutalin/labelImg
大家下载解压之后,首先要做的就是删除
labelImg-master\data\predefined_classes.txt
txt文件中的内容,不然等会标记的时候会自动添加一些奇怪的类别。
然后在labelImg-master文件夹下打开cmd,进入我们的yolo环境中,然后我们还需要在yolo环境中安装一些Labelimg运行需要的依赖,依次输入
conda install pyqt=5
conda install -c anaconda lxml
pyrcc5 -o libs/resources.py resources.qrc
现在,我们已经在yolo环境中安装好Labelimg的依赖环境了,输入
python labelImg.py
即可进入我们的界面中来。进入之后,首先我们先把一些选项勾上,方便于我们标记。然后,最重要的是把标记模式改为YOLO。
之后我们点击Open Dir选择我们图片所在的images文件夹,选择之后会弹窗让你选择labels所在的文件夹。当然如果选错了,也可以点Change Save Dir进行修改。
然后软件右上角我们打开这个选项,当我们标记图片后,就会自动帮我们归类到H了
现在我们就可以开始进行标记了,常用的快捷键,用主要wad三个键
通过鼠标拖拽框选即可标注:
所有图片标注好之后,我们再来看我们的labels文件夹,可以看到很多txt文件。每个文件都对应着我们标记的类别和框的位置:
最后还要做的是建立yaml文件,文件的位置也不要放错:
文件里面内容如下,其中train和val都是我们images的目录,labels的目录不用写进去,会自动识别。nc代表识别物体的种类数目,names代表种类名称,如果多个物体种类识别的话,可以自行增加。
python train.py --img 640 --batch 16 --epochs 100 --data ../img/H.yaml --weights yolov5s.pt --nosave --cache --device 0
我的显卡
pip3 install torch==1.10.2+cu102 torchvision==0.11.3+cu102 torchaudio===0.10.2+cu102 -f https://download.pytorch.org/whl/cu102/torch_stable.html
以上参数解释如下:
epochs:指的就是训练过程中整个数据集将被迭代多少次,显卡不行你就调小点。
batch-size:一次看完多少张图片才进行权重更新,梯度下降的mini-batch,显卡不行你就调小点。
cfg:存储模型结构的配置文件
data:存储训练、测试数据的文件
img-size:输入图片宽高,显卡不行你就调小点。
rect:进行矩形训练
resume:恢复最近保存的模型开始训练
nosave:仅保存最终checkpoint
notest:仅测试最后的epoch
evolve:进化超参数
bucket:gsutil bucket
cache-images:缓存图像以加快训练速度
weights:权重文件路径
name: 重命名results.txt to results_name.txt
device:cuda device, i.e. 0 or 0,1,2,3 or cpu
adam:使用adam优化
multi-scale:多尺度训练,img-size +/- 50%
single-cls:单类别的训练集
在win10下面用显卡训练出现了一个小波折报错,pycharm/pytorch 页面文件太小,无法完成操作,这个是因为在Windows下,pytorch 的 num_workers可能有问题,需要将其设置成0。
将源码文件里面改动一下就可以正常训练了。
测试结果
python detect.py --weights runs/train/exp/weights/best.pt --source img/ --device 0 --save-txt --data ../img/H.yaml
本文暂时没有评论,来添加一个吧(●'◡'●)