cosine_similarity
La similitud coseno mide el ángulo entre dos vectores de embedding. Es la métrica estándar para comparar embeddings faciales porque es invariante a la escala (magnitud del vector).
When to use
Usar para comparar cualquier par de embeddings faciales en el face_match_agent.
Instructions
- Asegurarse que ambos embeddings están normalizados a norma unitaria (L2 norm = 1).
- Normalización:
embedding = embedding / np.linalg.norm(embedding). - Calcular similitud:
similarity = float(np.dot(embedding_1, embedding_2)). - Rango de valores: -1 (opuesto) a 1 (idéntico). Para caras diferentes: típicamente < 0.3.
- Mapear a porcentaje para UI:
score_pct = (similarity + 1) / 2 * 100. - Registrar el score raw y el score mapeado en el evento de auditoría.
- Si hay múltiples embeddings (varios frames de selfie), calcular la media de similitudes.
Notes
- Para distancia euclidiana:
distance = np.linalg.norm(e1 - e2). Usar solo si los modelos están calibrados para esta métrica. - NumPy
np.dotsobre vectores normalizados es equivalente asklearn.metrics.pairwise.cosine_similaritypero más rápido.