¿Es posible entrenar la red neuronal para dibujar en un estilo determinado?

10

¿Es posible entrenar la red neuronal para dibujar en cierto estilo? (Por lo tanto, toma una imagen y la vuelve a dibujar en un estilo para el que fue entrenada).

¿Existe alguna tecnología aprobada para este tipo de cosas? Sé sobre el algoritmo DeepArt. Es bueno llenar la imagen principal con cierto patrón (por ejemplo, imagen de vangoghify), pero estoy buscando algo diferente, es decir, hacer dibujos animados con cierto estilo a partir del retrato de entrada.

zavg
fuente
3
Un obstáculo para entrenar una red neuronal de fotografía a caricatura puede ser encontrar un conjunto de datos de entrenamiento. Parece que el conjunto de datos debería contener fotografías y dibujos animados que los humanos hayan dibujado basados ​​en esas fotografías. No conozco ninguno de esos conjuntos de datos.
Tanner Swett
@TannerSwett ¿Cómo crees cuántas imágenes son necesarias para este tipo de entrenamiento?
zavg
No soy un experto, así que solo puedo hacer una suposición descabellada. Creo que necesitarías al menos mil imágenes. Es posible que necesite mucho más que eso. Por cierto, sugiero mirar esta herramienta: github.com/hardmaru/sketch-rnn Esa herramienta se ha utilizado para generar imitaciones de caracteres chinos; Tal vez una herramienta similar podría generar imitaciones de dibujos animados.
Tanner Swett
Puede que esté un poco desactualizado ya que mi entrenamiento de NN fue hace algún tiempo, pero si está pensando en entrenar una red con unos pocos miles de imágenes y espera que pueda renderizar imágenes en un estilo que puede llegar demasiado lejos, Si está pensando que este es un buen proyecto inicial, no lo haga. Para lograr lo que usted describe requeriría un 'montón' de violín manual. Piense en el conocimiento requerido para interpretar una imagen y no solo en la coincidencia de patrones.
Peter Scott
También vale la pena mirar vox.com/2016/6/1/11787262/blade-runner-neural-network-encoding
Peter Scott

Respuestas:

12

Hay un artículo relevante: LA Gatus, AS Ecker, M Bethge, 2015, A Neural Algorithm of Artistic Style . Citando del resumen,

Aquí presentamos un sistema artificial basado en una red neuronal profunda que crea imágenes artísticas de alta calidad perceptiva. El sistema utiliza representaciones neuronales para separar y recombinar el contenido y el estilo de imágenes arbitrarias, proporcionando un algoritmo neuronal para la creación de imágenes artísticas.

Aquí está la Figura 2 de este documento:

ingrese la descripción de la imagen aquí

También hay una implementación de código abierto muy popular basada en la antorcha aquí, que es bastante fácil de usar. Vea el enlace para más ejemplos.

Tenga en cuenta que los cálculos son pesados ​​y, por lo tanto, el procesamiento de imágenes individuales es el alcance de este trabajo.

Editar: después de verificar su proyecto DeepArt mencionado, parece que está utilizando las mismas técnicas. No estoy seguro de por qué esto no es lo que quieres, porque el concepto de transferencia de estilo es tan general como parece.

Sascha
fuente
44
Las caricaturas exageran y simplifican las características de lo que sea que estén representando, produciendo formas que son muy diferentes a las formas en una fotografía. No creo que las redes neuronales de transferencia de estilo existentes hayan hecho eso.
Tanner Swett
@TannerSwett Mira los ejemplos aquí: imgur.com/a/ue6ap . Algunos de ellos son bastante caricaturescos.
ameba
@amoeba Parecen caricaturescos, sí, pero ninguno de ellos tiene las proporciones distorsionadas que tienen la mayoría de los dibujos animados reales.
Tanner Swett
Estamos hablando de transferencia de estilo aquí. Todos los ejemplos usan un estilo elegido a priori, donde ninguno de estos ha sido caricaturesco (por qué la salida debería verse caricaturesca, cuando se aprendió en Van Gogh). Tal vez podría simplemente ejecutar el proyecto de código abierto (no tuve problemas en el pasado) e intentarlo con entrada de dibujos animados.
Sascha
7

Este es un problema bastante difícil de resolver. Puede ver algunos ejemplos aquí sobre cómo se ha aplicado un estilo de dibujos animados, por ejemplo, del Simpson a una imagen.

Una imagen de dibujos animados generalmente no tiene la estructura que le da este efecto artístico . La forma más fácil de tratar de aplicar esto de alguna manera sería tener un rastreador de rostros y luego tratar de alinear dos caras, por ejemplo, una caricatura y una cara humana, y luego aplicar esto. Eso podría llevarte a algún lado, pero también podría parecer extraño. Luego, puede anotar puntos de referencia en las imágenes para ayudar más y hacer un registro no rígido antes de esto. Esto sigue siendo una solución de mierda, pero lo más parecido que puedo pensar es que podría funcionar para caras.

Editar:

El comentario de @TannerSwett agrega algo a esto, es posible ir a las páginas web de algunos artistas e intentar encontrar sus ilustraciones y tratar de aprender "su" estilo. Todavía no creo que eso sea satisfactorio o que arroje suficientes datos, pero sería algo interesante de probar. No hay una solución generalmente disponible en este momento, pero creo que definitivamente hay algunas personas trabajando en esto, y pronto veremos mejores resultados.

Creo que tal vez el camino a seguir no es el enfoque artístico de la red neuronal. Tal vez sea mejor tener una red que pueda clasificar objetos en una imagen y luego aprender las correspondencias entre los objetos y sus contrapartes de dibujos animados, luego combinar los resultados de una manera significativa.

Gumeo
fuente
1
Ese ejemplo de Simpson me parece bastante impresionante @Gumeo
FabricioG
1

No debería ser demasiado complicado de hacer. No he leído el artículo mencionado, aquí está mi receta:

Codificadores automáticos variacionales

Demostración en línea con caras morphing: http://vdumoulin.github.io/morphing_faces/online_demo.html

y https://jmetzen.github.io/2015-11-27/vae.html para el codez.

Básicamente, esto le brinda una forma de parametrizar el 'estilo' en su caso, por ejemplo, cuán ancho o borroso debe ser el trazo del pincel. Cosas que dependen del estilo particular que intentes emular.

En el ejemplo anterior, diferentes caras 'transformadas' o 'imaginadas' son función de los parámetros en el espacio latente. En la imagen a continuación, eso sería lo que obtienes al cambiar cosas en el nivel de 'código'.

Aquí está la idea básica: imagen original a la izquierda, versión estilizada de la misma imagen a la derecha:

ingrese la descripción de la imagen aquí

Ahora, en teoría, si entrenara un modelo de este tipo en una imagen normal y una imagen estilizada como objetivo y añadiera circunvoluciones, debería poder aprender los filtros del núcleo que corresponden al tipo de "pinceladas" que utiliza el artista .

Por supuesto, eso significa que necesita tener algunos ejemplos de imágenes en versiones originales y estilizadas. Tal conjunto de datos sería bueno para donar a la comunidad; si terminas haciendo esto, me encantaría ver este tipo de trabajo.

¡Buena suerte!

El artículo wiki sobre codificadores automáticos sería un buen punto de partida: https://en.wikipedia.org/wiki/Autoencoder

shuriken x azul
fuente