Saltar al contenido principal

Reconocimiento Facial

Descripción General

Immich reconoce caras en tus fotos y videos, y las agrupa en personas. Puedes luego asignar nombres a estas personas y buscarlas.

La lista de personas se muestra en la página Explorar.

Al hacer clic en una persona, se mostrará una lista de recursos que contienen su cara.

La vista de detalle del recurso también mostrará las caras que se reconocen en el recurso.

Acciones

Las acciones adicionales que puedes realizar incluyen:

  • Cambiar la foto principal de la persona
  • Configurar la fecha de nacimiento de una persona
  • Fusionar dos o más caras detectadas en una sola persona
  • Ocultar las caras de una persona en la página Explorar y en la vista de detalle
  • Asignar una cara no reconocida a una persona

Puedes encontrar estas opciones en la barra de la aplicación al acceder a la vista de detalle de una persona.

Cómo Funciona la Detección de Caras

La detección de caras envía la imagen de vista previa generada al servicio de aprendizaje automático para su procesamiento. El servicio comprueba si tiene descargado el modelo relevante y lo descarga si no es así. La imagen se decodifica, se preprocesa y se pasa al modelo de detección de caras (con aceleración de hardware si está configurado). Los cuadros delimitadores y los puntajes generados por este modelo se usan para recortar y preprocesar la imagen nuevamente antes de pasarla a un modelo de reconocimiento facial (también acelerado si está configurado). Las incrustaciones del modelo de reconocimiento, junto con los cuadros delimitadores y los puntajes del modelo de detección de caras, se envían luego al servidor para ser añadidos a la base de datos. Las incrustaciones, en particular, se indexan para poder buscarse rápidamente durante el agrupamiento de reconocimiento facial.

Cómo Funciona el Reconocimiento Facial

El algoritmo de reconocimiento facial que usamos deriva de DBSCAN, un algoritmo de agrupamiento popular. Básicamente, trata cada cara detectada como un punto en un gráfico y busca agrupar puntos que estén cerca unos de otros.

nota

Un concepto importante es si algo es un punto con núcleo. Un punto con núcleo tiene un número mínimo de puntos a su alrededor dentro de una cierta distancia. Un punto sin núcleo solo puede asignarse a un clúster si puede alcanzar un punto con núcleo; un punto sin núcleo no puede usarse para extender un clúster aunque forme parte de uno. En Immich, la configuración de Caras reconocidas mínimas controla el umbral para considerarse un punto con núcleo.

Para cada cara, busca alrededor de ella otras caras dentro de una cierta distancia. Las caras dentro de esta distancia se consideran similares, por lo que luego comprueba si alguna de estas caras está asociada a una persona.

Si existe una persona, se asigna la persona de la cara más similar a la cara que se está procesando.

Si no hay ninguna, entonces tiene que determinar algo del algoritmo DBSCAN: si la cara es un punto con núcleo. Si hay un cierto número de caras similares (por defecto 3, incluida la cara en cuestión), entonces esta cara es un punto con núcleo. Se crea una nueva persona para esta cara y se le asigna la cara. Cuando se procesen otras caras, si son similares a esta cara, verán que está asociada a una persona y podrán asignarse a esa persona.

Sin embargo, si no hay suficientes caras similares, no se creará una nueva persona. En su lugar, la cara esperará a que se procesen todas las demás caras para ver si alguna que antes no tenía una persona asociada ahora la tiene. Si es así, la cara se asignará a esa persona. Si no, esta cara se considerará un caso aislado, como un extraño en el fondo de una imagen.

