Applications
Keras Applications — это модели для глубокого обучения, которые доступны наряду с предварительно обученными весами. Эти модели можно использовать для прогнозирования, извлечения функций и тонкой настройки.
Веса загружаются автоматически при конкретизации модели. Они хранятся в ~/.keras/models/.
Доступные модели
Модели для классификации изображений с весами, обученными на ImageNet:
Все эти архитектуры совместимы со всеми бэкэндами (TensorFlow, Theano и CNTK), и после инстанцирования модели будут собраны в соответствии с форматом данных изображения, заданным в вашем конфигурационном файле Keras на ~/.keras/keras.json. Например, если вы установили image_data_format=channels_last, то любая модель, загруженная из этого репозитория, будет собрана в соответствии с соглашением о формате данных TensorFlow «Высота-ширина-глубина».
Обратите внимание: — Для Keras < 2.2.0 модель Xception доступна только для TensorFlow в связи с ее зависимостью от слоев SeparableConvolution. — Для Keras < 2.1.5 модель MobileNet доступна только для TensorFlow в связи с ее зависимостью от слоев DepthwiseConvolution.
Примеры использования для моделей классификации изображений
Классификация классов ImageNet с помощью ResNet50
from keras.applications.resnet50 import ResNet50from keras.preprocessing import imagefrom keras.applications.resnet50 import preprocess_input, decode_predictionsimport numpy as np
model = ResNet50(weights=’imagenet’)
img_path = ‘elephant.jpg’
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)# расшифровать результаты в список кортежей (класс, описание, вероятность)# (по одному такому списку для каждой выборки в партии).
print(‘Predicted:’, decode_predictions(preds, top=3)[0])# Предсказано: [(u’n02504013′, u’Indian_elephant’, 0.82658225), (u’n01871265′, u’tusker’, 0.1122357), (u’n02504458′, u’African_elephant’, 0.061040461)]
Особенности извлечения с VGG16
from keras.applications.vgg16 import VGG16from keras.preprocessing import imagefrom keras.applications.vgg16 import preprocess_inputimport numpy as np
model = VGG16(weights=’imagenet’, include_top=False)
img_path = ‘elephant.jpg’
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
features = model.predict(x)
Особенности извлечения из произвольного промежуточного слоя с помощью VGG19
from keras.applications.vgg19 import VGG19from keras.preprocessing import imagefrom keras.applications.vgg19 import preprocess_inputfrom keras.models import Modelimport numpy as np
base_model = VGG19(weights=’imagenet’)
model = Model(inputs=base_model.input, outputs=base_model.get_layer(‘block4_pool’).output)
img_path = ‘elephant.jpg’
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
block4_pool_features = model.predict(x)
Тонкая настройка InceptionV3 на новый набор классов
from keras.applications.inception_v3 import InceptionV3from keras.preprocessing import imagefrom keras.models import Modelfrom keras.layers import Dense, GlobalAveragePooling2Dfrom keras import backend as K
# создайте базовую предварительно подготовленную модель
base_model = InceptionV3(weights=’imagenet’, include_top=False)
# добавить средний слой глобального пространственного пула
x = base_model.output
x = GlobalAveragePooling2D()(x)# добавим полностью подключённый слой
x = Dense(1024, activation=’relu’)(x)# и логистический уровень — допустим, у нас 200 классов.
predictions = Dense(200, activation=’softmax’)(x)
# это модель, которую мы будем обучать
model = Model(inputs=base_model.input, outputs=predictions)
# first: train only the top layers (которые были случайным образом инициализированы)# т.е. заморозить все конволюционные слои InceptionV3
for layer in base_model.layers:
layer.trainable = False
# скомпилируйте модель (нужно сделать *после* установки слоев в неуправляемые)
model.compile(optimizer=’rmsprop’, loss=’categorical_crossentropy’)
# обучить модель новым данным на несколько эпох.
model.fit_generator(…)
# в данный момент верхние слои хорошо обучены, и мы можем начать тонкую настройку# конволюционных слоев с начала V3. Мы заморозим нижние N слоев# и обучим остальные верхние слои.
# давайте визуализируем имена слоев и индексы слоев, чтобы увидеть, сколько слоев# мы должны заморозить.
:for i, layer in enumerate(base_model.layers):
print(i, layer.name)
# мы выбрали тренировать 2 верхних начальных блока, т.е. мы заморозим # первые 249 слоев и разморозим остальные. #:
for layer in model.layers[:249]:
layer.trainable = Falsefor layer in model.layers[249:]:
layer.trainable = True
# нам нужно перекомпилировать модель, чтобы эти модификации вступили в силу# мы используем SGD с низкой скоростью обучения.
from keras.optimizers import SGD
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss=’categorical_crossentropy’)
# мы снова обучаем нашу модель (на этот раз, оттачивая верхние 2 начальных блока# вместе с верхними плотными слоями.
model.fit_generator(…)
Построить InceptionV3 на пользовательском входном тензоре
from keras.applications.inception_v3 import InceptionV3from keras.layers import Input
# это также может быть вывод другой модели или слоя Keras. #
input_tensor = Input(shape=(224, 224, 3)) # это предполагает K.image_data_format() == ‘channels_last’
model = InceptionV3(input_tensor=input_tensor, weights=’imagenet’, include_top=True)
Документация для отдельных моделей
Модель | Размер | Top-1 точность | Top-5 точность | Параметры | Глубина |
Xception | 88 MB | 0.790 | 0.945 | 22,910,480 | 126 |
VGG16 | 528 MB | 0.713 | 0.901 | 138,357,544 | 23 |
VGG19 | 549 MB | 0.713 | 0.900 | 143,667,240 | 26 |
ResNet50 | 98 MB | 0.749 | 0.921 | 25,636,712 | — |
ResNet101 | 171 MB | 0.764 | 0.928 | 44,707,176 | — |
ResNet152 | 232 MB | 0.766 | 0.931 | 60,419,944 | — |
ResNet50V2 | 98 MB | 0.760 | 0.930 | 25,613,800 | — |
ResNet101V2 | 171 MB | 0.772 | 0.938 | 44,675,560 | — |
ResNet152V2 | 232 MB | 0.780 | 0.942 | 60,380,648 | — |
InceptionV3 | 92 MB | 0.779 | 0.937 | 23,851,784 | 159 |
InceptionResNetV2 | 215 MB | 0.803 | 0.953 | 55,873,736 | 572 |
MobileNet | 16 MB | 0.704 | 0.895 | 4,253,864 | 88 |
MobileNetV2 | 14 MB | 0.713 | 0.901 | 3,538,984 | 88 |
DenseNet121 | 33 MB | 0.750 | 0.923 | 8,062,504 | 121 |
DenseNet169 | 57 MB | 0.762 | 0.932 | 14,307,880 | 169 |
DenseNet201 | 80 MB | 0.773 | 0.936 | 20,242,984 | 201 |
NASNetMobile | 23 MB | 0.744 | 0.919 | 5,326,716 | — |
NASNetLarge | 343 MB | 0.825 | 0.960 | 88,949,818 | — |
Топ-1 и топ-5 точности относятся к производительности модели в наборе данных проверки достоверности ImageNet.
Глубина относится к топологической глубине сети. Сюда входят слои активации, слои пакетной нормализации и т.д.
Xception
keras.applications.xception.Xception(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
Модель Xception V1, с весами, предварительно подготовленными на ImageNet.
На ImageNet эта модель получает точность валидации топ-1 0,790 и точность валидации топ-5 0,945.
Данная модель и может быть построена как в формате данных ‘channels_first’ (каналы, высота, ширина), так и в формате данных ‘channels_last’ (высота, ширина, каналы).
Входной размер по умолчанию для данной модели — 299×299.
Аргументы
- include_top: включать ли полностью подключенный слой в верхнюю часть сети.
- weights: один из None (случайная инициализация) или ‘imageenet’ (предварительное обучение на ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- input_shape: необязательный кортеж-фигура, который должен быть указан только в том случае, если include_top — False (в противном случае входная форма должна быть (299, 299, 3). Она должна иметь ровно 3 входных канала, а ширина и высота должны быть не меньше 71. Например, (150, 150, 3) будет одно действительное значение.
- pooling: Дополнительный режим объединения в пулы для извлечения функций, когда include_top — False.
- None означает, что выход модели будет 4D тензорным выходом последнего сверточного блока.
- avg» означает, что к выходу последнего сверточного блока будет применен глобальный средний пул, и, таким образом, на выходе модели будет 2D тензор.
- «max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- Классы: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Пример Model Keras.
Ссылки
- Xception: Глубокое обучение с помощью глубоко отделяемых свёртков
Лицензия
Эти веса обучаются самостоятельно и выпускаются под лицензией MIT.
VGG16
keras.applications.vgg16.VGG16(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
Модель VGG16, с грузами, предварительно подготовленными на ImageNet.
Данная модель может быть построена как в формате данных ‘channels_first’ (channels, height, width), так и в формате данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 224×224.
Аргументы
- include_top: включать ли 3 полностью подключенных слоя в верхней части сети.
- weights: один из None (случайная инициализация) или ‘imageenet’ (предварительное обучение на ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- input_shape: необязательный кортеж формы, который должен быть указан только в том случае, если include_top — False (иначе входная форма должна быть (224, 224, 3) (с форматом данных ‘channels_last’) или (3, 224, 224) (с форматом данных ‘channels_first’). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, (200, 200, 3) должно быть одно действительное значение.
- pooling: Дополнительный режим объединения в пулы для извлечения функции, когда include_top — False.
- None означает, что выход модели будет 4D тензорным выходом последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применен глобальный средний пул, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- Очень глубокие сверточные сети для крупномасштабного распознавания изображений: пожалуйста, процитируйте эту статью, если вы используете VGG-модели в своей работе.
Лицензия
Эти веса портированы с весов, выпущенных VGG в Оксфорде по лицензии Creative Commons Attribution License.
VGG19
keras.applications.vgg19.VGG19(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
Модель VGG19, с грузами, предварительно подготовленными на ImageNet.
Данная модель может быть построена как в формате данных ‘channels_first’ (channels, height, width), так и в формате данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 224×224.
Аргументы
- include_top: включать ли 3 полностью подключенных слоя в верхней части сети.
- weights: один из None (случайная инициализация) или ‘imageenet’ (предварительное обучение на ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- input_shape: необязательный кортеж-фигура, который должен быть указан только в том случае, если include_top — False (иначе входная форма должна быть (224, 224, 3) (с форматом данных ‘channels_last’) или (3, 224, 224) (с форматом данных ‘channels_first’). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, (200, 200, 3) должно быть одно действительное значение.
- pooling: Дополнительный режим объединения в пулы для извлечения функции, когда include_top — False.
- None означает, что выход модели будет 4D тензорным выходом последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применен глобальный средний пул, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- Очень глубокие сверточные сети для крупномасштабного распознавания изображений
Лицензия
Эти веса портированы с весов, выпущенных VGG в Оксфорде по лицензии Creative Commons Attribution License.
ResNet
keras.applications.resnet.ResNet50(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
keras.applications.resnet.ResNet101(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
keras.applications.resnet.ResNet152(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
keras.applications.resnet_v2.ResNet50V2(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
keras.applications.resnet_v2.ResNet101V2(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
keras.applications.resnet_v2.ResNet152V2(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
Модели ResNet, ResNetV2, с предварительно подготовленными весами на ImageNet.
Данная модель и может быть построена как в формате данных ‘channels_first’ (channels, height, width), так и в формате данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 224×224.
Аргументы
- include_top: включать ли полностью подключенный слой в верхнюю часть сети.
- weights: один из None (случайная инициализация) или ‘imageenet’ (предварительное обучение на ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- input_shape: необязательный кортеж-фигура, который должен быть указан только в том случае, если include_top — False (иначе входная форма должна быть (224, 224, 3) (с форматом данных ‘channels_last’) или (3, 224, 224) (с форматом данных ‘channels_first’). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, (200, 200, 3) должно быть одно действительное значение.
- pooling: Дополнительный режим объединения в пулы для извлечения функции, когда include_top — False.
- None означает, что выход модели будет 4D тензорным выходом последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применен глобальный средний пул, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- ResNet: Глубокое остаточное обучение для распознавания изображений
- ResNetV2: Отображение идентичности в глубоких остаточных сетях
Лицензия
Эти веса портируются из следующего:
- ResNet: Оригинальный репозиторий Kaiming He по лицензии MIT.
- ResNetV2: Facebook под BSD Лицензия.
InceptionV3
keras.applications.inception_v3.InceptionV3(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
Начальная модель V3, с весами, предварительно подготовленными на ImageNet.
Данная модель и может быть построена как в формате данных ‘channels_first’ (channels, height, width), так и в формате данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 299×299.
Аргументы
- include_top: включать ли полностью подключенный слой в верхнюю часть сети.
- weights: один из None (случайная инициализация) или ‘imageenet’ (предварительное обучение на ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- input_shape: необязательный кортеж-фигура, который должен быть указан только в том случае, если include_top — False (иначе форма входного сигнала должна быть (299, 299, 3) (с форматом данных ‘channels_last’) или (3, 299, 299) (с форматом данных ‘channels_first’). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 75. Например, (150, 150, 3) будет одно действительное значение.
- pooling: Дополнительный режим объединения в пулы для извлечения функции, когда include_top — False.
- None означает, что выход модели будет 4D тензорным выходом последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применен глобальный средний пул, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- Переосмысление архитектуры начала для компьютерного зрения
Лицензия
Эти веса выпущены под лицензией Apache.
InceptionResNetV2
keras.applications.inception_resnet_v2.InceptionResNetV2(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
Модель Inception-ResNet V2, с весами, предварительно подготовленными на ImageNet.
Данная модель и может быть построена как в формате данных ‘channels_first’ (channels, height, width), так и в формате данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 299×299.
Аргументы
- include_top: включать ли полностью подключенный слой в верхнюю часть сети.
- weights: один из None (случайная инициализация) или ‘imageenet’ (предварительное обучение на ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- input_shape: необязательный кортеж-фигура, который должен быть указан только в том случае, если include_top — False (иначе форма входного сигнала должна быть (299, 299, 3) (с форматом данных ‘channels_last’) или (3, 299, 299) (с форматом данных ‘channels_first’). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 75. Например, (150, 150, 3) будет одно действительное значение.
- pooling: Дополнительный режим объединения в пулы для извлечения функции, когда include_top — False.
- None означает, что выход модели будет 4D тензорным выходом последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применен глобальный средний пул, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- Inception-v4, Inception-ResNet и влияние остаточных связей на процесс обучения
Лицензия
Эти веса выпущены под лицензией Apache.
MobileNet
keras.applications.mobilenet.MobileNet(input_shape=None, alpha=1.0, depth_multiplier=1, dropout=1e-3, include_top=True, weights=’imagenet’, input_tensor=None, pooling=None, classes=1000)
Модель MobileNet, с предварительно подготовленными весами на ImageNet.
Данная модель и может быть построена как в формате данных ‘channels_first’ (channels, height, width), так и в формате данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 224×224.
Аргументы
- input_shape: необязательная форма кортежа, указываемая только в том случае, если include_top является False (иначе форма входа должна быть (224, 224, 3) (с форматом данных ‘channels_last’) или (3, 224, 224) (с форматом данных ‘channels_first’). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, (200, 200, 3) должно быть одно действительное значение.
- alpha: контролирует ширину сети.
- Если alpha< 1.0, то пропорционально уменьшается количество фильтров в каждом слое.
- Если alpha> 1.0, пропорционально увеличивает количество фильтров в каждом слое.
- Если alpha= 1, по умолчанию в каждом слое используется количество фильтров из бумаги.
- depth_multiplier: умножитель глубины для глубинной свертки (также называемый умножителем разрешения).
- dropout: процент отсева
- include_top: включать ли полностью подключенный слой в верхнюю часть сети.
- weights: None (случайная инициализация) или ‘imageenet’ (веса ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- pooling: Опциональный режим объединения в пулы для извлечения функций, когда include_top — False.
- None означает, что на выходе модели будет 4D тензор последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применено глобальное усредненное объединение, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- MobileNets: эффективные сверточные нейронные сети для приложений мобильного видения
Лицензия
Эти веса выпущены под лицензией Apache.
DenseNet
keras.applications.densenet.DenseNet121(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
keras.applications.densenet.DenseNet169(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
keras.applications.densenet.DenseNet201(include_top=True, weights=’imagenet’, input_tensor=None, input_shape=None, pooling=None, classes=1000)
DenseNet models, with weights pre-trained on ImageNet.
Данная модель и может быть построена как с форматом данных ‘channels_first’ (channels, height, width), так и с форматом данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 224×224.
Аргументы
- blocks: количество строительных блоков для четырех плотных слоев.
- include_top: включать ли полностью подключенный слой в верхней части сети.
- weights: один из None (случайная инициализация), ‘imagenet’ (предварительное обучение на ImageNet) или путь к файлу весов, который будет загружен.
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- input_shape: необязательный кортеж-фигура, который должен быть указан только в том случае, если include_top — False (иначе входная форма должна быть (224, 224, 3) (с форматом данных ‘channels_last’) или (3, 224, 224) (с форматом данных ‘channels_first’). Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, (200, 200, 3) должно быть одно действительное значение.
- pooling: опциональный режим пула для извлечения функции из пула, когда include_top — False.
- None означает, что выход модели будет 4D тензорным выходом последнего конволюционного блока.
- avg означает, что к выходу последнего конволюционного блока будет применено глобальное усредненное объединение, и, таким образом, выход модели будет 2D тензором.
- max означает, что будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top — True, и если аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- Плотно подключенные сверточные сети (CVPR 2017 — награда за лучшую работу)
Лицензия
Эти веса выпускаются по 3-пунктной лицензии BSD.
NASNet
keras.applications.nasnet.NASNetLarge(input_shape=None, include_top=True, weights=’imagenet’, input_tensor=None, pooling=None, classes=1000)
keras.applications.nasnet.NASNetMobile(input_shape=None, include_top=True, weights=’imagenet’, input_tensor=None, pooling=None, classes=1000)
Модели сети поиска нейронной архитектуры (NASNet), с предварительно подготовленными весами на ImageNet.
По умолчанию размер входного сигнала для модели NASNetLarge составляет 331×331, а для модели NASNetMobile — 224×224.
Аргументы
- input_shape: необязательная форма кортежа, указываемая только в том случае, если include_top — False (иначе форма ввода должна быть (224, 224, 3) (с форматом данных ‘channels_last’) или (3, 224, 224) (с форматом данных ‘channels_first’) для NASNetMobile, или (331, 331, 3) (с форматом данных ‘channels_last’), или (3, 331, 331) (с форматом данных ‘channels_first’) для NASNetLarge. Он должен иметь ровно 3 входных канала, а ширина и высота должны быть не менее 32. Например, (200, 200, 3) должно быть одно действительное значение.
- include_top: включать ли полностью подключенный слой в верхней части сети.
- weights: None (случайная инициализация) или ‘imageenet’ (веса ImageNet).
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- pooling: Опциональный режим объединения в пулы для извлечения функций, когда include_top — False.
- None означает, что на выходе модели будет 4D тензор последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применено глобальное усредненное объединение, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras Model
Ссылки
- Обучение переносимым архитектурам для распознавания масштабируемых изображений
Лицензия
Эти веса выпущены под лицензией Apache.
MobileNetV2
keras.applications.mobilenet_v2.MobileNetV2(input_shape=None, alpha=1.0, include_top=True, weights=’imagenet’, input_tensor=None, pooling=None, classes=1000)
Модель MobileNetV2, с грузами, предварительно подготовленными на ImageNet.
Данная модель и может быть построена как в формате данных ‘channels_first’ (channels, height, width), так и в формате данных ‘channels_last’ (height, width, channels).
Входной размер по умолчанию для данной модели — 224×224.
Аргументы
- input_shape: необязательный кортеж формы, который должен быть указан, если вы хотите использовать модель с входным разрешением img, которое не является (224, 224, 3). Она должна иметь ровно 3 входных канала (224, 224, 3). Вы также можете пропустить эту опцию, если хотите сделать вывод о том, что модель с входным разрешением input_shape должна иметь ровно 3 входных канала (224, 224, 3). Если вы выберете и input_tensor, и input_shape, то при их совпадении будет использоваться input_shape, если же фигуры не совпадают, то мы забросим ошибку. Например (160, 160, 3) будет одно действительное значение.
- alpha: контролирует ширину сети. Это известно как множитель ширины в бумаге MobileNetV2.
- Если alpha< 1.0, пропорционально уменьшает количество фильтров в каждом слое.
- Если alpha> 1.0, пропорционально увеличивает количество фильтров в каждом слое.
- Если alpha= 1, по умолчанию в каждом слое используется количество фильтров из бумаги.
- include_top: включать ли полностью подключенный слой в верхней части сети.
- weights: один из None (случайная инициализация), ‘imagenet’ (предварительная подготовка на ImageNet), или путь к файлу весов, который будет загружен.
- input_tensor: необязательный тензор Keras (т.е. вывод layers.Input()) для использования в качестве входного изображения для модели.
- pooling: Необязательный режим объединения в пулы для извлечения функций, когда include_top — False.
- None означает, что на выходе модели будет 4D тензор последнего конволюционного блока.
- avg» означает, что к выходу последнего конволюционного блока будет применено глобальное усредненное объединение, и, таким образом, на выходе модели будет 2D тензор.
- max» означает, что к выходу модели будет применено глобальное максимальное объединение.
- classes: необязательное количество классов для классификации изображений, указывается только в том случае, если include_top имеет значение True и аргумент весов не указан.
Возвращает
Экземпляр Keras model
Исключения
ValueError: в случае недействительного аргумента для весов, или недействительной входной формы, альфа, строк, когда weights=’imagenet’
Ссылки
- MobileNetV2: Инвертированные остатки и линейные узкие места
Лицензия
Эти веса выпущены под лицензией Apache.