Keras图像增强 - 为图像宽度/高度偏移范围指定多个值

时间:2018-03-01 10:40:48

标签: deep-learning keras

我正在使用Keras数据增强进行图像分类。我想为width_shift_range和height_shift_range指定多个值。例如,我想在一个训练课程中增加具有移位范围的倍数值的图像,例如0.2,0.4,0.6。有没有办法做到这一点。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您不需要为width_shift_range指定多个值(分别为height_shift_range)。它基本上做的是它从区间x(分别为[-width_shift_range, width_shift_range])中的均匀分布中抽取随机数[-height_shift_range, height_shift_range],并应用与...成比例的图像的平移x乘以相应的图像宽度(相应的高度)。

这里是来自kerasrandom_shift函数:

def random_shift(x, wrg, hrg, row_axis=1, col_axis=2, channel_axis=0,
                 fill_mode='nearest', cval=0.):

    # wrg: Width shift range, as a float fraction of the width.
    # hrg: Height shift range, as a float fraction of the height.

    h, w = x.shape[row_axis], x.shape[col_axis]
    tx = np.random.uniform(-hrg, hrg) * h
    ty = np.random.uniform(-wrg, wrg) * w
    translation_matrix = np.array([[1, 0, tx],
                                   [0, 1, ty],
                                   [0, 0, 1]])

    transform_matrix = translation_matrix  # no need to do offset
    x = apply_transform(x, transform_matrix, channel_axis, fill_mode, cval)
    return x

结论取最大值,因为您要在[-x,x], id est 区间内进行绘制,如果您想要在0.2,0.4和0.6范围转换,只需使用0.6。