logo

Dot CSV

Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀 Inteligencia Artificial, Tecnología, Ciencia y Futuro! Bienvenidos a la 4ª Revolución Industrial 🚀

Transcribed podcasts: 213
Time transcribed: 5d 22h 50m 3s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

Muchos, muchísimos me habéis hecho llegar esta noticia esta semana. Tanto aquí en internet como
amigos me lo han comentado tantas veces durante estos días que, oye mira, siendo este tu canal
sobre inteligencia artificial, ¿por qué no? Vamos a analizar en profundidad qué es esto de los
retratos vivos que ha hecho resucitar a la Mona Lisa. Ok, vale, por si acaso lo quiero dejar claro,
no me gustaría sonar como si ya estuviera acostumbrado a las cosas tan impresionantes
que el machine learning nos suele dejar en torno al campo de los módulos generativos.
Pero quiero decir, respecto a la generación de rostro ya hemos visto cosas bastante alucinantes,
desde las style guns presentadas por Nvidia, como los famosos trabajos en los que se utiliza la cara
de una persona, por ejemplo el rostro de Obama, a modo de marioneta controlada por otra persona.
Visto eso, cuando vemos los resultados que nos presenta Samsung con este trabajo,
sería normal que alguien pensara, bueno está guay pero tampoco es nada nuevo, ¿por qué tanto
revuelo? Es cierto que por un lado hay que reconocer que los ejemplos que han mostrado,
utilizando por ejemplo la Choconda, son bastante llamativos y dentro de esto estará el factor
de viralización que ha hecho que esta noticia sea tan popular en redes sociales. Pero no nos
quedemos solo con eso, porque más allá de lo espectacular del resultado, cuando miramos
cómo funciona a nivel técnico, también hay motivos por los que merece la pena poner toda
nuestra atención en este trabajo. En este vídeo te lo voy a contar, porque es algo que tiene que
ver con un concepto muy perseguido dentro del campo de la inteligencia artificial, conocido
como Few Shot Learning. Ahora hablaremos de ello, pero antes por si acaso no sabes de qué
estamos hablando aquí, déjame que te presente este trabajo. Hoy hablamos del trabajo presentado
hace pocos días por el Centro de Investigación de Inteligencia Artificial de Samsung en Moscú,
quienes nos sorprendían con este nuevo proyecto en el que conseguían generar rostros animados
realistas, tomando como input un conjunto de imágenes de referencia y un vídeo imitar.
Con esto, el resultado conseguido es bastante fiel, generando retratos vivos controlados por
las poses del vídeo dado como input, logrando capturar de manera consistente, por ejemplo,
poses que muestran zonas del rostro que en ningún caso están presentes en el dataset de prueba.
Es decir, fíjate por ejemplo en este caso de aquí, donde para todas estas imágenes de referencia,
donde el rostro se muestra siempre frontalmente, la I es capaz de generar poses con el rostro
girado a la derecha, mostrando toda esta zona de aquí de la cara, para la cual en teoría
la red no tiene absolutamente ninguna información de referencia. Curioso, ¿verdad? Pues espérate,
porque te voy a contar lo más alucinante de este asunto. Fíjate, cuando te quieres enfrentar a este
tipo de problemas de sintetizar rostros en una pose determinada, a grandes racos puedes tomar dos
modos de trabajo diferentes. El primero consiste en hacer uso de métodos que busquen el resultado
que queremos en base a ir distorsionando la imagen o imágenes de referencia. Con esto lo que se
consigue es que utilizando muy pocos datos podamos generar unos resultados aceptables, pero claro,
con una limitación. Y es que en estos casos en los que solo distorsionamos la imagen original,
tenemos la restricción de solo producir ligeros cambios sin mucha variación respecto a la pose
de origen, y siendo incapaz por ejemplo de mostrar zonas que estén ocultas en un principio. Por el
contrario, la alternativa a esto, y con la que los últimos años hemos conseguido superar estas
limitaciones, es con la utilización de sistemas basados en redes generativas adversarias. Capacite
de aprender a procesar la información que queremos generar y ofrecernos resultados muy
realistas, capaces de cubrir un amplio rango de poses y sin problema a la hora de generar
aquellas partes de la imagen que estaban ocultas inicialmente. ¿Cuál es el problema en este caso?
Pues que para conseguir que estas redes generativas funcionen, el volumen de datos que tenemos que
utilizar para el entrenamiento es brutal. Y es que... es así, es el drama del deep learning. Si
quieres obtener un buen resultado, será a costa de navegar a la deriva por un océano infinito de
datos, de atravesar un desierto donde cada grano de arenas representa un data point que debe ser
exprimido para obtener hasta la última gota de información. Pero tranquilo, porque puede que
hayamos encontrado un oasis en el desierto. ¿Conoces el termino fused learning? Fused learning hace
referencia al campo de estudio del machine learning que busca desentrañar aquellos mecanismos de
aprendizaje por los cuales se puede aprender a resolver nuevas tareas haciendo uso de una
reducida cantidad de ejemplos. Es decir, es por todos conocidos que con el deep learning podemos
conseguir resultados impresionantes, en muchos casos igualando o superando lo que nosotros
humanos podemos hacer. Pero también es cierto que en cuestión de eficiencia, ese ordenador que tienes
encima de tus hombros deja muy mal lugar a nuestros algoritmos de deep learning en cuanto a la poca
cantidad de ejemplos que necesitamos para aprender nuevos conceptos. En muchos casos nosotros para
resolver una tarea no necesitamos analizar millones y millones de datos, sino que realmente con muy
pocos ejemplos somos capaces de aprender. Ok, mira esta foto. ¿Ves a este animal de aquí tan raro?
Esto es un tapir malayo y posiblemente sea un animal que nunca antes hayas visto. Guay, perfecto,
esto no se ha convertido de repente en el canal de Willdy. Lo que quiero que hagas es que ahora
mires estas imágenes de aquí. ¿Sabría decirme cuál de todas estas imágenes contiene a un tapir
malayo? Exactamente, ésta de aquí. Fíjate cómo en este caso tú has sido capaz de resolver este
problema de clasificación habiendo utilizado durante tu entrenamiento una única imagen,
algo que verdaderamente es impresionante y que sería maravilloso tener dentro de
nuestro sistema de deep learning. Saber los mecanismos de aprendizaje que hay detrás de
este logro es el objetivo del campo del few-shot learning, aprender conceptos usando muy pocos
datos. Y en realidad este modelo de aprendizaje puede llevarse al extremo, porque por ejemplo,
para resolver la tarea que tú has hecho solo has utilizado un único ejemplo,
una sola imagen de un tapir malayo, con lo cual esto encajaría dentro de lo que se conoce como
one-shot learning. Y esto lo podemos llevar más allá aún teniendo el caso del zero-shot learning,
o lo que es lo mismo, aprender nuevos conceptos sin haber utilizado ningún ejemplo de entrenamiento,
conceptos que cada vez más están investigando y cuya utilidad es más que evidente. Pero vale,
¿y qué tiene que ver todo esto con la noticia de hoy? Pues si te fijas bien,
este trabajo no se llama retratos vivientes, sino que el nombre real dado por Samsung a este
paper publicado es este de aquí, de lo cual al menos ya sabemos en qué consiste esto del
few-shot learning. Lo impresionante de este trabajo se esconde tras este concepto, y es que el logro
conseguido por Samsung es el de haber creado estos rostros animados realistas haciendo uso
de muy pocas imágenes de referencia del rostro original. Fíjate por ejemplo de nuevo en este
rostro de aquí, es impresionante comprobar que para conseguir esta cabeza animada que imita este
sujeto, realmente sólo se han utilizado estas ocho imágenes para ajustar la semejanza del resultado
con la del sujeto original, es decir, estamos ante un clarísimo caso de few-shot learning.
Y es por este motivo que este trabajo es tan impresionante. Se puede ver por ejemplo cómo
este modelo es capaz de capturar gran parte de la información de la imagen de referencia incluso
en contextos de one-shot learning, mostrándole un único fotograma. Como es obvio, entre mayor sea
este número de frames, mejor será la fidelidad entre el input y el resultado. Vale, perfecto.
Siguiente pregunta, ¿cómo funciona esto? Pues la cosa va así. Si quisiéramos entrenar a un
sistema capaz de hacer hablar a un rostro sintético olvidándonos de toda la movida del few-shot
learning, como hemos visto antes, una de las alternativas más populares actualmente es hacer
uso de una arquitectura en forma de GAN. Ya sabes, una red generadora de contenido encargada de
aprender a generar imágenes, y una red discriminadora encargada de aprender a discernir cuando una
imagen que se le da es real o ha sido generada por la otra red. Las pones a competir, las entrenas de
manera adversaria, y BOOM, ya tenemos una arquitectura con capacidad de generar contenido artificial
muy realista. Nada nuevo. Para este problema la red tomaría como input la información gestual que
queremos utilizar como referencia a las poses a imitar. Esto es algo fácilmente conseguible hoy
en día con los modelos que ya están funcionando de rastreamiento y detección facial. Con esta
información de entrada el generador intentaría generar una imagen real de esta pose, y ésta
se compararía con la imagen real que queremos conseguir. El sistema se entrenará y poco a poco
la red se optimizará para que estas diferencias sean cada vez menores y el discriminador identifique
estas imágenes con cada vez un mayor grado de realismo. ¿Cuál es el problema de esto? Que como
hemos dicho antes, este tipo de arquitectura requiere un gran volumen de datos de entrenamiento. Ok,
tampoco es un problema. Si queremos que aprenda a resolver esta tarea, no pasa nada por dejar que
lo haga a partir de analizar muchísimo vídeo de algún dataset que encontremos online. Sin embargo,
el problema es que una vez entrenada, cuando llega una cara nueva que queramos sintetizar,
para aproximar el grado de realismo que queremos conseguir para esta cara,
necesitaríamos continuar reentrenándola durante otro periodo con un volumen considerable de las
imágenes objetivo, lo cual nos aleja de nuestro sueño del Few Shot Learning. La solución que han
encontrado a esto es la de añadir un módulo más, que se va a encargar de aprender a analizar las
pocas imágenes que conforman nuestro dataset reducido y convertirlo en una representación interna que
le aportará la suficiente información al generador sobre las caras que queremos generar. Esta
información es inyectada al generador a través de capas de tipo Adain, o Adaptative Instance
Normalization si quieres quedar de guay delante de tus colegas, y que básicamente vienen a ser
un tipo similar a las comúnmente utilizadas capas de Batch Normalization, pero con la capacidad de
condicionar al generador para un estilo determinado, como podría ser en este caso el estilo de una
cara. Con esto ahora nuestra arquitectura funciona de manera diferente. Ahora podemos utilizar un
gran dataset de vídeos encontrados por internet para simular diferentes procesos de Few Shot
Learning durante el entrenamiento, es decir, para cada vídeo que usemos solo entrenar a la red
mostrándole unos pocos fotogramas. Con esto la red tendrá que buscarse la vida para poder sacarle
partido a estos pocos datos que estamos utilizando en cada proceso de Few Shot Learning. Esto
significará que para cada mini dataset tendrá que encontrar la codificación óptima de parámetros
con la que poder hacer que el generador aprenda a generar las imágenes que estamos buscando. Es
decir, estamos entrenando esta parte de aquí para que aprenda a encontrar la configuración con la
que el generador podrá aprender a realizar la tarea que queremos, o lo que es lo mismo, aprender
a aprender. Un paradigma estudiado del campo del Meta Learning y que es bastante prometedor para
resolver problemas de tipo Few Shot Learning. Con esta arquitectura ya se puede conseguir entrenar
a un modelo capaz de generar imágenes realistas, pero donde aún los rostros no guardan un parecido
con el original. La buena noticia es que en realidad todavía no habríamos utilizado esto
dato de aquí para entrenar a nuestro modelo, sino que solamente lo hemos utilizado para
condicionar el aprendizaje de la arquitectura. Es decir, ahora que el modelo parece estar
pre-entrenado bastante bien, podemos usar estas pocas imágenes de aquí para reentrenar unos
cuantos ciclos más a nuestra red en un proceso de Fine Tuning y casi termine de aproximar el
parecido de la imagen a imitar. Y listo, como veis hemos conseguido sacar el mayor partido a
nuestros limitados datos. Por un lado aprovechamos lo aprendido en la fase de Meta Learning para
reconfigurar a la red a la mejor disposición que se pueda utilizar para nuestros datos,
y luego en la fase de Fine Tuning depuramos el resultado reentrenando con los pocos fotogramas
que tenemos. Con esto en lo práctico lo que obtenemos es un generador de rostros en movimiento
que puede generar resultados con muy pocas imágenes, cuya aplicación se extiende no solo
a imágenes y vídeos, sino también a obras y rostros de pinturas famosas, que nos permiten
ver en movimiento a aquello que en algún momento quedó inmóvil como símbolo de nuestra cultura.
Esto es un avance que en los próximos años irá mejorando, y que ten por seguro tendrá su
aplicación en campos como el de la producción audiovisual, cuando se quiera por ejemplo traer
a la vida a un actor del pasado o a una versión del mismo en sus tiempos mozos, o por ejemplo para
añadir realismo a la telepresencia en entornos de realidad virtual, donde con solo sacarte una foto
pueda generarte un avatar realista de ti mismo que puedas controlar. Trabajos similares a este existen
como el logrado por el museo de Dali en San Petesburgo, quien ha conseguido traer a la
vida al artista mediante el uso de técnicas de deep learning similares. La diferencia es que
pocos lo consiguen simplificando tanto el proceso de entrenamiento y la cantidad de datos a utilizar,
algo que como podrás imaginar también tiene su lectura negativa al poner al alcance de cualquiera
el poder tomar unas pocas imágenes tuyas en internet y suplantar tu identidad. De esto y
de cómo la inteligencia artificial afecta y afectará en la creación de fake news en el futuro,
vamos a hablar. Pero no va a ser hoy, va a ser en un próximo vídeo. Y como sé que muchos me lo
van a preguntar, no todavía no está el código disponible, pero bueno si te quieres enterar cuando
salga ya sabes que lo vas a hacer a través de este canal, así que te recomiendo que te suscribas,
le dejas la campanita para que youtube te notifique y también si te ha gustado este formato de vídeo,
esta noticia que hemos comentado y quieres más de este contenido, pues hazmelo saber a través de
comentarios o compartiéndolo o dando a me gusta o apoyando a este canal a este proyecto tan bonito
.csv a través de patreon. Tenéis los links abajo en la cajita de descripción. Nada más,
muchas gracias por informarte sobre inteligencia artificial a través de este canal y nos vemos
en el siguiente vídeo.