【问题标题】:how to process data generated by ImageDataGenerator?如何处理 ImageDataGenerator 生成的数据?
【发布时间】:2019-05-07 11:18:37
【问题描述】:

我正在尝试使用 Keras ImageDataGenerator 使用大型立体数据集来训练我的模型。

对于每个场景,我有两个 rgb 图像,我必须将它们拆分并连接它们以获得 6 个单通道图像作为模型的输入(即这个形状 (6,224,224,1))。对于小型数据集,这很容易,因为我可以将两个子数据集上传到内存中,并将图像的串联处理为 ndarrays。但是使用 ImageDataGenerator 就不一样了,因为我必须确保它从两个子数据集中获取相同的批次,并且能够在将输入传递给我的模型之前处理连接。

post的启发,我尝试了这段代码:

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) 的批次的图像,以获得大小为 (6,224,224) 的 X1Sum,而不是: 产量 [X1i[0], X2i[0]], X2i[1] 我会有: 产生 X1Sum, X2i[1]

【问题讨论】:

  • 你不能做np.concatenate(X1i, X2i) 和重塑吗?我猜X1iX2i 都有(224, 224, 3) 的形状。还是我的假设错了?
  • X1i 和 X2i 是一系列尺寸为 (224, 224, 3) 的图像,我不确定是否可以执行 np.concatenate(list(X1i), list(X2i))。跨度>

标签: keras deep-learning imagedata


【解决方案1】:

在我看来,您可以简单地将列表转换为数组,然后使用np.concatenate 合并频道并使用np.swapaxes 将频道放在前面。带输出的示例代码:

import numpy as np

list_a = []
list_b = []

for i in range(5):
    list_a.append(np.random.rand(4, 4, 3))
    list_b.append(np.random.rand(4, 4, 3))

a = np.array(list_a)
b = np.array(list_b)
print(a.shape)
print(b.shape)
c = np.concatenate((a, b), axis=-1)
print(c.shape)
c = np.swapaxes(c, 0, -1)
print(c.shape)

输出是:

(5, 4, 4, 3)
(5, 4, 4, 3)
(5, 4, 4, 6)
(6, 4, 4, 5)

我想这就是你想要做的。

【讨论】:

    猜你喜欢
    • 2021-08-08
    • 2018-03-05
    • 2018-06-08
    • 2018-08-07
    • 1970-01-01
    • 2018-10-12
    • 2011-07-06
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多