当前位置:   article > 正文

小白也能学会的YOLO-V5目标检测训练方法「包含下载、数据集准备,环境配置,模型训练,结果解读」_yolo目标检测模型文件

yolo目标检测模型文件

我的毕设是YOLO-V5算法的优化,在做毕设的时候,YOLO的基础环境也大大小小装了好多次,但是在网络上非常基础全面的教程并不多,考虑到有些刚刚接触到YOLO的朋友们不熟悉YOLO的准备和使用,我希望能用最清楚的方式来整理出0基础也能快速上手使用的YOLO-V5训练自己数据集的流程以及弄懂YOLOV5每个文件到底是做什么的,有什么问题也可以后续留言问我,接下来一段时间也会出相关YOLO的优化详细教程。
所有要使用的文件我都提供了网盘版本和原地址链接
如果想要了解YOLO的发展历程,可以移步我的这篇文章:https://blog.csdn.net/aosiweixin/article/details/130653923

image-20230513163830193

在这你将看到:

  1. 适用于YOLO-V5数据集的准备和处理【在这里我们选用YOLO官方提供的COCO128数据集举例】
  2. YOLO-V5的代码下载、训练和使用

数据集的准备与处理

为了后续便于使用,选用YOLO最标准的数据集标签来举例,不同格式标签在我其他的文章中有提到。

【COCO128下载】:https://pan.quark.cn/s/8ea99b356ff3

如果要使用其他数据集的话,也很容易就可以替代。

在我们使用的数据集中,应该包含标签部分和数据部分,使用的COCO128数据集中,结构如下图:

image-20230513173846272

数据部分存在images中,标签部分存在labels VS

images

images/train2017中里面是jpg图片,他的文件名是和labels中的一一对应的。

image-20230513174602865

labels

lables/train2017中是txt文件,他的文件名和images中是一一对应的,如下图。

image-20230513174912462

YOLO-V5的标签的设定和他的损失函数计算息息相关,具体格式如下:

YOLO-V5是一个目标检测算法,其txt版本的标签格式如下:

  • 每个txt文件名称应与其对应的图像文件名称相同,只是后缀名不同(例如,image1.jpg和image1.txt)。
  • 每个txt文件应包含一个或多个行,每行代表一个检测到的对象。
  • 每行由以下5个值组成,用空格分隔:类别、中心点X坐标、中心点Y坐标、宽度、高度。
  • 类别是整数,代表对象所属的类别。
  • 中心点X坐标和中心点Y坐标是图像中对象的中心点坐标,用浮点数表示。
  • 宽度和高度是对象的宽度和高度,也用浮点数表示。

下面是一个示例txt标签文件的内容:

0 0.482 0.637 0.218 0.512
1 0.240 0.876 0.364 0.720
  • 1
  • 2

这个示例文件包含两个对象,一个属于类别0,另一个属于类别1。第一个对象的中心点坐标为(0.482, 0.637),宽度为图像宽度的0.218倍,高度为图像高度的0.512倍。第二个对象的中心点坐标为(0.240, 0.876),宽度为图像宽度的0.364倍,高度为图像高度的0.720倍。

如果运行自己的数据集发现数据格式并不对应,那么可以考虑查看我的另一篇博客去做格式转换:https://blog.csdn.net/aosiweixin/article/details/130623129

代码运行

代码下载与环境准备

代码下载

YOLO-V5代码的下载去github即可,考虑到有的朋友网络问题,也准备了夸客网盘版本。

【github链接】:https://github.com/ultralytics/yolov5

【网盘】:https://pan.quark.cn/s/a0225b268041

下载解压后如下图:

image-20230513175924855

里面的文件都代表什么呢?如下图

image-20230513180517926

环境准备

这部分我们分为三部分来准备吧:

  1. conda
  2. PyTorch
  3. 其他
conda

为了方便使用,我们使用conda来配置我们的环境,需要安装conda,conda的安装比较容易,大家自行搜索即可。

在安装好conda之后,我们打开我们的终端,里面应该会出现base,我是用mac写博客的,windows的cmd中也会出现类似的base,如果没有出现可以检查一下自己的环境。

image-20230513180827094

conda就类似一个环境管理的软件,我们运行程序需要一个一个的环境,conda可以提供一个虚拟封闭的容器来将我们的环境包装起来

使用conda env list可以看到我们目前conda中拥有的环境,如下图。

image-20230513181258900

可以看出目前我的conda中有四个环境,为了展示方便,我重新创建一个名为YOLO的环境,使用以下代码

conda create -n YOLO python==3.10.0
  • 1

如果这一步失败,需要检查conda安装是否正确,或者是否是网络环境问题(可以考虑搜索换源来解决)

安装完成后可以使用conda env list来查看结果,如果安装成功会显示下图

image-20230513181951618

然后需要进入我们的环境,在终端,使用下面的命令。

conda activate YOLO
  • 1

结果如下图

image-20230513183209682

在上面都做完之后,我们就需要考虑安装YOLO所需要的python依赖。

PyTorch

