Imagen destacada de Transferencia Neuronal de Estilo.

Transferencia Neuronal de Estilo

Rubén Rodríguez Abril

¿Cómo captar el estilo artístico de una obra de arte o una fotografía, o los principios estéticos que dan personalidad a un cuadro? Esta tarea, aparentemente compleja y abstracta, puede ser modelada por un algoritmo de Inteligencia Artificial que además, proyecta dicho estilo sobre otra imagen cualquiera. Dicho algoritmo recibe el nombre de Transferencia Neuronal de Estilo y es el objeto de este artículo.

La Transferencia Neuronal de Estilo

En artículos anteriores de esta serie mostrábamos cómo el funcionamiento anómalo de una red convolucional y la introducción de circuitos de retroalimentación parecían provocar fenómenos extraños parecidos a las alucinaciones y pareidolias visuales humanas, con resultados hasta cierto punto con un claro valor artístico.

En esta publicación nos proponemos seguir especulando sobre las hipotéticas estructuras neurológicas subyacentes al proceso creativo humano y a la actividad artística. Y nos preguntamos si, al igual que en el caso de las alucinaciones, es posible trazar un paralelo entre estos fenómenos neurológicos y las estructuras de las redes neuronales artificiales.

Examinaremos para ello un supuesto particular de creatividad algorítmica, la Transferencia Neuronal de Estilo (Neural Style Transfer, NST), que consiste en el aprendizaje, por parte de una red neuronal, del estilo de una fotografía o una obra de arte determinada (por ejemplo “Noche Estrellada”, de Van Gogh) y la transferencia del mismo a otra imagen de entrada diferente.

Ejemplos de Transferencia Neuronal de Estilo. Imagen obtenida del artículo A Neural Algorithm of Artistic Style.

Espacio de características

Al igual que sucede en algoritmos como DeepDream o DeepDraw, en la transferencia neuronal de estilo juegan un papel fundamental los espacios de características de las capas convolucionales, así como el flujo de información existente entre los mismos.

Llámese espacio de características o espacio de Fukushima a las diferentes posibilidades de configuración de una capa convolucional (o módulo de incepción, en el caso de GoogLeNet). Se trata de un hiperespacio dotado de tantas dimensiones como neuronas haya en la capa. Cada neurona individual se identifica por tres números: el mapa al que pertenece (z) y la posición (x, y) en la que se ubica dentro del mismo. Cada vector viene conformado por los valores de activación de las neuronas de esa capa.

Los espacios más cercanos a la entrada codifican rasgos de menor nivel (trazos, figuras geométricas), mientras que las capas más profundas almacenan los conceptos de nivel más abstracto (árboles, automóviles, etc..). El conjunto de todos los espacios de características de la red constituye un ámbito imaginario simbólico-semántico capaz de almacenar gran cantidad de patrones, texturas, ideas, arquetipos y categorías.

En dichos espacios pueden realizarse operaciones matemáticas que determinan la cercanía semántica entre dos estados de red determinados (vectores en el espacio de Fukushima). De particular interés son, en el ámbito de Transferencia Neuronal de Estilo, los conceptos de distancia euclídea entre dos vectores y matriz de Gram de una capa convolucional. Ambos fueron utilizados por tres investigadores de la Universidad de Tubinga para crear un ingenioso algoritmo capaz de codificar no sólo el contenido semántico de una imagen determinada, sino también su estilo.

Codificando el estilo

Los autores de este nuevo trabajo (Gatys et al, referenciado más abajo) emplearon una red convolucional VGG-16 (una versión modificada de AlexNet) entrenada para el reconocimiento de objetos. En VGG-16, las capas convolucionales se agrupan en cinco bloques, en cada uno de los cuales hay el mismo número de mapas de características, y todos los cuales son de la misma resolución. Esta sección convolucional es seguida por dos capas densamente conectadas, tras las cuales se sitúa la capa de salida, cuya función de activación es softmax, como es usual en las redes clasificadoras. La red se entrena previamente para reconocer las 1000 categorías diferentes del banco de imágenes ImageNet. Y de este modo se fijan los valores de los pesos sinápticos de los kernels de las convoluciones. En la transferencia neuronal de estilo, VGG-16, ya entrenada, es usada para sintetizar una nueva imagen a partir de una fotografía y una obra de arte, cuyo estilo se transfiere a la primera. La imagen se crea aplicando el procedimiento de descenso del gradiente de la función de pérdida, actualizando tras cada iteración los valores de activación de la capa de entrada, y no los pesos sinápticos de la red, que permanecen invariables. Lo que se retropropaga no es el gradiente de la función de pérdida respecto a los pesos sinápticos (como sucede en el entrenamiento), sino respecto a los valores de entrada de cada neurona. La síntesis definitiva tiene lugar progresivamente tras centenares o miles de iteraciones.
Contenido y estilo en un ejemplo de Transferencia Neuronal de Estilo

Procedimiento para la Transferencia Neuronal de Estilo

La función de pérdida

El procedimiento de Gatys et al es, en líneas generales, el siguiente:

