使用 ImageDataGenerator 实现自动编码器

数据挖掘 喀拉斯 张量流 卷积神经网络 自动编码器
2022-02-24 03:45:45

我正在使用本文中演示的概念。他们的训练数据由“好”图像和“坏”图像组成。他们使用“BAD”图像(X)训练 AE,使其产生“GOOD”图像。在这种情况下,“坏”图像可能与“好”图像非常相似,但有小凹痕或划痕。

我已经成功使用ImageDataGeneratormnist数字数据,但在这种情况下,它是通过使用X -> X或不使用ImageDataGenerator模型拟合代码来训练的model.fit(x_train, x_train)

然而,在这个 AE 问题中,我们想使用X_good_and_defect -> X_goodor 来训练model.fit(x_good_and_defect_train, x_good_train)不知道如何使用ImageDataGenerator.


我正在使用 keras 的图像数据生成器来加载图像。

train_dir = r'chunks/training'
train_datagen = ImageDataGenerator(rescale=1 / 255)
train_generator = train_datagen.flow_from_directory(train_dir, target_size=(256,256), 
                   color_mode='grayscale', class_mode='input', batch_size=256)
...
autoencoder.fit(train_generator,
                epochs=5,
                batch_size=128,
                shuffle=True,
                validation_data=(test_generator, train_generator),
                callbacks=[])
1个回答

正如论文中的下图所示,在训练期间,您可以从较大的图像中创建补丁。这些补丁没有缺陷,因此可以被视为“好”图像。要获得伴随的带有缺陷的“坏”图像,您可以在“好”图像上综合生成这些缺陷。

在此处输入图像描述

因此,您的数据生成器应遵循以下步骤:

  1. 阅读完整尺寸的“好”图像
  2. 从全尺寸图像创建补丁
  3. 将缺陷综合添加到步骤 2 中的补丁中
  4. 返回步骤 2 中的“好”补丁和步骤 3 中的“坏”补丁

然后,您使用“坏”补丁作为输入和您的“好”补丁作为输出来训练您的模型。