¿ImageDataGenerator agrega más imágenes a mi conjunto de datos?

Estoy tratando de hacer una clasificación de imágenes con el modelo Inception V3. ¿ ImageDataGenerator de Keras crea nuevas imágenes que se agregan a mi conjunto de datos? Si tengo 1000 imágenes, ¿esta función se duplicará con las 2000 imágenes que se usan para el entrenamiento? ¿Hay alguna forma de saber cuántas imágenes se crearon y se incorporaron al modelo?

En cada época, el ImageDataGenerator aplica una transformación en las imágenes que tiene y utiliza las imágenes transformadas para el entrenamiento. El conjunto de transformaciones incluye rotación, zoom, etc. Al hacer esto, de alguna manera está creando nuevos datos (es decir, también llamado aumento de datos ), pero obviamente las imágenes generadas no son totalmente diferentes de las originales. De esta manera, el modelo aprendido puede ser más robusto y preciso, ya que está entrenado en diferentes variaciones de la misma imagen.

steps_per_epoch establecer el argumento steps_per_epoch del método de fit en n_samples / batch_size , donde n_samples es el número total de datos de entrenamiento que tiene (es decir, 1000 en su caso). De esta manera, en cada época, cada muestra de entrenamiento se aumenta solo una vez y, por lo tanto, se generarán 1000 imágenes transformadas en cada época.

Como se ha escrito oficialmente aquí, ImageDataGenerator es un generador de lotes de datos de imágenes tensoriales con aumento de datos en tiempo real. Los datos se pasarán en bucle (en lotes). Esto significa que sobre la marcha se aplicarán transformaciones al lote de imágenes al azar . Por ejemplo:

 train_datagen = ImageDataGenerator( rescale=1./255, #scale images from integers 0-255 to floats 0-1. shear_range=0.2, zoom_range=0.2, # zoom in or out in images horizontal_flip=True) #horizontal flip of images 

En cada nueva época, se aplicarán nuevas transformaciones aleatorias y, de esta manera, entrenaremos con un poco diferente de imágenes a la vez. La obtención de más datos no siempre es posible o posible, usar ImageDataGenerator es útil de esta manera.

También tenga en cuenta que: Estas imágenes aumentadas no se almacenan en la memoria, se generan sobre la marcha durante el entrenamiento y se pierden después del entrenamiento. No puedes volver a leer esas imágenes aumentadas.

No almacenar esas imágenes es una buena idea porque nos quedaríamos sin memoria muy pronto, almacenaríamos una gran cantidad de imágenes.

Cuando intentamos resolver el problema de menos datos, ¿no es una buena idea boost el conjunto de datos agregando imágenes aumentadas?

https://medium.com/nanonets/how-to-use-deep-learning-when-you-have-limited-data-part-2-data-augmentation-c26971dc8ced

Tome el enlace anterior como referencia donde el autor mencionó el poder de agregar imágenes aumentadas en nuestro conjunto de datos de capacitación.

Entonces, ¿qué se debe hacer? ¿Deberíamos boost las imágenes y save_to_dir y luego entrenar el modelo o simplemente usar steps_per_epoch = 2 * (n_samples / batch_size) y entrenar al doble de la cantidad de datos por época?