La función de pérdida L(c,s,m) (que debe ser minimizada) se define para cada capa convolucional y está compuesta de dos términos. El primero de ellos se relaciona con el contenido de la imagen a sintetizar y el segundo de ellos con su estilo:

L(c,s,m) = λ_{c}L_{contenido}(c,m) + λ_{s}L_{estilo}(s,m)

Donde L(c,s,m) es la función de pérdida total, L_{contenido} la parte de la función relacionada con el contenido semántico de la imagen y L_{estilo} la relacionada con su estilo. λ_{c} y λ_{s} son hiperparámetros que señalan el peso de cada una de estas dos partes, mientras que c, s y m representan respectivamente la fotografía o contenido, la obra de arte cuyo estilo se adopta y la imagen en proceso de síntesis. Inicialmente, los píxeles de la imagen m se determinan de un modo aleatorio, a partir de ruido.

Función de pérdida del contenido

La parte de la función de pérdida relacionada con el contenido es equivalente a la distancia euclídea al cuadrado entre dos vectores. El primer vector es el correspondiente a las activaciones de la capa convolucional de que se trate generadas por la fotografía. El segundo tiene como componentes las activaciones que la imagen en proceso de síntesis genera en esa misma capa:

L_{contenido} = \frac{1}{2}∑(o_{x,y,z}  –  n_{x,y,z})^2

donde el sumatorio se realiza a través de todas las neuronas (x,y,z) de un mismo mapa de características, siendo o_{x,y,z} la activación de la célula causada por la imagen (m) que se está generando (recordemos que inicialmente estos valores son aleatorios) y n_{x,y,z} la activación generada por la fotografía (c). La elección de este término asegura que, con el transcurso de las iteraciones, las activaciones de los mapas de características de ambas imágenes irá convergiendo.

Matrices de Gram

En el algoritmo de transferencia neuronal de estilo, el contenido de una imagen viene determinado por el conjunto de activaciones de los mapas de características. El estilo, por el contrario, se determina por las pautas de coactivación existentes entre los pares de mapas de una misma capa. Por pautas de coactivación entendemos la similitud (o disimilitud) de las distribuciones de valores de los dos mapas.

Dichas pautas de coactivación son descritas por el algoritmo de la Transferencia Neuronal de Estilo a través de las denominadas matrices de Gram. A cada capa de la red le corresponde una matriz de Gram. Y cada elemento de esta matriz es igual al producto de Frobenius de dos mapas de características diferentes.

G_{i,j}  =  <F_{i},F_{j}>_{F}  =  \displaystyle\sum_{n=1}^{n=x}\displaystyle\sum_{n=1}^{n=y}(n_{x,y,i}n_{x,y,j})

Donde G_{i,j} es el elemento (i,j) de la matriz de Gram de la capa convolucional de que se trate y <F_{i},F_{j}>_{F} el producto de Frobenius de los mapas de características F_{i} y F_{j}. El sumatorio tiene lugar a través de las coordenadas x e y. Lo que se multiplica (y después se suma) son los valores de activación de las neuronas.

La nueva matriz de Gram tendrá, pues, tantos elementos como posibles pares de mapas de características en dicha capa. Si la quinta capa convolucional tiene 512 mapas, como sucede en el caso de la arquitectura VGG16, entonces su matriz de Gram tendrá 512^2 = 262144 elementos diferentes.

Matriz de Gram que codifica el estilo de una imagen

En este ejemplo mostramos una capa de  cuatro mapas de características, de una resolución de 2×2 (o también x=2 e y=2). Tras esto mostramos el producto de Frobenius de los mapas F_{2} y F_{4} que resultará en una de las celdas de la matriz de Gram.

Coactivación de mapas

Usualmente, en las redes convolucionales la operación de convolución suele venir acompañada de un procedimiento de normalización por lotes y de la aplicación subsiguiente de la función rectificadora. La normalización provoca que los valores de los mapas de características (resultado de la mera aplicación del kernel convolucional) tengan una media de 0 y una desviación típica de 1. La función de activación rectificadora posterior elimina los valores negativos. Después de estas dos operaciones se calcula el producto de Frobenius y la matriz de Gram. Tras la normalización de los mapas, la normas de Frobenius de todos ellos tiene un valor similar. Como consecuencia de ello, los diferentes valores de la matriz de Gram vendrán causados por la coincidencia (o divergencia) de los valores de activación de las neuronas de los dos mapas. Cuando dos matrices están normalizadas, su producto de Frobenius nos indicará las similitudes en la distribución de sus valores. Cuanto mayor sea la coincidencia entre los valores de activación, mayor será el producto de Frobenius.
Producto de Frobenius, el cual, muestra la correlación entre dos matrices o, en el caso de la Transferencia Neuronal de Estilo, dos mapas de características.

