Skip to content
imaged

Face embedding

ArcFace R50 (w600k)

Turn an aligned face crop into a 512-dim unit vector.

MIT
Explore model

About this model

ArcFace with a ResNet-50 backbone trained on InsightFace's WebFace600K data. Input is an aligned 112x112 face crop from SCRFD; output is a 512-dim L2-normalized embedding. Around 166 MB on disk.

Pair with the SCRFD face detector to go from a raw photo to an embedding. Compare two embeddings with a dot product to get a cosine similarity in [-1, 1].

What you can build

  • Deduplicate faces in a personal photo library on device.
  • Group photos of the same person in a private gallery app.
  • Power a contact-photo similarity search inside an enterprise directory.
  • Drive an AR avatar that adapts to the captured face.

Variants & downloads

Choose the build for your app

Model files are being prepared.

Explore the model’s examples, source links, and integration notes while download variants are added.

Example inference

Input
A frontal portrait of Albert Einstein from Wikimedia Commons.
Output
The 112x112 aligned face crop fed to ArcFace.

Performance

Results depend on the device, runtime, and test conditions. Each measurement keeps its own context.

M1 Max, macOS 15, ONNX Runtime 1.17 (pre-aligned crop)

See original catalog hardware notes · CPU

155.0 ms

Warm inference

Catalog reference · variant unspecifiedCold start (ms): 154.76

Reference result from the existing catalog; conversion variant and measurement date were not recorded.

M1 Max, macOS 15, ONNX Runtime 1.17 (pre-aligned crop)

See original catalog hardware notes · CoreML

7.5 ms

Warm inference

Catalog reference · variant unspecifiedCold start (ms): 98.71

Reference result from the existing catalog; conversion variant and measurement date were not recorded.

RTX 2060, Ubuntu 24.04, ONNX Runtime 1.24.3

See original catalog hardware notes · CUDA

11.1 ms

Warm inference

Catalog reference · variant unspecified

Reference result from the existing catalog; conversion variant and measurement date were not recorded.

Integration examples

Vision SDK integration

cpp

#include "imaged/sdk.hpp"
#include "imaged/families/face_embedding/face_embedding_family.hpp"

imaged::SDK::AI ai;
auto& config = ai.getOptions();
config.set("face_embedding.model", "weights/w600k_r50.onnx");
config.set("face_embedding.inference.provider", "coreml");

imaged::SDK::FaceEmbeddingFamily family;
family.load(config);

imaged::SDK::Image alignedFace;
alignedFace.load("aligned_112x112.jpg");

auto result = std::get<imaged::SDK::EmbeddingResult>(family.run(&alignedFace));
auto& features = result.features;  // 512-dim unit vector