Sin categoría

NST moderno – Transferencia de estilo neuronal (Parte I)

Esta semana completé el 4o curso de deeplearning.ai, organizado en Coursera y enseñado por Andrew NG. Como parte del curso pude aprender sobre NST, o Transferencia de Estilo Neural.

Ahora probablemente te estarás preguntando qué diablos es NST. Podemos encontrar un breve bajo la introducción en el libro blanco escrito por Yongcheng Jing et al.

El trabajo reciente de Gatys et al. demostró el poder de las redes neuronales convolucionales (CNN) en la creación de imágenes fantásticas artis- tic separando y recombing el contenido y el estilo im-age. Este proceso de usar CNN para migrar el contenido semántico de una imagen a diferentes estilos se vuelve a conferir como transferencia de estilo neuronal. Desde entonces, Neural Style Transfer se ha convertido en un tema de tendencia tanto en aplicaciones académicas de la era como industriales. Está recibiendo una atención cada vez mayor de los investigadores de la visión por ordenador y se proponen varios métodos para mejorar o ampliar el algoritmo neuronal orig- inal propuesto por Gatys et al. Sin embargo, no hay una encuesta exhaustiva que presente y summa- rizing recientes de transferencia de estilo neural. Esta revisión tiene como objetivo proporcionar una visión general de los progresos actuales hacia la transferencia de estilo neuronal, así como discutir sus diversas aplicaciones y problemas abiertos para futuras investigaciones.

Voy a entrar en los detalles en más post. Hay pocos conceptos sobre la definición que vale la pena entender, como CNN, cómo funcionan y por qué CNN ha sido tan importante en cosas relacionadas con la imagen.

Como una breve introducción, una no matemática, NST necesita una gran cantidad de datos previamente entrenados. Para el ejemplo que se muestra a continuación utilicé una arquitectura VGG-19 (llegaremos allí mientras hablamos de arquitecturas de redes neuronales profundas). Para cargar el modelo, utilicé el conjunto de datos ImageNet, ya que iniciar NST desde cero no tiene sentido. Las redes neuronales, en primer lugar, necesitan aprender a detectar los patrones en una imagen que el altamente "activa" una neurona.

Por lo tanto, desde un punto de vista de alto nivel, NST es fácil de entender. Tendremos 3 imágenes:

  • imagen de contenido
  • imagen de estilo
  • imágenes generadas

La función de coste para los contenidos y los estilos es un poco diferente, pero ambos se basan en el mismo principio matemático, una matriz de Gram. Calcular esta matriz por época de los pasos anteriores permite a la red y reducir las funciones de costo termina con una salida (en mi caso utilicé la 4a de la 19a capa de convolución como salida uno por razones de rendimiento, un experimento usando CuDa con Nvidia GTX 1060 tomó cerca de 7 horas), terminará viendo esto como imágenes generadas.

Con    

se ejecutará más de 220 épocas, cada 1,5 segundos de actualización con el resultado de 20 épocas. Lo ideal es que se ejecute hasta 400, pero después de no ver muchos cambios en las últimas iteraciones detengo quitar el 180 a la izquierda.

Prepárate para el próximo post :P. Los comentarios y comentarios son siempre bienvenidos.