El algoritmo presenta algunas diferencias sutiles en comparación con DBSCAN:

  • DBSCAN no tiene un concepto de agrupación incremental: agrupa todos los puntos a la vez. En cambio, el reconocimiento facial debe evolucionar a medida que se añaden más recursos sin volver a agrupar todo cada vez.
    • El algoritmo descrito anteriormente funciona dentro de un conjunto de recursos en cola. Una vez que se procesan estas caras y se detecta una nueva ronda de caras, el comportamiento no será el mismo que el DBSCAN tradicional porque preserva los grupos (personas) generados en la ronda anterior.
      • El reconocimiento facial intenta esperar a que se complete la detección de caras y la generación de miniaturas antes de comenzar por esta razón: cuanto mayor sea el conjunto de caras en la cola, mejores serán los resultados.
      • Sin embargo, volver a ejecutar el reconocimiento facial en todos los recursos después se comporta como DBSCAN.
  • DBSCAN está diseñado para búsquedas basadas en rangos (es decir, puntos dentro de una distancia), pero los índices de vectores de alta dimensionalidad generalmente están optimizados para obtener los K resultados más cercanos. Por razones de rendimiento, el algoritmo de reconocimiento no intenta obtener todas las caras similares dentro de una distancia. En su lugar, busca un pequeño número de coincidencias para cada cara. El resultado final debería ser muy similar si no idéntico, pero con diferentes características de rendimiento.
    • Debido a esto, parte del proceso de reconocimiento se maneja durante un trabajo nocturno para asegurarse de que las caras no asignadas con coincidencias potenciales puedan ser reconocidas.
consejo

Si no importaste tus recursos de una vez o si el servidor pudo procesar trabajos más rápido de lo que pudiste cargarlos, es posible que el agrupamiento no sea óptimo. Si no has invertido esfuerzo en los resultados actuales, podría valer la pena volver a ejecutar el reconocimiento facial en todos los recursos para lograr el mejor punto de partida. Si ya es demasiado tarde para eso, también puedes asignar manualmente una selección de caras no asignadas y poner en cola Faltantes para el Reconocimiento Facial para ayudar a que aprenda y asigne más caras automáticamente.

Configuración

Al navegar a Administración > Configuración > Configuración de Aprendizaje Automático > Reconocimiento Facial se mostrarán las opciones disponibles.

consejo

Es mejor ajustar solo los parámetros aquí que configurarlos en algo muy diferente a menos que estés listo para probar varias opciones. Si necesitas establecer un parámetro en una configuración estricta, relajar otras configuraciones puede ser una buena opción para compensar y viceversa.

Puedes aprender cómo ajustar el resultado en esta Guía

Modelo de reconocimiento facial

Hay algunos modelos diferentes disponibles; el predeterminado se considera típicamente el mejor. En sistemas más limitados donde el predeterminado es demasiado intensivo, puedes elegir un modelo más pequeño en su lugar.

Puntaje mínimo de detección

Esta configuración afecta si un resultado del modelo de detección de caras se filtra como un falso positivo. Puede parecer tentador establecer esto bajo para detectar más caras, pero puede llevar a falsos positivos que son difíciles de manejar y pueden dañar el reconocimiento facial. Se recomienda encarecidamente no bajar de 0,5 para esta configuración. Configurarlo en un número muy alto como 0,9 tampoco se recomienda: el predeterminado ya está sesgado hacia la precisión, por lo que un umbral tan alto lleva a muchas caras no detectadas.

Después de cambiar esta configuración, solo se aplicará a nuevos trabajos de detección de caras. Para aplicar la nueva configuración a todos los recursos, necesitas volver a ejecutar la detección de caras para todos los recursos.

Distancia máxima de reconocimiento

El umbral de distancia descrito en Cómo Funciona el Reconocimiento Facial. El predeterminado funciona bien para la mayoría de las personas, pero podría valer la pena reducirlo si la biblioteca tiene gemelos u otras personas con apariencia muy similar. Un umbral demasiado bajo simplemente significa que será necesario fusionar personas duplicadas después del reconocimiento facial, mientras que un umbral demasiado alto puede producir resultados irrecuperables. Se recomienda encarecidamente no bajar de 0,3 ni superar 0,7.

Caras mínimas reconocidas

El umbral de punto del núcleo descrito en Cómo Funciona el Reconocimiento Facial. Esta configuración tiene algunas implicaciones. Primero, tiene efecto inmediato en que las personas con menos caras que este número se ocultan de la vista. En segundo lugar, hace que el agrupamiento sea más robusto al evitar que caras vagamente relacionadas se vinculen entre sí al exigir un cierto nivel de densidad.

Aumentar esta configuración es una buena idea si incrementas la distancia de reconocimiento o reduces el puntaje mínimo de detección. Establecerlo en 1 desactiva efectivamente el concepto de puntos con núcleo, pero puede ser una opción si prefieres un enfoque más manual.