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.