Una breve guía para el reconocimiento facial de videos de I + D de la BBC

A menudo, son las tareas que los humanos hacen sin pensar que requieren algunos de los procesos más complejos detrás de escena. Probar comida, conversar con amigos, escuchar música y, de hecho, reconocer a las personas. Cuando ves un episodio de Eastenders, ves a los diferentes actores en diferentes escenarios, desde diferentes ángulos y con diferentes luces, pero al instante tu cerebro maneja estas variaciones para saber que son Dot Cotton y Phil Mitchell en la escena. Debido a que no pensamos en el procesamiento involucrado, nos sorprende descubrir que estas tareas son mucho más complejas de lo que pensamos inicialmente cuando tratamos de aplicarlas al aprendizaje automático.

Tome las siguientes imágenes del príncipe Harry y Megan Markle en la calle. Aquí podemos ver a Harry y Megan desde diferentes ángulos: frontal, lateral y posterior, pero los reconocemos fácilmente por sus características: color de piel, color de cabello, etc. También estamos teniendo en cuenta ciertas señales sociales. La multitud los mira, están bien vestidos, están en el centro de cada toma y hay una obvia continuidad de tomas de la misma escena. Aquí hay muchas capas de intuición humana en las que tendemos a no pensar, ya que detectamos indicadores culturales y físicos.

Reconocemos naturalmente a Harry y Megan, a pesar de los diferentes ángulos en estas tomas

Entonces, ¿cómo le enseñamos a una computadora a aprender a hacer todo esto? Si bien no podemos lograr que un algoritmo piense como un humano, podemos lograr que haga lo que el aprendizaje automático hace mejor: detectar patrones en grandes conjuntos de datos etiquetados. Esto implica recolectar imágenes, entrenar el algoritmo, procesar videos y reconocer a las personas en ellos. El resultado final es una lista de personas reconocidas en un video junto con la hora y la ubicación en los cuadros que aparecen.

Ya estamos trabajando para construir esta tecnología en la BBC. Nuestro sistema, llamado FaceRec, está siendo desarrollado por el Equipo de Datos de Servicios de Investigación e Futuro de Internet dentro de Investigación y Desarrollo de la BBC (guardaremos algunas pulsaciones de teclas y los llamaremos Equipo de Datos de ahora en adelante) Está construido utilizando una combinación de código interno y software de código abierto externo, en particular, Seetaface, un motor de reconocimiento facial C ++.

FaceRec funciona procesando video a través de una serie de pasos algorítmicos, cada uno de los cuales resuelve una parte específica del problema general. Le daremos una visión general de cómo funciona todo.

1. Detectar disparos

Para detectar cada cara en un video, primero tenemos que dividir el video en sus tomas constituyentes (una toma se define como una serie de cuadros que se ejecutan durante un período de tiempo ininterrumpido). Para hacer esto, FaceRec usa la biblioteca de procesamiento de medios FFmpeg, que usa una función para devolver las horas de inicio y finalización de todas las tomas dentro de un video determinado.

2. Detectar caras

El siguiente paso es verificar cada cuadro para ver si contiene rostros humanos. Este es un problema complicado: ¿deberíamos tratar de detectar cada cara en un partido de fútbol? ¿Cuenta una cara en una camiseta? ¿Fotos en el frente de los periódicos?

Iterando a través de cada disparo, FaceRec toma fotogramas del disparo y los alimenta a SeetaFace, que luego devuelve los cuadros delimitadores de donde cree que están los rostros. El motor de detección de rostros de SeetaFace discierne si un rostro "cuenta" lo suficiente como para incluirlo en su salida. Tenga en cuenta que SeetaFace no dice quién cree que son las personas detectadas, simplemente cree que ha detectado una cara en una ubicación determinada dentro del marco.

3. Crear pistas faciales

Ahora que hemos recopilado todos los cuadros que contienen caras, la siguiente tarea es unir estas caras detectadas para crear una pista de cara. Una pista de cara es un flujo continuo de cuadros delimitadores alrededor de una cara a medida que se mueve dentro del marco de disparo.

