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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Keras图像增强 - 为图像宽度/高度偏移范围指定多个值相关的知识,希望对你有一定的参考价值。

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

在此先感谢您的帮助。

答案

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

这是来自random_shiftkeras函数:

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

结论:如果你想要在0.2,0.4和0.6范围转换之间变换,你只需要使用0.6,你可以在区间[-x,x],id est中绘制最大值。

以上是关于Keras图像增强 - 为图像宽度/高度偏移范围指定多个值的主要内容,如果未能解决你的问题,请参考以下文章

未显示用于灰度图像数据增强的通道宽度

小型图像数据集的数据增强技术?

如何将图像尺寸(宽度/高度)转换为毫米?

小白学习keras教程三Kears中常见模型层PaddingConv2DMaxPooling2DFlatten和Dense

图像缩放在限制范围内(最大高度最大宽度)

如何从 DockPanel 获取高度和宽度?