File size: 5,423 Bytes
2236bcc | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | ---
license: mit
tags:
- object-detection
- yolox
- onnx
- int8
- coco
- fpga
language: en
library_name: onnxruntime
pipeline_tag: object-detection
---
# YOLOX-Nano ReLU (MIT) β work-in-progress training
A YOLOX-Nano variant with **ReLU activations and no depthwise convolutions**,
**trained from random initialisation on COCO 2017 by Pablo Mendoza
(`@thefalley`)** on his own server (NVIDIA GTX 1050 Ti, 4 GB VRAM). The
weights, the ONNX export pipeline, the INT8 quantization, the decoder and
all inference scripts in this repository are original work, released under
the MIT License.
The training architecture is `yolox_nano_ti_lite` from TexasInstruments'
`edgeai-yolox` repository β used as a build tool only, **not redistributed**
here. See `NOTICE.md` for the full provenance chain.
## Training status (live)
| | |
|---|---|
| Current epoch | **1 / 300** |
| AP @ IoU=0.5:0.95 | *** (will be measured at validation milestones) |
| Hardware | GTX 1050 Ti, 4 GB VRAM (own server, no cloud) |
| Started | 2026-05-10 |
| Last update | 2026-05-11 |
| Status | π Training in progress |
| Target | epoch 300, target mAP@0.5:0.95 β 0.26 (TI baseline for the same architecture) |
> **This is an early-checkpoint release** intended to validate the full
> pipeline (PTH β ONNX β INT8 β inference) end-to-end. Detection quality
> will improve substantially as training progresses; the repository will
> be updated incrementally with later checkpoints.
## Files
| File | Size | SHA-256 |
|---|---:|---|
| `yolox_nano_relu_float.onnx` | *** | *** |
| `yolox_nano_relu_int8_qop.onnx` | *** | *** |
## Architecture
| | |
|---|---|
| Family | YOLOX-Nano (Megvii, 2021) with the TI ti-lite modifications |
| Depth multiplier | 0.33 |
| Width multiplier | 0.25 |
| Parameters | ~1.9 M |
| Activation | **ReLU** (every Conv block; no SiLU) |
| Convolutions | **Regular Conv2D only** (no depthwise separable) |
| Input | 1Γ3Γ416Γ416, RGB, NCHW |
| Output (when exported with `--no-onnxsim`) | single tensor `(1, N, 85)` with `[cx, cy, w, h, obj, class_0..class_79]` already in input-pixel coords, anchor-free YOLOX-style |
| Quantization | Per-tensor INT8 (W symmetric, A asymmetric); bias INT32 |
These design choices are deliberate to match the operator set of an
INT8 FPGA DPU (Xilinx ZedBoard XC7Z020) that supports Conv2D + ReLU/Leaky
+ Add + Concat + MaxPool + Resize + Transpose only.
## Performance
| Metric | FP32 | INT8 | Reference (TI baseline) |
|---|---|---|---|
| AP @ IoU=0.5:0.95 | *** | *** | 0.261 |
| AP @ IoU=0.5 | *** | *** | 0.418 |
Reference numbers are TI's published metrics for the fully-trained
yolox_nano_ti_lite (300 epochs). Our weights are still being trained;
intermediate metrics will appear here as checkpoints are released.
## Visual inference samples
Sample detections produced by the current published checkpoint of this
model on classic test images (epoch 1 / 300 β detection quality will
improve as training advances).
| | |
|---|---|
|  |  |
|  |  |
## Reproducibility
This release is a snapshot of an ongoing training run. The pipeline:
```
1. Train (TI edgeai-yolox, GTX 1050 Ti, COCO train2017)
β yolox_nano_relu.pth
2. Export ONNX (tools/export_onnx.py from edgeai-yolox, --opset 13)
β yolox_nano_relu_float.onnx
3. Quantize INT8 (onnxruntime.quantize_static, 1000 random COCO val2017
images for calibration, seed = 42, per-tensor)
β yolox_nano_relu_int8_qop.onnx
```
Calibration was performed once on the float ONNX of the published
checkpoint and will be re-run for each later checkpoint to keep INT8
in sync with the trained float weights.
## Provenance summary
```
TI yolox_nano_ti_lite exp file (BSD-3 + Apache-2.0, build tool only)
β
β Train from scratch, COCO train2017, own hardware
βΌ
yolox_nano_relu.pth MIT (original training output)
β
β TI export_onnx.py (build tool)
βΌ
yolox_nano_relu_float.onnx MIT (this repository)
β
β onnxruntime.quantize_static (MIT, tool) + COCO val2017 (CC BY 4.0)
βΌ
yolox_nano_relu_int8_qop.onnx MIT (this repository)
```
The TI source code is used only as a build-time tool and is **not**
redistributed here. The weights themselves are an original training
output of the author. See `NOTICE.md` for full attribution.
## Detector size collection by the same author
| Repository | INT8 size | mAP@0.5:0.95 |
|---|---|---|
| [yolov4-leaky-416-int8-qop](https://huggingface.co/Thefalley/yolov4-leaky-416-int8-qop) | 61.66 MiB | 0.345 |
| [yolov4-tiny-416-int8-qop](https://huggingface.co/Thefalley/yolov4-tiny-416-int8-qop) | 5.83 MiB | 0.163 |
| [yolo-fastest-1.1-320-int8-qop](https://huggingface.co/Thefalley/yolo-fastest-1.1-320-int8-qop) | 0.47 MiB | (pending) |
| **yolox-nano-relu-mit** (this) | *** | *** (training in progress) |
## Citation
```bibtex
@article{ge2021yolox,
author = {Ge, Zheng and Liu, Songtao and Wang, Feng and Li, Zeming and Sun, Jian},
title = {YOLOX: Exceeding YOLO Series in 2021},
journal = {arXiv:2107.08430},
year = {2021}
}
```
Author of the trained weights and INT8 derivative: **Pablo Mendoza**
(`@thefalley`), 2026.
|