Crea tus propias "pinturas neurales" con DeepStyle y Ubuntu

¿Sabías que las redes neuronales también pueden pintar? Los investigadores han entrenado una gran red neuronal para convertir las fotografías en pinturas neurales que parecen pintadas por artistas famosos.

¿Sabías que las redes neuronales también pueden pintar?  Los investigadores han entrenado una gran red neuronal para convertir las fotografías en pinturas neurales que parecen pintadas por artistas famosos.
Anuncio

Las redes neuronales pueden hacer muchas cosas. Pueden interpretar imágenes, entender nuestras voces 6 Características de Google Now que cambiarán su forma de búsqueda 6 Características de Google Now que cambiarán su forma de búsqueda Puede que ya esté utilizando Google Now en su dispositivo Android, pero ¿está sacando todo lo que puede de ella? ¿eso? Conocer estas pequeñas características puede marcar una gran diferencia. Leer más y traducir conversaciones Cómo funciona el Traductor Star Trek de Skype Cómo funciona el Traductor Star Trek de Skype La nueva función de traducción de Skype ofrece algo soñado desde Star Trek: una forma sencilla de comunicarse en diferentes idiomas. Lee mas . ¿Pero sabías que también pueden pintar?

Un trabajo de investigación reciente (titulado "Un algoritmo neuronal de estilo artístico") ha dado inicio a una oleada de discusión en línea con algunos ejemplos visuales sorprendentes. Esencialmente, el documento analiza una técnica para entrenar una red neuronal profunda Microsoft vs Google - ¿Quién lidera la carrera de Inteligencia Artificial? Microsoft vs Google - ¿Quién lidera la carrera de Inteligencia Artificial? Los investigadores de inteligencia artificial están logrando progresos tangibles, y las personas están empezando a hablar en serio sobre la inteligencia artificial nuevamente. Los dos titanes que lideran la carrera de inteligencia artificial son Google y Microsoft. Lea más para separar el estilo artístico de la estructura de la imagen, y combine el estilo de una imagen con la estructura de otra. El resultado de todo esto es que puedes entrenar una enorme red neuronal para convertir las fotografías en "pinturas neurales" que parecen pintadas por artistas famosos, "falsificaciones digitales", por así decirlo.

Aquí hay algunos ejemplos del artículo. La primera imagen es el original. Las imágenes posteriores son los resultados generados, con la pintura de la que se muestreó el estilo mostrado en miniatura.

PaperImages

Los investigadores originales no han publicado su código, desafortunadamente. Sin embargo, algunos intrépidos programadores han replicado sus resultados en los últimos días, y su código está disponible, fuente abierta en Internet. Todo lo que necesitas para ejecutarlo es una máquina Linux y un poco de paciencia.

Hoy, los guiaré a través de cómo hacerlo y les mostraré algunos de mis resultados. Puedes pensar en esto como una secuela suelta de nuestro tutorial DeepDream. Crea tus propios sueños de fiebre artificial con el "DeepDream" de Google. Crea tus propios sueños de fiebre artificial con el "DeepDream" de Google. ¿Has visto las imágenes truculentas que salen de DeepDream? ¿Quieres hacer tu propia? ¡No busque más! Lee mas . Es un poco complicado, pero cualquiera con una máquina Linux puede seguirlo, sin necesidad de una experiencia de codificación.

¡Convertí una pintura ligera de Picasso en una pintura de estilo Picasso con #DeepStyle! pic.twitter.com/cjkEoIhVcF

- James Blaha (@jamesblaha) 5 de septiembre de 2015

Configurando el Software

En primer lugar, si no tienes mucha prisa o no tienes una máquina Linux, aún puedes jugar con DeepStyle usando el bot de DeepForger Twitter (enviar una imagen y un estilo, y finalmente responderá con los resultados que querer). Si desea procesar más imágenes rápidamente (y con más control sobre los resultados), siga leyendo para ver el tutorial.

Primero, asegúrate de tener una copia actualizada de Ubuntu (14.04 es lo que usé). Deberías tener al menos algunas gigas adicionales de espacio en el disco duro. Para obtener más información, consulte nuestro tutorial sobre Ubuntu de arranque dual junto con Windows Cansado de Windows 8? ¿Cómo arranque dual Windows y Ubuntu cansado de Windows 8? Cómo iniciar Dual Windows y Ubuntu Si descubres que Windows 8 no es una buena taza de té, y no tienes un camino factible para bajar de categoría, puede ser una buena idea iniciar dual con Linux para tener una alternativa ... Leer Más . También vas a necesitar privilegios de administrador, así que asegúrate de hacerlo antes de continuar.

