Maldita Tecnología
28/02/2020

La aplicación que borra a una persona de un vídeo en directo funciona "recordando" el fondo e identificando a la persona

Esta semana algunos medios anglosajones han hablado de una aplicación que consigue hacer desaparecer a una persona de un vídeo en tiempo real. Medios españoles como El Confidencial han empezado a hacerse eco de ella, contando que lo hace a través de "una serie de algoritmos" que borran los "píxeles humanos". Os explicamos lo que sabemos acerca de cómo funciona (ya que también la hemos probado).

La herramienta la ha popularizado en Twitter su creador, Jason Mayes, un ingeniero que según su página de Linkedin trabaja en Google desde hace nueve años. Concretamente, trabaja con sistemas de machine learning en una plataforma de código abierto y que desarrolla Google, llamada TensorFlow. Mayes habla de un "prototipo" que "elimina personas en tiempo real" de "escenarios complejos" e incluso anima a la gente a probarlo con su cámara web a través de este enlace.

En el vídeo, vemos cómo una persona entra en una habitación y, mientras en la imagen superior podemos ver sus movimientos, en la inferior (tras haberse aplicado el algoritmo del programa) no hay ni rastro de ella. ¿Cómo lo hace en tiempo real?

Se basa en una inteligencia artificial que reconoce el cuerpo humano

Una imagen, en un ordenador, se compone de píxeles: millones de puntitos de color que forman la imagen para que nosotros la veamos definida. Cuanta más definición, más píxeles habrá.

El programa está basado en inteligencia artificial, es decir, que es un sistema al que han entrenado con una enorme cantidad de imágenes del cuerpo humano para que pueda reconocer uno cuando aparece en una imagen. Y, en este caso, pueda borrarlo de ella. ¿Cómo lo hace?

El programa informático que Mayes utiliza en este caso para detectar a una persona en movimiento se llama BodyPix. En este artículo, sus creadores (también desarrolladores de Google) explican que puede detectar a una persona completa y 24 partes del cuerpo humano, como una mano izquierda, una pantorrilla o la espalda. El programa analiza los píxeles de la imagen y, si detecta una forma humana, asigna una parte del cuerpo a cada uno de ellos.

Representación gráfica de cómo funciona BodyPix. Blog TensorFlow

Guarda la escena que hay detrás y, cuando una persona aparece, sólo actualiza la parte de la imagen donde no está

El programa de Mayes primero necesita saber cómo es el fondo de la imagen sin personas presentes. Mantiene una copia de los píxeles de esa imagen, que sabe que no tiene presencia humana. Cuando hay un cambio en la imagen es cuando BodyPix detecta si ese cambio se debe a que ha entrado una persona (reconociendo su cuerpo) o no.

En el caso de que lo reconozca como una persona humana, el programa sustituye los píxeles que representan a la persona por la copia que tenía de antes, en la que no aparecía. Es decir, congela algunas partes de la imagen y otras no: por eso donde debería haber una persona no se ve nada.

Como vemos en el vídeo, el algoritmo no es perfecto. El programa que tiene que señalar los puntos que delimitan la figura humana no lo hace a la perfección, sino que por ejemplo, puede que no detecte bien dónde termina un hombro o un codo. Y es por eso que en algún segundo del vídeo, en vez de no ver absolutamente nada vemos una sombra.

Mario Juez Gil, doctorando e investigador de Ciencia Computacional en la Universidad de Burgos, explica a Maldita.es que los algoritmos que componen el programa están diseñados para "detectar dónde hay bordes", es decir, para estimar que "todo lo que hay a la la derecha no es persona" (se queda igual) "pero todo lo de la izquierda sí" (hay que borrar). Así es como se va explicando paso por paso en el código del programa de Mayes.

"Para conseguirlo, básicamente mira cada píxel (color e intensidad) de las imagenes y las asigna una probabilidad de ser fondo o no, y más concretamente, una probabilidad de que sea cada una de las partes concretas de entre esas 24. Para aprender entrena con vídeos de personas simuladas modeladas en 3D", añade.

Píxeles que se asignan a la parte de la imagen donde hay un cuerpo humano.

La inteligencia artificial reconoce sólo la forma de un cuerpo humano y no otros objetos

Este es el código de la aplicación que ha hecho Mayes, donde podemos leer que se siguen una serie de instrucciones hasta que el programa detecta "píxeles asociados a un humano" y "actualiza los bordes". Luego, calcula las dimensiones de la parte de la imagen que queda dentro de esos bordes, que es la parte de la imagen no se actualizará al haber cambios (y por tanto no se verá el cuerpo humano).

Parte del texto de código de la aplicación de Jason Mayes.

Y es por eso que, aunque en la imagen metas una sudadera, esta no va a desaparecer porque el programa ya sabe cuáles son los píxeles que tiene que actualizar: solo aquellos que no representen una forma humana.

"Cuando hablamos de aprender y entrenar, la idea es un poco la de dar una galleta a tu perro cuando le estás enseñando a darte la patita. Si lo hace, obtiene una recompensa y eso refuerza su idea de que está haciendo algo bien. Tú como dueño lo que esperas es lo que ha hecho (dar la patita), por eso das la recompensa", concluye Juez Gil. "En 'inteligencia' artificial una de las estrategias es parecida a ésta. En el entrenamiento el algoritmo compara lo que predice (fondo o no fondo) con lo que debería haber predicho (fondo o no fondo): si acierta se refuerza y hace ajustes pequeños, si falla hace ajustes mas grandes para intentar acertar la siguiente vez".

Otros artículos de Maldita.es