YOLO在CPU和GPU环境下都可以使用,但是CPU的训练速度会非常慢,GPU版本的PyTorch安装会比较麻烦,可以参考这篇博客【https://blog.csdn.net/ECHOSON/article/details/118420968】,如果安装失败,可以选择使用云平台来做,本文使用CPU来演示,也会说明GPU的使用方法。

安装命令如下

# CUDA 11.6
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia
# CUDA 11.7
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.7 -c pytorch -c nvidia
# CPU Only CPU版本直接考虑这个,GPU版需要看前面推荐的博客选择合适的版本
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 cpuonly -c pytorch
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
其他依赖

先使用cmd终端进入我们的代码路径,如下图

image-20230513183333356

进入之后,使用下面的命令

pip install -r requirements.txt
  • 1

如果安装失败,需要考虑是不是网络的问题,或者pip没有更新。

安装成功如下图,不一定一样,但是没有什么报错。

image-20230513183806072

代码运行

在漫长安装环境之后,代码终于可以运行了,前面这张yolov5的部分图我再放一次,很重要。

image-20230513180517926

数据集配置文件准备

先打开train.py文件,我们了解一下train中关于数据集的参数,如下图:

image-20230513184109417

可以看出data的默认文件式data/coco128,如果后续需要换成自己的可以直接改这个默认,在运行时命令行中添加参数【后面会说】

既然如此,那我们打开data/coco128,图中已经写的很详细。

image-20230513184737799

做到这里,我们的数据集配置文件已经讲清楚了。

模型配置文件准备

同样打开train.py,我们了解一下有关模型配置文件

image-20230513185023474

框出来的既是我们的模型配置文件,可以看出这里没有默认,所以我们运行时需要设置。打开models文件夹,如下图

image-20230513185336734

nc是种类数,我们选用的COCO128的目标种类有80种,因此这里是80。

图中模型的深度宽度是YOLO预设好的,可以看出,我们选择的yolov5s文件是这个深度宽度,如果替换成其他的l、m、n就不一样了。

在YOLOv5中,s、m、l、n是指不同的模型大小,具有不同的特点和应用场景。

  • YOLOv5s:是最小的模型,具有最快的速度和最小的模型大小,适合于在移动设备上进行实时目标检测任务。
  • YOLOv5m:是中等大小的模型,具有较快的速度和较小的模型大小,适合于在GPU上进行较快速的目标检测任务。
  • YOLOv5l:是较大的模型,具有更好的检测精度和更大的模型大小,适合于在CPU上进行高精度的目标检测任务。
  • YOLOv5x:是最大的模型,具有最好的检测精度和最大的模型大小,适合于在GPU上进行高精度的目标检测任务。

不同大小的YOLOv5模型适用于不同的场景需求,用户可以根据自己的需求选择适合的模型来进行目标检测任务。

其他没有说到的在基础使用中暂时不用理会。

终于开始训练了

在前面的漫长准备后,我们的模型可以开始训练了,训练命令如下,头一次训练会下载与训练权重:

python train.py --cfg yolov5s.yaml --epoch 100 --batch-size 2 --device cpu
  • 1

python train.py 是运行 train.py 这个 Python 脚本的命令。

  • -cfg yolov5s.yaml 指定了配置文件 yolov5s.yaml。
  • -epoch 100 表示训练 100 个 epoch。
  • -batch-size 2 表示每次训练使用的 batch size 是 2。
  • -device cpu 表示使用 CPU 进行训练,如果要使用CPU那就指定device 0即可

跑起来如下图

image-20230513190059060

再漫长的训练过程之后,我们可以查看训练结果了。训练的结果保存在runs/train下

image-20230513191326733

里面的文件含义如下:

  • best.pt: 该文件是训练过程中最佳的模型权重参数文件,即validation loss最小的模型。在测试或者推理时,我们可以直接加载该文件来获取最优模型的参数。在weight文件夹中。
  • hyp.yaml: 该文件包含了模型的超参数,如学习率、权重衰减、数据增强等。我们可以通过修改该文件中的超参数来改变模型的训练行为。
  • last.pt: 该文件是训练结束时的模型权重参数文件。如果没有指定–nosave参数,则每个epoch结束时,该文件都会被更新为最新的模型参数。在weight文件夹中。
  • opt.yaml: 该文件包含了模型训练时的各种选项和参数,如batch size、epoch数、优化器等。我们可以通过修改该文件中的参数来改变模型的训练行为。
  • results.csv: 该文件包含了模型在验证集上的表现结果,如mAP、precision、recall等。我们可以通过查看该文件来评估模型的性能。
  • train_batch{N}.jpg: 该文件夹包含了每个batch训练数据的可视化图像。在训练过程中,每个epoch会生成一次该文件夹,以便我们查看训练数据的情况。
  • weights: 该文件夹包含了训练过程中每个epoch的模型权重参数文件。在训练结束后,该文件夹中包含的所有文件都可以用于测试或者推理。

结束

在这么多步骤之下,我们终于结束了最基本的使用,现在就可以去试试你自己的模型啦,后续会考虑出YOLO-V5系列的优化专栏!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/761730
推荐阅读
相关标签
  

闽ICP备14008679号