ArcFace and the alternatives: choosing a practical face pipeline
Compare ArcFace, FaceNet, CosFace, AdaFace, MagFace and detector sizes. See why CS Match combines an R50 recognizer with rotation-aware detection and inspectable reports.
Implementation checked · Cyber Search MatchOur choice is a balanced, inspectable pipeline rather than the largest available network. Published studies also show credible alternatives and cases where they improve recognition. The sensible choice depends on image quality, evaluation protocol, runtime cost and the work required to migrate an existing index.
First separate four choices that are often confused
A detector locates faces. A backbone converts an aligned crop into features. A training objective shapes how that backbone learns. A runtime executes the trained graph. SCRFD, R50, ArcFace and ONNX Runtime therefore name different layers of the system; they are not four competing recognition products.
The same training objective can be used with several backbones and datasets. Likewise, two R50 checkpoints can behave differently because their training data, preprocessing or optimisation differ. A comparison labelled only “ArcFace versus AI model X” hides important variables. Record the exact weights, training provenance, alignment and evaluation setup before drawing a conclusion.
For CS Match the current combination is a five-keypoint SCRFD detector, an R50 ArcFace-family checkpoint and consistent 112 × 112 RGB recognition input. The displayed person crop is separate from that tensor. Choosing this combination is a product engineering decision; it does not imply that every model using the ArcFace loss has identical accuracy.
Recognition alternatives and what they change
FaceNet learns an embedding through triplets: an anchor should be closer to a same-person example than to a different-person example by a margin. Triplet selection is part of training. Its original research established a useful embedding-based approach; an arbitrary third-party “FaceNet” download need not reproduce the original model or results.
CosFace introduces an additive margin in cosine space after feature and weight normalization. ArcFace instead adds the margin to an angle before taking its cosine. Both aim to separate training identities more clearly, while still producing representations that can be compared at inference.
AdaFace adapts its training margin using feature-norm information as a proxy for image quality. MagFace also connects the learned representation to quality through its magnitude and a different training objective. These are credible candidates for difficult imagery, not properties that can be added to our fixed R50 by renaming its score.
A quality-aware model also has an integration consequence. If a method relies on the feature magnitude before normalization, storing only our unit-length vector discards that quantity. A proper evaluation must preserve the additional outputs the candidate method needs, rather than assuming all 512-value arrays are interchangeable.
| Approach | Training idea | Integration question |
|---|---|---|
| FaceNet | Triplet separation in an embedding space | Which checkpoint, alignment and triplet-trained representation? |
| CosFace | Additive cosine margin | Do its weights and thresholds suit our images? |
| ArcFace | Additive angular margin | Can we keep preprocessing and stored vectors consistent? |
| AdaFace | Quality-adaptive margin | Does it improve the hard cases in our holdout? |
| MagFace | Magnitude-linked quality representation | Will we preserve and validate its quality signal? |
The evidence includes cases where an alternative wins
The AdaFace authors publish an R100 / WebFace4M comparison on IJB-C at FAR 0.01%. Their table reports 96.77% TAR for ArcFace, 96.86% for CosFace and 97.39% for AdaFace. The chart uses that particular comparison, with the authors’ attribution that other-method numbers come from the respective papers.
This is stronger evidence than mixing unrelated LFW scores from different training collections, but it is still author-reported evidence rather than our local reproduction. The common R100 and dataset labels do not establish that every training or inference detail was identical. These results cannot be assigned to our R50 or used as a measured CS Match error rate.
We therefore treat AdaFace as a serious candidate if a representative evaluation identifies low-quality recognition as the limiting stage. We would test the candidate’s complete preprocessing and runtime path. Its reference implementation, for example, expects BGR input whereas the InsightFace input convention used here is RGB. Feeding the right weights the wrong tensor is not a fair comparison.
| Published model | IJB-C TAR at FAR 0.01% |
|---|---|
| ArcFace | 96.77% |
| CosFace | 96.86% |
| AdaFace | 97.39% |

Detector size is a separate quality–cost tradeoff
The SCRFD documentation reports the five-keypoint 0.5G, 2.5G and 10G variants on the Easy, Medium and Hard WIDER FACE splits using VGA evaluation. The larger variant has stronger published detection AP on these splits and a larger nominal computation budget. Our current detector belongs to the 2.5G five-keypoint family.
The chart is detection evidence, not identity-verification evidence. FLOPs describe a computation convention at the stated resolution; they are not the time a production request takes. Our image sizes, orientation passes, runtime and CPU scheduling change request cost. A larger detector is worth testing when missed small or difficult faces are the measured bottleneck.
A recognizer cannot recover a face that the detector missed. Conversely, replacing the detector does not automatically repair a poor embedding of a detected face. Keeping the stages separate lets us improve the actual failure rather than buying a larger network in the wrong part of the pipeline.
| Published model | Easy | Medium | Hard |
|---|---|---|---|
| SCRFD 0.5G KPS | 90.97% | 88.44% | 69.49% |
| SCRFD 2.5G KPS | 93.80% | 92.02% | 77.13% |
| SCRFD 10G KPS | 95.40% | 94.01% | 82.80% |

