YOLOR
论文实现 - 你只学习一个表示:多任务统一网络
要获得表中的结果,请使用 这个分支。
模型 | 测试尺寸 | AP测试 | AP50测试 | AP75测试 | batch1 吞吐量 | batch32 推理 |
---|---|---|---|---|---|---|
YOLOR-CSP | 640 | 52.8% | 71.2% | 57.6% | 106 fps | 3.2 ms |
YOLOR-CSP-X | 640 | 54.8% | 73.1% | 59.7% | 87 fps | 5.5 ms |
YOLOR-P6 | 1280 | 55.7% | 73.3% | 61.0% | 76 fps | 8.3 ms |
YOLOR-W6 | 1280 | 56.9% | 74.4% | 62.2% | 66 fps | 10.7 ms |
YOLOR-E6 | 1280 | 57.6% | 75.2% | 63.0% | 45 fps | 17.1 ms |
YOLOR-D6 | 1280 | 58.2% | 75.8% | 63.8% | 34 fps | 21.8 ms |
YOLOv4-P5 | 896 | 51.8% | 70.3% | 56.6% | 41 fps (旧) | - |
YOLOv4-P6 | 1280 | 54.5% | 72.6% | 59.8% | 30 fps (旧) | - |
YOLOv4-P7 | 1536 | 55.5% | 73.4% | 60.8% | 16 fps (旧) | - |
- 修复我们NFS上的速度瓶颈,非常感谢NCHC, TWCC和NARLabs支持团队。
模型 | 测试尺寸 | AP验证 | AP50验证 | AP75验证 | APS验证 | APM验证 | APL验证 | 权重 |
---|---|---|---|---|---|---|---|---|
YOLOv4-CSP | 640 | 49.1% | 67.7% | 53.8% | 32.1% | 54.4% | 63.2% | - |
YOLOR-CSP | 640 | 49.2% | 67.6% | 53.7% | 32.9% | 54.4% | 63.0% | 权重 |
YOLOR-CSP* | 640 | 50.0% | 68.7% | 54.3% | 34.2% | 55.1% | 64.3% | 权重 |
YOLOv4-CSP-X | 640 | 50.9% | 69.3% | 55.4% | 35.3% | 55.8% | 64.8% | - |
YOLOR-CSP-X | 640 | 51.1% | 69.6% | 55.7% | 35.7% | 56.0% | 65.2% | 权重 |
YOLOR-CSP-X* | 640 | 51.5% | 69.9% | 56.1% | 35.8% | 56.8% | 66.1% | 权重 |
正在开发中...
模型 | 测试尺寸 | AP测试 | AP50测试 | AP75测试 | APS测试 | APM测试 | APL测试 |
---|---|---|---|---|---|---|---|
YOLOR-CSP | 640 | 51.1% | 69.6% | 55.7% | 31.7% | 55.3% | 64.7% |
YOLOR-CSP-X | 640 | 53.0% | 71.4% | 57.9% | 33.7% | 57.1% | 66.8% |
从头训练300个周期...
模型 | 信息 | 测试尺寸 | AP |
---|---|---|---|
YOLOR-CSP | 演变 | 640 | 48.0% |
YOLOR-CSP | 策略 | 640 | 50.0% |
YOLOR-CSP | 策略 + simOTA | 640 | 51.1% |
YOLOR-CSP-X | 策略 | 640 | 51.5% |
YOLOR-CSP-X | 策略 + simOTA | 640 | 53.0% |
安装
Docker 环境(推荐)
展开
# 创建docker容器,您可以根据需要更改共享内存大小。
nvidia-docker run --name yolor -it -v your_coco_path/:/coco/ -v your_code_path/:/yolor --shm-size=64g nvcr.io/nvidia/pytorch:20.11-py3
# apt 安装所需软件包
apt update
apt install -y zip htop screen libgl1-mesa-glx
# pip 安装所需软件包
pip install seaborn thop
# 如果想使用mish激活函数,请安装mish-cuda
# https://github.com/thomasbrandon/mish-cuda
# https://github.com/JunnYu/mish-cuda
cd /
git clone https://github.com/JunnYu/mish-cuda
cd mish-cuda
python setup.py build install
# 如果想使用dwt下采样模块,请安装pytorch_wavelets
# https://github.com/fbcotter/pytorch_wavelets
cd /
git clone https://github.com/fbcotter/pytorch_wavelets
cd pytorch_wavelets
pip install .
# 进入代码文件夹
cd /yolor
Colab 环境
展开
git clone https://github.com/WongKinYiu/yolor
cd yolor
# pip 安装所需软件包
pip install -qr requirements.txt
# 如果想使用mish激活函数,请安装mish-cuda
# https://github.com/thomasbrandon/mish-cuda
# https://github.com/JunnYu/mish-cuda
git clone https://github.com/JunnYu/mish-cuda
cd mish-cuda
python setup.py build install
cd ..
# 如果想使用dwt下采样模块,请安装pytorch_wavelets
# https://github.com/fbcotter/pytorch_wavelets
git clone https://github.com/fbcotter/pytorch_wavelets
cd pytorch_wavelets
pip install .
cd ..
准备 COCO 数据集
展开
cd /yolor
bash scripts/get_coco.sh
准备预训练权重
展开
cd /yolor
bash scripts/get_pretrain.sh
测试
python test.py --data data/coco.yaml --img 1280 --batch 32 --conf 0.001 --iou 0.65 --device 0 --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --name yolor_p6_val
你将得到以下结果:
平均精度 (AP) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.52510
平均精度 (AP) @[ IoU=0.50 | area= all | maxDets=100 ] = 0.70718
平均精度 (AP) @[ IoU=0.75 | area= all | maxDets=100 ] = 0.57520
平均精度 (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.37058
平均精度 (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.56878
平均精度 (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.66102
平均召回率 (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 1 ] = 0.39181
平均召回率 (AR) @[ IoU=0.50:0.95 | area= all | maxDets= 10 ] = 0.65229
平均召回率 (AR) @[ IoU=0.50:0.95 | area= all | maxDets=100 ] = 0.71441
平均召回率 (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.57755
平均召回率 (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.75337
平均召回率 (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.84013
训练
单 GPU 训练:
python train.py --batch-size 8 --img 1280 1280 --data coco.yaml --cfg cfg/yolor_p6.cfg --weights '' --device 0 --name yolor_p6 --hyp hyp.scratch.1280.yaml --epochs 300
多 GPU 训练:
python -m torch.distributed.launch --nproc_per_node 2 --master_port 9527 train.py --batch-size 16 --img 1280 1280 --data coco.yaml --cfg cfg/yolor_p6.cfg --weights '' --device 0,1 --sync-bn --name yolor_p6 --hyp hyp.scratch.1280.yaml --epochs 300
论文中的训练方案:
python -m torch.distributed.launch --nproc_per_node 8 --master_port 9527 train.py --batch-size 64 --img 1280 1280 --data data/coco.yaml --cfg cfg/yolor_p6.cfg --weights '' --device 0,1,2,3,4,5,6,7 --sync-bn --name yolor_p6 --hyp hyp.scratch.1280.yaml --epochs 300
python -m torch.distributed.launch --nproc_per_node 8 --master_port 9527 tune.py --batch-size 64 --img 1280 1280 --data data/coco.yaml --cfg cfg/yolor_p6.cfg --weights 'runs/train/yolor_p6/weights/last_298.pt' --device 0,1,2,3,4,5,6,7 --sync-bn --name yolor_p6-tune --hyp hyp.finetune.1280.yaml --epochs 450
python -m torch.distributed.launch --nproc_per_node 8 --master_port 9527 train.py --batch-size 64 --img 1280 1280 --data data/coco.yaml --cfg cfg/yolor_p6.cfg --weights 'runs/train/yolor_p6-tune/weights/epoch_424.pt' --device 0,1,2,3,4,5,6,7 --sync-bn --name yolor_p6-fine --hyp hyp.finetune.1280.yaml --epochs 450
推理
python detect.py --source inference/images/horses.jpg --cfg cfg/yolor_p6.cfg --weights yolor_p6.pt --conf 0.25 --img-size 1280 --device 0
你将得到以下结果:
引用
@article{wang2023you,
title={You Only Learn One Representation: Unified Network for Multiple Tasks},
author={Wang, Chien-Yao and Yeh, I-Hau and Liao, Hong-Yuan Mark},
journal={Journal of Information Science and Engineering},
year={2023}
}