Keras中 ImageDataGenerator函数的参数用法

介绍ImageDataGenerator函数

ImageDataGenerator是Keras中的一个实用工具,用于扩充和处理图像数据。它可以根据一些指定的参数对输入的图像进行多样化的变换,如旋转、缩放、翻转等,从而增加了数据的多样性,提高了模型的泛化能力。

在深度学习中,数据扩充是一种常用的技术,尤其当数据集较小的时候。数据扩充通过对训练集中的图像进行一系列变换来生成新的图像,从而增加了数据量,提高了模型的性能。ImageDataGenerator函数可以快速实现这一过程。

ImageDataGenerator函数的基本用法

首先,在使用ImageDataGenerator函数之前,我们需要导入keras中的相关模块:

from keras.preprocessing.image import ImageDataGenerator

设置ImageDataGenerator对象

要创建ImageDataGenerator对象,我们可以使用ImageDataGenerator的构造函数。以下是一些常用的参数设置:

rotation_range: 设置旋转角度范围,单位为度

width_shift_range: 设置水平位移范围,作为总宽度的一部分

height_shift_range: 设置垂直位移范围,作为总高度的一部分

shear_range: 设置剪切强度,逆时针方向的剪切角度

zoom_range: 设置随机缩放的范围

horizontal_flip: 设置是否随机水平翻转

vertical_flip: 设置是否随机垂直翻转

fill_mode: 设置填充新创建像素的方法,可选的值为:"constant"、"nearest"、"reflect"、"wrap"

使用ImageDataGenerator对象生成扩充后的图像

一旦我们设置了ImageDataGenerator对象,我们可以使用它的.flow()或.flow_from_directory()方法来生成新的图像。以下是两个方法的简要说明:

.flow(x, y, batch_size): 从Numpy数组中生成扩充后的数据。x是输入数据,y是标签。这个函数会不断生成扩充后的图像。

.flow_from_directory(directory): 从指定的文件夹中生成扩充后的数据。这个方法可以自动根据文件夹中的子文件夹创建类标签。

ImageDataGenerator的参数用法

temperature参数

temperature参数是ImageDataGenerator中的一个非常有用的参数。它用于控制随机变换的强度。较低的温度会导致较小的变换,而较高的温度会导致较大的变换。

当temperature设为较低的值(0.1)时,生成的图像可能只有微小的变化,这对于对原始图像进行轻微变换的任务非常有用。例如:

datagen = ImageDataGenerator(rotation_range=10, temperature=0.1)

当temperature设为较高的值(1.0)时,生成的图像可能会有较大的变化。这对于希望通过随机变换增加数据集多样性的任务非常有用。例如:

datagen = ImageDataGenerator(rotation_range=10, temperature=1.0)

下面我们将展示一个完整的示例代码,用于演示ImageDataGenerator函数中temperature参数的用法:

import matplotlib.pyplot as plt

from keras.preprocessing.image import ImageDataGenerator

datagen = ImageDataGenerator(

rotation_range=20,

width_shift_range=0.1,

height_shift_range=0.1,

shear_range=0.2,

zoom_range=0.2,

horizontal_flip=True,

vertical_flip=True,

fill_mode='nearest',

temperature=0.6

)

img_path = 'path_to_image.jpg'

img = plt.imread(img_path)

plt.figure(figsize=(8, 8))

plt.subplot(2, 2, 1)

plt.imshow(img)

plt.title('Original Image')

img = img.reshape((1, ) + img.shape)

i = 0

for batch in datagen.flow(img, batch_size=1):

plt.subplot(2, 2, i+2)

plt.imshow(batch[0])

plt.title('Generated Image')

i += 1

if i >= 3:

break

plt.tight_layout()

plt.show()

总结

ImageDataGenerator函数是一个非常有用的工具,可以方便地对图像数据进行扩充和处理。通过调整函数的各种参数,我们可以控制生成图像的多样性,并从原始图像中生成多个变体。其中,temperature参数是一个非常有用的参数,它可以调整随机变换的强度。通过合理地使用ImageDataGenerator函数,我们可以提高深度学习模型的性能和泛化能力。

后端开发标签