2017-06-03 58 views
3

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

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

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

2.为什么没有RGB到BGR?

3.此模型[-1,1]之间的映射是否正常?

,这是预处理VGG和RESNET的功能Keras:

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。

回答

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

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

  3. 是的。另请参阅此主题和Marcins回答:Should I substract imagenet pretrained inception_v3 model mean value at inception_v3.py keras?