简体中文 | English
基于 YOLOv6 v3.0 分支 代码实现人脸检测任务。
新特性
- 人脸关键点定位
- Repulsion 损失函数
- 相同通道解耦头
Model | Size | Easy | Medium | Hard | SpeedT4 trt fp16 b1 (fps) |
SpeedT4 trt fp16 b32 (fps) |
Params (M) |
FLOPs (G) |
---|---|---|---|---|---|---|---|---|
YOLOv6-N | 640 | 95.0 | 92.4 | 80.4 | 797 | 1313 | 4.63 | 11.35 |
YOLOv6-S | 640 | 96.2 | 94.7 | 85.1 | 339 | 484 | 12.41 | 32.45 |
YOLOv6-M | 640 | 97.0 | 95.3 | 86.3 | 188 | 240 | 24.85 | 70.59 |
YOLOv6-L | 640 | 97.2 | 95.9 | 87.5 | 102 | 121 | 56.77 | 159.24 |
YOLOv6Lite-S | 416 | 89.6 | 84.6 | 58.8 | / | / | 0.53 | 0.90 |
YOLOv6Lite-M | 416 | 90.6 | 86.1 | 60.6 | / | / | 0.76 | 1.07 |
YOLOv6Lite-L | 416 | 91.8 | 87.6 | 64.2 | / | / | 1.06 | 1.40 |
- 以上模型均在COCO预训练模型上微调300轮之后的结果.
- mAP 和速度指标是在 WIDER FACE 数据集上评估的,模型输入分辨率为 640×640.
- 速度是在 T4 上测试的,TensorRT 版本为 8.2.
- 复现 YOLOv6 的速度指标,请查看速度测试 教程.
- YOLOv6 的参数和计算量是在推理模式下计算的.
安装
git clone https://github.com/meituan/YOLOv6
cd YOLOv6
git checkout yolov6-face
pip install -r requirements.txt
训练
单卡
python tools/train.py --batch 8 --conf configs/yolov6s_finetune.py --data data/WIDER_FACE.yaml --fuse_ab --device 0
多卡 (推荐使用 DDP 模式)
python -m torch.distributed.launch --nproc_per_node 8 tools/train.py --batch 64 --conf configs/yolov6s_finetune.py --data data/WIDER_FACE.yaml --fuse_ab --device 0,1,2,3,4,5,6,7
- fuse_ab: 使用联合锚点训练模式
- conf: 配置文件路径,里面包含网络结构、优化器配置、超参数信息。如果您是在自己的数据集训练,我们推荐您使用yolov6n/s/m/l_finetune.py配置文件
- data: 数据集配置文件,以 WIDERFACE 数据集为例,您可以在 WIDERFACE 下载数据, 在这里下载YOLO 格式标签
- 确保您的数据集按照下面这种格式来组织;
├── widerface
│ ├── images
│ │ ├── train
│ │ └── val
│ ├── labels
│ │ ├── train
│ │ ├── val
推理
首先,从release 页面 下载一个训练好的模型权重文件,或选择您自己训练的模型;
然后,通过 tools/infer.py
文件进行推理。
python tools/infer.py --weights yolov6s_face.pt --source ../widerface/images/val/ --yaml data/WIDER_FACE.yaml --conf 0.02 --not-save-img --save-txt-widerface --name widerface_yolov6s
WIDERFACE 评估
cd widerface_evaluate
python evaluation.py --pred ../runs/inference/widerface_yolov6s/labels/
第三方资源
- YOLOv6 NCNN Android app demo: ncnn-android-yolov6 from FeiGeChuanShu
- YOLOv6 ONNXRuntime/MNN/TNN C++: YOLOv6-ORT, YOLOv6-MNN and YOLOv6-TNN from DefTruth
- YOLOv6 TensorRT Python: yolov6-tensorrt-python from Linaom1214
- YOLOv6 TensorRT Windows C++: yolort from Wei Zeng
- YOLOv6 web demo on Huggingface Spaces with Gradio.
- 教程: 如何用 YOLOv6 训练自己的数据集
- YOLOv6 在 Google Colab 上的推理 Demo
如果您有任何问题,欢迎加入我们的微信群一起讨论交流!