Благодаря богатому пользовательскому опыту, возможности повторно использовать код и расширяемости Keras делает процесс написания кода простым и гибким. Помимо этого он также предлагает дополнительные возможности в составе приложений Keras.
Основные приложения — это модели глубокого обучения с натренированными весами.
Пользователь может использовать их для составления прогнозов или использования отдельных признаков в своей работе без необходимости создавать и тренировать собственные модели.
В этой статье речь пойдет о таких натренированных моделях, а также о том, как их использовать.
Натренированные модели Keras
В Keras доступны 10 натренированных моделей. Они используются для классификации изображений, а их веса натренированы с помощью набора данных ImageNet.
Эти модели доступны в модуле applications
в Keras. Для работы с ними их нужно импортировать с помощью keras.applications._model_name_
Далее список доступных моделей:
Xception | InceptionResNetV2 |
VGG16 | MobileNet |
VGG19 | MobileNetV2 |
ResNet, ResNetV2 | DenseNet |
InceptionV3 | NASNet |
Например: для загрузки и начала работы с моделью ResNet50
from keras.applications.resnet50 import ResNet50
model=ResNet50(weights='imagenet')
У всех моделей разные размеры весов и при создании экземпляра модели они загружаются автоматически. В зависимости от размеров процесс загрузки может занять некоторое время.
Что такое ImageNet?
ImageNet — это крупный набор данных с аннотированными объектами. Цель создания ImageNet — развития алгоритмов компьютерного зрения. Это коллекция объектов-изображений, включающая около 1000 категорий изображений с примечаниями.
С 2010 года проект ежегодно организовывает конкурс ImageNet Large Scale Visual Recognition Challenge, в рамках которого участники должны создавать модели на основе этой базы для классификации объектов или изображений.
Вот примеры популярных классов изображений в наборе:
- Животные:
- Рыбы,
- Птицы,
- Млекопитающие.
- Растения:
- Деревья,
- Цветы,
- Овощи.
- Материалы:
- Ткани.
- Инструменты:
- Посуда,
- Инструменты,
- Приборы.
- Место действия:
- Комнаты.
Эти категории в свою очередь делятся на подкатегории
Реализация натренированных моделей Keras
- Импорт модели и необходимых библиотек.
from keras.preprocessing import image from keras.applications.resnet50 import ResNet50 from keras.applications.resnet50 import preprocess_input from keras.applications.resnet50 import decode_predictions import numpy as np
- Создание экземпляра модели.
model=ResNet50(weights='imagenet')
- Анализ модели с помощью:
model.summary()
- Изображение на ввод для прогноза.
path='./….../...png' # путь к изображению img=image.load_img(path,target_size=(224,224)) x=image.img_to_array(img) x=np.expand_dims(x,axis=0) x=preprocess_input(x)
- Прогноз
res=model.predict(x) print(decode_predictions(res,top=5)[0])
Вот топ-5 прогнозов модели. Вывод модели:
Можно увидеть, что модель предсказывает изображения таких птиц, как щегол, якамар, дрозд, вьюрок или американская оляпка.
Имеющиеся модели можно использовать и для классификации изображений без натренированной модели.
Также существует способ использования моделей на собственных изображениях и составления прогнозов на основе своих классов. Это называется трансферным обучением, где используются отдельные признаки модели для конкретной проблемы.
Выводы
Статья иллюстрирует основную сферу применения Keras, то есть, натренированные модели. Рассматривает ImageNet и его классы. Также на примерах показывается, насколько легко классифицировать изображения с помощью имеющихся моделей, а также обозначается термин трансферного обучения. Имеющиеся модели — одни из лучших структур нейронных сетей для точной классификации изображений и объектов.