跳至内容

列车自定义数据

本指南介绍了如何使用 📚 训练自己的自定义数据集YOLOv5🚀.

开始之前

克隆 repo 并将requirements.txt安装在 Python>=3.8.0环境中安装 requirements txt,包括 PyTorch>=1.8.模型数据集会自动从最新的YOLOv5 版本下载。

git clone https://github.com/ultralytics/yolov5  # clone
cd yolov5
pip install -r requirements.txt  # install

自定义数据训练

Ultralytics 主动学习

创建一个自定义模型来检测物体是一个迭代的过程,需要收集和整理图像、标注感兴趣的物体、训练模型、将其部署到野外进行预测,然后使用部署的模型收集边缘案例示例来重复和改进。

许可

Ultralytics 提供两种许可选项:

更多详情,请参阅Ultralytics Licensing

YOLOv5 模型必须在标注数据上进行训练,才能学习数据中的对象类别。在开始训练之前,有两种方法可以创建数据集:

选项 1:创建一个 Roboflow数据集

1.1 收集图像

您的模型将以身作则。最重要的是,要在与其在野外看到的图像相似的图像上进行训练。理想情况下,您将从相同的配置(相机、角度、照明等)中收集各种图像,因为您最终将部署您的项目。

如果无法做到这一点,您可以从公共数据集开始训练初始模型,然后在推理过程中从野生图像中采样,反复改进数据集和模型。

1.2 创建标签

收集到图像后,您需要为感兴趣的对象添加注释,以便为模型学习创建基本事实。

YOLOv5 精确度

Roboflow Annotate是一款基于网络的简单工具,用于与团队一起管理和标记图像,并以YOLOv5 的注释格式导出。

1.3 准备数据集YOLOv5

无论您是否在图片上标注Roboflow,您都可以用它将数据集转换为YOLO 格式,创建YOLOv5 YAML 配置文件,并将其托管以导入训练脚本。

创建免费Roboflow 账户 并将数据集上传到 Public 工作区,标注所有未标注的图像,然后在 YOLOv5 Pytorch 格式。

注意:YOLOv5 会在训练过程中进行在线增强,因此我们不建议在使用YOLOv5 进行训练时应用Roboflow 中的任何增强步骤。但我们建议应用以下预处理步骤:

建议的预处理步骤

  • 自动调整方向- 从图像中删除 EXIF 方向。
  • 调整大小(拉伸)--调整为模型的正方形输入尺寸(640x640 是YOLOv5 默认值)。

生成一个版本会给你的数据集提供一个快照,这样你就可以随时回过头来比较你未来的模型训练运行,即使你以后添加了更多图像或更改了它的配置。

以YOLOv5 格式导出

出口 YOLOv5 Pytorch 格式,然后将该代码段复制到训练脚本或笔记本中以下载数据集。

Roboflow 数据集下载片段

选项 2:创建手动数据集

2.1 创建 dataset.yaml

COCO128 是一个小型教程数据集示例,它由 "图像 "中的前 128 幅图像组成。 COCO train2017.这 128 幅图像同样用于训练和验证,以验证我们的训练管道是否能够实现过度拟合。 data/coco128.yaml下图所示的数据集配置文件定义了 1) 数据集根目录 path 和相对路径的 train / val / test 图像目录(或 *.txt 带图像路径的文件)和 2)一个类 names 字典

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/coco128 # dataset root dir
train: images/train2017 # train images (relative to 'path') 128 images
val: images/train2017 # val images (relative to 'path') 128 images
test: # test images (optional)

# Classes (80 COCO classes)
names:
    0: person
    1: bicycle
    2: car
    # ...
    77: teddy bear
    78: hair drier
    79: toothbrush

2.2 创建标签

使用注释工具标注图像后,将标签导出到 YOLO 格式有一个 *.txt 文件(如果图像中没有对象,则无 *.txt 文件是必需的)。文件 *.txt 文件规格为

  • 每个对象一行
  • 每一行是 class x_center y_center width height 格式。
  • 方框坐标必须在 归一化 xywh 格式(从 0 到 1)。如果您的方框以像素为单位,则除以 x_centerwidth 图像宽度,以及 y_centerheight 按图像高度计算。
  • 类号以 0 为索引(从 0 开始)。

Roboflow 注释

上述图像对应的标签文件包含 2 个人(类别 0)和平局(班级 27):

Roboflow 数据集预处理

2.3 整理目录

根据下面的示例整理列车和阀的图像和标签。YOLOv5 假定 /coco128/datasets 通讯录 邻接/yolov5 目录。 YOLOv5 为每个图像自动定位标签 的最后一个实例 /images/ 在每个图像路径中使用 /labels/.例如

