python - Keras ImageDataGenerator——作为 Save_Prefix 分类?

标签 python image classification keras

如何在文件名中保存带有类标签的增强图像?或者,它有没有办法知道新图像属于哪个类?

编辑:

datagen = ImageDataGenerator(horizontal_flip=True, vertical_flip=True)
i = 0
for batch in datagen.flow_from_directory('data/train', target_size=
(100,100),
    shuffle=False, batch_size=batch_size, save_to_dir='data/train/'):
    i += 1
    if i > 20: # save 20 images
        break  # otherwise the generator would loop indefinitely
print("Saved flipped images")

我在 data/train 中有三个类子目录。运行此命令后,我无法判断哪些图像已被增强,但我确实看到图像总数的大约三分之一已被保存。我的代码中是否缺少某些内容来指定按类命名图像,以及循环遍历每个类以创建新图像?

编辑#2: 文件夹结构:data/train 单独文件夹中的 3 个类:n02088364、n02096585、n02108089 新创建的图像保存到 data/train,而不是单独的类文件夹。

最佳答案

如果您想将图像保存在与标签同名的文件夹下,那么您可以遍历标签列表并在循环中调用增强代码。

from tensorflow.keras.preprocessing.image import ImageDataGenerator  

# Augmentation + save augmented images under augmented folder

IMAGE_SIZE = 224
BATCH_SIZE = 500
LABELS = ['lbl_a','lbl_b','lbl_c']

for label in LABELS:
  datagen_kwargs = dict(rescale=1./255)  
  dataflow_kwargs = dict(target_size=(IMAGE_SIZE, IMAGE_SIZE), 
                        batch_size=BATCH_SIZE, interpolation="bilinear")

  train_datagen = tf.keras.preprocessing.image.ImageDataGenerator(
    rotation_range=40,
    horizontal_flip=True,
    width_shift_range=0.1, height_shift_range=0.1,
    shear_range=0.1, zoom_range=0.1,
    **datagen_kwargs)

  train_generator = train_datagen.flow_from_directory(
      'original_images', subset="training", shuffle=True, save_to_dir='aug_images/'+label, save_prefix='aug', classes=[label], **dataflow_kwargs)
  
  # Following line triggers execution of train_generator
  batch = next(train_generator) 

那么当生成器可以直接传递给模型时为什么要这样做呢?如果您想使用 tflite-model-maker,它不接受生成器并接受每个标签的文件夹下的标签数据:

from tflite_model_maker import ImageClassifierDataLoader
data = ImageClassifierDataLoader.from_folder('aug_images')

结果

aug_images
| 
|__ lbl_a
|   |
|   |_____aug_img_a.png
|
|__ lbl_b
|   |
|   |_____aug_img_b.png
| 
|__ lbl_c
|   |
|   |_____aug_img_c.png

注意:您需要确保文件夹已经存在。

关于python - Keras ImageDataGenerator——作为 Save_Prefix 分类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44161940/

相关文章:

python - pip install regex 无法在 Anaconda python3.6.9 virtualenv 上构建

html - 调整图像大小,并在容器内水平和垂直居中

css - CSS 中的背景图像不适用于三星电视 SDK 2011 模型/模拟器

python - 如何在python中进行PCA和SVM分类

python - 如何打印变量的名称和值?

python - 当在循环中添加一个字符串时,我是如何减一的?

python - 使用 Python 的耦合微分方程

java - Android 将自定义图像设置为标签文本

java - 在 Java 代码中使用 weka 的规则

python - 如何从 Python 中的 SVM 分类器中提取支持向量?