列车自定义数据
本指南介绍了如何使用 📚 训练自己的自定义数据集。 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 提供两种许可选项:
- AGPL-3.0 许可证是经 OSI 批准的开放源码许可证,非常适合学生和爱好者使用。
- 企业许可证适用于希望将我们的人工智能模型纳入其产品和服务的企业。
更多详情,请参阅Ultralytics Licensing。
YOLOv5 模型必须在标注数据上进行训练,才能学习数据中的对象类别。在开始训练之前,有两种方法可以创建数据集:
选项 1:创建一个 Roboflow数据集
1.1 收集图像
您的模型将以身作则。最重要的是,要在与其在野外看到的图像相似的图像上进行训练。理想情况下,您将从相同的配置(相机、角度、照明等)中收集各种图像,因为您最终将部署您的项目。
如果无法做到这一点,您可以从公共数据集开始训练初始模型,然后在推理过程中从野生图像中采样,反复改进数据集和模型。
1.2 创建标签
收集到图像后,您需要为感兴趣的对象添加注释,以便为模型学习创建基本事实。
Roboflow Annotate是一款基于网络的简单工具,用于与团队一起管理和标记图像,并以YOLOv5 的注释格式导出。
1.3 准备数据集YOLOv5
无论您是否在图片上标注Roboflow,您都可以用它将数据集转换为YOLO 格式,创建YOLOv5 YAML 配置文件,并将其托管以导入训练脚本。
创建免费Roboflow 账户 并将数据集上传到 Public
工作区,标注所有未标注的图像,然后在 YOLOv5 Pytorch
格式。
注意:YOLOv5 会在训练过程中进行在线增强,因此我们不建议在使用YOLOv5 进行训练时应用Roboflow 中的任何增强步骤。但我们建议应用以下预处理步骤:
- 自动调整方向- 从图像中删除 EXIF 方向。
- 调整大小(拉伸)--调整为模型的正方形输入尺寸(640x640 是YOLOv5 默认值)。
生成一个版本会给你的数据集提供一个快照,这样你就可以随时回过头来比较你未来的模型训练运行,即使你以后添加了更多图像或更改了它的配置。
出口 YOLOv5 Pytorch
格式,然后将该代码段复制到训练脚本或笔记本中以下载数据集。
选项 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_center
和width
图像宽度,以及y_center
和height
按图像高度计算。 - 类号以 0 为索引(从 0 开始)。
上述图像对应的标签文件包含 2 个人(类别 0
)和平局(班级 27
):
2.3 整理目录
根据下面的示例整理列车和阀的图像和标签。YOLOv5 假定 /coco128
在 /datasets
通讯录 邻接 的 /yolov5
目录。 YOLOv5 为每个图像自动定位标签 的最后一个实例 /images/
在每个图像路径中使用 /labels/
.例如
3.选择型号
选择一个预训练模型开始训练。这里我们选择YOLOv5s,它是目前第二小、速度最快的模型。有关所有模型的全面比较,请参见我们的 README表格。
4.火车
在 COCO128 上训练 YOLOv5s 模型,方法是指定数据集、批量大小、图像大小以及预训练的 --weights yolov5s.pt
(推荐),或随机初始化 --weights '' --cfg yolov5s.yaml
(不推荐)。预训练的权重会自动从 最新发布YOLOv5.
提示
💡 添加 --cache ram
或 --cache disk
以加快训练速度(需要大量内存/磁盘资源)。
提示
💡 始终从本地数据集进行训练。挂载或网络驱动器(如Google Drive)会非常慢。
所有训练结果都会保存到 runs/train/
运行目录递增,即 runs/train/exp2
, runs/train/exp3
等等。更多详情,请参阅我们教程笔记本的培训部分。
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 笔记本吧:
ClearML 日志和自动化 🌟 新
ClearML完全集成到YOLOv5 中,用于跟踪实验、管理数据集版本,甚至远程执行训练运行。要启用ClearML :
pip install clearml
- 运行
clearml-init
连接ClearML 服务器
您将获得实验管理器的所有预期功能:实时更新、模型上传、实验比较等,但ClearML 还会跟踪未提交的更改和已安装的软件包。得益于此,ClearML 任务(也就是我们所说的实验)也可以在不同机器上重现!只需增加一行,我们就能在队列中安排YOLOv5 训练任务,由任意数量的ClearML 代理(工作者)执行。
您可以使用ClearML Data 对数据集进行版本控制,然后只需使用其唯一 ID 就能将其传递到YOLOv5 。这将帮助您跟踪数据,而不会增加额外的麻烦。详情请浏览ClearML Tutorial!
本地记录
训练结果会自动记录在 张力板 和 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'
下一步工作
一旦模型训练完成,就可以使用最佳检查点 best.pt
到:
- 运行 CLI或 Python对新图像和视频进行推理
- 验证训练、评估和测试分段的准确性
- 导出为 TensorFlowONNXTFlite,TF.js,CoreML 和TensorRT 格式。
- 改进超参数以提高性能
- 通过采样真实世界的图像并将其添加到数据集中来改进模型
支持的环境
Ultralytics 提供了一系列随时可用的环境,每个环境都预装了基本的依赖项,如 CUDA、CUDNN、 Python和 PyTorch等基本依赖项,以便启动项目。
- 免费GPU 笔记本:
- Google 云计算 GCP 快速入门指南
- 亚马逊 AWS 快速入门指南
- Azure.AzureML 快速入门指南AzureML 快速入门指南
- Docker: Docker 快速入门指南
项目现状
此徽章表示YOLOv5 GitHub Actions 的所有持续集成(CI)测试均已成功通过。这些 CI 测试严格检查了YOLOv5 在训练、验证、推理、导出和基准等多个关键方面的功能和性能。它们确保在 macOS、Windows 和 Ubuntu 上运行的一致性和可靠性,每 24 小时和每次新提交时都会进行一次测试。
常见问题
如何在自定义数据集上训练YOLOv5 ?
在自定义数据集上训练YOLOv5 涉及多个步骤:
- 准备数据集:收集并标注图像使用 Roboflow等工具来整理数据并以YOLOv5 格式导出。
- 设置环境:克隆YOLOv5 repo 并安装依赖项:
- 创建数据集配置:写一个
dataset.yaml
文件定义了 train/val 路径和类名。 - 培训模型:
我可以使用哪些工具来注释YOLOv5 数据集?
您可以使用Roboflow Annotate,这是一款用于标注图像的直观网络工具。它支持团队协作,并以YOLOv5 格式导出。收集图像后,可使用Roboflow 高效创建和管理注释。其他选项包括用于本地注释的 LabelImg 和 CVAT 等工具。
为什么要使用Ultralytics HUB 来训练我的YOLO 模型?
Ultralytics HUB 为培训、部署和管理YOLO 模型提供了一个端到端平台,无需大量编码技能。使用Ultralytics HUB 的好处包括
- 简易模型培训:通过预配置环境简化培训过程。
- 数据管理:轻松管理数据集和版本控制。
- 实时监控:集成了 Comet等工具进行实时指标跟踪和可视化。
- 协作:是团队项目的理想选择,可共享资源,便于管理。
如何将注释数据转换为YOLOv5 格式?
使用Roboflow 将注释数据转换为YOLOv5 格式:
- 将数据集上传至Roboflow 工作区。
- 如果尚未标注,请标注图像。
- 生成和导出 中的数据集
YOLOv5 Pytorch
格式。确保应用了预处理步骤,如自动调整方向和调整大小(拉伸)至正方形输入尺寸(如 640x640)。 - 下载数据集,并将其整合到YOLOv5 训练脚本中。
在商业应用中使用YOLOv5 有哪些许可选项?
Ultralytics 提供两种许可选项:
- AGPL-3.0 许可证:开放源码许可证,适用于非商业用途,是学生和爱好者的理想选择。
- 企业许可证:专为寻求将YOLOv5 集成到商业产品和服务中的企业量身定制。有关详细信息,请访问我们的许可页面。
更多详情,请参阅我们的Ultralytics 许可指南。