Adversarial Training: Creación de imágenes reales de personas falsas con aprendizaje automático
Por lo menos 5 veces durante mi infancia tuve que dibujar un autorretrato en la escuela, y cada vez que bromeo no resultó mucho. mejor que esto:
Pero obtén esto, con una computadora portátil y un par de cientos de líneas de código, un joven de 15 años como yo puede crear estas imágenes increíblemente realistas de personas falsas :
ahora , aunque están borrosos y parcialmente deformados, ¡el hecho de que una computadora hiciera estas imágenes de personas que no existen desde cero es una locura!
¿Cómo fue exactamente posible que una computadora pueda soñar con estas personas falsas? Todo es gracias a un modelo de aprendizaje automático increíblemente bueno llamado Generative Adversarial Networks o GANs.
¿Qué son las GAN y cómo funcionan?
Las GAN son un tipo de aprendizaje automático que puede mapear la distribución de datos . Para entender mejor lo que esto significa, volvamos a las caras: todas las caras generalmente tienen la misma distribución de características, lo que significa que los ojos, la nariz, la boca, etc., están generalmente en el mismo lugar.
Una GAN puede aprender lo que hace una cara, bueno, una cara.
También puede comprender matices más sutiles como que las personas de piel más oscura probablemente no tengan el cabello rubio, o que el color de la ceja de la gente probablemente coincida con el color de su cabello.
Pero cómo ¿Puede alguien con mi habilidad artística pasar de crear garabatos a crear fotos sospechosamente de alta calidad del aire?
Adversarial Training
Las GAN utilizan un método de entrenamiento inteligente para hacer esto. Están formados por dos redes neuronales competidoras . Una red generadora y una red discriminadora.
El generador crea imágenes, y al discriminador se le dan imágenes reales de entrenamiento (en este caso, un montón de caras), así como las imágenes generadas por el generador e intenta determinar cuáles son reales y cuáles fueron creadas por el generador.
Al principio, ambos chupan, pero a medida que continúan entrenando, mejoran lentamente. Con cada iteración, el generador aprende qué imágenes son más propensas a engañar al discriminador, y crea más de ellas, y el discriminador mejora las imágenes reales de las falsificaciones.
Esto se denomina juego minimax donde una red (el discriminador) intenta maximizar la posibilidad de que sea correcta, mientras que la otra (el generador) intenta engañar al discriminador, o minimizar las posibilidades son correctas.
El discriminador devuelve lo que cree que es probable que una imagen sea real como un número entre 0 y 1. A veces es correcto y otras es incorrecto, pero de cualquier manera, es mejor diferenciarlo Reales de las falsificaciones con cada imagen. Si el generador hace que el discriminador piense que su imagen es 50% (0.5) es probable que sea real o más ha engañado al discriminador con éxito. El GAN alcanza el equilibrio cuando las falsificaciones del generador son tan buenas que se parecen exactamente a las imágenes del conjunto de datos, y el discriminador no tiene más remedio que adivinar aleatoriamente si una imagen es real o no (por lo tanto, devuelve 0.5).
Convolucional profunda GANs
Uno de los mejores (y menos probabilidades de hacer explotar su computadora) los modelos GAN para generar imágenes es el GAN de convolución profunda (DCGAN). Básicamente, esto significa simplemente incorporar capas convolucionales en el GAN para ayudarlo a funcionar de manera más eficiente.
¿Qué son las capas convolucionales?
Las capas convolucionales son solo una forma de extraer características específicas de una imagen en un forma eficiente de energía Cada neurona en la capa escanea una parte diferente de la imagen (a diferencia de cada neurona que mira cada píxel), y extrae diferentes características. Cuantas más capas apilen juntas, más complejas pueden ser las características que extraiga. Con una capa, puede seleccionar características simples como líneas, y con 5 puede elegir una cara completa. Entonces, cuando usa capas convolucionales en una GAN, puede entrenar y ejecutar su red mucho más rápido.
Mi implementación
Pude generar estas impresionantes imágenes con el Marco de aprendizaje profundo de PyTorch. Así es como lo hice:
The Discriminator
https://medium.com/media/ca75785d063f481f922eb628b87d04d4/href
Como puede ver, el discriminador usa capas convencionales, así como la normalización por lotes capas (que ayudan a acelerar la red) y las funciones de activación Leaky ReLU para determinar si una imagen es real. Luego utiliza una función sigmoide para poner la salida en una probabilidad entre 0 y 1. El discriminador no es diferente a un clasificador de imágenes. Simplemente se usa de una manera realmente inteligente para crear imágenes.
La imagen inicial (izquierda) pasa por varias capas convolucionales (bloques) antes de llegar a la capa final donde la red genera la salida si la imagen es real o falsa (1 para real, 0 para falso).
El generador
El generador tiene una estructura muy similar, pero inversa.
https://medium.com/media/b7d4bdb2485941ed6abb12cf99001c2d/href
comienza con un vector de 100 valores aleatorios entre -1 y 1. Luego, coloca el vector a través de varias capas de transposición convolucional (así como funciones de activación y normalización de lotes) para convertir este vector en una imagen.
Una capa de transposición convolucional hace lo contrario de una capa convolucional: en lugar de asignar un grupo de valores (en este caso valores de píxel) a un valor, asigna un valor a un grupo de valores. Para dar un ejemplo concreto, una capa convolucional convertiría los números 1, 2, 3, 4, 5 en 3, y una capa de transposición convolucional convertiría el número 3 en los números 1, 2, 3, 4, 5. [19659034] Resultado de la imagen para el diagrama discriminador DCGAN ” src=”https://cdn-images-1.medium.com/proxy/1*Tv7wjpBTB0Pg6rWfLm4YSA.png” />
La razón por la que cada imagen que produce el generador es original es que usa el vector de inicio (de 100 valores aleatorios) como una semilla que luego se asigna al distribución estadística del conjunto de datos. A través del entrenamiento, el generador tiene que descubrir cuál es la mejor manera de transformar este vector en una cara.
Entrenamiento
Entrené a mis GAN utilizando este proceso de 5 pasos:
- Tengo el discriminador clasifica un lote de fotos reales
- Ajusta el discriminador según lo bien que hizo
- Haz que el discriminador clasifique un lote de fotos falsas
- Ajusta el discriminador y el generador según lo mal que hizo
- Repite
] Este proceso permite al discriminador y al generador mejorar juntos. Si una red es significativamente mejor que la otra (ya sea para hacer o detectar falsificaciones), la otra red tiene dificultades para mejorar.
¿Qué pueden hacer las GAN?
Las GAN tienen una tonelada de aplicaciones. Pueden hacer música y crear imágenes falsas de casi cualquier cosa, pero aquí están algunas de las aplicaciones más útiles.
En primer lugar, las GAN pueden ayudarlo make bank, y quiero decir de verdad.
Esta pintura aquí fue hecha por un GAN y se vendió por $ 432 … mil (sí).
Aplicaciones comerciales
Ofrecen un ] gran oportunidad para uso comercial.
Imagine a los mercadólogos simplemente escribiendo en una computadora el tipo de publicidad que quieren crear (escenas, guiones, etc.) y haciendo todo lo posible para ellos en lugar de gastar cientos de miles, si no millones de dólares en filmación y edición.
O mejor aún, simplemente escriba un guión para una película y haga que un GAN genere toda la maldita película para usted. Este tipo de cosas ya están empezando a suceder hoy .
Aplicaciones médicas
Las GAN incluso tienen algunas aplicaciones médicas bastante impresionantes.
Los investigadores utilizaron una GAN para generar imágenes de la RMN exploraciones cerebrales que luego se usaron para entrenar a otra red neuronal que ayuda a los profesionales médicos a analizar exploraciones cerebrales de pacientes reales .
Incluso se están realizando investigaciones sobre cómo podrían usarse las GAN para descubrir nuevas drogas ! (¡¿Qué?!)
Aquí hay una lista rápida de otras aplicaciones que existen en la actualidad:
- Mejora de la resolución de imágenes de baja calidad
- Creación de imágenes fotorrealistas a partir de bocetos
- Eliminación de objetos de imágenes
- Música creación
Takeaways
Las GAN son un campo nuevo y prometedor en el aprendizaje automático, definitivamente son algo que hay que tener en cuenta. Yann LeCun, director de investigación de IA en Facebook, dijo que GAN es uno de los desarrollos más importantes en AI.
Aquí hay algunas cosas importantes para recordar:
- Un GAN utiliza dos redes neuronales competentes para generar datos que se parecen mucho a los datos de entrenamiento.
- La red discriminadora trata de determinar si una imagen que se le da es real o falsa.
- El generador intenta engañar al discriminador para que piense que sus imágenes son reales.
- Los GAN tienen un toneladas de aplicaciones comerciales y médicas potenciales que las convierten en una tecnología muy prometedora para que las empresas e investigadores puedan estudiar e invertir.
Adversarial Training: Creando falsificaciones realistas con aprendizaje automático se publicó originalmente en Hacia la ciencia de datos en Medio, donde las personas continúan la conversación resaltando y respondiendo a esta historia.