目录

前言

一、用云端 GPU 训练 YOLOv5 模型

1、将项目打包上传至 Colab 平台

2、在 Colab 平台删除非空文件夹 

3、按 requirements.txt 文件装包

4、添加 tensorboard 插件并使用

5、运行 train.py 文件训练模型 

6、使用 GPU 训练的 best.pt 文件 

二、自制数据集并训练

1、自制数据集

(1)准备 images 

(2)在线标注数据集 

(3)导出图片的标注文件 

2、训练数据集 

Ending

前言

这是我根据 B 站土堆的 目标检测 YOLOv5 开源代码项目调试与讲解实战 整理撰写的第三篇文章,大致讲解了如何使用云端 GPU 训练 YOLOv5 模型,以及如何自制数据集并对其进行训练,所有代码均为视频演示版,非本人原创。在看这篇文章前,请公主王子们确保自己的 YOLOv5 已经配置完成,且项目中的 detect.py 文件也能够成功运行哦~如果在配置 YOLOv5 的过程中遇到问题,可以参考我的这一篇文章,链接放在这里啦:

【土堆】史上最全 YOLOv5 配置问题总结 AttributeError & RuntimeError & AssertionError-CSDN博客文章浏览阅读1k次,点赞24次,收藏27次。这篇文章主要记录了作者在配置 YOLOv5 时遇到的问题以及解决方式,作者小白,请多包涵!https://blog.csdn.net/nanzhou520/article/details/134587856除此之外,还要保证 YOLOv5 项目中的 train.py 文件也能够成功运行,大家可以参考我的这一篇文章:

【土堆】手把手带你解决 YOLOv5 运行 train.py 文件时遇到的问题 AttributeError: module ‘distutils‘ & RuntimeError & ...-CSDN博客文章浏览阅读340次,点赞10次,收藏11次。这篇文章记录了作者在运行 YOLOv5 的 train.py 文件时遇到的一系列问题以及相应的解决方式,包括 torch 的版本问题, AttributeError: module 'distutils' has no attribute 'version 和 unzip 失败的问题。作者小白,请多包涵!https://blog.csdn.net/nanzhou520/article/details/134675092

一、用云端 GPU 训练 YOLOv5 模型

因为我自己电脑的 GPU 性能不佳,且至今没能成功在 Google 登录至 Colab 网站,所以无法亲身体验如何用云端 GPU 训练 YOLOv5 模型/(ㄒoㄒ)/~~但既然看了土堆的视频教程,我就先用截图来记录云端 GPU 训练的大致流程,公主王子们如果有兴趣的话,可以随意浏览以下内容~如果大家能在【Colab 网站】亲身体验的话,那就再好不过啦~

1、将项目打包上传至 Colab 平台

【操作1】因为 Colab 网站只支持上传项目的压缩包,因此需要将我们的项目先打包成 yolov5-5.0.zip 再上传平台,然后运行这个命令:

!unzip /content/yolov5-5.0.zip -d /content/yolov5

2、在 Colab 平台删除非空文件夹 

【操作2】由于视频教程中土堆使用的是 mac 系统,因此需要删除多余的 _MACOSX 文件夹,下面的命令适用于删除非空文件夹:

!rm -rf /content/yolov5/_MACOSX

3、按 requirements.txt 文件装包

【操作3】先进入到项目的根目录下,然后根据 requirements.txt 文件进行配置,安装对应的包,运行命令如下:

%cd /content/yolov5/yolov5-5.0

!pip install -r requirements.txt

4、添加 tensorboard 插件并使用

【操作4】在 Colab 平台也能够使用 tensorboard ,可以用 %load_ext 命令添加插件,再用 %tensorboard 命令启用 tensorboard :

%load_ext tensorboard

%tensorboard --logir=runs/train

5、运行 train.py 文件训练模型 

【操作5】运行 YOLOv5 项目的 train.py 文件,并调用 --rect 参数,查看运行结果可知,这轮训练的结果存放在 exp2 文件夹中。

!python train.py --rect

【说明】在 exp2 文件夹中,weights 目录下的 best.pt 是效果最佳的训练权重,而 last.pt 是最新的训练权重;hyp.yaml 中存放了训练过程中使用到的超参数信息,result.txt 中存放了训练的结果。

6、使用 GPU 训练的 best.pt 文件 

【操作6】训练完成后,在 PyCharm 中打开 YOLOv5 的开源项目,将云端 GPU 训练得到的 best.pt 模型文件下载至项目的根目录中,然后在 detect.py 文件中,将 --weights 参数的 default 默认值改为 best.pt 文件的相对路径,最后运行 detect.py ,如下图所示。

二、自制数据集并训练

关于如何获得训练数据集,大致有以下几种方式:

 获取 PyTorch 官网或者其他网站提供的数据集,例如 VOC 数据集和 COCO 数据集等,进行标注 自己获取数据集,手动进行 人工标注  自己获取数据集,借助已经训练好的模型进行 半人工标注  获取仿真数据集,可借助 训练 GAN 网络 或者 数字图像处理 等方式获取仿真数据集

