【问题标题】:How to use ImageDataGenerator.flow_from_directory to save each class/label in other subfolders?如何使用 ImageDataGenerator.flow_from_directory 将每个类/标签保存在其他子文件夹中?
【发布时间】:2021-04-14 03:37:51
【问题描述】:

编辑:
设置:

Win 10 x64
Python 3.8.7
TF version 2.4.0
Keras version 2.4.3 #not needed I think but

我的数据集包含如下结构的图像:

dataset/
  class1/
    img1class1.jpg
    ...
  class2/
    img1class2.jpg
    ...

我正在使用来自tensorflow.keras.preprocessing.image.ImageDataGeneratorflow_from_directory 方法,选项如下:

gen = imgen.flow_from_directory(
  'dataset/',
  target_size = (160, 120),
  batch_size = 25,
  class_mode = 'binary',
  save_to_dir = 'new_dataset/',
  save_prefix = 'new',
  save_format = 'jpg'
)

但它会将每个类中的每个图像都放入一个文件夹new_dataset/

new_dataset/
  new1.jpg #while that could be from class 1
  new2.jpg # and that from class 2
  ...

是否可以“强制”flow_from_directory 使文件夹结构为:

new_dataset/
  class1/
    new1.jpg
    ...
  class2/
    new1.jpg
    ...

batch_size 是否也有可能仅从一个特定的 img“创建”图像,我的意思是 img1class1.jpg 将在整个批次中但具有其他转换? 我想做某事,比如从 1 张旧图像中提取 25 张新图像。

对不起我的英语,我希望你能理解(:

【问题讨论】:

    标签: python-3.x keras tensorflow2.0 tensorflow-datasets tf.keras


    【解决方案1】:

    我找到了“解决方法”,所以就这样吧:

    import os
    
    labels = {}
    
    for i, one_class in enumerate(os.listdir('dataset')):
      gen = idg.flow_from_directory(
        'dataset',
        target_size = (160, 120),
        batch_size = 25,
        class_mode = 'binary',
        classes = [one_class],
        save_to_dir = f'dataset/{one_class}',
        save_prefix = 'new_image',
        save_format = 'jpg'
      )
    
      ...
      
      labels[one_class] = i #If u need them...
    
    

    【讨论】:

      猜你喜欢
      • 2011-07-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多