Link to this section在自定义数据上训练 YOLOv5#
📚 本指南介绍了如何使用 YOLOv5 模型训练你自己的 自定义数据集 🚀。训练自定义模型是将 计算机视觉 解决方案应用于除常规 目标检测 之外的特定实际应用的基础步骤。
Link to this section开始之前#
首先,确保你已搭建好必要的环境。克隆 YOLOv5 仓库并从 requirements.txt 安装所需的依赖项。一个 Python>=3.8.0 环境和 PyTorch>=1.8 是必不可少的。如果本地找不到模型和数据集,它们会自动从最新的 YOLOv5 发布版本 中下载。
git clone https://github.com/ultralytics/yolov5 # Clone the repository
cd yolov5
pip install -r requirements.txt # Install dependenciesLink to this section在自定义数据上进行训练#
开发自定义 目标检测 模型是一个迭代过程:
- 收集并整理图像:收集与你特定任务相关的图像。高质量、多样化的数据至关重要。请参阅我们关于 数据收集与标注 的指南。
- 标注对象:准确标注你图像中感兴趣的对象。
- 训练模型:使用标注数据 训练 你的 YOLOv5 模型。通过从预训练权重开始,利用 迁移学习 的优势。
- 部署与预测:利用训练好的模型对新的、未见过的数据进行 推理。
- 收集边缘案例:识别模型表现不佳的场景(边缘案例),并将类似数据添加到你的数据集中以提高鲁棒性。重复此循环。
Ultralytics Platform 为整个 机器学习运维 (MLOps) 周期提供了一个精简的、无代码的解决方案,包括数据集管理、模型训练和部署。
Ultralytics 提供两种许可选项,以适应不同的使用场景:
- AGPL-3.0 许可证:这种 经 OSI 批准 的开源许可证非常适合热衷于开放协作和知识共享的学生、研究人员和爱好者。它要求衍生作品必须在相同的许可证下共享。有关详细信息,请参阅 LICENSE 文件。
- 企业许可证:针对开发和生产用途,此许可证支持将 Ultralytics 软件和 AI 模型无缝集成到商业产品和服务中,包括内部工具、自动化工作流和生产部署,从而绕过 AGPL-3.0 的开源要求。如需开始使用,请通过 Ultralytics Licensing 联系我们。
在 Ultralytics Licensing 页面上进一步探索我们的许可选项。
开始训练之前,数据集的准备工作至关重要。
Link to this section创建数据集#
YOLOv5 模型需要标注数据来学习对象类的视觉特征。正确组织你的数据集是关键。
Link to this section1.1 创建 dataset.yaml#
数据集配置文件(例如 coco128.yaml)概述了数据集的结构、类名以及图像目录的路径。COCO128 是一个小型示例数据集,包含来自庞大的 COCO 数据集的前 128 张图像。它对于快速测试训练流程和诊断潜在问题(如 过拟合)非常有用。
dataset.yaml 文件结构包括:
path:包含数据集的根目录。train,val,test:从path到包含图像或列出训练、验证和测试集图像路径的文本文件的目录的相对路径。names:将类索引(从 0 开始)映射到其对应类名的字典。
当你从 YOLOv5 仓库根目录启动训练时,你可以将 path 设置为绝对目录(例如 /home/user/datasets/coco128)或相对路径(如 ../datasets/coco128)。
以下是 coco128.yaml 的结构(在 GitHub 上查看):
# Dataset root directory relative to the yolov5 directory
path: coco128
# Train/val/test sets: specify directories, *.txt files, or lists
train: images/train2017 # 128 images for training
val: images/train2017 # 128 images for validation
test: # Optional path to test images
# Classes (example using 80 COCO classes)
names:
0: person
1: bicycle
2: car
# ... (remaining COCO classes)
77: teddy bear
78: hair drier
79: toothbrushLink to this section1.2 利用模型进行自动化标注#
手动标注是常见的方法,但非常耗时。基础模型可以实现标注的自动化或半自动化,并加速数据集的创建。可以帮助生成标签的模型示例:
- Google Gemini:像 Gemini 这样的大型多模态模型拥有强大的图像理解能力。可以通过提示词让它们识别并定位图像中的对象,生成可以转换为 YOLO 格式标签的边界框或描述。请在提供的教程笔记本中探索其潜力。
- SAM2 (Segment Anything Model 2):专注于分割的基础模型(如 SAM2)能够以高精度识别和描绘物体。虽然主要用于分割,但生成的掩码通常可以转换为适用于目标检测任务的边界框标注。
- YOLOWorld:该模型提供了开放词汇检测功能。你可以提供你感兴趣物体的文本描述,YOLOWorld 可以在 无需 对这些特定类进行预先训练的情况下在图像中定位它们。这可以用作生成初始标签的起点,然后进行优化。
使用这些模型可以提供“预标注”步骤,减少所需的手动工作。然而,审查和精炼自动生成的标签以确保准确性和一致性至关重要,因为质量直接影响你训练的 YOLOv5 模型的性能。生成(并可能精炼)标签后,请确保它们遵循 YOLO 格式:每个图像对应一个 *.txt 文件,每行表示一个对象,格式为 class_index x_center y_center width height(归一化坐标,索引从 0 开始)。如果图像中没有感兴趣的对象,则不需要对应的 *.txt 文件。
YOLO 格式 *.txt 文件的规范非常精确:
- 每个对象一行 边界框。
- 每一行必须包含:
class_index x_center y_center width height。 - 坐标必须 归一化 到 0 到 1 之间。为此,请将
x_center和width的像素值除以图像的总宽度,并将y_center和height除以图像的总高度。 - 类索引从 0 开始计数(即第一类由
0表示,第二类由1表示,依此类推)。

