Ojalá fuera Van Gogh… – Hacia la IA

Estás leyendo la publicación: Ojalá fuera Van Gogh… – Hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

¡Todo es posible con la Inteligencia Artificial!

Contenido

  • Arte y ciencia
  • Perspectiva científica: transferencia de estilo neuronal
  • Perspectiva del arte: pinturas famosas e historias detrás
  • Haz que suceda
  • Cuando los sueños se hacen realidad

Arte y ciencia

Hace algún tiempo, un artículo científico con el título de Gatys et al. [1] llamó mi atención. Los autores intentaron responder a la pregunta de investigación: ¿Puede la Inteligencia Artificial producir una obra maestra?? Lo demostraron al desarrollar el algoritmo Neural Style Transfer (NST), un sistema de inteligencia artificial capaz de crear una “química” especial entre el contenido y el estilo de una imagen, para producir una obra maestra con un estilo similar al de los grandes artistas. El algoritmo NST, basado en una Red Neural Profunda, es un ejemplo de gran sinergia entre ciencia y arte.

En este artículo, obtendrá más información sobre el algoritmo neuronal del estilo artístico, verá algunos ejemplos sorprendentes generados con el algoritmo y leerá algunas historias interesantes detrás de las famosas pinturas utilizadas como plantillas de estilo.

Perspectiva científica: transferencia de estilo neuronal

El tema central de Gatys et al. papel [1] es la reconstrucción de contenido y estilo de los datos de imagen, y para ello utilizaron redes neuronales convolucionales (ConvNets). ConvNets se ha inspirado en la respuesta de las neuronas humanas a los estímulos en el campo visual del cerebro humano. Las ConvNet son redes neuronales profundas especialmente diseñadas para imágenes bidimensionales que procesan datos visuales a través de múltiples filtros, canales y capas. El propósito de los filtros es extraer ciertas características de la imagen. Los filtros aplicados a los datos de la imagen (es decir, píxeles) producen mapas de características que son capas intrincadas y cada mapa es una versión diferente de la imagen de entrada. Las redes convolucionales pueden orquestar cientos de filtros en paralelo para una sola imagen. Los canales de imagen representan colores y agregan una tercera dimensión que es la profundidad a los filtros. Por lo general, tendríamos 3 canales por filtro para cada color rojo, verde y azul. Las redes convolucionales también tienen capas. Las capas ordenadas jerárquicamente procesan la información visual en forma de avance. La arquitectura ConvNet consta de diferentes tipos de capas.

Por lo general, la configuración de ConvNet comienza con diferentes capas convolucionales, cada una definida con una función de activación, un tamaño y una cantidad de salidas. Algunas de esas capas se han “reforzado” con una capa de agrupación para extraer características dominantes y suprimir el ruido. La arquitectura termina con capas totalmente conectadas, que dan a la imagen una forma adecuada para Perceptrón multicapa con un Función softmax para la clasificación. Cada capa se puede visualizar a través de la reconstrucción del mapa de características correspondiente. Los niveles más altos son de especial interés aquí ya que pueden capturar el contexto de la imagen, extrayendo así la imagen en su nivel conceptual.

Hay varias ConvNet disponibles como modelos preentrenados con diferentes arquitecturas, incluido el modelo VGG [3] utilizado en el algoritmo NST. VGG es un modelo de reconocimiento de objetos basado en ImageNet, una base de datos de imágenes a gran escala con más de 14 millones de imágenes organizadas en más de 20 mil categorías. El modelo VGG en sí está entrenado en un subconjunto de ImageNet con 1,3 millones de imágenes configuradas en mil categorías [4]. El modelo VGG se ha implementado en Python Keras y PyTorch marcos de aprendizaje profundo. VGG tiene varias configuraciones, de las cuales VGG-16 (Figura 1) y VGG-19, con 16 y 19 capas convolucionales, respectivamente, son las más comunes.

🔥 Recomendado:  Cómo entrenar su modelo BERT 5 veces más rápido que en Colab: hacia la IA

El algoritmo NST aprovecha la capacidad de ConvNet para visualizar una imagen en cada capa al reconstruir la imagen a partir de los mapas de características en esa capa. Gatys et al. El hallazgo clave es que las representaciones de contenido y estilo en ConvNet son separables, por lo tanto, el contenido de una imagen se puede combinar con el estilo de otra imagen para producir una imagen secundaria que tendría rasgos de ambos (Figura 2).

