Back to Blog
Computer Vision December 20, 2024 8 min read

Face Recognition in Production with InsightFace

End-to-end face recognition system — face detection, alignment, embedding extraction with ArcFace, and sub-millisecond search with Faiss.

Pipeline

Image → RetinaFace Detection → Landmark Alignment → ArcFace Embedding → Faiss Index

Code

from insightface.app import FaceAnalysis
import faiss
import numpy as np

app = FaceAnalysis(providers=['CUDAExecutionProvider'])
app.prepare(ctx_id=0, det_size=(640, 640))

# Extract embeddings
def get_embedding(image):
    faces = app.get(image)
    if not faces: return None
    return faces[0].normed_embedding  # 512-dim L2-normalized

# Build Faiss index
index = faiss.IndexFlatIP(512)  # Inner product for cosine sim
index.add(np.array(embeddings))

# Search
D, I = index.search(query_embedding.reshape(1, -1), k=5)

Threshold Tuning

ArcFace cosine similarity: >0.35 = likely same person. Tune on your specific demographic data.

Face RecognitionArcFaceInsightFaceFaissProduction
O

Ossama Elhakki

AI Engineer & ML Systems Builder — Morocco