Mostramos aquí tres mapas de características. Aunque la media de todos ellos es la misma, vemos que los valores de los mapas F_{2} y F_{3} se distribuyen de forma similar. Por eso, el producto de Frobenius de ambos mapas es mayor que el de otros pares. Tanto los Productos de Frobenius que muestran correlación entre mapas, como los que manifiestan su ausencia, forman en conjunto el estilo de una imagen, codificado en la matriz de Gram.

Función de pérdida

La matriz de Gram contiene el estilo de la imagen, es decir, las pautas de respuesta conjunta de los mapas de características de la capa. La función de pérdida de estilo se calcula comparando las matrices de Gram de la imagen generada y de la imagen de la que tomamos el estilo. El algoritmo buscará minimizar la diferencia entre ambas, y así transferirá el estilo de una imagen a otra.

El término de la función de pérdida relacionada con el estilo se calcula también para cada capa convolucional. Se expresa algebraicamente de la siguiente forma.

L_{estilo} = \frac{1}{4N^2}∑(G_{i,j}  –  A_{i,j})^2

Donde N es el número de neuronas de la capa, G_{ij} es la matriz de Gram de la imagen que estamos construyendo y A_{ij} la del cuadro cuyo estilo queremos copiar. Las dos matrices se restan y tras ello se calcula la norma de la matriz resultante. El sumatorio tiene lugar, pues, a través de los índices i,j. Conforme la función de pérdida tienda a cero, los estilos de las dos imágenes irán convergiendo.

Para reconstruir eficientemente la información relativa al estilo de una obra de arte es necesario utilizar en el cómputo los datos de las capas convolucionales más profundas, que contienen información global sobre la imagen, al contrario de lo que sucede en la reconstrucción de los rasgos de la fotografías, que puede realizarse perfectamente a partir de las capas más cercanas a la entrada.

Pasos del algoritmo de Transferencia Neuronal de Estilo

Los pasos del algoritmo son los siguientes:

La imagen de la obra de arte se hace pasar a través de la red. Las matrices de Gram A_{ij} son entonces calculadas para las primeras capas de cada uno de los cinco bloques convolucionales.

La imagen de la fotografía se hace pasar a través de la red. Se calculan los valores de activación n_{x,y,z)} de las neuronas de la primera capa de convolución del cuarto bloque.

Se crea una imagen aleatoria a partir de ruido. Dicha imagen también se hace pasar a través de la red.

L_{contenido} sólo se calcula para la primera capa del cuarto bloque convolucional. En el resto de las capas es cero. L_{estilo} y su gradiente se calculan para la primera capa de cada bloque convolucional.

Los gradientes se suman y se retropropagan hacia la entrada.

Se modifican los valores de la función de activación de la capa de entrada, cuyos datos -ya modificados- vuelve a penetrar de nuevo en la red.

Los pasos descritos en los tres apartados anteriores se iteran cientos de veces.

Parámetros

Durante la síntesis de la imagen se produce una suerte de pugna entre los dos términos de la función de pérdida, de tal manera que el primero de ellos (L_{contenido}, parametrizado por λ_{c}), pujará porque la imagen de resultado absorba el máximo contenido semántico y geométrico posible de la fotografía original. El segundo (L_{estilo}, parametrizado por λ_{s}) término, por el contrario, tratará de compeler a la red y a la imagen final a asumir información relativa al estilo de la obra de arte señalada. Variando ambos hiperparámetros podemos conseguir que un tipo de información predomine sobre el otro.

Parámetros en la transferencia neuronal de estilo.

Modulando los hiperparámetros λ_{c} y λ_{s} de la función de pérdida podemos hacer que predomine la información visual sobre la estilística o viceversa. Cuanto más a la derecha, mayor es la ratio \frac{λ_{c}}{λ_{s}}. La obra de arte es “Composición VII”, de Vasili Kandinski.

Interpretación de la Transferencia Neuronal de Estilo

La principal novedad del algoritmo que a grandes rasgos hemos analizado es que es capaz de capturar la información relativa al estilo de una fotografía o una obra de arte determinada.

Dicho estilo viene determinado por las relaciones de correlación entre las activaciones de los mapas de características de una misma capa. Ello parece señalar una suerte de comportamiento hebbiano, que afectaría, no tanto a las neuronas individuales como a los mapas de características en su conjunto. Si dos mapas de características reaccionan de una manera parecida ante la imagen que porta el estilo, el algoritmo fuerza también a que haya la misma reacción conjunta durante la síntesis de la imagen final. De esta manera se transmite el estilo de una imagen a la otra.

Nos preguntamos si en el cerebro humano también existen mecanismos de aprendizaje hebbiano que afectarían a grupos enteros de neuronas, encargados de procesar diferentes tipos de información. Tal vez sea éste uno de los mecanismos que permiten al cerebro procesar niveles superiores de significación a la simple segmentación semántica.

Lecturas recomendadas

– Gatys, L. A., Ecker, A. S. y Bethge, M. (2015) A Neural Algorithm of Artistic Style.

– Simonyan, K. y Zisserman, A. (2014) Very Deep Convolutional Networks for Large-Scale Image Recognition.

Imagen destacada de GoogLeNet
Deep Learning

GoogLeNet