计算机系统应用教程网站

网站首页 > 技术文章 正文

供水管道维修材料yolov5模型的训练,实现自动识别

btikc 2024-09-02 16:49:40 技术文章 11 ℃ 0 评论

本文将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


Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表