La primera parte del algoritmo es un análisis de contenido y estilo de las imágenes. Para la reconstrucción de contenido, se utilizan capas más altas en la red, para la reconstrucción de estilo, las correlaciones entre las respuestas de filtro en múltiples capas juegan un papel importante. La segunda parte del algoritmo es una síntesis de la imagen infantil, que se basa en la función de pérdida mínima de ambos términos: el contenido y el estilo. La ponderación relativa entre la reconstrucción del contenido y del estilo indica el énfasis que damos a la representación del estilo o del contenido. La proporción óptima debe especificarse empíricamente, si el valor seleccionado es demasiado bajo, solo se puede capturar el estilo, y viceversa si el valor es demasiado alto.

El algoritmo NST utiliza solo dos tipos de capas en la arquitectura de red VGG: capas convolucionales y de agrupación. En concreto, para la representación de contenidos se ha extraído conv4, y para la representación de estilos se han utilizado las capas convolucionales 1 a 5. Gatys et al. PyTorch La implementación del algoritmo NST está disponible públicamente en Github.

Perspectiva del arte: pinturas famosas e historias detrás

La noche estrellada

Era simplemente imposible no incluir una de las pinturas más icónicas del mundo: ¡la obra maestra de Vincent van Gogh! Lo pintó en 1889, durante su hospitalización en un manicomio en Francia, donde había sido ingresado tras sufrir una grave crisis nerviosa. El cuadro retrata el paisaje con un ciprés que se ve a través de la ventana de su habitación de hospital. Observando el cielo temprano en la mañana y mucho antes del amanecer, capturó las estrellas, la Luna y el planeta Venus en una mágica noche de verano. El aspecto más misterioso es el centelleante cielo nocturno que ilumina vívidamente desde el lienzo. Artistas, historiadores y científicos han estado especulando si esas pinceladas mágicas de remolino fueron un reflejo de su turbulento estado mental o el resultado del envenenamiento por plomo que se encuentra en sus pinturas al óleo, lo que causa la inflamación de las retinas y, en consecuencia, la visión de círculos de luz alrededor de los objetos. O tal vez, como algunos argumentan, son el resultado de que su mente genial encontró una manera de representar la espiral de una galaxia o un cometa. Una de las teorías recientes defendidas por algunos astrofísicos es el parecido misterioso y sorprendente de la pintura con el polvo de estrellas iluminador visto a través de un telescopio de la NASA. Los físicos también examinaron la correlación entre la técnica de van Gogh con la turbulencia de fluidos (TEDed).

🔥 Recomendado:  El fascinante mundo del aprendizaje automático: hacia la IA

Retratos de Adele Bloch-Bauer

Adele Bloch-Bauer era la esposa de un rico magnate que le encargó a Gustav Klimt que pintara a su esposa dos veces. Su primer y más famoso retrato, también conocido como , o Klimt, se completó en 1907. Es pintura al óleo con pan de oro y plata dominante. La inspiración para esta obra maestra la encontró en los mosaicos bizantinos y el arte egipcio. El segundo retrato de Adele es un óleo sobre lienzo, terminado en 1912. Ambos retratos fueron robados por los nazis durante la Segunda Guerra Mundial. Después de la guerra, las pinturas estuvieron expuestas en una galería vienesa hasta 2006, cuando fueron devueltas a su propietario legal tras un largo juicio. Poco después del juicio, ambas pinturas se vendieron en Christie’s a precios récord en ese momento. Esta notable historia fue contada en tres documentales y un largometraje. mujer en oro.

La chica de la perla

Mona Lisa del Norte

como suele llamarse esta pintura del siglo XVII de Vermeer, ha fascinado e intrigado a los admiradores de las bellas artes desde entonces. ¿Qué ha sido tan cautivador y desconcertante de la pintura? el dominio de Vermeer de la iluminación de estilo dramático; el misterio de la mirada de la niña; su exótico vestido con turbante azul y amarillo; el enorme arete de perla reluciente (o posiblemente de metal pulido); sus labios sensuales; la identidad no identificada de la niña; y el dilema de si el cuadro era un retrato o el de una persona imaginaria— ha sido la inspiración de muchos artistas. Una novela y un película protagonizada por Scarlett Johansson con el mismo título se inspiraron directamente en la pintura de Vermeer, y se ha utilizado en la portada de muchos libros de arte y artefactos.

Frida Kahlo, la artista

Frida Kahlo fue una artista mexicana conocida por sus 55 autorretratos pintados con colores llamativos y vibrantes. Ella dijo:

Pinto autorretratos porque a menudo estoy solo, porque soy la persona que mejor conozco.

