La transferencia de estilo neuronal ( NST , por sus siglas en inglés) se refiere a una clase de algoritmos de software que manipulan imágenes digitales o videos para adoptar la apariencia o el estilo visual de otra imagen. Los algoritmos NST se caracterizan por el uso de redes neuronales profundas para la transformación de imágenes. Los usos comunes de NST son la creación de obras de arte artificiales a partir de fotografías, por ejemplo, transfiriendo la apariencia de pinturas famosas a fotografías proporcionadas por el usuario. Varias aplicaciones móviles notables utilizan técnicas NST para este propósito, incluidas DeepArt y Prisma . Este método ha sido utilizado por artistas y diseñadores de todo el mundo para desarrollar nuevas obras de arte basadas en estilos existentes.
NST es un ejemplo de estilización de imágenes, un problema estudiado durante más de dos décadas en el campo de la representación no fotorrealista . Los dos primeros algoritmos de transferencia de estilo basados en ejemplos fueron las analogías de imágenes [1] y el acolchado de imágenes [2] . Ambos métodos se basaban en algoritmos de síntesis de texturas basados en parches .
Dado un par de imágenes de entrenamiento (una foto y una ilustración que represente esa foto), se podría aprender una transformación y luego aplicarla para crear una nueva ilustración a partir de una nueva foto, por analogía. Si no se dispone de una foto de entrenamiento, sería necesario producirla procesando la ilustración de entrada; el acolchado de imágenes no requirió este paso de procesamiento, aunque se demostró en un solo estilo.
NST se publicó por primera vez en el artículo "Un algoritmo neuronal de estilo artístico" de Leon Gatys et al., publicado originalmente en ArXiv 2015, [3] y posteriormente aceptado por la conferencia CVPR revisada por pares en 2016. [4] El artículo original utilizó una arquitectura VGG-19 [5] que ha sido entrenada previamente para realizar el reconocimiento de objetos utilizando el conjunto de datos ImageNet .
En 2017, Google AI introdujo un método [6] que permite que una única red de transferencia de estilos convolucional profunda aprenda varios estilos al mismo tiempo. Este algoritmo permite la interpolación de estilos en tiempo real, incluso cuando se realiza en medios de video.
Esta sección sigue de cerca el artículo original. [4]
La idea de la Transferencia de Estilo Neural (NST) es tomar dos imágenes (una imagen de contenido y una imagen de estilo ) y generar una tercera imagen que minimice una combinación ponderada de dos funciones de pérdida: una pérdida de contenido y una pérdida de estilo .
La pérdida total es una suma lineal de los dos: al minimizar conjuntamente las pérdidas de contenido y estilo, NST genera una imagen que combina el contenido de la imagen de contenido con el estilo de la imagen de estilo.
Tanto la pérdida de contenido como la pérdida de estilo miden la similitud de dos imágenes. La similitud de contenido es la suma ponderada de las diferencias al cuadrado entre las activaciones neuronales de una única red neuronal convolucional (CNN) en dos imágenes. La similitud de estilo es la suma ponderada de las matrices de Gram dentro de cada capa (consulte los detalles a continuación).
El artículo original utilizó una CNN VGG-19 , pero el método funciona para cualquier CNN.
Sea una imagen de entrada a una CNN.
Sea la matriz de respuestas del filtro en la capa de la imagen , donde:
Una imagen de entrada dada se codifica en cada capa de la CNN mediante las respuestas del filtro a esa imagen, y las capas superiores codifican características más globales, pero pierden detalles de las características locales.
Sea una imagen original. Sea una imagen que se genera para que coincida con el contenido de . Sea la matriz de respuestas de filtro en la capa de la imagen .
La pérdida de contenido se define como la pérdida de error al cuadrado entre las representaciones de características de la imagen generada y la imagen de contenido en una capa elegida de una CNN: donde y son las activaciones del filtro en la posición en la capa para las imágenes generadas y de contenido, respectivamente. Minimizar esta pérdida fomenta que la imagen generada tenga un contenido similar a la imagen de contenido, tal como se captura mediante las activaciones de características en la capa elegida.
La pérdida total de contenido es una suma lineal de las pérdidas de contenido de cada capa: , donde son números reales positivos elegidos como hiperparámetros.
La pérdida de estilo se basa en las matrices de Gram de las imágenes generadas y de estilo, que capturan las correlaciones entre diferentes respuestas de filtro en diferentes capas de la CNN: donde Aquí, y son las entradas de las matrices de Gram para las imágenes generadas y de estilo en la capa . Explícitamente,
Minimizar esta pérdida fomenta que la imagen generada tenga características de estilo similares a la imagen de estilo, como se captura mediante las correlaciones entre las respuestas de las características en cada capa. La idea es que las correlaciones de patrones de activación entre filtros en una sola capa capturen el "estilo" en el orden de los campos receptivos en esa capa.
De manera similar al caso anterior, se eligen números reales positivos como hiperparámetros.
En el artículo original, utilizaron una elección particular de hiperparámetros.
La pérdida de estilo se calcula con para las salidas de las capas , , , , en la red VGG-19 y cero en caso contrario. La pérdida de contenido se calcula con para , y cero en caso contrario.conv1_1
conv2_1
conv3_1
conv4_1
conv5_1
conv4_2
La proporción .
La imagen se aproxima inicialmente añadiendo una pequeña cantidad de ruido blanco a la imagen de entrada y alimentándola a través de la CNN. Luego, retropropagamos sucesivamente esta pérdida a través de la red con los pesos de la CNN fijos para actualizar los píxeles de . Después de varios miles de épocas de entrenamiento, surge un (con suerte) que coincide con el estilo de y el contenido de .
A partir de 2017 [actualizar], cuando se implementa en una GPU , tarda unos minutos en converger. [8]
En algunas implementaciones prácticas, se observa que la imagen resultante tiene demasiados artefactos de alta frecuencia, que se pueden eliminar sumando la variación total a la pérdida total. [9]
En comparación con VGGNet, AlexNet no funciona bien para la transferencia de estilo neuronal. [10]
El NST también se ha extendido a los vídeos. [11]
Trabajos posteriores mejoraron la velocidad de NST para imágenes mediante el uso de normalizaciones de propósito especial . [12] [8]
En un artículo de Fei-Fei Li et al. adoptaron una métrica de pérdida regularizada diferente y un método acelerado para el entrenamiento para producir resultados en tiempo real (tres órdenes de magnitud más rápido que Gatys). [13] Su idea era utilizar no la pérdida basada en píxeles definida anteriormente sino más bien una "pérdida perceptual" que mide las diferencias entre capas de nivel superior dentro de la CNN. Utilizaron una CNN de convolución-deconvolución simétrica. El entrenamiento utiliza una función de pérdida similar al método NST básico pero también regulariza la salida para suavizarla utilizando una pérdida de variación total (TV). Una vez entrenada, la red se puede utilizar para transformar una imagen en el estilo utilizado durante el entrenamiento, utilizando un único pase de avance de la red. Sin embargo, la red está restringida al único estilo en el que ha sido entrenada. [13]
En un trabajo de Chen Dongdong et al. exploraron la fusión de información de flujo óptico en redes de propagación hacia adelante para mejorar la coherencia temporal de la salida. [14]
Más recientemente, se han explorado métodos NST basados en transformaciones de características para una estilización rápida que no están acoplados a un único estilo específico y permiten la combinación de estilos controlable por el usuario, por ejemplo, la transformación de blanqueamiento y coloración (WCT). [15]
{{cite journal}}
: Requiere citar revista |journal=
( ayuda )