¿Cuál es el mejor algoritmo para medir la similitud de caras?

TLDR: Aprendizaje profundo para crear buenas representaciones de caras, y luego puntear el producto entre las representaciones de dos caras para evaluar la similitud.

Al crear un sistema de reconocimiento facial, generalmente terminas con una representación facial. Se puede usar una buena representación para el reconocimiento de caras, pero también para la medición de similitud entre dos caras arbitrarias (y en ese contexto, similitud significa representaciones similares, no caras estrictamente similares.
Dado que optimiza la representación para que sea buena para el reconocimiento de rostros por diseño, los rostros que pertenecen a la misma persona tienen una representación similar. esto se extiende hasta cierto punto a rostros que pertenecen a diferentes personas. intuitivamente esperaría que un buen sistema de reconocimiento de rostros tuviera errores donde las personas también tendrían errores (rostros similares).

El método más común para calcular la similitud entre dos representaciones es simplemente mirar el producto de punto entre las dos similitudes. El producto punto en sí es muy barato de calcular. la parte costosa es obtener las representaciones faciales.

En estos días, las mejores representaciones de este tipo se entrenan mediante el aprendizaje profundo, donde se logra el estado actual del arte al entrenar con una función de clasificación inferior (Incrustación unificada para reconocimiento facial y agrupación).

La desventaja es que la mayoría de esas técnicas requieren cantidades muy grandes de caras etiquetadas. Los mejores resultados se lograron mediante la capacitación en conjuntos de datos de caras etiquetadas de 100m e incluso de 200m, algo que está fuera del alcance de casi todos, excepto Google y Facebook.

Hay un artículo reciente de Lior Wolf que logra buenos resultados en un conjunto de datos mucho más pequeño y disponible al público: [1511.09033] La pérdida de multiverso para el aprendizaje de transferencia robusta