File size: 3,255 Bytes
81fc931
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
afd88f9
 
81fc931
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
afd88f9
 
 
 
 
 
 
 
 
81fc931
 
 
 
 
 
 
 
 
 
 
 
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
---
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)).