了解 Keras 的 ImageDataGenerator 中的“width_shift_range”和“height_shift_range”参数 class

Understanding `width_shift_range` and `height_shift_range` arguments in Keras's ImageDataGenerator class

ImageDataGenerator class 的 Keras 文档说—

width_shift_range: Float, 1-D array-like or int - float: fraction of total width, if < 1, or pixels if >= 1. - 1-D array-like: random elements from the array. - int: integer number of pixels from interval (-width_shift_range, +width_shift_range) - With width_shift_range=2 possible values are integers [-1, 0, +1], same as with width_shift_range=[-1, 0, +1], while with width_shift_range=1.0 possible values are floats in the interval [-1.0, +1.0).

height_shift_range: Float, 1-D array-like or int - float: fraction of total height, if < 1, or pixels if >= 1. - 1-D array-like: random elements from the array. - int: integer number of pixels from interval (-height_shift_range, +height_shift_range) - With height_shift_range=2 possible values are integers [-1, 0, +1], same as with height_shift_range=[-1, 0, +1], while with height_shift_range=1.0 possible values are floats in the interval [-1.0, +1.0).

我是 Keras 和机器学习的新手,我才刚刚开始学习。

我正在努力理解 Keras ImageDataGenerator class 的这两个参数的文档和使用,命名为 width_shift_rangeheight_shift_range。我已经搜索了很多,但除了官方之外找不到任何好的文档。这两个参数到底有什么作用?什么时候必须使用它们?

这个话题在这里似乎不太合适,但是由于互联网上没有任何讨论,我认为在这里进行讨论会很好。

如果有人能帮助我理解这些,我将不胜感激。非常感谢。

ImageDataGenerator class 使用的这两个参数用于在将图像输入网络之前对图像进行预处理。如果你想让你的模型更健壮,那么少量的数据是不够的。这就是数据扩充派上用场的地方。这用于生成随机数据。

width_shift_range: 它实际上将图像向左或向右移动(水平移动)。如果值为float and <=1,则取占总宽度的百分比作为范围。假设图像width is 100px。如果 width_shift_range = 1.0 则需要 -100% to +100% 表示 -100px to +100px。它将在此范围之间随机移动图像。随机选择正值会使图像向右移动,负值会使图像向左移动。我们也可以通过选择像素来做到这一点。 如果我们设置 width_shift_range = 100 会有同样的效果。更重要的是 integer value>=1 count pixel as rangefloat value<=1 count percentage of total width as range。以下图片适用于 width_shift_range = 1.0.

height_shift_range: 它的工作原理与 width_shift_range 相同,但垂直移动(向上或向下)。以下图片适用于 height_shift_range=0.2,fill_mode="constant"

fill_mode: 设置输入区域新移动像素的规则

## fill_mode: One of {"constant", "nearest", "reflect" or "wrap"}. 
## Points outside the boundaries of the input are filled according to the given mode:
## "constant": kkkkkkkk|abcd|kkkkkkkk (cval=k)
## "nearest":  aaaaaaaa|abcd|dddddddd
## "reflect":  abcddcba|abcd|dcbaabcd
## "wrap":  abcdabcd|abcd|abcdabcd

更多信息你可以查看这个blog