centerface-dynamic / README.md
SCKEMPER's picture
Upload README.md with huggingface_hub
d472bbf verified
|
Raw
History Blame Contribute Delete
2.58 kB
---
license: mit
language:
- en
library_name: onnx
tags:
- face-detection
- centerface
- dynamic-input-shape
- rootreal
---
# CenterFace — dynamic-input-shape ONNX (RootReal-curated)
A **dynamic-input-shape** ONNX export of **CenterFace** (anchor-free face detection +
5-point landmarks), curated by RootReal to fix [Forgejo #11856](https://git.rootreal.io/textpast/rootreal/issues/11856).
## Why this exists
The upstream [`Star-Clouds/CenterFace`](https://github.com/Star-Clouds/CenterFace) export
(`centerface.onnx`, MIT) declared a **fully static** input `input.1 = [10, 3, 32, 32]`
(fixed batch of 10 AND fixed 32×32 spatial dims). ONNX Runtime therefore rejects any real
detection tensor `(1, 3, H, W)`:
```
INVALID_ARGUMENT: Got invalid dimensions for input: input.1
index: 0 Got: 1 Expected: 10
index: 2 Got: H Expected: 32
index: 3 Got: W Expected: 32
```
The CenterFace graph is **purely convolutional** (60 Conv / 59 BatchNormalization /
42 Relu / 13 Add / 3 ConvTranspose / 1 Sigmoid — no Reshape/Flatten/Tile that could bake
in static shape values), so the static shape is **purely an export artifact**. This model
rewrites `input.1` to **`[batch(dynamic), 3, height(dynamic), width(dynamic)]`** with
**zero weight/node change** — the canonical equivalent of passing
`dynamic_axes={'input.1': {0:'batch', 2:'height', 3:'width'}}` to `torch.onnx.export`,
without needing PyTorch.
## Provenance / reproduction
- **Derived from:** `Star-Clouds/CenterFace` `models/onnx/centerface.onnx` (MIT).
- **Upstream sha256:** `77e394b51108381b4c4f7b4baf1c64ca9f4aba73e5e803b2636419578913b5fe`
- **This artifact sha256:** `884bf341ce5ba95a30667f86eaa36f24d62041d9d28002eee3bb6926701924bf`
- **Size:** 7,532,788 bytes (362 initializers + 178 nodes, byte-identical to upstream).
- **Reproduce:** `infrastructure/scripts/ml/centerface-rewrite-input-shape-dynamic.py`
in the [RootReal repo](https://git.rootreal.io/textpast/rootreal) regenerates this file
byte-for-byte from the upstream MIT source.
## Accuracy
WIDER FACE val Easy/Medium/Hard: 0.935 / 0.924 / 0.875 (unchanged from upstream — only the
input shape declaration differs; the trained weights are identical).
## Migration note
Hosted under a personal namespace (`SCKEMPER/centerface-dynamic`) because the RootReal
Hugging Face org (`rootreal/`) was not writable at curation time. Migration target:
`rootreal/centerface` (pending org access). The model is a deterministic MIT derivation
fully reproducible from the upstream source via the committed script, so re-hosting is
trivial.