github PicPeak/picpeak ml-models-v1
ML models v1 (face recognition sidecar)

2 hours ago

Model weights for the optional picpeak-ml face-detection sidecar (#1074).

This is not an application release. It carries only ML model artifacts, and
is deliberately not marked "Latest". The update checker ignores it — its tag
does not match the X.Y.Z / X.Y.Z-beta.N pattern it filters on.

facenet512.onnx

FaceNet-512 face-embedding model, converted from deepface's published Keras
weights to ONNX so the sidecar can run it under onnxruntime without pulling
TensorFlow into the image.

SHA-256 a1c06dcb79dc17a42af01d5bcbce4822caa148b9c24bf7eb8b8e556b4fd0d5db
Size 89.6 MB (23,497,424 parameters)
Input (None, 160, 160, 3) NHWC float32
Output 512-d embedding
Licence MIT (serengil/deepface)

Converted from facenet512_weights.h5
(3f76b5117a9ca574d536af8199e6720089eb4ad3dc7e93534496d88265de864f,
deepface_models v1.0)
by ml/tools/convert_facenet.py, which verifies the converted graph against
the Keras original before writing: worst divergence 2.086e-06 absolute,
cosine 1.0000000000.

Why this model

Redistributable under MIT. Every open face-recognition weight set traces back
to a research-only dataset, so what binds a redistributor is the distributor's
grant on the artifact — and PicPeak's users run it commercially. The more
accurate InsightFace weights (buffalo_*) are non-commercial only and are
never baked into an image we publish. See ml/LICENSES.md.

Reproducibility

Re-running the conversion produces a functionally identical graph with a
different SHA-256 — same 336 nodes, same 271 initializers, weights matching
to 0.000e+00, but tf2onnx's traced-op naming is not deterministic. A checksum
mismatch after re-converting is expected and is not evidence of tampering. The
checksum here pins this artifact so its URL cannot start serving different
bytes; validating a fresh conversion is the parity check's job.

Don't miss a new picpeak release

NewReleases is sending notifications on new releases.