上图对应的标签文件,包含两个“person”对象(类索引 0)和一个“tie”对象(类索引 27),看起来会是这样:

Link to this section1.3 组织目录#
Structure your datasets directory as illustrated below. By default, YOLOv5 anticipates the dataset directory (e.g., /coco128) to reside within a /datasets folder located adjacent to the /yolov5 repository directory.
YOLOv5 通过将图像路径中最后一个 /images/ 替换为 /labels/ 来自动定位每张图像的标签。例如:
../datasets/coco128/images/im0.jpg # Path to the image file
../datasets/coco128/labels/im0.txt # Path to the corresponding label file推荐的目录结构是:
/datasets/
└── coco128/ # Dataset root
├── images/
│ ├── train2017/ # Training images
│ │ ├── 000000000009.jpg
│ │ └── ...
│ └── val2017/ # Validation images (optional if using same set for train/val)
│ └── ...
└── labels/
├── train2017/ # Training labels
│ ├── 000000000009.txt
│ └── ...
└── val2017/ # Validation labels (optional if using same set for train/val)
└── ...
Link to this section选择模型#
Choose a pretrained model to initiate the training process. Starting with pretrained weights significantly accelerates learning and improves performance compared to training from scratch. YOLOv5 offers various model sizes, each balancing speed and accuracy differently. For example, YOLOv5s is the second-smallest and fastest model, suitable for resource-constrained environments. Consult the README table for a detailed comparison of all available models.

Link to this section训练#
Begin the model training using the train.py script. Essential arguments include:
--img:定义输入 图像尺寸(例如--img 640)。更大的尺寸通常会产生更好的准确性,但需要更多的 GPU 内存。--batch:决定 批次大小(例如--batch 16)。选择你的 GPU 能处理的最大尺寸。--epochs:指定训练 轮数 的总数(例如--epochs 100)。一个轮次代表对整个训练数据集进行一次完整遍历。--data:你的dataset.yaml文件的路径(例如--data coco128.yaml)。--weights:初始权重文件的路径。强烈建议使用预训练权重(例如--weights yolov5s.pt),以实现更快的收敛和更优的结果。若要从零开始训练(除非你有非常大的数据集和特定需求,否则不建议),请使用--weights '' --cfg yolov5s.yaml。
如果本地找不到预训练权重,它们会自动从 最新 YOLOv5 发布版本 下载。
# Example: Train YOLOv5s on the COCO128 dataset for 3 epochs
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt💡 使用 --cache ram 或 --cache disk 分别将数据集图像缓存到 RAM 或本地磁盘中。这将极大地加速训练,特别是在数据集 I/O(输入/输出)操作成为瓶颈时。请注意,这需要大量的 RAM 或磁盘空间。
💡 始终使用本地存储的数据集进行训练。从网络驱动器(如 Google Drive)或远程存储访问数据可能会显著减慢速度并阻碍训练性能。将数据集复制到本地 SSD 通常是最佳实践。
所有训练输出,包括权重和日志,都保存在 runs/train/ 目录中。每个训练会话都会创建一个新的子目录(例如 runs/train/exp, runs/train/exp2 等)。如需互动式的亲身体验,请浏览我们官方教程笔记本中的训练部分:
Link to this section可视化#
YOLOv5 与各种工具无缝集成,用于可视化训练进度、评估结果以及实时监控性能。
Link to this sectionComet 日志记录与可视化#
Comet 已完全集成,用于全面的实验跟踪。利用交互式 Comet 自定义面板 实时可视化指标、保存超参数、管理数据集和模型检查点以及分析模型预测。
入门非常简单:
pip install comet_ml # 1. Install Comet library
export COMET_API_KEY=YOUR_API_KEY_HERE # 2. Set your Comet API key (create a free account at Comet.ml)
python train.py --img 640 --epochs 3 --data coco128.yaml --weights yolov5s.pt # 3. Train your model - Comet automatically logs everything!深入了解我们 Comet 集成指南 中的支持功能。从其官方 文档 中详细了解 Comet 的功能。尝试 Comet Colab Notebook 进行实时演示:
Link to this sectionClearML 日志记录与自动化#
ClearML 集成支持详细的实验跟踪、数据集版本管理,甚至远程执行训练运行。通过以下简单步骤激活 ClearML:
- 安装包:
pip install clearml - 初始化 ClearML:运行
clearml-init一次以连接到你的 ClearML 服务器(无论是自托管还是 免费层级)。
ClearML 会自动捕获实验详情、模型上传、比较、未提交的代码更改和已安装的软件包,确保完全可重复性。你可以轻松地在远程代理上安排训练任务,并使用 ClearML Data 管理数据集版本。探索 ClearML 集成指南 以获取详尽信息。
Link to this section本地日志记录#
训练结果会自动使用 TensorBoard 进行记录,并作为 CSV 文件保存在特定的实验目录中(例如 runs/train/exp)。记录的数据包括:
- 训练和验证损失以及性能指标。
- 显示应用增强(如马赛克增强)的示例图像。
- 用于视觉检查的真实标签与模型预测。
- 关键评估指标,例如 Precision-Recall (PR) 曲线。
- 用于详细类级性能分析的 混淆矩阵。
results.csv 文件会在每个轮次后更新,并在训练结束后绘制为 results.png。你还可以使用提供的实用函数手动绘制任何 results.csv 文件:
from utils.plots import plot_results
# Plot results from a specific training run directory
plot_results("runs/train/exp/results.csv") # This will generate 'results.png' in the same directory
Link to this section后续步骤#
训练成功完成后,性能最佳的模型检查点 (best.pt) 将被保存,随时可供部署或进一步精炼。潜在的后续步骤包括:
- Run inference on new images or videos using the trained model via the CLI or Python.
- 执行 验证,以评估模型在不同数据分割(例如保留的测试集)上的 准确性 和泛化能力。
- 将模型 导出 为各种部署格式,例如 ONNX、TensorFlow SavedModel 或 TensorRT,以便在不同平台上进行优化推理。
- 采用 超参数调优 技术,以潜在地挤压出额外的性能提升。
- 遵循我们的 最佳训练结果技巧,并根据性能分析不断添加更多样化和更具挑战性的数据,继续改进你的模型。
Link to this section支持的环境#
Ultralytics 提供配备必要依赖项(如 CUDA, cuDNN, Python 和 PyTorch)的即用型环境,助你轻松上手。
- 免费 GPU 笔记本:
- 云平台:
- Google Cloud: GCP 快速入门指南
- Amazon AWS: AWS 快速入门指南
- Microsoft Azure:AzureML 快速入门指南
- 本地设置:
- Docker:Docker 快速入门指南
- Docker:Docker 快速入门指南
Link to this section项目状态#
此徽章表示所有 YOLOv5 GitHub Actions 持续集成 (CI) 测试均已成功通过。这些严格的 CI 测试涵盖了核心功能,包括 训练、验证、推理、导出 和 基准测试,跨 macOS、Windows 和 Ubuntu 操作系统。测试每 24 小时以及每次代码提交时自动执行,确保持续的稳定性和最佳性能。
Link to this section常见问题解答#
Link to this section我该如何在自定义数据集上训练 YOLOv5?#
在自定义数据集上训练 YOLOv5 涉及几个关键步骤:
- 准备你的数据集:收集图像并进行标注。确保标注采用所需的 YOLO 格式。将图像和标签组织到
train/和val/(以及可选的test/)目录中。考虑使用 Google Gemini、SAM2 或 YOLOWorld 等模型来辅助或自动化标注过程(请参阅第 1.2 节)。 - 设置你的环境:克隆 YOLOv5 仓库并使用
pip install -r requirements.txt安装依赖项。git clone https://github.com/ultralytics/yolov5 cd yolov5 pip install -r requirements.txt - 创建数据集配置文件:在
dataset.yaml文件中定义数据集路径、类别数量和类名。 - 开始训练:执行
train.py脚本,提供你的dataset.yaml路径、所需的预训练权重(例如yolov5s.pt)、图像尺寸、批次大小和轮次 (epoch) 数量。python train.py --img 640 --batch 16 --epochs 100 --data path/to/your/dataset.yaml --weights yolov5s.pt
Link to this section为什么我应该使用 Ultralytics Platform 来训练我的 YOLO 模型?#
Ultralytics Platform 是一个全面的平台,旨在简化整个 YOLO 模型开发生命周期,通常无需编写任何代码。主要优势包括:
- 简化训练:使用预配置的环境和直观的用户界面轻松训练模型。
- 集成数据管理:在平台内高效上传、版本控制和管理你的数据集。
- 实时监控:使用 Comet 或 TensorBoard 等集成工具跟踪训练进度并可视化性能指标。
- 协作功能:通过共享资源、项目管理工具和轻松的模型共享促进团队合作。
- 无代码部署:将训练好的模型直接部署到各种目标设备。
如需实践指南,请查看我们的博客文章:如何使用 Ultralytics Platform 训练你的自定义模型。
Link to this section我该如何将已标注的数据转换为 YOLOv5 格式?#
无论你是手动标注还是使用自动化工具(如第 1.2 节中提到的那些),最终的标签必须采用 YOLOv5 所需的特定 YOLO 格式:
- Create one
.txtfile for each image. The filename should match the image filename (e.g.,image1.jpgcorresponds toimage1.txt). Place these files in alabels/directory parallel to yourimages/directory (e.g.,../datasets/mydataset/labels/train/). .txt文件中的每一行代表一个对象标注,并遵循以下格式:class_index center_x center_y width height。- 坐标(
center_x、center_y、width、height)必须相对于图像尺寸进行归一化处理(值在 0.0 到 1.0 之间)。 - 类别索引是从零开始的(第一个类别为
0,第二个为1,依此类推)。
许多手动标注工具提供直接导出为 YOLO 格式的功能。如果使用自动化模型,你需要脚本或流程将它们的输出(例如边界框坐标、分割掩码)转换为这种特定的归一化文本格式。确保你的最终数据集结构符合指南中提供的示例。有关更多详情,请参阅我们的 数据收集与标注指南。
Link to this section在商业应用中使用 YOLOv5 有哪些许可选项?#
Ultralytics 提供针对不同需求量身定制的灵活许可方案:
- AGPL-3.0 许可证:此开源许可证适用于学术研究、个人项目以及可接受开源合规性的情况。它要求修改版本和衍生作品也必须在 AGPL-3.0 下开源。请查看 AGPL-3.0 许可证详情。
- 企业许可证:专为将 YOLOv5 集成到专有产品或服务中的企业设计的商业许可证。此许可证消除了 AGPL-3.0 的开源义务,允许闭源分发。请访问我们的 许可页面 以获取更多详细信息或申请 企业许可证。
请选择最符合你项目需求和分发模式的许可证。
