首页IT科技yolo训练代码简写(YOLOV8——快速训练指南(上手教程、自定义数据训练))

yolo训练代码简写(YOLOV8——快速训练指南(上手教程、自定义数据训练))

时间2025-09-19 07:10:45分类IT科技浏览13888
导读:概述 ...

概述    

    本篇主要用于说明如何使用自己的训练数据                     ,快速在YOLOV8 框架上进行训练                      。当前(20230116)官方文档和网上的资源主要都是在开源的数据集上进行测试                                 ,对于算法“小白                     ”或者“老鸟                                 ”如何快速应用到自己的项目中           ,这个单纯看官方文档显得有点凌乱          ,因为YOLOV8 不再致力于做一个单纯算法                                 ,而是想要做一个一统(分类                     、检测                                 、分割且多种模型)的框架                                。下面以检测为例           。

    安装                      ,官方提供了完整的安装方式:Quickstart - Ultralytics YOLOv8 Docs 如果希望不安装直接使用          ,参考本文第七节                      。 

详细

1           、标注

        准备自己的数据                                ,数据的标注格式和YOLOV5没有分别                      ,一般工业还是需要使用如labelme等标注,格式为coco格式(class_id x y w x)xywx均需要归一化                                ,类别号从0开始                                 ,一个框一行                                。

2          、目录的组织形式:

        低阶使用, 可无痛迁移YOLO6 YOLOv7

        以“images           ” 命名图片路径                     ,标签路径仅仅是将“images          ” 变为“labels                                 ”;代码自动对应images和labels                                 ,所以一张图片的标签需要和图片同名(如果没有对应的label 就是认为是背景图           ,没有目标)           。

        高阶使用                     , YOLOV6 YOLOv7 当前某些方式不支持           。

        20230116 主要的源码路径为:https://github.com/ultralytics/ultralytics/blob/main/ultralytics/yolo/data/dataloaders/v5loader.py

函数“LoadImages                      ”用于推理                                 ,函数“LoadImagesAndLabels          ” 用于训练           ,但是并没有统一支持的数据目录存放格式                                。

        1)使用文件夹(列表)文件夹存储所有的训练图片(由于磁盘文件系统          ,单个文件夹文件过多影响吞吐速度)                     。

单个文件夹对应配置文件的写法

path: ../datasets/VOC train: # train images (relative to path)   - images/train2007 val: # val images (relative to path)   - images/test2007 test: # test images (optional)   - images/test2007

多个文件夹对应配置文件的写法

path: ../datasets/VOC train: # train images (relative to path)   - images/train2012   - images/train2007 val: # val images (relative to path)   - images/test2007 test: # test images (optional)   - images/test2007

2)使用文本文件(列表)存储图片

单个文本文件对应配置文件的写法

path: ../datasets/VOC train: # train images (relative to path)   - train2017.txt val: # val images (relative to path)   - val2017.txt test: # test images (optional)   - test-dev2017.txt

多个文本文件对应配置文件的写法(目前20230116仅detect 推理支持                                 ,训练不支持                      ,需要修改源码)

path: ../datasets/VOC train: # train images (relative to path)   - train2017.txt   - train2012.txt val: # val images (relative to path)   - val2017.txt test: # test images (optional)   - test-dev2017.txt

参考源代码:

1)函数“LoadImages                                ”用于推理

注意:

*可以为多个文件夹路径          ,为相对路径

*文件名列表文本文件只支持一个文本文件                                ,路径为绝对路径

*可以同时存在一个文本文件+若干目录

2)函数“LoadImages                      ”用于训练和评测

注意:

*可以为多个文件夹路径                      ,为相对路径

*可以为多个文件名列表文本文件,路径为:绝对路径                                ,或者相对路径但是是相对文本文件的路径!

*可以同时存在若干文本文件+若干目录

3                                 、编写data yaml 文件

可以参考:https://github.com/ultralytics/ultralytics/blob/main/ultralytics/yolo/data/datasets/coco128.yaml

4                      、编写模型yaml 文件 或者用预训练模型

    这里的yaml 文件其实就是利用现有的模型组件重新搭建一个新的网络                                 ,可以参照如下,或者简单就用预训练的模型(只需要改为yolov8n.pt)           。官方配置文件:ultralytics/yolov8n.yaml at main · ultralytics/ultralytics · GitHub

5          、编写训练参数文件(可选                                、高阶)

    官方终于把所有的配置项目全部解耦到配置文件                     ,不再像YOLOV5一样                                 ,一部分在配置文件           ,一部分在train.py 的启动参数中                                 。主要修改如下三个大的代码段                     。其中有个需要注意的代码段就是“close_mosaic”这个参数                     ,关于这个的讨论见我的另一个文章:yolov5 mosaic相关                                 ,目前要实现一个改进的mosaic           ,预计后续后评测效果后会考虑开源。官方配置文件:https://github.com/ultralytics/ultralytics/blob/main/ultralytics/yolo/configs/default.yaml                                 。

    Note:

    *如果你用的Python 接口          ,那么目前20230116官方无法直接传参进去修改这个配置文件或者引用新的配置文件                                 ,是写死的(下面第一张图)                                。https://github.com/ultralytics/ultralytics/blob/4962733b49d45e1ae6e7b3ca367e9af9756758bc/ultralytics/yolo/utils/__init__.py

    *如果是cli接口                      ,那么可以复写这个配置文件          ,下面第二                      、三张图。https://github.com/ultralytics/ultralytics/blob/c42e44a0211881b661b47050ac2727658078497d/docs/cli.md

    *当然常用的修改参数也是可以传参修改的                                ,见:Configuration - Ultralytics YOLOv8 Docs                      ,下面第四、五张图                      。 Detection - Ultralytics YOLOv8 Docs                                。

    *个人还是建议通过配置文件的方式管理训练过程,这样可以快速的追溯每一个实验           。 完整的命令就是:

 yolo task=init  # 可选                                ,复制一份默认配置到当前目录供修改                      。

 yolo  data=coco128.yaml model=yolov8n.pt  cfg=exp1.yaml #一旦用了cfg参数 命令行的task=detect                                、 mode=train 当前版本不再生效

6                                 、训练脚本

7、高阶使用

        如果你想改源码                                 ,或者不希望通过pip 的方式,污染环境                     ,还是希望安装源码                                 ,然后python xxxx.py 运行                                。那么需要:

1)git clone 源码

2)新建(复制)一个自己的调用脚本           。

源码链接:https://github.com/ultralytics/ultralytics/blob/main/ultralytics/yolo/cli.py           。复制到根目录                                 。

3)根目录正常调用 python cli.py cfg=/home/xxx/…/exp1.yaml 这个yaml 就是https://github.com/ultralytics/ultralytics/blob/main/ultralytics/yolo/configs/default.yaml                     。

原理:

        其实官方也是通过这两个文件完成的打包和调用           ,主要就是这句话:

1)https://github.com/ultralytics/ultralytics/blob/main/setup.py

2)https://github.com/ultralytics/ultralytics/blob/main/ultralytics/yolo/cli.py

打赏

        你的打赏是我不断分享的动力                     ,羞羞           。点这里                                 ,嘿嘿                                 。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
可以打码挂机的软件免费(靠谱的打码平台有哪些-揭秘挂机打码自动赚钱骗局)