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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

概述    

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

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

详细

1、标注

        准备自己的数据数据的标注格式和YOLOV5没有分别一般工业还是需要使用如labelme等标注格式为coco格式class_id x y w xxywx均需要归一化类别号从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 运行。那么需要

1git 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

原理

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

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

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

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

“YOLOV8——快速训练指南(上手教程、自定义数据训练)” 的相关文章