Estoy lidiando con un problema en el que no pude encontrar suficientes conjuntos de datos (imágenes) para alimentar mi red neuronal profunda para el entrenamiento.
Me inspiró mucho el documento Generative Adversarial Text to Image Synthesis publicado por Scott Reed et al. sobre redes generativas adversas.
Tenía curiosidad por saber que, ¿puedo usar un pequeño conjunto de datos disponible como entrada para un modelo GAN y generar un conjunto de datos mucho más grande para tratar con modelos de red más profundos?
¿Será lo suficientemente bueno?
deep-learning
gan
Alwyn Mathew
fuente
fuente
Respuestas:
Es poco probable que esto agregue mucho más allá de sus esfuerzos directos de recopilación de datos.
La calidad de los resultados actuales de GAN (a partir de 2017) no será lo suficientemente alta. Las imágenes producidas por una GAN suelen ser pequeñas y pueden tener detalles inusuales / ambiguos y distorsiones extrañas. En el documento que vinculó, las imágenes generadas por el sistema a partir de una oración tienen bloques de color creíbles dado el tema, pero sin la oración preparándole qué esperar, la mayoría de ellas no son reconocibles como ningún tema específico.
Las GAN con un propósito menos ambicioso que generar imágenes a partir de oraciones (que a pesar de mis críticas anteriores, una hazaña realmente notable de la OMI) deberían producir imágenes más cercanas a las realistas. Pero su alcance será menor y probablemente no incluya el tipo de imagen deseado. Además, por lo general, el tamaño de salida es pequeño, por ejemplo, 64x64 o 128x128 *, y todavía hay suficientes distorsiones y ambigüedades para que las fotos originales de verdad sean mucho más preferibles.
La GAN está limitada por la biblioteca de capacitación disponible; no funcionará bien si intenta generar imágenes fuera del alcance de sus datos de capacitación. Los resultados que se muestran en el trabajo de investigación, por supuesto, se centran en el dominio proporcionado por los datos de capacitación. Pero no puedes alimentar a cualquiera introducir oración en este modelo y esperar un resultado que sería útil en otro lugar.
Si encuentra una GAN que ha sido capacitada en un conjunto de datos adecuado para su problema, entonces es mejor que intente obtener los mismos datos directamente para su proyecto.
Si se enfrenta a un problema con datos limitados de verdad sobre el terreno, entonces quizás un mejor enfoque para usar una GAN sería utilizar un clasificador previamente entrenado como VGG-19 o Inception v5, reemplazar las últimas capas completamente conectadas, y bien sintonice sus datos. Aquí hay un ejemplo de cómo hacerlo usando la biblioteca Keras en Python ; se pueden encontrar otros ejemplos con búsquedas como "ajustar el clasificador de imágenes CNN".
* Las GAN de última generación han mejorado desde que publiqué esta respuesta. Un equipo de investigación en Nvidia ha tenido un éxito notable al crear imágenes fotorrealistas de 1024x1024 . Sin embargo, esto no cambia los otros puntos en mi respuesta. Las GAN no son una fuente confiable de imágenes para las tareas de clasificación de imágenes, excepto tal vez para subtareas de lo que sea que la GAN ya haya recibido capacitación y sea capaz de generar condicionalmente (o tal vez de manera más trivial, para proporcionar datos fuente para "otras" categorías en clasificadores).
fuente
Tengo exactamente el mismo problema con un DNN que estoy construyendo actualmente. Tomar mi conjunto de datos y sintetizar nuevos datos con una GAN parece una gran idea. Pero la propia GAN solo aprenderá a generar imágenes con la misma varianza de imagen y desviaciones estándar que se aprendió en el conjunto de entrenamiento. Por lo tanto, sus datos recién generados simplemente representarán más permutaciones de la misma distribución de muestra. Esto ayudará a que su NN entrene mejor en la misma distribución, por lo tanto, puede conducir a un mayor sobre entrenamiento.
fuente
Solo desde una perspectiva puramente teórica esto no puede ser posible.
Cualquier conjunto de datos de entrenamiento representa una cierta cantidad de información sobre la estructura de un determinado espacio. Si entrena una GAN en este conjunto de datos, solo aprenderá de la información representada por ese conjunto de datos. Los datos sintetizados por la GAN nunca pueden ser de un espacio más grande que los datos originales, por la sencilla razón: ¿de dónde se supone que proviene esta información? Si no estaba en el conjunto de datos original, tampoco puede estar en los datos sintetizados de la GAN.
Si entrena una red neuronal para la convergencia en un conjunto de datos, esa red neuronal aprenderá cualquier estructura que contenga el conjunto de datos. Cualquier información de entrenamiento artificial sintetizada por una GAN no agregará información nueva. Esa idea debería ser sencilla.
fuente
En realidad, es posible aumentar un pequeño conjunto de datos con GAN para mejorarlo y también aumentará el rendimiento de las redes de clasificación, como puede leer aquí https://arxiv.org/pdf/1803.01229.pdf . Las GAN son capaces de aprender, por ejemplo, formas intermedias que no están involucradas en el conjunto de fechas original pero que aún son válidas. Por lo tanto, las imágenes sintéticas pueden mejorar el tamaño del conjunto de datos y mejorar la precisión de la clasificación CNN.
fuente