Я использую модель Keras VGG16 .
Я видел, что есть метод preprocess_input для использования вместе с моделью VGG16 . Этот метод вызывает метод preprocess_input в imagenet_utils.py , который (в зависимости от случая) вызывает метод _preprocess_numpy_input в imagenet_utils.py .
preprocess_input
имеет аргумент mode
, который ожидает "caffe", "tf" или "torch". Если я использую модель в Keras с бэкэндом TensorFlow, я должен обязательно использовать mode="tf"
?
Если да, это потому, что модель VGG16, загруженная Keras, была обучена изображениям, прошедшим такую же предварительную обработку (т. Е. Изменил диапазон входного изображения с [0,255] на диапазон ввода [-1,1])?
Кроме того, должны ли входные изображения для режима тестирования также проходить эту предварительную обработку? Я уверен, что ответ на последний вопрос - да, но я хотел бы получить некоторое подтверждение.
Я бы ожидал, что Франсуа Шоле сделал это правильно, но, глядя на https://github.com/fchollet/deep-learning-models/blob/master/vgg16.py, он или я ошибаюсь с использованием mode="tf"
.
Обновленная информация
@ FalconUA направил меня к VGG в Оксфорде , в котором есть раздел Models со ссылками на 16-слойную модель. Информацию о preprocessing_input
mode
аргументе tf
, масштабируемом от -1 до 1 и caffe
, вычитающем некоторые средние значения, можно найти по ссылке в Models 16-слойной модели: информационная страница . В разделе «Описание» написано:
"В статье модель обозначается как конфигурация D, обученная с дрожанием масштаба. Входные изображения должны быть выровнены по центру нуля путем вычитания среднего пикселя (а не среднего изображения). А именно, должны быть вычтены следующие значения BGR: [103,939, 116,779, 123,68]. "