Model Zoo
Complete guide to all available models and their performance characteristics.
Face Detection Models
RetinaFace Family
RetinaFace models are trained on the WIDER FACE dataset.
| Model Name | Params | Size | Easy | Medium | Hard |
|---|---|---|---|---|---|
MNET_025 |
0.4M | 1.7MB | 88.48% | 87.02% | 80.61% |
MNET_050 |
1.0M | 2.6MB | 89.42% | 87.97% | 82.40% |
MNET_V1 |
3.5M | 3.8MB | 90.59% | 89.14% | 84.13% |
MNET_V2 |
3.2M | 3.5MB | 91.70% | 91.03% | 86.60% |
RESNET18 |
11.7M | 27MB | 92.50% | 91.02% | 86.63% |
RESNET34 |
24.8M | 56MB | 94.16% | 93.12% | 88.90% |
RESNET50 |
27.4M | 104MB | 94.72%* | 93.67%* | 88.82%* |
* RESNET50 weights come from HivisionIDPhotos;
its scores are measured with widerface_evaluation rather than quoted
from the paper. It trails RESNET34 on Hard despite being ~2x the size.
Accuracy & Benchmarks
Accuracy: WIDER FACE validation set (Easy/Medium/Hard subsets) - from RetinaFace paper
Speed: Benchmark on your own hardware using python tools/detect.py --source <image>
SCRFD Family
SCRFD (Sample and Computation Redistribution for Efficient Face Detection) models trained on WIDER FACE dataset.
| Model Name | Params | Size | Easy | Medium | Hard |
|---|---|---|---|---|---|
SCRFD_500M_KPS |
0.6M | 2.5MB | 90.57% | 88.12% | 68.51% |
SCRFD_10G_KPS |
4.2M | 17MB | 95.16% | 93.87% | 83.05% |
Accuracy & Benchmarks
Accuracy: WIDER FACE validation set - from SCRFD paper
Speed: Benchmark on your own hardware using python tools/detect.py --source <image>
CenterFace
CenterFace is an anchor-free detector (MobileNetV2 + FPN) that treats faces as center points, with joint 5-point landmark prediction. Trained on WIDER FACE dataset.
| Model Name | Size | Easy | Medium | Hard |
|---|---|---|---|---|
DEFAULT |
7.0MB | 92.2%* | 91.1%* | 78.2%* |
* Single inference on the original image (SIO). With multi-scale and flip testing the original repo reports 93.5% / 92.4% / 87.5%.
Accuracy & Benchmarks
Accuracy: WIDER FACE validation set - from CenterFace paper
Speed: Benchmark on your own hardware using python tools/detect.py --source <image> --method centerface
Input Size
The ONNX model has dynamic spatial dimensions. input_size is an upper bound
(default 640×640), not a fixed shape: larger images are scaled down to fit and smaller
ones are left alone, preserving aspect ratio. Each side is then rounded up to a
multiple of 32. Pass input_size=None to always run at native resolution, like upstream.
BlazeFace
Google MediaPipe's short-range SSD detector, the one that runs ahead of Face Mesh in MediaPipe's own pipeline. Pairing it with Face Mesh reproduces that output.
| Model Name | Input | Keypoints | Size |
|---|---|---|---|
DEFAULT |
128×128 | 6 | 0.5MB |
Not for recognition pipelines
BlazeFace emits 6 MediaPipe keypoints (right eye, left eye, nose tip, mouth center,
right/left ear tragion), not the 5-point alignment template. With no mouth corners they
cannot drive face alignment, so supports_alignment is False and FaceAnalyzer
disables recognition for it.
Short range
Tuned for faces within roughly 2m. Not benchmarked on WIDER FACE, and less accurate than SCRFD or YOLOv8 on small or distant faces. Choose it for its 0.5MB footprint or for MediaPipe parity.
Reference
Paper: BlazeFace: Sub-millisecond Neural Face Detection on Mobile GPUs
Source: yakhyo/mediapipe-face-mesh-onnx — ONNX export of Google MediaPipe
YOLOv5-Face Family
YOLOv5-Face models provide detection with 5-point facial landmarks, trained on WIDER FACE dataset.
| Model Name | Size | Easy | Medium | Hard |
|---|---|---|---|---|
YOLOV5N |
11MB | 93.61% | 91.52% | 80.53% |
YOLOV5S |
28MB | 94.33% | 92.61% | 83.15% |
YOLOV5M |
82MB | 95.30% | 93.76% | 85.28% |
Accuracy & Benchmarks
Accuracy: WIDER FACE validation set - from YOLOv5-Face paper
Speed: Benchmark on your own hardware using python tools/detect.py --source <image>
Fixed Input Size
All YOLOv5-Face models use a fixed input size of 640×640.
YOLOv8-Face Family
YOLOv8-Face models use anchor-free design with DFL (Distribution Focal Loss) for bbox regression. Provides detection with 5-point facial landmarks.
| Model Name | Size | Easy | Medium | Hard |
|---|---|---|---|---|
YOLOV8_LITE_S |
7.4MB | 93.4% | 91.2% | 78.6% |
YOLOV8N |
12MB | 94.6% | 92.3% | 79.6% |
Accuracy & Benchmarks
Accuracy: WIDER FACE validation set (Easy/Medium/Hard subsets)
Speed: Benchmark on your own hardware using python tools/detect.py --source <image> --method yolov8face
Fixed Input Size
All YOLOv8-Face models use a fixed input size of 640×640.
Face Recognition Models
AdaFace
Face recognition using adaptive margin based on image quality.
| Model Name | Backbone | Dataset | Size | IJB-B TAR | IJB-C TAR |
|---|---|---|---|---|---|
IR_18 |
IR-18 | WebFace4M | 92 MB | 93.03% | 94.99% |
IR_101 |
IR-101 | WebFace12M | 249 MB | - | 97.66% |
Training Data & Accuracy
Dataset: WebFace4M / WebFace12M (4M / 12M images)
Accuracy: IJB-B and IJB-C benchmarks, TAR@FAR=0.01%
Key Innovation
AdaFace introduces adaptive margin that adjusts based on image quality, providing better performance on low-quality images compared to fixed-margin approaches.
ArcFace
Face recognition using additive angular margin loss.
| Model Name | Backbone | Params | Size | LFW | CFP-FP | AgeDB-30 | IJB-C |
|---|---|---|---|---|---|---|---|
MNET |
MobileNet | 2.0M | 8MB | 99.70% | 98.00% | 96.58% | 95.02% |
RESNET |
ResNet50 | 43.6M | 166MB | 99.83% | 99.33% | 98.23% | 97.25% |
Training Data
Dataset: Trained on WebFace600K (600K images)
Accuracy: IJB-C accuracy reported as TAR@FAR=1e-4
MobileFace
Lightweight face recognition models with MobileNet backbones.
| Model Name | Backbone | Params | Size | LFW | CALFW | CPLFW | AgeDB-30 |
|---|---|---|---|---|---|---|---|
MNET_025 |
MobileNetV1 0.25 | 0.36M | 1MB | 98.76% | 92.02% | 82.37% | 90.02% |
MNET_V2 |
MobileNetV2 | 2.29M | 4MB | 99.55% | 94.87% | 86.89% | 95.16% |
MNET_V3_SMALL |
MobileNetV3-S | 1.25M | 3MB | 99.30% | 93.77% | 85.29% | 92.79% |
MNET_V3_LARGE |
MobileNetV3-L | 3.52M | 10MB | 99.53% | 94.56% | 86.79% | 95.13% |
Training Data
Dataset: Trained on MS1MV2 (5.8M images, 85K identities)
Accuracy: Evaluated on LFW, CALFW, CPLFW, and AgeDB-30 benchmarks
SphereFace
Face recognition using angular softmax loss.
| Model Name | Backbone | Params | Size | LFW | CALFW | CPLFW | AgeDB-30 |
|---|---|---|---|---|---|---|---|
SPHERE20 |
Sphere20 | 24.5M | 50MB | 99.67% | 95.61% | 88.75% | 96.58% |
SPHERE36 |
Sphere36 | 34.6M | 92MB | 99.72% | 95.64% | 89.92% | 96.83% |
Training Data
Dataset: Trained on MS1MV2 (5.8M images, 85K identities)
Accuracy: Evaluated on LFW, CALFW, CPLFW, and AgeDB-30 benchmarks
Architecture
SphereFace uses angular softmax loss, an earlier approach before ArcFace. These models provide good accuracy with moderate resource requirements.
EdgeFace
Efficient face recognition designed for edge devices, using EdgeNeXt backbone with optional LoRA compression.
| Model Name | Backbone | Params | MFLOPs | Size | LFW | CALFW | CPLFW | CFP-FP | AgeDB-30 |
|---|---|---|---|---|---|---|---|---|---|
XXS |
EdgeNeXt | 1.24M | 94 | ~5 MB | 99.57% | 94.83% | 90.27% | 93.63% | 94.92% |
XS_GAMMA_06 |
EdgeNeXt | 1.77M | 154 | ~7 MB | 99.73% | 95.28% | 91.58% | 94.71% | 96.08% |
S_GAMMA_05 |
EdgeNeXt | 3.65M | 306 | ~14 MB | 99.78% | 95.55% | 92.48% | 95.74% | 97.03% |
BASE |
EdgeNeXt | 18.2M | 1399 | ~70 MB | 99.83% | 96.07% | 93.75% | 97.01% | 97.60% |
Training Data & Reference
Paper: EdgeFace: Efficient Face Recognition Model for Edge Devices (IEEE T-BIOM 2024)
Source: github.com/otroshi/edgeface | github.com/yakhyo/edgeface-onnx
Facial Landmark Models
106-Point Landmark Detection
Facial landmark localization model.
| Model Name | Points | Params | Size |
|---|---|---|---|
DEFAULT (2d_106) |
106 | 3.7M | 14MB |
Landmark Groups:
| Group | Points | Count |
|---|---|---|
| Face contour | 0-32 | 33 points |
| Eyebrows | 33-50 | 18 points |
| Nose | 51-62 | 12 points |
| Eyes | 63-86 | 24 points |
| Mouth | 87-105 | 19 points |
PIPNet (98 / 68 points)
PIPNet (Pixel-in-Pixel Net) facial landmark detector. ResNet-18 backbone, 256×256 input.
| Model Name | Points | Backbone | Dataset | Size |
|---|---|---|---|---|
WFLW_98 |
98 | ResNet-18 | WFLW (supervised) | 47 MB |
DW300_CELEBA_68 |
68 | ResNet-18 | 300W+CelebA (GSSL) | 46 MB |
Reference
Paper: PIPNet: Towards Efficient Facial Landmark Detection in the Wild (IJCV 2021)
Source: yakhyo/pipnet-onnx — ONNX export from jhb86253817/PIPNet
Auto-selected meanface
Both variants share the same architecture; the number of landmarks (and the matching meanface table) is inferred from the ONNX output channel count.
Face Mesh (468 or 478 points)
Google MediaPipe's dense mesh. The only UniFace landmarker that returns 3D points and a face-presence score, and the only model that batches every face of an image into one inference call.
| Model Name | Points | Input | Size |
|---|---|---|---|
V1_468 |
468 (3D) | 192×192 | 2.4MB |
V2_478 |
478 (3D, with irises) | 256×256 | 4.6MB |
Reference
Paper: Real-time Facial Surface Geometry from Monocular Video on Mobile GPUs
Source: yakhyo/mediapipe-face-mesh-onnx — architectures recovered from Google MediaPipe. V1_468's weights came via PINTO0309's conversion; V2_478's were read directly from the .tflite in Google's face_landmarker.task bundle
Works with any detector
Face Mesh needs a bounding box plus the first two landmarks (the eyes) to align its crop. Rows 0/1 are the viewer-left and viewer-right eye in both the 5-point template and BlazeFace's 6-point layout, so every UniFace detector can seed it.
Relative depth
The z coordinate is relative depth on the same pixel scale as x/y (smaller is
closer). It has no absolute origin and is not comparable between faces or images.
Attribute Analysis Models
Age & Gender Detection
| Model Name | Attributes | Params | Size |
|---|---|---|---|
DEFAULT |
Age, Gender | 2.1M | 8MB |
Training Data
Dataset: Trained on CelebA
Accuracy Note
Accuracy varies by demographic and image quality. Test on your specific use case.
FairFace Attributes
| Model Name | Attributes | Params | Size |
|---|---|---|---|
DEFAULT |
Race, Gender, Age Group | - | 44MB |
Training Data
Dataset: Trained on FairFace dataset with balanced demographics
Equitable Predictions
FairFace provides more equitable predictions across different racial and gender groups.
Race Categories (7): White, Black, Latino Hispanic, East Asian, Southeast Asian, Indian, Middle Eastern
Age Groups (9): 0-2, 3-9, 10-19, 20-29, 30-39, 40-49, 50-59, 60-69, 70+
Emotion Detection
| Model Name | Classes | Params | Size |
|---|---|---|---|
AFFECNET7 |
7 | 0.5M | 2MB |
AFFECNET8 |
8 | 0.5M | 2MB |
Classes (7): Neutral, Happy, Sad, Surprise, Fear, Disgust, Angry
Classes (8): Above + Contempt
Training Data
Dataset: Trained on AffectNet
Accuracy Note
Emotion detection accuracy depends heavily on facial expression clarity and cultural context.
Face State Detection (FaceAttribNet)
| Model Name | Attributes | Params | Size |
|---|---|---|---|
DEFAULT |
Eye openness (L/R), Eyeglasses, Mask, Sunglasses | 10.8M | 41MB |
Qualcomm's Facial-Attribute-Detection model. Outputs five independent binary probabilities from a 128x128 face crop.
Training Data
Dataset: Trained by Qualcomm on a proprietary face dataset
Multi-label Output
The five probabilities come from independent binary heads: they do not sum to 1
and several can be high at once. Threshold each attribute separately; never argmax.
Gaze Estimation Models
MobileGaze Family
Gaze direction prediction models trained on Gaze360 dataset. Returns pitch (vertical) and yaw (horizontal) angles in radians.
| Model Name | Params | Size | MAE* |
|---|---|---|---|
RESNET18 |
11.7M | 43 MB | 12.84 |
RESNET34 |
24.8M | 81.6 MB | 11.33 |
RESNET50 |
25.6M | 91.3 MB | 11.34 |
MOBILENET_V2 |
3.5M | 9.59 MB | 13.07 |
MOBILEONE_S0 |
2.1M | 4.8 MB | 12.58 |
*MAE (Mean Absolute Error) in degrees on Gaze360 test set - lower is better
Training Data
Dataset: Trained on Gaze360 (indoor/outdoor scenes with diverse head poses)
Training: 200 epochs with classification-based approach (binned angles)
Input Requirements
Requires face crop as input. Use face detection first to obtain bounding boxes.
Head Pose Estimation Models
HeadPose Family
Head pose estimation models using 6D rotation representation. Trained on 300W-LP dataset, evaluated on AFLW2000. Returns pitch, yaw, and roll angles in degrees.
| Model Name | Backbone | Size | MAE* |
|---|---|---|---|
RESNET18 |
ResNet18 | 43 MB | 5.22° |
RESNET34 |
ResNet34 | 82 MB | 5.07° |
RESNET50 |
ResNet50 | 91 MB | 4.83° |
MOBILENET_V2 |
MobileNetV2 | 9.6 MB | 5.72° |
MOBILENET_V3_SMALL |
MobileNetV3-Small | 4.8 MB | 6.31° |
MOBILENET_V3_LARGE |
MobileNetV3-Large | 16 MB | 5.58° |
*MAE (Mean Absolute Error) in degrees on AFLW2000 test set — lower is better
Training Data
Dataset: Trained on 300W-LP (synthesized large-pose faces from 300W)
Method: 6D rotation representation (rotation matrix → Euler angles)
Input Requirements
Requires face crop as input. Use face detection first to obtain bounding boxes.
Face Parsing Models
BiSeNet Family
BiSeNet (Bilateral Segmentation Network) models for semantic face parsing. Segments face images into 19 facial component classes.
| Model Name | Params | Size | Classes |
|---|---|---|---|
RESNET18 |
13.3M | 50.7 MB | 19 |
RESNET34 |
24.1M | 89.2 MB | 19 |
Training Data
Dataset: Trained on CelebAMask-HQ
Architecture: BiSeNet with ResNet backbone
Input Size: 512×512 (automatically resized)
19 Facial Component Classes:
| # | Class | # | Class | # | Class |
|---|---|---|---|---|---|
| 0 | Background | 7 | Left Ear | 14 | Neck |
| 1 | Skin | 8 | Right Ear | 15 | Neck Lace |
| 2 | Left Eyebrow | 9 | Ear Ring | 16 | Cloth |
| 3 | Right Eyebrow | 10 | Nose | 17 | Hair |
| 4 | Left Eye | 11 | Mouth | 18 | Hat |
| 5 | Right Eye | 12 | Upper Lip | ||
| 6 | Eye Glasses | 13 | Lower Lip |
Applications:
- Face makeup and beauty applications
- Virtual try-on systems
- Face editing and manipulation
- Facial feature extraction
- Portrait segmentation
Input Requirements
Input should be a cropped face image. For full pipeline, use face detection first to obtain face crops.
XSeg
XSeg from DeepFaceLab outputs masks for face regions. Requires 5-point landmarks for face alignment.
| Model Name | Size | Output |
|---|---|---|
DEFAULT |
67 MB | Mask [0, 1] |
Model Details
Origin: DeepFaceLab
Input: NHWC format, normalized to [0, 1]
Alignment: Requires 5-point landmarks (not bbox crops)
Applications:
- Face region extraction
- Face swapping pipelines
- Occlusion handling
Input Requirements
Requires 5-point facial landmarks. Use a face detector like RetinaFace to obtain landmarks first.
Portrait Matting Models
MODNet
MODNet (Real-Time Trimap-Free Portrait Matting) produces soft alpha mattes from full images without requiring a trimap. Uses MobileNetV2 backbone with low-resolution, high-resolution, and fusion branches.
| Model Name | Variant | Size | Use Case |
|---|---|---|---|
PHOTOGRAPHIC |
High-quality | 25 MB | Portrait photos |
WEBCAM |
Real-time | 25 MB | Webcam feeds |
Model Details
Paper: MODNet: Real-Time Trimap-Free Portrait Matting via Objective Decomposition (AAAI 2022)
Source: yakhyo/modnet — ported weights and clean inference codebase
Output: Alpha matte (H, W) in [0, 1]
Applications:
- Background removal / replacement
- Green screen compositing
- Video conferencing virtual backgrounds
- Portrait editing
Input Requirements
Operates on full images (not face crops). No trimap or face detection required.
Anti-Spoofing Models
MiniFASNet Family
Face anti-spoofing models for liveness detection. Detect if a face is real (live) or fake (photo, video replay, mask).
| Model Name | Size | Scale |
|---|---|---|
V1SE |
1.2 MB | 4.0 |
V2 |
1.2 MB | 2.7 |
Output Format
Output: Returns SpoofingResult(is_real, confidence) where is_real: True=Real, False=Fake
Input Requirements
Requires face bounding box from a detector.
Face Image Quality Models
eDifFIQA Family
Face image quality assessment. Predicts a single scalar score from an aligned 112x112 face crop — higher = better. eDifFIQA-L ranks first on the NIST FATE-Quality Kiosk-to-Entry track.
| Model Name | Backbone | Params | Size |
|---|---|---|---|
T |
MobileFaceNet | 1.7M | 6.6 MB |
S |
IResNet-18 | 24.6M | 93.7 MB |
M |
IResNet-50 | 44.1M | 168.3 MB |
L |
IResNet-100 | 65.7M | 250.6 MB |
Output Format
Output: Returns QualityResult(score) — float, roughly in [0, 1]. Not a calibrated probability; calibrate your threshold on a held-out set.
Input Requirements
Requires 5-point landmarks from a detector (e.g. SCRFD, RetinaFace) for alignment, or a pre-aligned 112x112 crop via score_aligned().
Model Management
Models are automatically downloaded and cached on first use.
- Sources: GitHub Releases, falling back automatically to a Hugging Face mirror when GitHub is unreachable
- Cache location:
~/.uniface/models/(configurable viaset_cache_dir()orUNIFACE_CACHE_DIRenv var) - Inspect cache path:
get_cache_dir()returns the resolved active path - Verification: Models are verified with SHA-256 checksums, whichever source served them
- Concurrent download:
download_models([...])fetches multiple models in parallel - Manual download: Use
python tools/download_model.pyto pre-download models
See Model Cache & Offline Use for full details.
References
Model Training & Architectures
- RetinaFace Training: yakhyo/retinaface-pytorch - PyTorch implementation and training code
- YOLOv5-Face Original: deepcam-cn/yolov5-face - Original PyTorch implementation
- YOLOv5-Face ONNX: yakhyo/yolov5-face-onnx-inference - ONNX inference implementation
- YOLOv8-Face Original: derronqi/yolov8-face - Original PyTorch implementation
- YOLOv8-Face ONNX: yakhyo/yolov8-face-onnx-inference - ONNX inference implementation
- AdaFace Original: mk-minchul/AdaFace - Original PyTorch implementation
- AdaFace ONNX: yakhyo/adaface-onnx - ONNX export and inference
- Face Recognition Training: yakhyo/face-recognition - ArcFace, MobileFace, SphereFace training code
- Gaze Estimation Training: yakhyo/gaze-estimation - MobileGaze training code and pretrained weights
- Head Pose Estimation: yakhyo/head-pose-estimation - 6D rotation head pose estimation training and ONNX models
- Face Parsing Training: yakhyo/face-parsing - BiSeNet training code and pretrained weights
- Face Segmentation: yakhyo/face-segmentation - XSeg ONNX Inference
- Portrait Matting: yakhyo/modnet - MODNet ported weights and inference (from ZHKKKe/MODNet)
- Face Anti-Spoofing: yakhyo/face-anti-spoofing - MiniFASNet ONNX inference (weights from minivision-ai/Silent-Face-Anti-Spoofing)
- Face Image Quality Assessment: yakhyo/face-image-quality-assessment - eDifFIQA PyTorch inference, ONNX export and inference
- FairFace: yakhyo/fairface-onnx - FairFace ONNX inference for race, gender, age prediction
- FaceAttribNet: yakhyo/face-attribute - FaceAttribNet ONNX export and inference (weights from qualcomm/ai-hub-models)
- PIPNet: yakhyo/pipnet-onnx - PIPNet ONNX export and inference (from jhb86253817/PIPNet)
- InsightFace: deepinsight/insightface - Model architectures and pretrained weights
Papers
- RetinaFace: Single-Shot Multi-Level Face Localisation in the Wild
- SCRFD: Sample and Computation Redistribution for Efficient Face Detection
- YOLOv5-Face: YOLO5Face: Why Reinventing a Face Detector
- AdaFace: AdaFace: Quality Adaptive Margin for Face Recognition
- ArcFace: Additive Angular Margin Loss for Deep Face Recognition
- SphereFace: Deep Hypersphere Embedding for Face Recognition
- MODNet: Real-Time Trimap-Free Portrait Matting via Objective Decomposition
- BiSeNet: Bilateral Segmentation Network for Real-time Semantic Segmentation
- PIPNet: Towards Efficient Facial Landmark Detection in the Wild