赞
踩
目录
这是我根据 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 文件也能够成功运行,大家可以参考我的这一篇文章:
因为我自己电脑的 GPU 性能不佳,且至今没能成功在 Google 登录至 Colab 网站,所以无法亲身体验如何用云端 GPU 训练 YOLOv5 模型/(ㄒoㄒ)/~~但既然看了土堆的视频教程,我就先用截图来记录云端 GPU 训练的大致流程,公主王子们如果有兴趣的话,可以随意浏览以下内容~如果大家能在【Colab 网站】亲身体验的话,那就再好不过啦~
【操作1】因为 Colab 网站只支持上传项目的压缩包,因此需要将我们的项目先打包成 yolov5-5.0.zip 再上传平台,然后运行这个命令:
!unzip /content/yolov5-5.0.zip -d /content/yolov5
【操作2】由于视频教程中土堆使用的是 mac 系统,因此需要删除多余的 _MACOSX 文件夹,下面的命令适用于删除非空文件夹:
!rm -rf /content/yolov5/_MACOSX
【操作3】先进入到项目的根目录下,然后根据 requirements.txt 文件进行配置,安装对应的包,运行命令如下:
%cd /content/yolov5/yolov5-5.0
!pip install -r requirements.txt
【操作4】在 Colab 平台也能够使用 tensorboard ,可以用 %load_ext 命令添加插件,再用 %tensorboard 命令启用 tensorboard :
%load_ext tensorboard
%tensorboard --logir=runs/train
【操作5】运行 YOLOv5 项目的 train.py 文件,并调用 --rect 参数,查看运行结果可知,这轮训练的结果存放在 exp2 文件夹中。
!python train.py --rect
【说明】在 exp2 文件夹中,weights 目录下的 best.pt 是效果最佳的训练权重,而 last.pt 是最新的训练权重;hyp.yaml 中存放了训练过程中使用到的超参数信息,result.txt 中存放了训练的结果。
【操作6】训练完成后,在 PyCharm 中打开 YOLOv5 的开源项目,将云端 GPU 训练得到的 best.pt 模型文件下载至项目的根目录中,然后在 detect.py 文件中,将 --weights 参数的 default 默认值改为 best.pt 文件的相对路径,最后运行 detect.py ,如下图所示。
关于如何获得训练数据集,大致有以下几种方式:
【补充】如果大家想要进一步了解数字图像处理,可以 Google 搜索 synthetic data object detection github 。
【正片】我们可以根据 GitHub 提供的 YOLOv5 官方开源项目中 Wiki 下的【Train Custom Data】学习如何自制数据集并训练。
我们需要从网上下载若干图片用于制作数据集,我主要选取的是包含汽车、自行车和人等元素的图片,如下图所示。
我们需要对这些图片进行标注,可以借助 CVAT 或者 Make Sense 等网站在线标注,这里我选用的是 Make Sense 网站。
【补充】如果大家对数据集标注有兴趣的话,可以参考我之前出的这篇文章哟ヾ(•ω•`)o 链接放在下面啦~
【操作1】首先,我们需要将准备的 images 上传到 Make Sense 网站。
【操作2】其次,我们需要预先添加 labels ,可以使用 + 逐个添加标签,也可以使用 Load labels from file 一次性添加标签。
【操作3】然后,我们需要对图片中的物体进行标注,可以手动进行框选,也可以使用已经训练好的模型进行标注。
这是使用矩形框进行手动框选和标注:
这是使用已经训练好的 YOLOv5 模型进行标注:
我们需要将图片的标注导出,在 Actions 中选择 Export Annotations,导出为包含 YOLO 格式文件的压缩包。
将压缩包解压后可以得到下面这几个 label 对应的 txt 文件:
【补充】我们需要大致了解标注文件中每列参数代表的含义,根据上图可知(以 zidane.txt 文件的首行为例):
【操作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 ,表示不索引这个文件夹下的内容。
因为担心文章篇幅过长,所以我将《目标检测 YOLOv5 开源项目入门实战》这个系列写成了三篇文章:
作者目前还是小白阶段,可能在撰写文章的过程中存在很多不足和问题,请王子公主们多多包涵!当然也欢迎大家提出建议,微臣主打一个听劝!最后非常感谢大家能够阅读我的文章~希望大家生活顺利!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。