Revolución IA
La Inteligencia Artificial está llamada a protagonizar la próxima Revolución tecnológica
Inicio | Sobre Revolucionia | Temas | Para saber más | Contacto |
Generando imágenes sintéticas de celebridades
Fernando P. 03/11/2017
Temas: Actualidad Aplicaciones Divulgación Inteligencia Artificial y Sociedad
La compañía NVIDIA es conocida por sus procesadores de
alto rendimiento para aplicaciones de cálculo intensivo, sobre todo en temas de procesamiento de
gráficos (GPU). Pero también se está especializando en construir dispositivos de proceso paralelo
masivo que pueden usarse para entrenar redes neuronales artificiales de gran tamaño (RNA en lo sucesivo).
Recientemente, investigadores de esta compañía han publicado un
trabajo de investigación
en el que describen cómo han construído un sistema basado en RNA que es capaz de crear imágenes
sintéticas de alta resolución que contienen rostros de personas que no existen, pero que podrían
pasar perfectamente por imágenes de personas reales para alguien que no supiera de su origen sintético.
Lo divertido del asunto es que han usado imágenes de miles de celebridades para entrenar el sistema
y las imágenes sintéticas que produce el sistema vienen a ser mezcla o maquillaje de rostros de varias celebridades,
unas veces más evidente y otras menos.
Redes neuronales artificiales para generar imágenes
Como ya hemos visto, las
redes neuronales artificiales son
un mecanismo muy potente de construir
funciones para clasificadores. Básicamente,
una RNA funciona como un clasificador.
¿ Cómo podemos generar imágenes con una RNA entonces ?
Una RNA por sí sola no sirve para generar nada, sólo clasifica. Pero podemos usar la RNA como una
fuente de conocimiento para construir cosas nuevas que esa misma RNA clasificaría de determinada forma que
nos interese.
En el caso que nos ocupa, que tiene que ver con imágenes, podemos construir una RNA que sea capaz de clasificar
imágenes para, por ejemplo, distinguir imágenes con rostros personas de imágenes sin rostros de personas. Cada
vez que presentemos una imagen a la RNA nos dirá si tiene o no tiene rostros de personas.
Ahora, supongamos que queremos generar imágenes sintéticas que no contengan rostros de personas.
La RNA que hemos construido no puede generar nada por sí sola pero podemos usarla como discriminador para saber
si estamos generando imágenes adecuadas.
Generative Adversarial Networks (GAN)
Bajo este nombre tan técnico, se cobija la idea de usar dos RNA que, de alguna forma, compiten entre ellas.
Una primera RNA (discriminador) es entrenada con ejemplos del tipo de imágenes (es el caso que nos ocupa, pero
no tienen porqué ser imágenes) que nos interesa generar. Se trata de la RNA que va a decidir si lo que hemos generado
es suficientemente bueno o no.
La segunda RNA (generador) es una RNA que toma como entrada patrones más o menos aleatorios (no imágenes, puntos en
espacios de muchas dimensiones) y se configura para que proporcione como salida algo que debería ser una imagen
(una matriz de números).
El generador no se entrena explícitamente, se le proporcionan entradas aleatorias y envía la salida al discriminador
para ver si ha generado algo de utilidad o no. Si, efectivamente, ha generado algo válido, usa esa información para
entrenarse modificando sus pesos mediante un esquema de
aprendizaje no supervisado.
Es decir, el generador puede entrenarse de forma autónoma, sólo necesita ir procesando sucesivamente entradas
generadas aleatoriamente y cada vez que genere algo válido reforzará sus conexiones para favorecer ese
comportamiento. Naturalmente, es fácil que sean necesarias millones de iteraciones para que el generador pueda
configurarse en una estructura que genere con facilidad imágenes válidas.
¿ Cómo generar imágenes sintéticas de celebridades ?
Lo que han hecho los investigadores de NVIDIA es construir una red GAN con dos RNA:
De esta forma, la red conjunta es capaz de generar imágenes de alta resolución que contiene rostros
perfectamente asimilables a personas reales para alguien que no conozca su origen.
Existen bastantes ejemplos de estas imágenes en el
artículo original. Aquí no hemos pedido permiso para
publicarlas, quizá lo hagamos más adelante.
Este tipo de sistemas no son una gran novedad, ya existen muchos otros que son capaces de generar imágenes
de objetos dados siguiendo la misma operativa. La novedad en el trabajo de los investigadores de NVIDIA es la
enorme resolución y gran realismo de sus imágenes, que les ha obligado a desarrollar nuevas técnicas.
Generación progresiva de imágenes
Las imágenes que genera la GAN de NVIDIA tienen una resolución de 1024x1024. Para conseguir esta resolución en
el generador es necesario que el discriminador pueda funcionar con ella. Entrenar una RNA con imágenes
de 1024x1024 es muy complicado porque hace falta una red gigantesca con muchos millones de parámetros y un
conjunto de entrenamiento demasiado grande.
Para solventar ese problema, en NVIDIA han usado un mecanismo muy ingenioso que consiste en empezar con
imágenes de bajísima resolución (4x4) y cuando esto les ha funcionado han modificado y reentrenado las redes
sobre la marcha para duplicar resolución y poder funcionar con imágenes de 8x8 sin perder los patrones que
ya había en las RNA para imágenes de 4x4.
Siguiendo paso a paso, duplicando resolución en cada paso,
han llegado hasta imágenes de 1024x1024 sin necesidad de tener que entrenar desde cero
con imágenes de 1024x1024, porque la red de 512x512 (el paso anterior) ya sabía mucho sobre imágenes de
celebridades ... y así sucesivamente hasta la red de 4x4.
La red de 4x4, que es el primer paso,
es muy simple ya que hay pocas posibilidades para que una imagen de 4x4 sea la versión super
reducida de una imagen real de un rostro.
Además de simplificar el entrenamiento del discriminador, el generador funciona de forma progresiva
y aprende a crear las imágenes partiendo
de un patrón incial de 4x4 que va refinando progresivamente, introduciendo detalles cada vez que
dobla la resolución, hasta que aquello
termina siendo una imagen 1024x1024 de un rostro de una celebridad en alta resolulución.
En el proceso de introducción de detalles, el generador usa detalles que sabe que son válidos (así ha sido entrenado por
el discriminador), pero puede mezclar detalles de varias imágenes para hacer una sola y de ahí el que
genere imágenes que no se corresponden con nadie en particular, aunque a veces sí que genera imágenes
que se pueden considerar maquilladas de una persona concreta y reconocible.
Otras cuestiones de interés
El hecho de usar imágenes de celebridades tiene que ver con la disponibilidad pública de imágenes de
alta resolución de estas personas. Podría haber funcionado con cualquier otra cosa.
De hecho, en el
artículo original también se describe cómo han usado
la red para generar imágenes de objetos bien definidos (bicicletas, casas ...) y cómo la generación
progresiva permite un entrenamiento mucho más afinado de la red porque permite ir de arriba hacia abajo,
es decir, se empieza con los rasgos generales y se termina con los detalles más pequeños.
La red que han usado tiene del orden de 40 millones de parámetros (20 el discriminador y 20 el
generador) y ha costado varios días de entrenamiento en una GPU muy potente de NVIDIA, como no podía
ser de otra forma.
La combinación de RNA para que operen en forma de adversarios es una forma muy ingeniosa de construir
sistemas que puedan generar versiones sintéticas de los patrones que ha detectado el discriminador. Es una
técnica con enormes posibilidades.
Para saber más:
Reseña en sitio web de NVIDIA sobre la investigación descrita, hay algunas imágenes de ejemplo y enlaces a gran cantidad de material sobre el desarrollo.
Vídeo muy interesante que muestra tanto imágenes reales de celebridades como imágenes sintéticas y que ilustra el proceso de generación progresiva de imágenes de alta resolución partiendo de patrones muy básicos.
Artículo original con la investigación y con todos los detalles del desarrollo de las redes. También contiene gran cantidad de imágenes que se han generado con la red.
Inicio |
![]() ![]() |
En general, todo el contenido de este sitio web es original, salvo referencias o enlaces a otros sitios web y citas o reproducciones expresamente presentadas como tales. No está permitida la reproducción ni la copia del contenido de este sitio web sin el permiso expreso de la propiedad del mismo. Este sitio web no utiliza cookies ni ningún otro mecanismo para almacenar información en los navegadores de los visitantes ni para realizar seguimiento de los mismos. 2017,2018 Revolucionia.net |
Sobre Revolucionia | ||
Temas | ||
Para saber más | ||
Contacto |