README_cn.md

May 9, 2023 · View on GitHub

简体中文 | English

YOLOv6

官方论文:

更新日志

模型指标

模型输入尺寸mAPval
0.5:0.95
速度T4
trt fp16 b1
(fps)
速度T4
trt fp16 b32
(fps)
Params
(M)
FLOPs
(G)
YOLOv6-N64037.577911874.711.4
YOLOv6-S64045.033948418.545.3
YOLOv6-M64050.017522634.985.8
YOLOv6-L64052.89811659.6150.7
YOLOv6-N6128044.922828110.449.8
YOLOv6-S6128050.39810841.4198.0
YOLOv6-M6128055.2475579.6379.5
YOLOv6-L6128057.22629140.4673.4
表格笔记
  • 除了 YOLOv6-N6/S6 模型是训练了300轮的结果,其余模型均为自蒸馏训练之后的结果;
  • mAP 和速度指标是在 COCO val2017 数据集上评估的,P5模型输入分辨率为 640×640,P6模型输入分辨率为 1280×1280;
  • 速度是在 T4 上测试的,TensorRT 版本为 7.2;
  • 复现 YOLOv6 的速度指标,请查看 速度测试 教程;
  • YOLOv6 的参数和计算量是在推理模式下计算的;
旧版模型
模型输入尺寸mAPval
0.5:0.95
速度T4
trt fp16 b1
(fps)
速度T4
trt fp16 b32
(fps)
Params
(M)
FLOPs
(G)
YOLOv6-N64035.9300e
36.3400e
80212344.311.1
YOLOv6-T64040.3300e
41.1400e
44965915.036.7
YOLOv6-S64043.5300e
43.8400e
35849517.244.2
YOLOv6-M64049.517923334.382.2
YOLOv6-L-ReLU64051.711314958.5144.0
YOLOv6-L64052.59812158.5144.0
  • 速度是在 T4 上测试的,TensorRT 版本为 7.2;

量化模型

模型输入尺寸精度mAPval
0.5:0.95
速度T4
trt b1
(fps)
速度T4
trt b32
(fps)
YOLOv6-N RepOpt640INT834.811141828
YOLOv6-N640FP1635.98021234
YOLOv6-T RepOpt640INT839.87411167
YOLOv6-T640FP1640.3449659
YOLOv6-S RepOpt640INT843.3619924
YOLOv6-S640FP1643.5377541
  • 速度是在 T4 上测试的,TensorRT 版本为 8.4;
  • 精度是在训练 300 epoch 的模型上测试的;

移动端模型指标

模型输入尺寸mAPval
0.5:0.95
sm8350
(ms)
mt6853
(ms)
sdm660
(ms)
Params
(M)
FLOPs
(G)
YOLOv6Lite-S320*32022.47.9911.9941.860.550.56
YOLOv6Lite-M320*32025.19.0813.2747.950.790.67
YOLOv6Lite-L320*32028.011.3716.2061.401.090.87
YOLOv6Lite-L320*19225.07.029.6636.131.090.52
YOLOv6Lite-L224*12818.93.634.9917.761.090.24
表格笔记
  • 从模型尺寸和输入图片比例两种角度,在构建了移动端系列模型,方便不同场景下的灵活应用。
  • 所有权重都经过 400 个 epoch 的训练,并且没有使用蒸馏技术。
  • mAP 和速度指标是在 COCO val2017 数据集上评估的,输入分辨率为表格中对应展示的。
  • 使用 MNN 2.3.0 AArch64 进行速度测试。测速时,采用2个线程,并开启arm82加速,推理预热10次,循环100次。
  • 高通888(sm8350)、天玑720(mt6853)和高通660(sdm660)分别对应高中低端不同性能的芯片,可以作为不同芯片下机型能力的参考。
  • NCNN 速度测试教程可以帮助展示及复现 YOLOv6Lite 的 NCNN 速度结果。

快速开始