Fix orientation before judging the recognizer
A sideways face and a profile face are different problems. In-plane rotation changes where the eyes point in the image. Yaw turns the head away from the camera and can hide features. Rotating the photo can correct the first; it cannot reconstruct a cheek or eye that was never visible.
Our context crops use the eye line and the mouth direction to determine upright orientation, including the otherwise ambiguous 180-degree case. Standard analysis can refine unreliable orientation using quarter-turn passes for existing detections. Enhanced tilted-face detection searches eight orientations and merges repeated detections by image geometry before producing the report.
The recognition tensor is then built using the landmark alignment path. This is more useful than merely rotating a thumbnail with CSS: the model input and search handoff need the corrected image geometry too. Original-photo boxes remain in the original coordinate system so that the user can inspect which face was selected.
These steps address a real failure mode in the application. They do not guarantee a detection for every covered or tiny face, and eight passes cost more than a normal pass. Giving the user an explicit enhanced mode preserves a useful choice between additional work and ordinary interactive latency.

Self-hosted inference, managed APIs and retraining
A managed service can reduce the work of operating inference, but its usefulness depends on the outputs, limits, retention terms and controls it actually exposes. For our workflow, we need numbered group detections, a user-selected reference, explicit all-pairs results and a stable representation for indexed search. These are requirements to check, rather than assumptions about every vendor.
Self-hosting lets the application keep those stages explicit and version the preprocessing alongside the worker. It also places model rights, capacity planning, maintenance and evaluation on the operator. A runtime such as ONNX Runtime offers execution-provider choices, but switching CPU to GPU is a capacity decision to benchmark on the actual graph; it does not by itself establish better recognition accuracy.
Training from scratch offers control over the learning recipe at the cost of data preparation, compute and evaluation. Fine-tuning may help a well-defined domain, but can also move the embedding space away from the existing index. For an established photo-search collection, the cost of rebuilding and validating stored vectors belongs in that decision.
Why our current combination is a reasonable quality choice
The quality argument for CS Match is the complete workflow. An established R50 representation is paired with face selection, consistent alignment, upright crops and the same vector conventions on both sides. The report shows the actual reference beside the source, preserves raw cosine similarity and distinguishes an unavailable computation from a valid low score.
In Multi compare, each photo’s vectors are reused for every pair. Results are sorted by similarity and can be reviewed without a forced one-to-one assignment. A user can inspect a crop at full size and continue to source research through Face Search. The system exposes enough of the input and calculation to catch common mistakes that a single unqualified “match” label would conceal.
For our interactive comparison and public-photo research use case, this is a defensible balance: strong published model-family evidence, controlled inference work and an inspectable result. It is our engineering judgement, not a universal ranking. A larger detector, a quality-adaptive recognizer or a specialised service may be the better choice for another capture regime.
- Correct person selection before scoring.
- Consistent geometry and representation across both photos.
- Reusable vectors instead of repeated inference for each pair.
- Source and reference images alongside the numerical evidence.
- Explicit limits and no invented end-to-end accuracy figure.
What would justify changing the implementation
Start with the errors, not a model name. If the detector misses small faces, compare detector variants at a fixed input budget. If landmarks fail on rotated faces, test the orientation and alignment path. If valid aligned crops produce false or missed matches, evaluate alternative recognition checkpoints at the intended error tradeoff.
Use the same permitted image collection, identity split, operating-point procedure and hardware budget for each candidate. Report detection recall separately, invalid-vector counts separately, then verification errors and retrieval behaviour. Include median and tail latency, memory use and the cost of rebuilding the index. An improvement that breaks the response-time budget may need a different serving design.
Only after that comparison should we replace weights or introduce another model path. Version both the old and new spaces, rebuild the required vectors, re-evaluate thresholds and retain a rollback route. This is how we keep the current implementation reasonable and improve it when evidence supports a better one.
Questions about this workflow
Is ArcFace always more accurate than AdaFace?
No. The cited AdaFace comparison includes conditions where AdaFace reports higher true-accept rates. Our model choice is an engineering tradeoff, not a claim of universal superiority.
Can I replace R50 with another 512-dimensional model without rebuilding?
Equal dimensions do not guarantee compatible embedding spaces. A replacement needs consistency checks, re-evaluation and usually regenerated stored vectors.
Does rotating the photo solve a strong profile view?
It can correct in-plane tilt. It cannot restore facial features hidden by a head turned away from the camera.
Understand the pipeline, the vectors and the limits.
How face detection and alignment work
Follow a photo through CS Match: image preparation, SCRFD detection, five facial landmarks, person crops and 112 × 112 alignment for comparison.
Face vectors, ArcFace and the recognition model
Understand our 512-value face embeddings, RGB preprocessing, L2 normalization, angular similarity and the difference between model training and inference.
How a face is compared with a reference
Follow our exact comparison request: reference selection, two inference passes, cosine similarity, the 0.45–0.72 display scale and report decisions.
Face comparison errors, accuracy and practical limits
Diagnose false matches, missed matches and unavailable comparisons. Learn what image quality changes, how to test results and why a score is not identity proof.
Pretrained face models: training, benchmarks and real-world use
Understand how ArcFace models learn, how published accuracy is measured and how CS Match turns a fixed checkpoint into a practical face-comparison workflow.
Face recognition in CCTV: from video frames to reviewed evidence
Explore face recognition in security-camera footage, controlled access and video archives: detection, tracking, gallery search, image quality and operational evaluation.
Face recognition in phones, payments and online identity checks
Compare Face ID, payment passkeys, face-based checkout and selfie-to-ID verification, with documented examples from Apple, Visa, Mastercard, Stripe and AWS.