FaceRec toma cada cuadro delimitador de caras e intenta asignarlo al siguiente cuadro delimitador lógico en el siguiente cuadro. Esto no siempre es del todo obvio, ya que las caras se pueden oscurecer temporalmente o los cuadros delimitadores pueden cruzarse cuando una persona se mueve detrás de otra.

Los cuadros delimitadores rastrean caras a través de un tiro

Bajo el capó, este problema se resuelve utilizando Dlib y el método Lucas-Kanade. Esto crea pistas de cara definidas por puntos de tiempo, una lista de cuadros y los cuadros delimitadores de las caras.

4. Crear vectores de cara para pistas

Los algoritmos de aprendizaje automático a menudo funcionan convirtiendo el material de entrada en vectores matemáticos. Luego aprenden qué partes de este "espacio vectorial" pertenecen a categorías específicas o tipos de entrada. En términos de caras, aprenderían que los vectores que representan la cara del Príncipe Harry tienden a estar en un área particular, mientras que los vectores de Megan tienden a estar en una sección diferente. También esperaría que los vectores de la cara del Príncipe William estuvieran más cerca en este espacio de Harry que de Megan, ya que están relacionados y comparten características similares.

Para crear vectores para las caras detectadas, FaceRec utiliza la biblioteca de identificación de caras de SeetaFace. FaceRec se alimenta en fotos recortadas de las caras detectadas dentro de sus cuadros delimitadores desde el punto medio de la pista de la cara. Recibe un vector de 2024 dimensiones que representa las características de esa cara.

5. Reconocer los rostros de las personas en vectores de huellas faciales

Ahora tenemos un vector de cara para cada pista de cara detectada. El siguiente paso es convertir estos vectores en los nombres reales de las caras reconocidas, así como marcar las caras que no reconocemos (y por lo tanto no podemos etiquetar).

La primera pregunta aquí es: ¿a quién reconocemos? Seguramente no podemos construir un modelo para reconocer a todos los que han vivido, y tampoco quisiéramos hacerlo. Entonces, ¿a quién consideramos lo suficientemente importante para este sistema de reconocimiento facial?

Siendo realistas, esto debe ser impulsado por los periodistas en BBC News y las personas sobre las que informan más comúnmente. También debemos ser conscientes de que personas desconocidas aparecen en las noticias todos los días, y cuando lo hacen, es posible que no tengamos ninguna foto previa de ellas. Con estas limitaciones en mente, el Equipo de Datos se enfocó principalmente en celebridades, líderes internacionales, políticos del Reino Unido en el Parlamento y la Cámara de los Lores al entrenar a FaceRec.

Para reconocer a estas personas, necesitaban reunir datos de capacitación sobre cada persona, es decir, muchas fotos etiquetadas de esa persona que solo contenía a esa persona. El equipo de datos recopiló miles de fotos y luego construyó su propio sistema front-end para ver y etiquetar fácilmente fotos individuales. La verdad poco atractiva del aprendizaje automático es que recopilar datos etiquetados de calidad es a menudo la parte más costosa, laboriosa y, sin embargo, importante de construir un sistema de inteligencia artificial que funcione bien.

Después de recopilar las fotos, el Equipo de datos las introdujo en un clasificador de aprendizaje automático llamado máquina de vectores de soporte para crear modelos entrenados. Cuando se alimenta un vector de cara de SeetaFace, estos modelos predicen el nombre de la persona en la imagen de la cara original o dicen si no reconocieron la cara en absoluto.

IRFS creó dos modelos:

  1. Modelo de archivo: personas famosas del siglo XX en adelante seleccionadas por personas de BBC Archive. Este modelo contenía aproximadamente 1,000 personas.
  2. Modelo de noticias: todavía en desarrollo, esto se ampliará para incluir a más de 2.000 miembros del Parlamento del Reino Unido y las asambleas regionales, la Cámara de los Lores y los líderes mundiales. Las imágenes de entrenamiento se obtuvieron de BBC News, Factual y Drama.

