--- license: apache-2.0 library_name: onnx tags: - object-detection - license-plate-detection - yolox - camstack --- # YOLOX-tiny licence-plate detector — CamStack build Single-class (`plate`) detector, re-packaged for the CamStack inference pool. The `plate-detection` step's only model, catalog id `yolox-tiny-plate`. | Format | File | Precision | | --- | --- | --- | | ONNX | `onnx/camstack-yolox-tiny-plate.onnx` | fp32 | | OpenVINO IR | `openvino/camstack-yolox-tiny-plate.{xml,bin}` | fp16 weights | | CoreML | `coreml/camstack-yolox-tiny-plate.mlpackage` | fp16 | | TFLite (Coral Edge TPU) | `tflite/camstack-yolox-tiny-plate_edgetpu.tflite` | int8 | | TFLite (CPU, the Edge TPU file's source) | `tflite/camstack-yolox-tiny-plate_int8.tflite` | int8 | ## Source - Model: `plate_yolox_tiny_640.onnx` from [faisalthaheem/open-lpr-models](https://huggingface.co/faisalthaheem/open-lpr-models), tag `detector-2026.10.1` (commit `aed0df35ec2891c5a90437041ebeadb592cc516b`), sha256 `e5350bb2152eb44fa129b2438d1e39bbbf3c27accfe51cd893ce6e17d028d0b9`. - Application: [open-lpr](https://github.com/faisalthaheem/open-lpr) (Apache-2.0). - Architecture: [YOLOX](https://github.com/Megvii-BaseDetection/YOLOX) (Megvii, Apache-2.0); pretrained from COCO `yolox_tiny.pth`, then fine-tuned by the open-lpr project. The weights' Apache-2.0 status rests on the open-lpr repository licence and its NOTICE, which state that YOLOX code and its same-repository release weights are Apache-2.0 and that no Ultralytics weights were used. ## Modifications The input and output contract is adapted in the graph; the upstream weights are untouched. The input `images` takes **RGB float in [0,1]** (NCHW, 1x3x640x640); `Mul(255)` then `Gather([2,1,0], axis=1)` give the upstream graph its BGR 0..255 tensor. The upstream output `[1, 8400, 6]` (cx, cy, w, h, obj, cls) is reshaped to `output0 [1, 5, 8400]` (cx, cy, w, h, obj*cls). The OpenVINO and CoreML files are converted from that edited ONNX. Built by `scripts/build-yolox-plate-model.py` in the CamStack repository; see `SOURCE.md`. The TFLite files are built by `scripts/build-yolox-plate-edgetpu.py` from that edited ONNX: YOLOX's Focus stem (four strided slices and a concat) is rewritten as the mathematically equivalent 6x6 stride-2 convolution, the input prefix is folded into it, and the graph ends at the raw head — per stride `s`, `reg_s` (dx, dy, log w, log h) and `score_s` (obj*cls), which the CamStack `yolo` postprocessor decodes. It is quantised to full integer (int8, per-channel weights; input uint8 with scale 1/255) on CamStack vehicle crops, and the Edge TPU file is that graph compiled with `edgetpu_compiler` 14.1. ## Training data **Unknown terms.** Per the upstream NOTICE and manifest: an annotated licence-plate corpus (Simanno) plus community-contributed photographs, pseudo-labelled by a teacher model. The training imagery is not published; the upstream NOTICE states the community photographs contain real licence plates, faces and vehicles and were "uploaded without consent obtained". ## Licence Apache-2.0. The upstream `LICENSE` and `NOTICE` are reproduced verbatim in this folder; the NOTICE must accompany any redistribution (Apache-2.0 §4(d)).