escena roll: Me pytorch GAN e hice un fracasado modelo de generación de Pokémon

prefacio

Pokémon ya es una animación muy conocido, hoy podemos confirmar si desea utilizar el aprendizaje profundo crea automáticamente un nuevo Pokemon para él.

Me utilizó finalmente generó correctamente contra la red (GAN) Pokemon generar una imagen similar, pero esta imagen no se parece a Pokémon.
A pesar de este intento fracasó, pero creo que otras personas pueden gustar este proceso, y ahora que compartía a cabo.

red GAN genera confrontación


Aquí no queremos pasar mucho tiempo hablando de lo que GAN sí, pero la imagen de arriba es una explicación muy simple del proceso.
Entrenados dos redes - identificar y generador. Aprender a generar y absorber al azar de generación de ruido de la imagen se parece a la imagen de los datos de entrenamiento. Se genera mediante el envío de su imagen a un discriminador de la red, la red discriminador entrenado puede reconocer una imagen real y la imagen generada.
Generador optimizado discriminador trampa mejor, el discriminador optimizado para detectar mejor la imagen generada. Así, los dos de ellos junto con el progreso.

datos

Así que mi suposición es que puedo usar una imagen Pokémon real como un conjunto de entrenamiento a GAN tren. El resultado será un generador, y luego será capaz de crear nuevos Pokémon!
Mi primer reto es encontrar la imagen del Pokémon. Afortunadamente, los conjuntos de datos Kaggle al rescate!
Algunas personas han pensado en una idea similar, aunque no sonaba gran éxito en la generación de nueva imagen Pokemon, sino porque se tomó el tiempo para recoger 800 imágenes, se decidió subirlos a Kaggle conjunto de datos. Esto me ahorra mucho tiempo.
Nos fijamos en este conjunto de datos:

Este es un bastardo ajo Bulbasaur tamaño de la imagen es de 256 * 256

Ahora, con los datos, el siguiente paso es seleccionar el tipo de GAN a su uso. Puede haber cientos de variantes de GAN, sino que se utiliza en el pasado DCGAN puede ver buenos resultados.
DCGAN eliminado de todas las capas de la red neuronal está completamente conectado, mediante muestreo de convolución de transposición, convolución y Span (entre otras cosas) se utilizó en lugar de la piscina máxima.
Me gusta DCGAN, en comparación con otros que probé GAN, que parecen ser más robusto, por lo que no hay cambios importantes en los parámetros pueden ser más fáciles de entrenar.
De hecho, DCGAN tan popular que es un buen ejemplo de PyTorch logrado. Igualmente importante es que su ejemplo puede leer la entrada directamente desde la carpeta de archivos. Por lo tanto, utilice el siguiente comando, yo era capaz de comenzar a entrenar a mi GAN:

python main.py --dataset folder --dataroot /pokemon/  --cuda --niter 10000 --workers 8

Este comando lee las imágenes de una carpeta, ejecute para cargar los datos en la GPU con 8 programa de trabajo y ejecutar 10.000 iteraciones.

Resulta que este problema tiene que ser 10.000 iteraciones, pero quiero ver hasta dónde puede empujar. Vamos a ver!

resultado

El primer paso comienza con una red ignorante, por lo tanto, produce único ruido:

Cada cuadro es una imagen de píxeles 64 x 64, que está tratando de generar Pokémon de nuestro constructor. Desde nuestra red de 8 x 8, así que tratamos de generar 64 diferentes Pokemon. Me reducirlo a 64 x 64, porque cuando se intenta generar una imagen más grande de este algoritmo puede llegar a ser inestable.

Después de 50 iteraciones, un poco medias

150 iteraciones, la imagen se vuelve clara

después de 3.700 puntos, habrá algunas imágenes agradables aparecido. A partir de entonces, se inicia tienden a producir peores resultados:

El cual no se ve en absoluto como Pokemon!
Pero su navegador reduce a aproximadamente 25%, y comprobar de nuevo. A lo lejos, se ven sorprendentemente similar a la verdadera Pokémon.
¿Por qué? Puesto que somos la imagen de 64 x 64 está entrenado, por lo que la imagen forma y color parecido Pokemon discriminador confundirse fácilmente, y por lo tanto no tiene que generar mejores.

El siguiente paso?

En mi opinión, el siguiente paso obvio es la formación de una resolución más alta GAN. De hecho, he llevado a cabo una serie de intentos.
Mi primer intento de re-escribir el código para PyTorch escalado de imagen de 256 x 256 a. El código es válido, pero DCGAN se derrumbó, no podía estabilizar la nueva articulación. Creo que la razón principal es porque sólo tengo alrededor de 800 imágenes. Y, aunque tenía algunos datos para expandir, pero no lo suficiente para entrenar a mayor resolución DCGAN.
Entonces, trato de usar la teoría de la relatividad GAN, que GAN se ha realizado con éxito la capacitación para el éxito de datos de alta resolución con un conjunto de datos más pequeño, pero no puedo conseguir que funcione.
Por ahora, la cuestión debe aparecer en los datos, la cantidad de datos es demasiado pequeño, o no puede satisfacer las necesidades de formación. Pero voy a seguir para tratar algunas otras ideas para generar una resolución más alta Pokemon, si necesito el trabajo, voy a liberar técnica que utilizo.

Dirección original: https://imba.deephub.ai/p/7cfa3770716511ea90cd05de3860c663

 

Supongo que te gusta

Origin www.cnblogs.com/deephub/p/12594111.html
Recomendado
Clasificación