¿Cuál es la forma correcta de preprocesar los datos en Keras mientras se ajustan los modelos previamente entrenados en keras.applications para nuestros propios datos?
Keras proporciona las siguientes funciones preprocess_input
keras.aplicaciones.imagenet_utils.preprocess_input
keras.applications.inception_v3.preprocess_input
keras.applications.xception.preprocess_input
keras.applications.inception_resnet_v2.preprocess_input
Mirando dentro parece que para inception_v3, xception e inception_resnet_v2, llama a keras.applications.imagenet_utils.preprocess_input con mode='tf' . Mientras que para otros modelos establece mode='caffe' cada uno de los cuales realiza una transformación diferente.
En la publicación del blog sobre el aprendizaje por transferencia de Francois chollet -- https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html -- está normalizado a [0, 1] a través de una división con 255. ¿No deberían usarse en su lugar las funciones preprocess_input en Keras?
Además, no está claro si las imágenes de entrada deben estar en RGB o BGR. ¿Hay alguna coherencia con respecto a esto o es específico del modelo preentrenado que se está utilizando?
Utilice siempre la función preprocess_input en el módulo de nivel de modelo correspondiente. Es decir, use keras.applications.inception_v3.preprocess_input para InceptionV3 y keras.applications.resnet50.preprocess_input para ResNet50 .
El argumento de mode especifica el método de preprocesamiento utilizado al entrenar el modelo original. mode='tf' significa que los pesos preentrenados se convierten de TF, donde los autores entrenaron el modelo con el rango de entrada [-1, 1] . También lo son mode='caffe' y mode='torch' .
La entrada a applications.*.preprocess_input siempre es RGB. Si un modelo espera una entrada BGR, los canales se permutarán dentro de preprocess_input .
La publicación de blog que ha mencionado se publicó antes de que se introdujera el módulo keras.applications . No recomendaría usarlo como referencia para transferir aprendizaje con keras.applications . Tal vez sea mejor probar los ejemplos en los documentos en su lugar.