Keras ImageDataGenerator参数详解与使用

7 下载量 5 浏览量 更新于2024-09-01 收藏 181KB PDF 举报
"Keras中的ImageDataGenerator函数是用于图像增强和预处理的重要工具,它允许我们在训练模型时动态地改变输入图像,以增加模型的泛化能力。这个函数有多个参数,可以根据需求调整图像的各种属性,如旋转、平移、缩放等。以下是对这些参数的详细解释: 1. featurewise_center: 如果设置为True,会对整个数据集进行特征中心化,即减去数据集的平均值,使得所有特征的平均值为0。这有助于数据的规范化。 2. samplewise_center: 如果设置为True,会对每个样本单独进行中心化,使其均值为0。这与featurewise_center的区别在于,它考虑的是单个样本而不是整个特征集。 3. featurewise_std_normalization: 如果设置为True,会将数据集除以其标准差,实现特征标准化。这样每个特征的方差将变为1。 4. samplewise_std_normalization: 类似于samplewise_center,但除以每个样本的标准差,使得每个样本的值都在[-1, 1]之间。 5. zca_whitening: 当设置为True时,会对数据应用ZCA白化,这是一种降低数据相关性的技术,可以提高某些模型的性能。 6. rotation_range: 一个整数,表示在训练期间允许的随机旋转角度范围,以度为单位。例如,如果设置为10,图像会在[0, 10]的范围内随机旋转。 7. width_shift_range: 一个浮点数,表示图像宽度上的随机水平位移比例。例如,0.1意味着图像可以在其宽度上最多移动10%。 8. height_shift_range: 类似于width_shift_range,但用于垂直方向的位移。 9. shear_range: 一个浮点数,表示允许的剪切变换强度。剪切变换会在图像的X-Y平面上应用随机的剪切角度。 10. zoom_range: 一个浮点数或一个包含两个浮点数的列表/元组,表示允许的随机缩放范围。如果是一个数,则在[1-zoom_range, 1+zoom_range]之间随机缩放;如果是列表/元组,则在[zoom_range[0], zoom_range[1]]之间随机缩放。 11. channel_shift_range: 一个浮点数,表示在RGB通道之间允许的最大随机偏移量。 12. fill_mode: 指定如何填充由于图像变换而产生的空白区域。常见的选项有'nearest'(最近邻)、'constant'(用常数值填充)等。 13. cval: 当fill_mode为'constant'时,此参数用于指定填充的常数值。 14. horizontal_flip: 如果设置为True,图像有50%的概率被水平翻转,这对于某些数据集可能是有用的增强手段。 15. vertical_flip: 类似于horizontal_flip,但执行垂直翻转。 16. rescale: 一个浮点数,用于在输入数据上施加线性缩放,如rescale=1./255会使所有像素值除以255。 17. preprocessing_function: 可以提供一个函数,该函数将在每个样本上应用,用于自定义预处理步骤。 18. data_format: 指定图像的通道顺序,可以是'channels_first'(通道在前,如(C, H, W))或'channels_last'(通道在后,如(H, W, C)),默认值由K.image_data_format()决定。 通过灵活调整这些参数,可以创建各种图像增强策略,帮助模型更好地学习图像的不变性,从而提高模型的泛化能力。在实际应用中,通常会结合参数的随机性来创建多样化的训练集,以模拟真实世界中的变化。"