作者:piggyear | 来源:互联网 | 2024-11-28 16:05
一、Keras ImageDataGenerator参数详解
from keras.preprocessing.image import ImageDataGenerator
ImageDataGenerator(
featurewise_center=False,
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False,
rotation_range=0.,
width_shift_range=0.,
height_shift_range=0.,
shear_range=0.,
zoom_range=0.,
channel_shift_range=0.,
fill_mode='nearest',
cval=0.,
horizontal_flip=False,
vertical_flip=False,
rescale=None,
preprocessing_function=None,
data_format=None,
)
参数解释:
featurewise_center
:布尔值,用于将输入数据集的均值设置为0,按特征执行。
samplewise_center
:布尔值,用于将每个输入样本的均值设置为0。
featurewise_std_normalization
:布尔值,用于将输入数据集标准化,即将数据除以其标准差,按特征执行。
samplewise_std_normalization
:布尔值,用于将每个输入样本除以其自身的标准差。
zca_whitening
:布尔值,用于对输入数据执行ZCA白化。
rotation_range
:整数,表示数据增强时图片随机旋转的角度范围。角度值介于0到180度之间,具体值决定了旋转的最大角度。
width_shift_range
:浮点数,表示数据增强时图片沿宽度方向随机平移的比例。
height_shift_range
:浮点数,表示数据增强时图片沿高度方向随机平移的比例。
shear_range
:浮点数,表示数据增强时图片的剪切强度,即剪切变换的角度。
zoom_range
:浮点数或列表,表示数据增强时图片随机缩放的比例。如果提供单个浮点数,则缩放范围为 [1 - zoom_range, 1 + zoom_range]。
channel_shift_range
:浮点数,表示数据增强时图片随机通道偏移的幅度。
fill_mode
:字符串,表示当图像经过变换后超出边界时的填充模式,可选值有 'constant'、'nearest'、'reflect' 和 'wrap'。
cval
:浮点数或整数,当 fill_mode='constant'
时,用于指定填充超出边界的点的颜色值。
horizontal_flip
:布尔值,用于随机水平翻转图像。
vertical_flip
:布尔值,用于随机垂直翻转图像。
rescale
:浮点数,用于在任何其他变换之前将图像的值乘以此数值,通常用于归一化图像。
preprocessing_function
:函数,用于在任何其他变换之前应用于每个输入样本的自定义预处理函数。
data_format
:字符串,表示图像数据的格式,可选值有 'channels_first' 或 'channels_last',默认值取决于Keras配置文件中的设置。
二、数据增强(Data Augmentation)概述
数据增强是一种通过各种技术手段增加训练数据多样性的方法,特别适用于图像数据。常见的数据增强技术包括但不限于:
- 旋转/反射变换 (Rotation/Reflection):随机旋转图像一定角度,或改变图像的朝向。
- 翻转变换 (Flip):沿水平或垂直方向随机翻转图像。
- 缩放变换 (Zoom):按一定比例随机放大或缩小图像。
- 平移变换 (Shift):在图像平面上随机移动图像,可以是水平或垂直方向。
- 尺度变换 (Scale):按指定的比例因子放大或缩小图像,或构造尺度空间。
- 对比度变换 (Contrast):在HSV颜色空间中调整饱和度和亮度,保持色调不变。
- 噪声扰动 (Noise):对图像的每个像素添加随机噪声,如椒盐噪声或高斯噪声。
三、部分参数的实际应用示例
3.1 错切变换 (Shear Range)
代码示例:
datagen = ImageDataGenerator(shear_range=0.5)
错切变换的效果是让图像中的所有点在一个方向上保持不变,而在另一个方向上按比例平移。这种变换常用于模拟不同的视角或姿态变化。
3.2 缩放变换 (Zoom Range)
代码示例:
datagen = ImageDataGenerator(zoom_range=0.5)
缩放变换允许图像在宽度和高度方向上独立地进行放大或缩小。此参数可以是一个数值或一个列表,列表形式表示宽度和高度方向上的不同缩放比例。
3.3 填充模式 (Fill Mode)
代码示例:
datagen = ImageDataGenerator(fill_mode='wrap', zoom_range=[4, 4])
当图像经过平移、缩放、错切等变换后,可能会出现边界外的区域,这些区域需要通过填充模式来处理。不同的填充模式会影响图像边缘的视觉效果。