使用Keras图像生成器进行数据增强使得训练非常缓慢

时间:2018-04-08 07:09:29

标签: computer-vision keras keras-2

我有一个大数据集。数据大约是100k。我使用 ImageDataGenerator 进一步扩充了数据。但它使训练过程非常缓慢。没有keras图像生成器功能,训练过程大约需要3分钟,但是当我使用ImageDataGenerator功能时,花了大约3个小时。我用这个代码进行图像增强。如何提高绩效?

datagen = ImageDataGenerator(horizontal_flip=True,
                             vertical_flip=True,
                             featurewise_center=True,
                             featurewise_std_normalization=True,
                             zoom_range=0.2,
                             rotation_range=90.)
datagen.fit(data)
epochs = 50

model.fit_generator(datagen.flow(data, label, batch_size=128),
                    steps_per_epoch=patches.shape[0],
                    epochs=epochs)

1 个答案:

答案 0 :(得分:0)

以下是一些可以尝试的事情。

预处理输入

我不熟悉使用此参数featurewise_std_normalization=True,但我会尝试使用预处理函数。如果它在每个批次上计算这种转换,那么它可能会消耗大量资源。您可以在训练之前转换所有数据,以避免不断计算。

降低维度

如果图像的尺寸大于224x224,则可以缩小尺寸。在很多情况下你甚至可以尝试变小。

每个时期减少步数

看看每个时期的步骤。我不确定现在基于上面的代码输入什么(patches.shape [0])但是如果训练那么慢,我不会比data_size // batch_size高得多(你可以更高,因为它增加了数据但需要更多时间。)

升级设备 如果这些都不起作用,我建议你拿一个GPU,如果你还没有。如果这是在CPU上完成的,那就解释了它。图像变换是CPU的相对较大的矩阵计算。