Herramientas básicas

Derecho del bate, este es un proyecto de código abierto, por lo que vamos a querer tener instalado Git . Git es el estándar de oro para el software de control de versiones What Is Git y por qué debería usar el control de versiones Si usted es un desarrollador Qué es Git y por qué debería usar el control de versiones Si es un desarrollador Como desarrolladores web, la mayoría del tiempo tendemos a trabajar en sitios de desarrollo local y luego solo cargamos todo cuando terminamos. Esto está bien cuando eres solo tú y los cambios son pequeños, ... Leer más. Prácticamente todos los proyectos de código abierto que vale la pena conocer están alojados en Github.

Para descargar e instalar Git, solo abra una terminal y escriba " sudo apt-get install git " y acepte las demandas del instalador.

Siguiente: vamos a configurar algunas herramientas básicas necesarias para que el software funcione.

Primero, instale Lua. Este es el idioma en el que está escrita la herramienta. Es bastante simple. Simplemente escriba " sudo apt-get install lua5.2 " y siga el proceso de instalación.

En segundo lugar, vamos a obtener Luarocks. Esta es la herramienta que facilita la instalación de otras herramientas (¿no te gusta Linux?). Para este, escriba " sudo apt-get install luarocks " y siga los pasos de instalación.

Tercero, vamos a instalar Luajit. Este es un compilador justo a tiempo para Lua que hará nuestras vidas un poco más simples. Simplemente escriba " sudo apt-get install luajit ".

Hasta aquí todo bien.

Soy un bot que crea falsificaciones a partir de tus fotos al estilo de pintores famosos. Haga clic para las instrucciones a continuación! pic.twitter.com/3MpThDNwRE

- The Deep Forger (@DeepForger) 5 de septiembre de 2015

Frameworks

A continuación, vamos a instalar Torch, un marco de computación científica y aprendizaje automático que conforma la columna vertebral de la aplicación. Desafortunadamente, este no se puede instalar usando apt-get (el administrador de paquetes estándar de Ubuntu).

Afortunadamente, tienen un instalador de una línea que usa algo de magia de línea de comandos. Regrese a su terminal e ingrese " curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash curl -s https://raw.githubusercontent.com/torch/ezinstall/master/install-all | bash ".

Cuando hayas terminado, escribe " luajit -ltorch ". Esto abrirá la interfaz de la antorcha y verificará que todo esté instalado correctamente.

Salir de eso.

Ahora vamos a instalar loadcaffe, un paquete específico de redes neuronales. Instale su única dependencia escribiendo " sudo apt-get install libprotobuf-dev protobuf-compiler ". Luego puede instalar el paquete usando " sudo luarocks install loadcaffe" .

@Johnicholas Tu avería de falsificación, con estilo de la escuela de Rembrandt van Rijn. #DigitalArt #StyleNet pic.twitter.com/pf0sZxWkaT

- The Deep Forger (@DeepForger) 7 de septiembre de 2015

Dependencias de doble comprobación

Finalmente, vamos a actualizar preventivamente algunas cosas solo para asegurarnos de que todo transcurra sin problemas.

Escriba " sudo luarocks install image " para asegurarse de que su paquete de imágenes esté actualizado. Luego, ingrese " luarocks install nn ", que hará lo mismo con su paquete 'nn'.

Instalación de Deep Style

¡Bien! En este punto, estamos listos para instalar realmente el software. Por motivos de limpieza, cree una nueva carpeta en su directorio de inicio ('mkdir DeepStyle'). Luego, cd Deepstyle usando " cd Deepstyle ". Ahora escriba " sudo git clone https://github.com/jcjohnson/neural-style.git".

A continuación, tenemos que descargar el modelo. Prepara una taza de café o algo así, esto llevará un tiempo. Regrese a la terminal y escriba " sudo sh models/download_models.sh ". Eso iniciará un largo y elaborado proceso de descarga. Si falla debido a errores de permisos, intente otorgarse permisos de lectura y escritura en las carpetas relevantes, utilizando chmod.

