MobileNets для нестандартного размера изображения - PullRequest
1 голос
/ 08 апреля 2019

Я хочу использовать модель MobileNet, предварительно обученную в ImageNet для извлечения функций. Я загружаю модель следующим образом:

from keras.applications.mobilenet import MobileNet

feature_model = MobileNet(include_top=False, weights='imagenet', input_shape=(200, 200, 3))

В руководстве Keras четко сказано , что эта форма ввода действительна:

input_shape: необязательный кортеж формы, указывается только в том случае, если include_top имеет значение False (в противном случае форма ввода должна быть (224, 224, 3) (с форматом данных channel_last)) или (3, 224, 224) (с формат данных channel_first). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, 200 (200, 3) будет одним допустимым значением.

Однако я получаю следующее сообщение об ошибке:

ValueError: Если загружаются изображения imagenet, входные данные должны иметь статическую квадратную форму (одну из (128, 128), (160, 160), (192, 192) или (224, 224)). Форма ввода при условии = (200, 200, 3)

Почему требуется, чтобы входная форма соответствовала той, на которой она обучалась, если я укажу include_top=False?

Керас: 2.2.4, TensorFlow: 1.13.1

Обновление: как указывало @Soroush, это исключение было удалено недавно . Однако проблема не была полностью решена, как описано здесь .

Обновление 2: проблема была решена с помощью этих двух запросов на извлечение ( 1 , 2 ).

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Чтобы использовать нестандартный размер изображения в MobileNet, загрузите весовые коэффициенты по этой ссылке: https://github.com/fchollet/deep-learning-models/releases/tag/v0.6

Но убедитесь, какие весовые коэффициенты вам нужны, поскольку они содержат файлы с различными весовыми коэффициентами согласно исследовательской работе * 1005.* MobileNet , так как каждая модель зависит от параметров alpha и depth_multiplier.Для alpha есть четыре различных значения: 0,25, 0,50, 0,75, 1,0.Кроме того, depth_multiplier равно 1 согласно этой реализации mobilenet .Я бы порекомендовал вам скачать mobilenet_1_0_224_tf.h5.Он имеет наивысшую точность ImageNet среди всех согласно исследовательской работе Таблица 7 .

После этого

from keras.applications.mobilenet import MobileNet

feature_model = MobileNet(include_top=False, weights=None, input_shape=(200, 200, 3), alpha=1.0, depth_multiplier=1)
feature_model.load_weights('mobilenet_1_0_224_tf.h5') # give the path for downloaded weights

И вы готовы идти.

1 голос
/ 08 апреля 2019

Это исключение является неправильным и было недавно (29 марта 2019 г.) удалено из Keras (см. Запрос и запрос на GitHub).По состоянию на 8 апреля 2019 г. этот коммит еще не выпущен, поэтому вам нужно установить с master.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...