Face detection
SCRFD 500MF BNKPS
The live-feed SCRFD variant, 2.4 MB and 21 fps on CPU.
About this model
SCRFD 500MF is the lightweight sibling of the 10GF accuracy-pinned variant. Same family, same 5-point keypoint output, fixed 640x640 input, around 2.4 MB on disk. Use it when you need a live face detector inside a small app bundle.
On M1 Max CPU, warm runs land at 48 ms, about 21 fps. CoreML reaches 24 ms warm but pays a 799 ms cold start; pre-warm at app launch if you need both.
What you can build
- Embed a fast face detector in a 3 MB on-device asset budget.
- Track faces live in a camera viewfinder at 20+ fps.
- Drive an AR sticker overlay on phones without GPU access.
- Crop and align faces from video frames for downstream models.
Variants & downloads
Choose the build for your appModel files are being prepared.
Explore the model’s examples, source links, and integration notes while download variants are added.
Example inference
Performance
Results depend on the device, runtime, and test conditions. Each measurement keeps its own context.
M1 Max, macOS 15, ONNX Runtime 1.17
See original catalog hardware notes · CPU
48.4 ms
Warm inference
Reference result from the existing catalog; conversion variant and measurement date were not recorded.
M1 Max, macOS 15, ONNX Runtime 1.17
See original catalog hardware notes · CoreML
23.9 ms
Warm inference
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
10.3 ms
Warm inference
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_detection/face_detection_family.hpp"
imaged::SDK::AI ai;
auto& config = ai.getOptions();
config.set("face_detection.model", "weights/scrfd_500m_bnkps_640.onnx");
config.set("face_detection.inference.provider", "cpu");
config.set("face_detection.inputSize", 640);
imaged::SDK::FaceDetectionFamily family;
family.load(config);
imaged::SDK::Image image;
image.load("frame.jpg");
auto result = std::get<imaged::SDK::DetectionResult>(family.run(&image));