2017-06-03 6 views
3

Il s'agit de la fonction de prétraitement de la création v3 dans Keras. C'est totalement différent des autres modèles de pré-traitement.Fonction de prétraitement de la création v3 dans Keras

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

1. Pourquoi il n'y a pas de soustraction moyenne?

2. Pourquoi il n'y a pas de RGB à BGR?

3. La correspondance entre [-1,1] est-elle normale pour ce modèle?

et ceci est fonction de pré-traitement et VGG ResNet dans 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 

modèles également Caffe utilisent la soustraction et RGB BGR moyenne.

Répondre

2
  1. Le modèle de début a été formé à l'aide de la fonction de prétraitement que vous avez indiquée. Vos images doivent donc passer par cette fonction plutôt que par celle de VGG/ResNet. La soustraction de la moyenne n'est pas requise. Voir aussi ce fil: https://github.com/fchollet/keras/issues/5416.

  2. Le papier original de GoogleNet se rapporte aux images RVB plutôt qu'à BGR. D'autre part, VGG a été formé en utilisant Caffe, et Caffe utilise OpenCV pour charger les images qui utilisent BGR par défaut.

  3. Oui. Voir également ce fil et Marcins réponse: Should I substract imagenet pretrained inception_v3 model mean value at inception_v3.py keras?