febrero 9, 2019 6:00 pm

Jesús

?? Read in English

En las últimas semanas hemos hablado sobre redes neuronales que destacan por su exotismo y poder, tales como los autoencoders y las GANs.

Sin embargo, sabemos que a medida que nuestro problema gana complejidad, también lo hacen nuestras soluciones. En el caso particular del área de computer vision, donde lidiamos con imágenes pertenecientes a un enorme espectro, usualmente los mejores resultados vienen de la mano de añadir convoluciones a una arquitectura preexistente.

De hecho, este último hecho lo atestiguamos cuando construimos nuestro segundo autoencoder (los detalles aquí), el cual obtuvo mejores resultados que la primera versión, la cual se basaba en capas totalmente conectadas, en vez de en convolucionales y de reescalado.

Así, pues, el día de hoy concentraremos nuestros esfuerzos en la construcción de una variedad de GAN más poderosa, especialmente diseñada para la generación de imágenes, conocida como DCGAN, o Deep Convolutional GAN, lo que se traduciría a Redes Convolucionales Profundas Generativas Adversas.

Dado que en el fondo es una GAN, la teoría es la misma que la expuesta en este artículo.

Tal como sucede con los autoencoders convolucionales, para poder generar una imagen tenemos que, de alguna forma, reconstruirla a partir de volúmenes más pequeños. En aquella oportunidad utilizamos una técnica conocida como upsampling. El día de hoy, haremos uso de un tipo de capa especial conocida como convolución transpuesta, la cual, en esencia actúa de manera opuesta a las capas convolucionales tradicionales: Genera volúmenes más grandes y superficiales, en vez de más pequeños y profundos. Eventualmente, el resultado será una imagen.

Puesto que estas redes son bastante más complejas, si no tomamos las medidas necesarias, tienden a no aprender lo suficientemente rápido, o en absoluto. Por este motivo, necesitamos aplicar normalización por lotes. Para conocer más sobre este mecanismo, te animo a que leas este post.

Con la meta de solidificar nuestro entendimiento, implementaremos una DCGAN en el siguiente notebook. Esta vez generaremos imágenes a color, lo cual es considerablemente más difícil que producir números escritos a mano alzada en blanco y negro.

Puedes encontrar el código utilizado en este post aquí.

¿Qué te parecen las DCGANs? ¿Tienes algún proyecto en el que te podrían ayudar? Déjamelo saber en los comentarios.

Hasta la próxima.

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.