如何在不使用 model.fit_generator 的情况下对 Keras 中的图像应用旋转?

2023-12-19

我正在使用卷积神经网络研究图像像素分类问题。 我的训练规模images is 128x128x3和大小 标签mask is 128x128

我在 Keras 中进行如下训练:

Xtrain, Xvalid, ytrain, yvalid = train_test_split(images, masks,test_size=0.3, random_state=567)

model.fit(Xtrain, ytrain, batch_size=32, epochs=20, verbose=1, shuffle=True, validation_data=(Xvalid, yvalid))

但是,我想应用随机二维旋转Xtrain and ytrain这也是尺寸128x128x3 and 128x128分别。更具体地说,我想对每个纪元迭代应用这种旋转。

暂时我想继续使用model.fit并且不使用model.fit_generator,据我所知,数据增强通常是使用.fit_generator.

所以本质上,我想循环model.fit以便Xtrain and ytrain每个时期随机轮换。我是 Python 和 Keras 的新手,所以如果可能的话,欢迎任何见解。


下面是使用 ImageDataGenerator 将输出保存到指定目录的示例,从而绕过使用 model.fit_generator 的要求。

from keras.preprocessing.image import ImageDataGenerator, array_to_img, img_to_array, load_img

datagen = ImageDataGenerator(
        rotation_range=40,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True,
        fill_mode='nearest')

img = load_img('data/train/cats/cat.0.jpg')  # this is a PIL image
x = img_to_array(img)  # this is a Numpy array with shape (3, 150, 150)
x = x.reshape((1,) + x.shape)  # this is a Numpy array with shape (1, 3, 150, 150)

# the .flow() command below generates batches of randomly transformed images
# and saves the results to the `preview/` directory
i = 0
for batch in datagen.flow(x, batch_size=1,
                          save_to_dir='preview', save_prefix='cat', save_format='jpeg'):
    i += 1
    if i > 20:
        break  # otherwise the generator would loop indefinitely

摘自这里:https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

您可以更改参数以适合您的用例,然后生成 X_train 和 X_valid 或任何数据集,然后加载到内存中并使用普通的旧 model.fit。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不使用 model.fit_generator 的情况下对 Keras 中的图像应用旋转? 的相关文章