flow_image_from_directory:生成的图像数量不正确



我正在使用" exception "建模并对其进行微调。我没有大量的数据,所以我正在做数据增强多亏了flow_image_from_directory。

为了确保在将其应用于具有许多增强功能的整个数据集之前一切正常运行,除了简单的"重新缩放"之外,我已经尝试了没有增强功能的代码。并将其应用于20张图片(我有4个班级,每个班级5张)。

my_train_generator <- image_data_generator(rescale = 1/255, 
validation_split = 1/5)
my_train_images <- flow_images_from_directory(directory = my_train_directory,
generator = my_train_generator,
target_size = c(width, height),
color_mode = "rgb",
batch_size = my_batch_size,
class_mode = "categorical",
shuffle = FALSE,
save_to_dir = my_augm_train_directory,
save_format = "jpeg",
subset = 'training')
my_validation_images <- flow_images_from_directory(directory = my_train_directory,
generator = my_train_generator,
target_size = c(width, height),
color_mode = "rgb",
class_mode = "categorical",
batch_size = my_batch_size,
shuffle = FALSE,
save_to_dir = my_augm_val_directory,
save_format = "jpeg",
subset = 'validation')

然而,由于"save_to_dir"选项,我看到整个拟合过程中生成的图片数量不像预期的那样:

  • 火车,验证分割是1/5——>训练集为16张图像(每个类4张),验证集为4张图像(每个类1张)
  • batch = 1 and epoch = 1

基于此,从训练集增强生成的文件中应该有16张图像,从验证生成的文件中应该有4张图像。我实际上分别有36个和5个……此外,除了"重新缩放"之外,没有其他转换。应用于基于训练集的文件中的图像,但5张增强验证图像中有一些被翻转。

我在这里迷路了,所以提前感谢你的帮助:)

不确定您使用的是什么语言,但是对于python,下面的代码演示了ImageDataGenerator如何创建增强图像

my_train_batch_size=16 # each time next is called for train generator 16 image files and labels are returned
my_valid_batch_size=4 # each time next is called for valid generator 16 image files and labels are returned
width=100
height=100
my_train_directory=r'C:Temptemp' # directory has 4 classes with 5 images in each class
my_augm_train_directory=r'C:Temptempaugtrain' # where to store augmented train images
my_augm_val_directory=r'C:Temptempaugvalid' # where to store augmented validation images
my_train_generator = ImageDataGenerator(rescale = 1/255, 
validation_split = 1/5) # define the generator
my_train_images= my_train_generator. flow_from_directory(directory = my_train_directory,                                              
target_size = (width, height),
color_mode = "rgb",
batch_size = my_train_batch_size,
class_mode = "categorical",
shuffle = False,
save_to_dir = my_augm_train_directory,
save_format = "jpeg",
subset = 'training') # ddefine train images
my_validation_images = my_train_generator. flow_from_directory(directory = my_train_directory,                                                   
target_size = (width, height),
color_mode = "rgb",
class_mode = "categorical",
batch_size = my_valid_batch_size,
shuffle = False,
save_to_dir = my_augm_val_directory,
save_format = "jpeg",
subset = 'validation') # define validation images
images, labels=next(my_train_images) # call next of the train images generator - fetches a batch of 16 files
images, labels=next(my_validation_images) # call next of the validation images generator - fetches a batch of 4 files
train_aug_list=os.listdir(my_augm_train_directory) # list of files in train aug directory
valid_aug_list=os.listdir(my_augm_val_directory) # list of files in valid aug directory
print('files in my_augm_train_directory= ', len(train_aug_list), '  files in my_augm_val_directory= ', len(valid_aug_list))

打印结果为

files in my_augm_train_directory=  16   files in my_augm_val_directory=  4

注意,在运行代码之前,必须创建目录来存储增强的图像。

最新更新