YOLOX-Tiny, quantized (INT8 PTQ and QAT)
Quantized variants of YOLOX-Tiny (Megvii, Apache-2.0), 416 px, 80 COCO classes. Code, benchmarks and the full write-up: https://github.com/leejianrong/real-time-object-detection.
The model output is (1, 3549, 85) with box decoding inside the graph. NMS runs outside the model
(rtod.detect.postprocess in the repo). Input is a letterboxed 416x416 BGR image, float32, 0 to 255, NCHW.
| File | What | Size | mAP50-95 (COCO val_test) | CPU latency, 1 thread |
|---|---|---|---|---|
yolox_tiny_fp32.onnx |
Official weights exported to ONNX | 20.3 MB | 33.47 ± 0.49 | 115.6 ms |
yolox_tiny_ptq_int8_calib32.onnx |
ORT static INT8, 32 calibration images | 5.6 MB | 32.75 ± 0.45 | 45.4 ms |
yolox_tiny_qat_int8_pathA.onnx |
QAT-trained fake-quant graph as QDQ | 20.5 MB | 32.81 ± 0.52 | 61.2 ms |
yolox_tiny_qat_lr2e-6.pt |
QAT checkpoint (folded weights + observer ranges) | 21 MB |
val_test is a held-out half of COCO val2017 (2,476 images); ± is a jackknife standard error. Latency is
ONNX Runtime on one thread of an Intel i7-13620H, all models measured in one session. Differences under
about 1 mAP point are within noise. QAT did not beat well-calibrated PTQ here; see the repo's
docs/RESULTS.md.
Use
from rtod.hub import fetch_model
path = fetch_model("ptq-int8") # downloads once, verifies sha256
Training data and licences
Starting weights: official YOLOX-Tiny COCO checkpoint (Apache-2.0). Quantization calibration and QAT fine-tuning used images from COCO train2017 (annotations CC BY 4.0; images under their Flickr licences). These files are derivatives of the YOLOX weights and carry the same Apache-2.0 licence.