基于 YOLOv8 的自定义数据集训练

简介: 基于 YOLOv8 的自定义数据集训练

图1.1:YOLOv8初始测试


YOLOv8🔥于 2023年1月10日由Ultralytics发布。它在计算机视觉方面提供了进展,带来了对我们感知、分析和理解视觉世界的巨大创新。它将为各个领域带来前所未有的可能性。


在速度、准确性和架构方面进行了相当大的改进。它是从头开始实现的,没有使用任何来自YOLOv5的主要模块(即模型架构)。它的速度更快,比其先前版本(YOLOv7)更准确,并且在平均精度均值(MAP)方面获得了53.7的新高。


图1.2:YOLOv8平均精度均值

在本文中,我们将重点介绍训练YOLOv8自定义数据集所需的步骤。您可以按照下面提到的步骤在自己的数据上训练YOLOv8。所有提到的步骤都经过了适当的测试,在Windows和Linux操作系统上运行良好。

  • 安装模块
  • 预训练的目标检测
  • 使用自定义数据训练YOLOv8
  • 使用自定义权重进行推理


安装模块

YOLOv8发布了一个名为“ultralytics”的软件包,您可以使用下面提到的命令进行安装。


pip install ultralytics==8.0.0
or
# latestversion
pip install ultralytics

以上命令将安装所有必要的软件包,以便您可以在自己的数据上使用YOLOv8进行检测和训练。


注意:请确保您的系统上安装了Python 3.7.0或更高版本。


预训练的目标检测

如果您只需要运行单个命令来以高效的方式进行目标检测并提供更准确和快速的结果,那您会有什么感受呢?


您可以在终端/(命令提示符)中运行以下命令,在所选视频/图像上使用预训练权重进行检测,使用YOLOv8。


#for image
yolo task=detect mode=predict model=yolov8n.pt source="test.png"
#for video
yolo task=detect mode=predict model=yolov8n.pt source="test.mp4"

如果一切顺利,您将在当前目录内的“runs/detect/exp”文件夹中获得结果。


Fig-1.3: 预训练对象检测(作者提供的图像)


在自定义数据上训练 YOLOv8

训练 YOLOv8 对象检测模型的步骤可以概括如下:

  • 收集数据
  • 标记数据
  • 划分数据集(训练集、测试集和验证集)
  • 创建配置文件
  • 开始训练

步骤 1:收集数据

为 YOLOv8 自定义训练创建一个数据集。如果没有数据,可以使用来自 openimages 数据库的数据集或以下网站提供的数据集:https://medium.com/nerd-for-tech/extraction-of-frames-from-multiple-videos-3ddbced6f3c2


YOLOv8 将标签数据存储在文本(.txt)文件中,格式如下:


<object-class-id> <x> <y> <width> <height>

步骤 2:标记数据

您可以使用 labelImg 工具或 Roboflow 平台进行数据标注,具体取决于您的需求。如果您想了解 labelImg 工具的工作流程,可以查看以下文章:

https://medium.com/nerd-for-tech/labeling-data-for-object-detection-yolo-5a4fa4f05844


步骤 3:划分数据集(训练集、测试集和验证集)

当您想在自定义数据上训练计算机视觉模型时,将数据分成训练集和测试集非常重要。训练集用于教授模型如何进行预测,而测试集用于评估模型的准确性。常见的分割比例是 80-20%,但实际比例可能取决于数据集的大小和您正在处理的具体任务。例如,如果您有一个小数据集,您可能希望使用更高的百分比进行训练,而如果您有一个大数据集,您可以使用较小的百分比进行训练。


对于数据拆分,您可以查看 split-folders,它会将数据随机拆分为训练集、测试集和验证集。split-folders链接:https://pypi.org/project/split-folders/


文件夹结构:


├── yolov8
 ## └── train
 ####└── images (folder including all training images)
 ####└── labels (folder including all training labels)
 ## └── test
 ####└── images (folder including all testing images)
 ####└── labels (folder including all testing labels)
 ## └── valid
 ####└── images (folder including all testing images)
 ####└── labels (folder including all testing labels)


步骤 4:创建配置文件

创建自定义配置文件可以是组织和存储计算机视觉模型的所有重要参数的有用方式。


在你已经打开终端/(命令提示符)的当前目录内创建一个文件名为“custom.yaml”的文件。将下面的代码粘贴到该文件中。设置数据集文件夹的正确路径,更改类及其名称,然后保存它。


path:  (dataset directory path)
train: (Complete path to dataset train folder)
test: (Complete path to dataset test folder) 
valid: (Complete path to dataset valid folder)
#Classes
nc: 5# replace according to your number of classes
#classes names
#replace all class names list with your classes names
names: ['person', 'bicycle', 'car', 'motorcycle', 'airplane']

注意:确保设置正确的训练和测试目录路径,因为训练过程将完全依赖于该文件。


步骤 5:开始训练