【补充】如果大家想要进一步了解数字图像处理,可以 Google 搜索 synthetic data object detection github 。

【正片】我们可以根据 GitHub 提供的 YOLOv5 官方开源项目中 Wiki 下的【Train Custom Data】学习如何自制数据集并训练。

1、自制数据集

(1)准备 images 

我们需要从网上下载若干图片用于制作数据集,我主要选取的是包含汽车、自行车和人等元素的图片,如下图所示。

(2)在线标注数据集 

我们需要对这些图片进行标注,可以借助 CVAT 或者 Make Sense 等网站在线标注,这里我选用的是 Make Sense 网站。

【补充】如果大家对数据集标注有兴趣的话,可以参考我之前出的这篇文章哟ヾ(•ω•`)o 链接放在下面啦~

【土堆】Pytorch 深度学习目标检测の入门实战——数据集标注(VOC & COCO)-CSDN博客文章浏览阅读220次,点赞4次,收藏4次。这是关于 PyTorch 深度学习目标检测的入门笔记,作者小白,请多指教!https://blog.csdn.net/nanzhou520/article/details/134502419

【操作1】首先,我们需要将准备的 images 上传到 Make Sense 网站。 

【操作2】其次,我们需要预先添加 labels ,可以使用 + 逐个添加标签,也可以使用 Load labels from file 一次性添加标签。

【操作3】然后,我们需要对图片中的物体进行标注,可以手动进行框选,也可以使用已经训练好的模型进行标注。

这是使用矩形框进行手动框选和标注:

这是使用已经训练好的 YOLOv5 模型进行标注:

(3)导出图片的标注文件 

我们需要将图片的标注导出,在 Actions 中选择 Export Annotations,导出为包含 YOLO 格式文件的压缩包。 

将压缩包解压后可以得到下面这几个 label 对应的 txt 文件:

【补充】我们需要大致了解标注文件中每列参数代表的含义,根据上图可知(以 zidane.txt 文件的首行为例):

每行的第 1 个参数 表示目标类别 Classes每行的第 2 个参数 表示矩形标注框的中心点横坐标 X每行的第 3 个参数 表示矩形标注框的中心点纵坐标 Y每行的第 4 个参数 表示矩形标注框的宽 Width每行的第 5 个参数 表示矩形标注框的高 Height

2、训练数据集 

【操作1】我们需要将前面得到 images 和 labels 相关文件存储到项目中的对应位置,同时还要编写 mydata.yaml 数据集配置文件:

【注意】在 mydata.yaml 数据集配置文件中,classes names 的顺序要与我们在 Make Sense 官网添加的 labels 顺序相同。

【操作2】我们需要将 train.py 文件中 --data 参数的默认值修改为 mydata.yaml 文件的路径,然后运行 train.py 文件:

【操作3】我们需要将 detect.py 文件中 --weights 参数的默认值修改为运行 train.py 所得的 best.pt 文件的路径,还要将 --source 参数修改为我们自己所找图片的路径,然后运行 detect.py 文件:

【注意】在上面这张图中,我还额外说明了如何快速得到文件的存放路径,希望能帮到公主王子们~

操作到这里,如果大家的 best.pt 训练到位,那么在指定的文件夹下就能看到被标注好的图片啦 (๑•̀ㅂ•́)و✧ 可惜我只训练了 18 轮,训练效果还没出来 /(ㄒoㄒ)/~~ 大家如果有兴趣的话可以尽可能训练完 300 轮,然后看看标注效果(如果能贴评论区给我看看就更好啦)~

【补充】在实际操作中,我们通常不会将 mydata 文件夹放在项目文件夹中,因为这样会增加 PyCharm 启动时的索引时长,针对这个问题,除了将 mydata 文件夹移至项目外的方法,我们也可以选择将 mydata 文件夹设置为 Excluded ,表示不索引这个文件夹下的内容。

Ending

因为担心文章篇幅过长,所以我将《目标检测 YOLOv5 开源项目入门实战》这个系列写成了三篇文章:

第一篇 具体介绍了 YOLOv5 项目 Tags5 版本中 detect.py 文件的参数,同时也大致讲解了 lux ( annie ) 的安装过程;第二篇 具体介绍了 YOLOv5 项目 Tags5 版本中 train.py 文件的参数,大致涵盖了 34 个参数;第三篇 具体讲解了如何使用云端 GPU 训练 YOLOv5 模型,以及如何自制数据集并对其进行训练。

作者目前还是小白阶段,可能在撰写文章的过程中存在很多不足和问题,请王子公主们多多包涵!当然也欢迎大家提出建议,微臣主打一个听劝!最后非常感谢大家能够阅读我的文章~希望大家生活顺利!

参考阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: