YOLOv5 是一种基于深度学习的目标检测框架,因其高效性和灵活性而受到广泛欢迎。本文将详细介绍如何从零开始搭建 YOLOv5 的开发环境,并完成模型训练的全过程。
YOLO(You Only Look Once)是一种实时目标检测算法,其核心思想是将目标检测问题转化为一个回归问题。相比传统的两阶段检测方法(如 Faster R-CNN),YOLO 的速度更快,适用于需要实时处理的应用场景。YOLOv5 是该系列的一个改进版本,支持多种硬件平台,同时具备良好的扩展性。
在开始训练之前,我们需要搭建适合 YOLOv5 的开发环境。
以下是运行 YOLOv5 所需的主要软件和库:
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
python -m venv yolov5_env
source yolov5_env/bin/activate # Windows 用户请运行 `yolov5_env\Scripts\activate`
pip install -r requirements.txt
运行以下命令以验证环境是否正确配置:
python detect.py --weights yolov5s.pt --img 640 --conf 0.25 --source data/images/
如果一切正常,脚本会加载预训练模型并在测试图像上进行目标检测。
YOLOv5 使用 COCO 格式的标注数据集。以下是数据准备的基本步骤:
YOLOv5 支持的数据集格式为:
images
文件夹中。labels
文件夹中,每个标注文件是一个 .txt
文件,内容格式如下:
<class_id> <x_center> <y_center> <width> <height>
class_id
:目标类别索引。<x_center>, <y_center>
:目标框中心点坐标,归一化到 [0, 1]。<width>, <height>
:目标框宽高,归一化到 [0, 1]。创建 data.yaml
文件,定义数据集路径和类别信息:
train: ./data/train/images
val: ./data/val/images
nc: 3 # 类别数量
names: ['cat', 'dog', 'person'] # 类别名称
YOLOv5 提供了多个预定义的配置文件(位于 models/
目录下)。根据需求选择合适的配置文件(如 yolov5s.yaml
),并调整超参数。
运行以下命令开始训练:
python train.py --img 640 --batch 16 --epochs 50 --data data.yaml --cfg models/yolov5s.yaml --weights yolov5s.pt
参数说明:
--img
:输入图像大小。--batch
:批量大小。--epochs
:训练轮数。--data
:数据集配置文件路径。--cfg
:模型配置文件路径。--weights
:初始化权重路径(可以是预训练模型或自定义权重)。YOLOv5 提供了 TensorBoard 支持,可以实时监控训练过程:
tensorboard --logdir runs/train
打开浏览器访问 http://localhost:6006
查看训练曲线。
训练完成后,YOLOv5 会自动保存最佳权重文件(best.pt
)。可以通过以下命令对模型进行评估:
python val.py --weights runs/train/exp/weights/best.pt --data data.yaml --img 640
训练好的模型可以通过 ONNX、TensorRT 等工具进行优化和部署。以下是导出 ONNX 模型的示例:
python export.py --weights runs/train/exp/weights/best.pt --img 640 --batch 1 --include onnx