@ 44thats44oars encargó este #ProceduralArt #NeuralArt. pic.twitter.com/tbMH7gsvc8

- The Deep Forger (@DeepForger) 6 de septiembre de 2015

Usando Deep Style

De acuerdo, estamos listos para irnos. Usar el software es bastante simple.

Asegúrate de estar en el directorio DeepStyle / neural-style en la terminal. Ahora, vas a necesitar algunas imágenes para trabajar. Descárguelos de Internet (o lo que sea) y cópielos en la carpeta DeepStyle / neural-style utilizando el buscador de archivos.

Ahora puede usar la línea de comando para procesar imágenes individuales. El formato es bastante sencillo:

th neural_style.lua -style_image YOURPAINTINGHERE.jpg" - content_image YOURPHOTOHERE.jpg" -gpu -1

(Obviamente, deberá reemplazar los fragmentos en TODOS LOS MAYÚSCULAS con los nombres de sus archivos).

Eso hará que la red neuronal se inicie. Se ejecutará durante aproximadamente una hora, escupiendo nuevas imágenes parcialmente convergentes cada pocos minutos hasta que finalice. El -gpu -1 impide que intente acceder a su GPU.

Después de varias horas intentando (y bloqueando el sistema operativo varias veces), no pude conseguir que Ubuntu y CUDA funcionaran bien con mi GPU (una NVIDIA GTX 970). Si tiene más suerte con eso, querrá instalar CUDA y cudan.torch (consulte el repositorio de github para obtener más información). Si no, está bien, todavía funcionará usando tu CPU; será un poco más lento.

Si tiene algún problema para que todo esto funcione, solo pregúnteme en los comentarios, y haré todo lo posible para ayudarlo.

Resultados

Aquí hay algunas imágenes que he generado durante los últimos días. Los resultados son mixtos, pero muchos de ellos son bastante impresionantes.

zack-paden-composite

Haga clic aquí para una resolución completa.

Este es de mi amigo Zack en un viaje de excursión a Yellowstone. El estilo proviene de una pintura abstracta, creada por Theresa Paden. Tenía curiosidad por ver cómo funcionaría el sistema con una imagen sin ninguna estructura. Los resultados son bastante claros, y definitivamente puede ver las similitudes con la imagen de estilo.

jerseycity-demuth-composite

Haga clic aquí para una resolución completa.

Este es cortesía de uno de mis artistas favoritos, Charles Demuth (ver: Incienso de una iglesia nueva, y la figura 5 en oro). Curiosamente, Demuth es una de las principales inspiraciones visuales para el arte de Team Fortress 2 Team Fortress 2: El juego Steam gratuito que debes jugar Team Fortress 2: El juego Steam gratuito que debes jugar es Team Fortress 2 solo un juego rápido para probar los gráficos y el rendimiento, ¿o es un juego que vale la pena jugar repetidamente? Lea más, como puede ver en la imagen de estilo.

Lo alimenté con una imagen de Jersey City que encontré en Wikimedia. Los resultados son ... bastante buenos. No se dio cuenta de la angularidad del estilo de Demuth, pero ciertamente recogió la apariencia suave y texturizada y la paleta de colores.

flores-okeefe-compuesto

Haga clic aquí para una resolución completa.

Este es un intento de generar un O'Keeffe sintético, utilizando una imagen bastante mundana de algunas flores que encontré. Los resultados son, francamente, espectaculares. Estéticamente, este es uno de mis resultados favoritos. La riqueza de los colores y las formas de O'Keeffe llegan claramente. Los bordes en capas de los pétalos de las flores se convierten en los bordes de las hojas en el fondo. Las flores mismas se disuelven en colores, llegando a ser casi abstractas.

Sería una buena pintura si un humano lo hiciera. Estoy muy tentado de pasar un par de días renderizando una versión de mayor resolución de este y enmarcarla.

shannon-picasso-composite

Haga clic aquí para una resolución completa.

Aquí está mi amiga Shannon con su disfraz de Halloween, a modo de estampado de Picasso. Curiosamente, el dispositivo eligió pintar la parte inferior de su cara de blanco (similar a la disposición de color de la pieza de Picasso). No estoy seguro si esto fue una coincidencia o no, pero los resultados son sorprendentes. También parece haber identificado correctamente el pelo de Shannon en el lado izquierdo, y lo volvió a dibujar usando el color y el lino del cabello en la imagen de estilo. Lo mismo para su sombrero.

