使用YOLOv6在VOC数据集上进行目标检测训练教程
前言
YOLOv6是美团视觉智能部研发的一款高效目标检测算法,它在精度和速度之间取得了很好的平衡。本教程将详细介绍如何使用YOLOv6在PASCAL VOC数据集上进行训练的全过程,包括数据准备、格式转换、模型训练和评估等关键步骤。
1. VOC数据集准备
PASCAL VOC数据集是计算机视觉领域最经典的目标检测基准数据集之一,包含20个常见物体类别。我们需要下载以下三个部分:
- VOC2007训练验证集:5012张图像
- VOC2007测试集:4953张图像
- VOC2012训练验证集:17126张图像
下载解压后,目录结构应如下所示:
VOCdevkit
├── VOC2007
│ ├── Annotations # XML格式标注文件
│ ├── ImageSets # 划分好的训练/验证/测试集列表
│ ├── JPEGImages # 原始图像
│ ├── SegmentationClass
│ └── SegmentationObject
└── VOC2012
├── Annotations
├── ImageSets
├── JPEGImages
├── SegmentationClass
└── SegmentationObject
2. 数据格式转换
YOLOv6使用特定的YOLO格式标注,而VOC数据集使用XML格式。我们需要进行格式转换:
- XML格式示例:
<annotation>
<object>
<name>car</name>
<bndbox>
<xmin>141</xmin>
<ymin>50</ymin>
<xmax>500</xmax>
<ymax>330</ymax>
</bndbox>
</object>
</annotation>
- 转换命令:
python yolov6/data/voc2yolo.py --voc_path your_path/to/VOCdevkit
转换后的YOLO格式数据集结构:
VOCdevkit
├── images
├── labels
├── voc_07_12
│ ├── images
│ │ ├── train # 合并VOC2007和2012的训练验证集
│ │ └── val # VOC2007测试集
│ └── labels
│ ├── train
│ └── val
3. 数据集可视化验证
转换完成后,建议使用可视化工具检查标注是否正确:
python yolov6/data/vis_dataset.py \
--img_dir your_path/to/VOCdevkit/images/train \
--label_dir your_path/to/VOCdevkit/labels/train
4. 创建数据集配置文件
创建data/voc.yaml
配置文件,内容如下:
train: your_path/to/VOCdevkit/voc_07_12/images/train
val: your_path/to/VOCdevkit/voc_07_12/images/val
test: your_path/to/VOCdevkit/voc_07_12/images/val
is_coco: False
nc: 20 # VOC类别数
names: ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog',
'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']
5. 模型训练
YOLOv6支持多种训练方式:
- 多GPU训练(推荐):
python -m torch.distributed.launch \
--nproc_per_node 4 \
--master_port=23456 \
tools/train.py \
--batch 256 \
--conf configs/yolov6n_finetune.py \
--data data/voc.yaml \
--device 0,1,2,3
- 单GPU训练:
python tools/train.py \
--batch 256 \
--conf configs/yolov6_finetune.py \
--data data/voc.yaml \
--device 0
6. 训练监控
使用TensorBoard监控训练过程:
tensorboard --logdir=your_path/to/log
可以观察以下内容:
- 训练批次样本可视化
- 损失曲线变化
- mAP指标变化趋势
7. 模型评估
训练完成后会自动评估,也可以手动评估:
python tools/eval.py \
--data data/voc.yaml \
--weights your_path/to/weights/best_ckpt.pt \
--device 0
典型评估输出:
Average Precision (AP) @[ IoU=0.50:0.95 ] = 0.632
Average Precision (AP) @[ IoU=0.50 ] = 0.854
Average Precision (AP) @[ IoU=0.75 ] = 0.702
8. 模型推理
使用训练好的模型进行预测:
python tools/infer.py \
--weights your_path/to/weights/best_ckpt.pt \
--yaml data/voc.yaml \
--source data/images/image3.jpg \
--device 0
9. 模型部署
导出为ONNX格式便于部署:
python deploy/ONNX/export_onnx.py \
--weights your_path/to/weights/best_ckpt.pt \
--device 0
总结
本教程详细介绍了使用YOLOv6在VOC数据集上进行目标检测训练的完整流程。YOLOv6凭借其高效的网络结构和优化策略,在VOC数据集上能够取得优秀的检测性能。通过本教程,读者可以快速掌握YOLOv6的训练方法,并将其应用到自己的项目中。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考