YOLOX¶
摘要¶
YOLOX 是一款新型高性能检测模型,在 YOLO 系列的基础上进行了一些经验丰富的改进。我们将 YOLO 检测器改为无锚方式,并采用其他先进的检测技术,例如解耦头和领先的标签分配策略 SimOTA,以在大规模模型中实现最佳效果:对于只有 0.91M 参数和 1.08G FLOPs 的 YOLO-Nano,我们在 COCO 上获得了 25.3% 的 AP,比 NanoDet 高出 1.8% AP;对于业界使用最广泛的检测器之一 YOLOv3,我们将其在 COCO 上的 AP 提升到 47.3%,比目前的最佳实践高出 3.0% AP;对于参数量与 YOLOv4-CSP 大致相同的 YOLOX-L,YOLOv5-L 在 Tesla V100 上以 68.9 FPS 的速度在 COCO 上实现了 50.0% 的 AP,比 YOLOv5-L 高出 1.8% 的 AP。此外,我们使用单个 YOLOX-L 模型在流式感知挑战赛(CVPR 2021 自动驾驶研讨会)上获得了第一名。
结果¶
使用图模式在 Ascend 910(8p) 上测试的表现
Name | Scale | BatchSize | ImageSize | Dataset | Box mAP (%) | Params | Recipe | Download |
---|---|---|---|---|---|---|---|---|
YOLOX | N | 8 * 8 | 416 | MS COCO 2017 | 24.1 | 0.9M | yaml | weights |
YOLOX | Tiny | 8 * 8 | 416 | MS COCO 2017 | 33.3 | 5.1M | yaml | weights |
YOLOX | S | 8 * 8 | 640 | MS COCO 2017 | 40.7 | 9.0M | yaml | weights |
YOLOX | M | 8 * 8 | 640 | MS COCO 2017 | 46.7 | 25.3M | yaml | weights |
YOLOX | L | 8 * 8 | 640 | MS COCO 2017 | 49.2 | 54.2M | yaml | weights |
YOLOX | X | 8 * 8 | 640 | MS COCO 2017 | 51.6 | 99.1M | yaml | weights |
YOLOX | Darknet53 | 8 * 8 | 640 | MS COCO 2017 | 47.7 | 63.7M | yaml | weights |
在Ascend 910*(8p)上测试的表现
Name | Scale | BatchSize | ImageSize | Dataset | Box mAP (%) | ms/step | Params | Recipe | Download |
---|---|---|---|---|---|---|---|---|---|
YOLOX | S | 8 * 8 | 640 | MS COCO 2017 | 41.0 | 242.15 | 9.0M | yaml | weights |
说明¶
- Box mAP: 验证集上测试出的准确度。
- 我们参考了官方的 YOLOX 来重现结果.
快速入门¶
详情请参阅 MindYOLO 中的 快速入门。
训练¶
- 分布式训练¶
使用预置的训练配方可以轻松重现报告的结果。如需在多台Ascend 910设备上进行分布式训练,请运行
# 在多台GPU/Ascend设备上进行分布式训练
msrun --worker_num=8 --local_worker_num=8 --bind_core=True --log_dir=./yolox_log python train.py --config ./configs/yolox/yolox-s.yaml --device_target Ascend --is_parallel True
同样的,您可以使用上述msrun命令在多台GPU设备上训练模型。注意: 更多关于msrun配置的信息,请参考这里。
有关所有超参数的详细说明,请参阅config.py。
**注意:**由于全局batch size(batch_size x 设备数)是一个重要的超参数,建议保持全局batch size不变进行复制,或者将学习率线性调整为新的全局batch size。
- 单卡训练¶
如果您想在较小的数据集上训练或微调模型而不进行分布式训练,请运行:
# 在 CPU/GPU/Ascend 设备上进行单卡训练
python train.py --config ./configs/yolox/yolox-s.yaml --device_target Ascend
验证和测试¶
要验证训练模型的准确性,您可以使用 test.py
并使用 --weight
传入权重路径。
python test.py --config ./configs/yolox/yolox-s.yaml --device_target Ascend --weight /PATH/TO/WEIGHT.ckpt
部署¶
详见 部署。
引用¶
[1] Zheng Ge. YOLOX: Exceeding YOLO Series in 2021. https://arxiv.org/abs/2107.08430, 2021.