2017-06-03 56 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?