一旦你完成了预处理步骤,例如数据收集,数据标注,数据拆分和创建自定义配置文件,你可以使用下面在终端/(命令提示符)中提到的命令开始在自定义数据上训练YOLOv8。

    yolo task=detect mode=train model=yolov8n.pt data=custom.yaml epochs=3 imgsz=640

    task = detect(可以是分割或分类)

    mode = train(可以是预测或验证)

    model = yolov8n.pt(可以是yolov8s / yolov8l / yolov8x)

    epochs = 3(可以是任何数字)

    imgsz = 640(可以是320、416等,但请确保它是32的倍数)


    图1.5:在自定义数据上训练YOLOv8


    如果有任何图像损坏,YOLOv8将不会开始在自定义数据上进行训练。如果一些标签文件损坏,那么训练不会有问题,因为YOLOv8将忽略这些(图像和标签)文件。


    等待训练完成,然后使用新创建的权重进行推断。自定义训练的权重将保存在下面提到的文件夹路径中。

    [runs/train/exp/weights/best.pt]


    使用自定义权重推理

    使用自定义权重进行推断时,请使用下面提到的命令进行检测。

      yolo task=detect mode=predict model="runs/train/exp/weights/best.pt" source="test.png"
      or
      yolo task=detect mode=predict model="runs/train/exp/weights/best.pt" source="test.mp4" 


      相关文章
      |
      机器学习/深度学习 JSON 算法
      如何在自定义数据集上训练 YOLOv8 实例分割模型
      在本文中,我们将介绍微调 YOLOv8-seg 预训练模型的过程,以提高其在特定目标类别上的准确性。Ikomia API简化了计算机视觉工作流的开发过程,允许轻松尝试不同的参数以达到最佳结果。
      |
      并行计算
      最新YOLOv8(2023年8月版本)安装配置!一条龙傻瓜式安装,遇到问题评论区提问
      最近需要使用YOLOv8,百度了一下现在网上大多数教程都是比较早期的教程,很多文件已经大不相同,于是我根据官方readme文档,总结了一套安装方法,只需要按照本教程,复制每一段代码,按照教程配置好相应文件即可直接使用。
      9802 2
      |
      XML 数据格式 Python
      Labelimg标注自己的数据集,及如何划分训练集和验证集,应用于Yolov5
      Labelimg标注自己的数据集,及如何划分训练集和验证集,应用于Yolov5
      3994 0
      |
      XML 机器学习/深度学习 数据格式
      YOLOv8训练自己的数据集+常用传参说明
      YOLOv8训练自己的数据集+常用传参说明
      23733 3
      |
      机器学习/深度学习 数据采集 人工智能
      YOLOv8手势识别项目实战-石头剪刀布实时检测系统
      本项目结合了 YOLOv8 检测模型 和 PyQt5 图形界面工具,成功实现了石头剪刀布手势的实时识别。支持摄像头、图片、视频等多种输入方式,能够快速识别并显示实时结果。配套完整的源码和训练流程说明,帮助你快速部署并定制自己的手势识别系统
      YOLOv8手势识别项目实战-石头剪刀布实时检测系统
      |
      机器学习/深度学习
      YOLOv8改进 | 损失函数篇 | 更加聚焦的边界框损失Focaler-IoU、InnerFocalerIoU(二次创新)
      YOLOv8改进 | 损失函数篇 | 更加聚焦的边界框损失Focaler-IoU、InnerFocalerIoU(二次创新)
      1663 0
      |
      JSON 人工智能 数据格式
      AI计算机视觉笔记二十六:YOLOV8自训练关键点检测
      本文档详细记录了使用YOLOv8训练关键点检测模型的过程。首先通过清华源安装YOLOv8,并验证安装。接着通过示例权重文件与测试图片`bus.jpg`演示预测流程。为准备训练数据,文档介绍了如何使用`labelme`标注工具进行关键点标注,并提供了一个Python脚本`labelme2yolo.py`将标注结果从JSON格式转换为YOLO所需的TXT格式。随后,通过Jupyter Notebook可视化标注结果确保准确性。最后,文档展示了如何组织数据集目录结构,并提供了训练与测试代码示例,包括配置文件`smoke.yaml`及训练脚本`train.py`,帮助读者完成自定义模型的训练与评估。
      4795 2
      |
      机器学习/深度学习 编解码 监控
      目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
      这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
      23887 59
      目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
      |
      机器学习/深度学习 人工智能 计算机视觉
      YOLOv11 正式发布!你需要知道什么? 另附:YOLOv8 与YOLOv11 各模型性能比较
      YOLOv11是Ultralytics团队推出的最新版本,相比YOLOv10带来了多项改进。主要特点包括:模型架构优化、GPU训练加速、速度提升、参数减少以及更强的适应性和更多任务支持。YOLOv11支持目标检测、图像分割、姿态估计、旋转边界框和图像分类等多种任务,并提供不同尺寸的模型版本,以满足不同应用场景的需求。
      YOLOv11 正式发布!你需要知道什么? 另附:YOLOv8 与YOLOv11 各模型性能比较
      |
      算法 计算机视觉
      【YOLOv8训练结果评估】YOLOv8如何使用训练好的模型对验证集进行评估及评估参数详解
      【YOLOv8训练结果评估】YOLOv8如何使用训练好的模型对验证集进行评估及评估参数详解