Las pinturas de Frida reflejan su atormentada vida personal provocada por la poliomielitis que padeció de niña; por un accidente de autobús que tuvo cuando era adolescente, lo que le provocó dolores de por vida y 30 operaciones; por una turbulenta relación con su esposo, con quien estuvo casada dos veces. La Tate Modern considera a Kahlo como

uno de los artistas más significativos del siglo XX.

Su vida personal y su obra han sido inspiración para muchos artistas en los campos de la alfabetización, la música y la cinematografía.

un rompecabezas

¡Adivina! En cada una de las cuatro esquinas de la figura de abajo hay autorretratos pintados por Frida. Las imágenes restantes son fotos de Frida, cuatro de las cuales se generan con el algoritmo NST. Haga coincidir las fotos generadas por NST con las pinturas de las esquinas correspondientes.

Haz que suceda

Hay numerosos PyTorch implementaciones del algoritmo NST, por ejemplo, L. Gatys y A. Jacq. El modelo VGG, disponible en PyTorch como un modelo de aprendizaje profundo preentrenado, se ha utilizado en el algoritmo para la extracción y visualización de características. El algoritmo NST [2] consta de los siguientes pasos:

Paso 1: configurar los parámetros de entrada de NST

  1. Procese previamente el contenido y estilice las imágenes redimensionándolas a las mismas dimensiones y normalizando los valores de entrada para que sean compatibles con el modelo VGG.
  2. Cree una instancia del modelo VGG con los pesos previamente entrenados para el conjunto de datos de ImageNet.
  3. Especifique el número de iteraciones.
  4. Especifique la ponderación relativa entre el contenido y la representación de la imagen de estilo.
🔥 Recomendado:  Codificación de variables categóricas eficaz para el aprendizaje automático: hacia la IA

Paso 2: Cree un modelo y calcule las pérdidas

  1. Reconstruya la red VGG para obtener acceso a las capas intermedias de la red (p. ej., Conv2d, ReLU, MaxPool2d, AvgPool2d) y seleccione las capas convolucionales de interés.
  2. Para la reconstrucción de contenido, extraiga una sola capa convolucional. Se recomienda una capa intermedia (p. ej., conv_4 o conv_5). Calcule la pérdida de contenido entre el mapa de características de la capa convolucional y el mapa de características de la imagen de contenido original.
  3. Para la reconstrucción de estilo, extraiga varias capas VGG de interés y emplee una correlación de características entre capas. Calcule la pérdida de estilo total como la suma de las pérdidas en cada capa convolucional (es decir, conv_1 a conv_5).
  4. Cree una nueva instancia de modelo que consta de las capas extraídas para la representación de estilo y contenido.

Paso 3: Realice la transferencia de estilo neuronal

Seleccione un algoritmo de optimización de descenso de gradiente de la biblioteca PyTorch.

Para cada iteración especificada en 1.3, realice los siguientes pasos:

  1. Entrena el nuevo modelo (desde el paso 2.4) en una imagen de entrada que es una copia de la imagen de contenido.
  2. Calcule la suma de las pérdidas totales de las pérdidas de contenido y estilo calculadas en los pasos 2.2 y 2.3.
  3. Modifique la pérdida total aplicando el peso relativo del paso 1.4.
  4. Ejecute el algoritmo de optimización para calcular los gradientes utilizando la propagación hacia atrás estándar en la pérdida total modificada; el optimizador descubre los parámetros del modelo que deben actualizarse.
  5. Finalmente, actualice iterativamente la imagen de entrada con gradientes calculados hasta que coincida simultáneamente con el estilo de una imagen y el contenido de otra.

Devuelve la nueva imagen (transformada).

Cuando los sueños se hacen realidad

¡Experimentemos!

Referencias

[1] A. Gatys, A. Ecker y M. Bethge, Un algoritmo neuronal de estilo artístico (2015)

[2] A. Gatys, A. Ecker y M. Bethge, Transferencia de estilo de imagen mediante redes neuronales convolucionalesActas de la Conferencia IEEE sobre visión artificial y reconocimiento de patrones (2016)

[3] K. Simonyan y A. Zisserman, Redes convolucionales muy profundas para el reconocimiento de imágenes a gran escala (2014)

[4] A. Krizhevsky, I. Sutskever y G. Hinton, Clasificación de ImageNet con redes neuronales convolucionales profundas (2012)


Ojalá fuera Van Gogh… se publicó originalmente en Hacia la IA en Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.

Publicado a través de Hacia la IA