12

这是 Keras 中 inception v3 的预处理功能。它与其他模型的预处理完全不同。

def preprocess_input(x):
    x /= 255.
    x -= 0.5
    x *= 2.
    return x

1.为什么没有均值减法?

2、为什么没有RGB转BGR?

3. [-1,1] 之间的映射对于这个模型是正常的吗?

这是 Keras 中 VGG 和 ResNet 的预处理功能:

def preprocess_input(x, data_format=None):
    if data_format is None:
        data_format = K.image_data_format()
    assert data_format in {'channels_last', 'channels_first'}

    if data_format == 'channels_first':
        # 'RGB'->'BGR'
        x = x[:, ::-1, :, :]
        # Zero-center by mean pixel

        x[:, 0, :, :] -= 103.939
        x[:, 1, :, :] -= 116.779
        x[:, 2, :, :] -= 123.68
    else:
        # 'RGB'->'BGR'
        x = x[:, :, :, ::-1]
        # Zero-center by mean pixel
        x[:, :, :, 0] -= 103.939
        x[:, :, :, 1] -= 116.779
        x[:, :, :, 2] -= 123.68
    return x

Caffe 模型也使用均值减法和 RGB 到 BGR。

4

1 回答 1

7
  1. Inception 模型已使用您引用的预处理函数进行了训练。因此,您的图像必须通过该功能而不是 VGG/ResNet 的功能。不需要减去平均值。另请参阅此线程:https ://github.com/fchollet/keras/issues/5416 。

  2. 最初的 GoogleNet 论文指的是 RGB 图像而不是 BGR。另一方面,VGG 是使用 Caffe 训练的,Caffe 使用 OpenCV 加载默认使用 BGR 的图像。

  3. 是的。另请参阅此线程和 Marcins 答案:我应该在 inception_v3.py keras 中减去 imagenet 预训练的 inception_v3 模型平均值吗?

于 2017-06-08T08:52:02.987 回答