Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Reconocimiento facial (técnico y ético), Unidad 2 — Pipeline técnico del reconocimiento facial, 2.2 — Comparación y decisión ·

Distancias y similitud

Distancias y similitud en el reconocimiento facial

Introducción

El reconocimiento facial es una tecnología que ha estado ganando popularidad en los últimos años, desde la seguridad hasta la identificación de usuarios. Una parte crucial del proceso de reconocimiento facial es la comparación y decisión, donde se utilizan distancias y similitud para determinar si dos rostros son iguales o similares. Sin embargo, esta tarea no es trivial, ya que requiere una comprensión profunda de las diferencias entre diferentes tipos de distancia y cómo se aplican en el contexto del reconocimiento facial.

Explicación principal

En la comparación y decisión del reconocimiento facial, las distancias y similitud son fundamentales. La idea es medir cuán similares son dos representaciones faciales (embeddings) para tomar una decisión sobre si corresponden a la misma persona o no.

Tipos de distancias comunes

Existen varios tipos de distancias que se utilizan en el reconocimiento facial, cada uno con sus propias ventajas y desventajas. Los más populares incluyen:

  1. Distancia Euclidiana:

La distancia euclidiana es la más directa e intuitiva. Se calcula a través de la fórmula:

\[ d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2} \]

Donde \(\mathbf{x}\) e \(\mathbf{y}\) son dos embeddings de rostros.

  1. Distancia Manhattan (Taxicab):

La distancia manhattan es la suma de las diferencias absolutas en cada dimensión:

\[ d(\mathbf{x}, \mathbf{y}) = \sum_{i=1}^{n}|x_i - y_i| \]

  1. Distancia Minkowski:

Es una generalización de la distancia euclidiana y manhattan, con un exponente \(p\):

\[ d(\mathbf{x}, \mathbf{y}) = \left( \sum_{i=1}^{n}|x_i - y_i|^p \right)^{\frac{1}{p}} \]

  1. Distancia Cosine:

La distancia cosinusoidal mide la similitud entre dos vectores, donde 0 significa que son perpendiculares (no similares) y 1 que son exactamente iguales.

Ejemplo de cálculo

Supongamos que tenemos dos embeddings \(\mathbf{a} = [1.2, -3.5]\) y \(\mathbf{b} = [-0.8, 2.4]\). Podemos calcular las distancias usando la fórmula de distancia euclidiana:

import numpy as np

def euclidean_distance(a, b):
    return np.sqrt(np.sum((a - b) ** 2))

embedding_a = np.array([1.2, -3.5])
embedding_b = np.array([-0.8, 2.4])

distance = euclidean_distance(embedding_a, embedding_b)
print(f"Distancia Euclidiana: {distance}")

Errores típicos / trampas

Aunque las distancias y similitud son esenciales para el reconocimiento facial, también hay varios errores comunes a evitar:

  1. Escalado insuficiente:

Si los embeddings no están adecuadamente escalados o normalizados, la distancia puede ser inexacta. Por ejemplo, si un embedding tiene valores muy grandes mientras que otro es relativamente pequeño, el resultado de la distancia podría estar sesgado.

  1. Ignorar la similitud:

El uso exclusivo de distancias no siempre refleja la similitud real entre dos embeddings. Es importante considerar tanto las distancias como los ángulos entre vectores para una decisión precisa.

  1. No considerar el ruido:

Los embeddings pueden contener ruido debido a variaciones en la iluminación, expresiones faciales o posiciones del rostro. No todos estos factores son relevantes para la identificación y deben ser filtrados adecuadamente.

Checklist accionable

A continuación, se presentan algunos puntos clave a considerar cuando implementas distancias y similitud en tu sistema de reconocimiento facial:

  1. Normaliza los embeddings:

Asegúrate de que todos los embeddings estén normalizados para evitar sesgos por escalos.

  1. Elije la distancia adecuada:

Dependiendo del problema, una distancia puede ser más efectiva que otra. Prueba diferentes tipos y elige el que mejor se adapte a tu caso de uso.

  1. Usa embeddings preentrenados:

Si estás trabajando con embeddings de modelos preentrenados (como RetinaFace o FaceNet), asegúrate de entender cómo estos embeddings fueron generados para obtener los mejores resultados.

  1. Filtrar ruido:

Implementa técnicas como el filtro Gaussiano para reducir el ruido en tus embeddings antes de calcular distancias.

  1. Usa un umbral adecuado:

Define umbral basado en la distribución de las distancias calculadas, asegurándote de equilibrar entre falsos positivos y falsos negativos.

Cierre: Siguientes pasos

Recomendaciones finales:

  • Realiza pruebas exhaustivas:

Prueba diferentes tipos de distancias en tu sistema y evalúa cuál proporciona los mejores resultados basados en tu caso de uso específico.

  • Considera el impacto legal y ético:

Asegúrate de cumplir con las regulaciones relevantes (como la GDPR) y considera los posibles impactos negativos del uso inadecuado del reconocimiento facial.

  • Monitorea regularmente tus sistemas:

Realiza auditarías periódicas para identificar cualquier cambio en el comportamiento del sistema que pueda indicar un problema con las distancias o similitud usadas.


Este artículo ha abordado la importancia de las distancias y similitud en el reconocimiento facial, proporcionando una guía práctica para su implementación y uso adecuado.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).