Esta es una de las piezas donde las limitaciones de la técnica comienzan a ser claras. Si Picasso pintara realmente a Shannon, habría tirado la estructura de su rostro y sesgado las características para lograr el efecto que deseaba. Este sistema no comprende ese tipo de conceptos de alto nivel, y es capaz de imitar solo aspectos superficiales del estilo, como las líneas oscuras, angulosas y la paleta de colores.

eiffel-vangogh-composite

Haga clic aquí para una resolución completa.

Bastante sencillo: una imagen de la Torre Eiffel y la otra noche estrellada de Van Gogh. Hace un buen trabajo renderizando la nube en un estilo Van Gogh-ey, a pesar de la ausencia de nubes en la imagen original. También hace un buen trabajo traduciendo la escena del día a la noche.

No estaba seguro de por qué decidió convertir la punta de la torre Fiffel en una columna de fuego. Parece genial, pero no es realmente justificable a partir de los datos de entrada. Luego me di cuenta de que la imagen de estilo tiene trece tiras amarillas largas y verticales, en forma de reflejos en el agua. Es un grupo bastante masivo, dada la poca información de entrenamiento. El pobre probablemente haya aprendido que cualquier borde vertical de alto contraste debe ser uno de esos reflejos. Puedes ver más rayas verticales extrañas débilmente en las nubes.

nebula-vangogh-composite

Haga clic aquí para una resolución completa.

La misma pintura de Van Gogh, pero esta vez le di algunas estrellas reales para pintar. En este caso, la porción de pilares de la nebulosa Águila. Me gustan los resultados, aunque, una vez más, puedes ver su obsesión por las rayas amarillas. Cada porción vertical del pilar se convierte en una línea amarilla brillante y tambaleante. También está claramente molesto por el verde, que no ocurrió en los datos de entrenamiento, y hace todo lo posible para deshacerse de él en favor del azul y el negro.

Tecnología

Algunos resultados de esto son extremadamente convincentes, aunque la técnica tiene claras limitaciones. Algunas imágenes tienen una composición pésima, y ​​el sistema tiene dificultades con artistas más abstractos como Picasso, a quien le gustaba distorsionar su tema, diseminando sus características. El algoritmo recoge sus líneas angulares y colores que chocan, pero sigue siendo un esclavo de los valores de píxel de la imagen. No tiene la comprensión que necesitaría para desviarse demasiado del material fuente.

Lo que me emociona de todo esto es que no creo que esas limitaciones sean fundamentales.

El enfoque que se usa aquí - entrenar una red en una imagen y usarla para construir otra - es fundamentalmente un truco. Le da a la red muy poca información para trabajar. Una versión más avanzada de esta aplicación usaría una red que tiene información sobre muchas pinturas, y quizás incluso imágenes reales, para darle un amplio contexto sobre la imagen que está tratando de "pintar".

Una comprensión profunda del estilo solo puede existir en un contexto más amplio. No puedes derivarlo de una sola imagen. Diseñar una arquitectura que le dé al sistema acceso a datos más amplios podría permitirle derivar una comprensión más "humana" de la imagen, y cómo los artistas representan diferentes elementos del mundo real. Tal red podría ser capaz de producir imágenes que son más abstractas y tienen una mejor composición. Tales algoritmos dejarían de ser un juguete genial (como este) y se convertirían en una forma de producir arte real y original.

Lo cual es un pensamiento muy peculiar, de alguna manera.

Hacer tus propias imágenes

Si obtiene un resultado decepcionante, puede jugar un poco con las opciones para intentar obtener resultados más convincentes. La lista completa está en el Github. Los importantes son

  • -content_weight -value Cuánto ponderar el término de reconstrucción del contenido. El valor predeterminado es 5e0.
  • -style_weight -value: cuánto peso darle a la imagen de estilo. El valor predeterminado es 1e2.
  • -style_scale - value: la cantidad de parches de imagen debe analizar el sistema (Larger se vuelve más abstracto). El valor predeterminado es 1.0.

Una vez que tenga todo listo para su satisfacción, publique sus imágenes más interesantes en los comentarios. Estoy realmente interesado en ver qué piensan ustedes.

Créditos de las imágenes: pintor de cerebros humanos a través de Shutterstock

In this article