../datasets/coco128/images/im0.jpg  # image
../datasets/coco128/labels/im0.txt  # label

YOLOv5 数据集结构

3.选择型号

选择一个预训练模型开始训练。这里我们选择YOLOv5s,它是目前第二小、速度最快的模型。有关所有模型的全面比较,请参见我们的 README表格

YOLOv5 模型

4.火车

在 COCO128 上训练 YOLOv5s 模型,方法是指定数据集、批量大小、图像大小以及预训练的 --weights yolov5s.pt (推荐),或随机初始化 --weights '' --cfg yolov5s.yaml (不推荐)。预训练的权重会自动从 最新发布YOLOv5.

python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt

提示

💡 添加 --cache ram--cache disk 以加快训练速度(需要大量内存/磁盘资源)。

提示

💡 始终从本地数据集进行训练。挂载或网络驱动器(如 Google Drive)会非常慢。

所有训练结果都会保存到 runs/train/ 运行目录递增,即 runs/train/exp2, runs/train/exp3 等等。更多详情,请参阅我们教程笔记本的培训部分。 在 Colab 中打开 在 Kaggle 中打开

5.可视化

Comet 日志和可视化 🌟 新

Comet现在已与YOLOv5 完全集成。您可以实时跟踪和可视化模型指标,保存超参数、数据集和模型检查点,并通过Comet 自定义面板可视化模型预测结果!Comet 确保您不会丢失工作轨迹,并使各种规模的团队都能轻松共享结果和开展协作!

入门很简单

pip install comet_ml  # 1. install
export COMET_API_KEY=<Your API Key>  # 2. paste API key
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt  # 3. train

要进一步了解该集成支持的所有Comet 功能,请查看 Comet 教程.如果您想了解有关Comet 的更多信息,请访问我们的 文献资料.开始试用Comet Colab 笔记本吧: 在 Colab 中打开

YOLO 用户界面

ClearML 日志和自动化 🌟 新

ClearML完全集成到YOLOv5 中,用于跟踪实验、管理数据集版本,甚至远程执行训练运行。要启用ClearML :

  • pip install clearml
  • 运行 clearml-init 连接ClearML 服务器

您将获得实验管理器的所有预期功能:实时更新、模型上传、实验比较等,但ClearML 还会跟踪未提交的更改和已安装的软件包。得益于此,ClearML 任务(也就是我们所说的实验)也可以在不同机器上重现!只需增加一行,我们就能在队列中安排YOLOv5 训练任务,由任意数量的ClearML 代理(工作者)执行。

您可以使用ClearML Data 对数据集进行版本控制,然后只需使用其唯一 ID 就能将其传递到YOLOv5 。这将帮助您跟踪数据,而不会增加额外的麻烦。详情请浏览ClearML Tutorial!

ClearML 实验管理用户界面

本地记录

训练结果会自动记录在 张力板CSV 记录仪 runs/train,每次新的训练都会创建一个新的实验目录,如 runs/train/exp2, runs/train/exp3等等。

该目录包含训练和估值统计数据、镶嵌图、标签、预测和增强镶嵌图,以及精度-召回(PR)曲线和混淆矩阵等指标和图表。

本地测井结果

结果文件 results.csv 在每个纪元后更新,然后绘制为 results.png (下图)。您还可以绘制任何 results.csv 文件:

from utils.plots import plot_results

plot_results("path/to/results.csv")  # plot 'results.csv' as 'results.png'

结果.png

下一步工作

一旦模型训练完成,就可以使用最佳检查点 best.pt 到:

  • 运行 CLIPython对新图像和视频进行推理
  • 验证训练、评估和测试分段的准确性
  • 导出为TensorFlow 、Keras、ONNX 、TFlite、TF.js、CoreML 和TensorRT 格式
  • 改进超参数以提高性能
  • 通过采样真实世界的图像并将其添加到数据集中来改进模型

支持的环境

Ultralytics 提供了一系列随时可用的环境,每个环境都预装了CUDACUDNNPythonPyTorch等基本依赖项,以启动您的项目。

项目现状

YOLOv5 CI

此徽章表示YOLOv5 GitHub Actions 的所有持续集成(CI)测试均已成功通过。这些 CI 测试严格检查了YOLOv5 在训练验证推理导出基准等多个关键方面的功能和性能。它们确保在 macOS、Windows 和 Ubuntu 上运行的一致性和可靠性,每 24 小时和每次新提交时都会进行一次测试。



Created 2023-11-12, Updated 2024-06-10
Authors: glenn-jocher (14), Burhan-Q (1)

评论