Estos modelos entrenados se utilizan para predecir qué personas están en las pistas de los videos.

6. pistas de la cara del racimo

Ahora que todas las pistas de la cara han sido etiquetadas, el paso final es recopilar todas las pistas de la misma persona.

Para hacer esto, colocamos todos los vectores faciales extraídos de un video en un espacio vectorial, al que llamaremos espacio facial por diversión. Para visualizar el espacio de la cara, podemos usar una herramienta llamada Tensorboard, parte de la biblioteca de aprendizaje automático Tensorflow.

Al observar este espacio facial, esperamos que los vectores de la misma persona estén lo suficientemente juntos y lo suficientemente lejos de otras personas como para poder agruparlos automáticamente. Esto se conoce en el aprendizaje automático como un problema de agrupamiento.

Podemos ver los vectores de la pista facial proyectados en este espacio facial para el video de Harry y Megan a continuación. Y vemos que la mayoría de las pistas de Megan están agrupadas, lo que facilita su agrupación. Esa es una forma en que sabemos que los vectores faciales creados funcionan bien.

Visualizando caras con TensorBoard

Aquellos familiarizados con el agrupamiento verán la dificultad de nuestro problema de agrupamiento facial. Para cada video, habrá un número variable de grupos de diferentes tamaños, con muchos vectores que aparecen una vez y que no pertenecen a ningún grupo.

En lugar de caer en un agujero oscuro tratando de resolver perfectamente este problema, el Equipo de Datos decidió ejecutar con algunas heurísticas. FaceRec divide el problema en dos categorías separadas: rostros de personas que reconoce y rostros de personas que no reconoce. Para caras reconocidas, simplemente agrupa todas las pistas de cara juntas que tienen la misma etiqueta pronosticada (nombre). Para las caras no reconocidas, utiliza una técnica llamada agrupamiento jerárquico sobre los vectores de la cara para agruparlos, pero no para darles etiquetas.

7. Salida de la información

El último paso para FaceRec es proporcionar toda la información recopilada en los diferentes pasos. Esto viene en forma de un archivo JSON que contiene:

Una lista de pistas en el video. Para cada pista tiene:

  • Persona prevista para esa pista
  • Confianza de la predicción.
  • Rastrear UUID
  • Vector de cara para esa pista
  • Lista de cuadros en esa pista

En la lista de cuadros, la información de cada cuadro incluye:

  • Vector de cara para ese cuadro si se ha detectado
  • Coordenadas del cuadro delimitador para la cara
  • Tiempo en el video que ocurre el cuadro

¿Qué podemos hacer con estos datos? Puede consultar nuestra próxima publicación de blog para ver nuestras ideas.

Envolver

De eso se trata realmente. Esperamos haberlo ayudado a comprender las muchas partes que intervienen en un sistema de reconocimiento facial de video. Y quizás también lo hemos hecho más consciente de todos los trabajos pesados ​​y las ambigüedades que su propio cerebro maneja cientos de veces al día cuando reconoce a sus amigos y seres queridos.

Después de comprender el funcionamiento interno del sistema FaceRec, la tarea de News Labs era ver dónde esta tecnología podía agregar valor comercial dentro de la BBC. ¿Cómo mostramos las habilidades de FaceRec con una demostración intuitiva? ¿En qué sistemas de producción podríamos ver cómo encaja FaceRec? ¿Qué problemas de flujo de trabajo podría resolver? Y lo que es más importante, ¿cómo se siente la gente al usar el reconocimiento facial? Hablamos sobre los desafíos de implementar una nueva tecnología dentro de una gran organización y las preguntas que enfrentamos al desarrollar un prototipo de reconocimiento facial en "Reconocimiento facial: ¿de qué sirve para las salas de redacción?".