安装
git clone https://github.com/meituan/YOLOv6
cd YOLOv6
pip install -r requirements.txt
在 COCO 数据集上复现我们的结果

请参考教程 训练 COCO 数据集.

在自定义数据集上微调模型

单卡

# P5 models
python tools/train.py --batch 32 --conf configs/yolov6s_finetune.py --data data/dataset.yaml --fuse_ab --device 0
# P6 models
python tools/train.py --batch 32 --conf configs/yolov6s6_finetune.py --data data/dataset.yaml --img 1280 --device 0

多卡 (我们推荐使用 DDP 模式)

# P5 models
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 256 --conf configs/yolov6s_finetune.py --data data/dataset.yaml --fuse_ab --device 0,1,2,3,4,5,6,7
# P6 models
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 128 --conf configs/yolov6s6_finetune.py --data data/dataset.yaml --img 1280 --device 0,1,2,3,4,5,6,7
  • fuse_ab: 增加anchor-based预测分支并使用联合锚点训练模式 (P6模型暂不支持此功能)
  • conf: 配置文件路径,里面包含网络结构、优化器配置、超参数信息。如果您是在自己的数据集训练,我们推荐您使用yolov6n/s/m/l_finetune.py配置文件;
  • data: 数据集配置文件,以 COCO 数据集为例,您可以在 COCO 下载数据, 在这里下载 YOLO 格式标签
  • 确保您的数据集按照下面这种格式来组织;
├── coco
│   ├── annotations
│   │   ├── instances_train2017.json
│   │   └── instances_val2017.json
│   ├── images
│   │   ├── train2017
│   │   └── val2017
│   ├── labels
│   │   ├── train2017
│   │   ├── val2017

YOLOv6 支持不同的输入分辨率模式,详情请参见 如何设置输入大小.

恢复训练

如果您的训练进程中断了,您可以这样恢复先前的训练进程。

# 单卡训练
python tools/train.py --resume

# 多卡训练
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --resume

上面的命令将自动在 YOLOv6 目录中找到最新保存的模型,然后恢复训练。

您也可以通过 --resume 参数指定要恢复的模型路径

# 记得把 /path/to/your/checkpoint/path  替换为您要恢复训练的模型权重路径
--resume /path/to/your/checkpoint/path

这将从您提供的模型路径恢复训练。

评估 在 COCO val2017 数据集上复现我们的结果(输入分辨率 640x640 或 1280x1280)
# P5 models
python tools/eval.py --data data/coco.yaml --batch 32 --weights yolov6s.pt --task val --reproduce_640_eval
# P6 models
python tools/eval.py --data data/coco.yaml --batch 32 --weights yolov6s6.pt --task val --reproduce_640_eval --img 1280
  • verbose: 如果要打印每一类的精度信息,请设置为 True;
  • do_coco_metric: 设置 True / False 来打开或关闭 pycocotools 的评估;
  • do_pr_metric: 设置 True / False 来显示或不显示精度和召回的指标;
  • config-file: 指定一个包含所有评估参数的配置文件,例如 yolov6n_with_eval_params.py
推理

首先,从 release页面 下载一个训练好的模型权重文件,或选择您自己训练的模型;

然后,通过 tools/infer.py文件进行推理。

# P5 models
python tools/infer.py --weights yolov6s.pt --source img.jpg / imgdir / video.mp4
# P6 models
python tools/infer.py --weights yolov6s6.pt --img 1280 1280 --source img.jpg / imgdir / video.mp4

如果您想使用本地摄像头或者网络摄像头,您可以运行:

# P5 models
python tools/infer.py --weights yolov6s.pt --webcam --webcam-addr 0
# P6 models
python tools/infer.py --weights yolov6s6.pt --img 1280 1280 --webcam --webcam-addr 0

webcam-addr 可以是本地摄像头的 ID,或者是 RTSP 地址。

部署
教程
第三方资源

FAQ(持续更新)

如果您有任何问题,欢迎加入我们的微信群一起讨论交流!