基于YoloV5训练路标识别模型-笔记

前言:

       本篇博客只是在本科学习机器视觉期间所作的一点笔记,其中可能包含了一些错误还请谅解。同时也存在一些我平时遇到的困难,也一并记录下来并尽量给出解决办法。  

       开发环境:Python3.11   开发工具:Pycharm  

环境搭建:

yolov5环境搭建:

PS:网上的安装教程非常多,这里只是提供了一种方法。

一、安装anaconda

这个网上教程非常多,也比较全面了,再次不再赘述。

二、创建虚拟环境,命令语句:conda create -n pytorch python=3.10

 为了以后识别环境方便,我创建了一个名字叫做pytorch 的虚拟环境,并把python版本定在3.10(当时课上要求使用的是3.10版本,但我使用3.11也正常运行了)。在完成安装后记得检查环境,仍然是这个页面,输入conda env list,如果能够运行就代表环境正常了。

三、激活环境,并下载pytorch。激活语句:conda activate pytorch

pytorch的安装方式网上也有,在此不做赘述

四、下载yolov5

若有git 的话可以执行-- git clone https://github.com/ultralytics/yolov5.git
或者在 https://github.com/ultralytics/yolov5 上下载zip包,文后也会附上下载好的yolov5。

五、安装requirement.txt文件
执行pip install -U -r requirements.txt,执行语句后它就会自己开始下载相应的依赖,建议是有梯子的挂个梯子,防止下载失败

六、测试自带权重文件

如果使用pycharm打开yolov5的文件,执行detect.py文件,便可测试自带的权重。

当然这个时候可能会报错,或者直接开始下载yolov5.pt文件,这里有两种选择,一是让它自己下,但可能会比较耗时间。二是自己下载好yolov5.pt文件并放在weight文件下,如图:

PS:此时你可能会发现没有weight文件,那就自己在yolov5的目录底下创建一个就行

然后修改对应的detect.py中的代码:

红框中的部分改成权重文件位置即可

运行结束后,程序会告诉你运行的结果所在的位置(在yolo文件夹下一个叫runs的文件的detect中)

到此为止我们的环境就安装完成了

数据集制作:

安装labeIImg:

直接在上述的虚拟环境中,使用pip install LabelImg 命令即可安装

并使用LabelImg命令就可以开启界面

在使用前,我们需要将 3 号框的选项改成yolo后再开始打标签

1号选项中选择你需要打标签的图片

2号选择则是选择你的标签保存位置

此处插入一个重要的点!!!:

关于训练集的文件层次设计,一定要按照如下情况设计,若不同则无法被识别到:

在数据的第一层,包含两个文件,分别是images与labels(分别存储图片与标签)

而文件的第二层,包含两个文件,分别是train和val(训练集和验证集)labels目录下同理

train和val分别保存训练用的图片和验证用的图片,labels目录下同理

综上,选择好对应的保存于打开位置,便可开始打标签了

按W 即可开始打标签。如果labelImg闪退,则需要修改对应的代码,这个是通病,自己去搜索吧。

数据集配置:

yaml文件:

在我们打完标签后,便是要去配置数据集的相关文件了。

在yolo的根目录里有个data文件,我们在这里先配置一个yaml文件,如何配置网上也有教程,我这只简单阐述一下:

我的做法是先新建一个txt文件,然后修改文件后缀

train:写入我们所需要训练的图片的位置,记住一定要是 .....images\train

val:写入我们所需要验证的图片的位置,记住一定要是....images\val

nc:就是我们所需要区分的类的数目,这里我只区别左转和右转,所以只有两个

names:就是类的名字,要与图片的标签名字对应

代码配置:

为了能训练属于我们自己的模型,代码上我们也要做修改

打开train.py文件,大概在第444行与446行。其中444行需要注意,如果这里的pt文件路径前没有weight,请加上,因为我们在上文的操作中,将其放入了weight文件中。

第446行,改成我们的yaml配置文件

第451行,可以自行修改次数,default参数中默认100次。

训练与验证:

训练完成后:

在训练完成后,会告知我们训练后文件的保存位置,一般情况下是在yolov5\runs\train中会生成一个exp文件,打开后会找到这么多东西,我们可以先看一下训练情况再考虑是否使用该模型。

模型的pt文件位于weights中,在使用过程中,我们一般只使用best.pt文件

使用自己训练的模型:

若对训练结果满意,则可以开始使用自己的模型了,我们需要的只是修改一些代码而已。

在detect.py文件里,我们可以找到;

大约第245,247,249行。其中245行中,修改为我们训练好的best.pt文件地址

247行则是我们想要验证的图片位置

249行则是我们之前的配置文件位置

然后运行即可

遇到最大的问题:

在这次训练过程中遇到最大的问题就是,由于左右训练集在翻转后便可相互替代,导致训练后的结果要么全识别为左边要么全是右边。在找遍全网后,我大概是找到原因了

在yolov5训练的过程中,会启用数据增强,即超参数设置。里面包含了对数据集进行的一些处理,比如翻转、切变等,其中无法正确识别左右的问题就在于左右翻转上。

文件位置:

在train.py文件中的位置:

为了防止它对我的数据进行左右翻转,我对参数做了调整

其中的参数的意义网上都有。这里我将左右翻转的概率由50%改为0%,再次训练后便可以正常识别左右了。

更新:

关于labelImg打标签时遇到的一点问题。在重新开启labelImg时,无法识别到之前的标签文件,而且会出现标签混乱的情况。

该文件无法被识别到。

在查阅labelimg 的代码后,这里给出一个可能不是最优解的替代方案。

在代码中所指定的./data/predefined_classes.txt文件实际上不存在

我所做的便是在labelimg.py的同级目录下创建data文件夹并在里面新建一个名称为predefined_classes的txt文件,再在其中写入我之前保存的标签名。

以上便是我在训练自己的模型时的一点点笔记,若有错误欢迎指正

附上YoloV5的度盘链接

链接:https://pan.baidu.com/s/1nDY6mHQ_LFj9-NkfSgruEQ?pwd=pxg1 
提取码:pxg1 
(可能有些地方我做了修改,但无伤大雅)

  • 23
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值