Основные приложения / keras 8

Благодаря богатому пользовательскому опыту, возможности повторно использовать код и расширяемости 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')

У всех моделей разные размеры весов и при создании экземпляра модели они загружаются автоматически. В зависимости от размеров процесс загрузки может занять некоторое время.

Загрузка и начало работы с моделью ResNet50

Что такое ImageNet?

ImageNet — это крупный набор данных с аннотированными объектами. Цель создания ImageNet — развития алгоритмов компьютерного зрения. Это коллекция объектов-изображений, включающая около 1000 категорий изображений с примечаниями.

С 2010 года проект ежегодно организовывает конкурс ImageNet Large Scale Visual Recognition Challenge, в рамках которого участники должны создавать модели на основе этой базы для классификации объектов или изображений.

Вот примеры популярных классов изображений в наборе:

  1. Животные:
    • Рыбы,
    • Птицы,
    • Млекопитающие.
  2. Растения:
    • Деревья,
    • Цветы,
    • Овощи.
  3. Материалы:
    • Ткани.
  4. Инструменты:
    • Посуда,
    • Инструменты,
    • Приборы.
  5. Место действия:
    • Комнаты.

Эти категории в свою очередь делятся на подкатегории

Реализация натренированных моделей Keras

  1. Импорт модели и необходимых библиотек.
    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
    
  2. Создание экземпляра модели.
    model=ResNet50(weights='imagenet')
    
  3. Анализ модели с помощью:
    model.summary()
    
  4. Изображение на ввод для прогноза.
    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)
    
  5. Прогноз
    res=model.predict(x)
    print(decode_predictions(res,top=5)[0])
    

Вот топ-5 прогнозов модели. Вывод модели:

Топ-5 прогнозов модели

Можно увидеть, что модель предсказывает изображения таких птиц, как щегол, якамар, дрозд, вьюрок или американская оляпка.

Имеющиеся модели можно использовать и для классификации изображений без натренированной модели.

Также существует способ использования моделей на собственных изображениях и составления прогнозов на основе своих классов. Это называется трансферным обучением, где используются отдельные признаки модели для конкретной проблемы.

Выводы

Статья иллюстрирует основную сферу применения Keras, то есть, натренированные модели. Рассматривает ImageNet и его классы. Также на примерах показывается, насколько легко классифицировать изображения с помощью имеющихся моделей, а также обозначается термин трансферного обучения. Имеющиеся модели — одни из лучших структур нейронных сетей для точной классификации изображений и объектов.

Тест на знание python

Что выведет этот код?
Что выведет этот код?
Какой будет результат выполнения кода — print(type(1J)) ?
Что нужно вcтавить после "if", для вывода "x четное число"
Что выведет этот код?
Александр
Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ. Пишу на популярные темы: веб-разработка, работа с базами данных, data sciense и другие...