我正在尝试使用 Keras ImageDataGenerator 用大型立体数据集训练我的模型。
对于每个场景,我有两个 rgb 图像,我必须将它们拆分并连接起来,以获得 6 个单通道图像作为模型的输入(即这个形状 (6,224,224,1))。对于小型数据集,这很容易,因为我可以将两个子数据集上传到内存中,并将图像的串联处理为 ndarrays。但是对于 ImageDataGenerator,情况就不一样了,因为我必须确保它从两个子数据集中获取相同的批次,并且能够在将输入传递给我的模型之前处理连接。
受这篇文章的启发,我尝试了以下代码:
input_imgen = ImageDataGenerator()
def generate_generator_multiple(generator,dir1, dir2, batch_size):
genX1 = generator.flow_from_directory(directory=dir1,
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
genX2 = generator.flow_from_directory(directory=dir2,
color_mode="rgb",
batch_size=batch_size,
class_mode="categorical",
shuffle=False)
while True:
X1i = genX1.next()
X2i = genX2.next()
yield [X1i[0], X2i[0]], X2i[1]
在我的情况下,我如何处理两个系列 X1i[0] 和 X2i[0] 以及批量大小(224,224,3)的图像,以获得 X1Sum 的大小(6,224,224),而不是:yield [X1i[0] , X2i[0]], X2i[1] 我将得到:yield X1Sum, X2i[1]