Компьютерное зрение. Машиное обучение с использовнием нейронных сетей (Keras)

Следующим этапом введения в компьютерное зрение является переход к более широкораспространенному инструменту в современных исследованиях, а именно нейронным сетям.

Знакомство с нейронными сетями начнем с фреймворка Keras. И на базе того же датасета MNIST попробуем сначала обучить собственную сверточную нейронную сеть.

По умолчанию Keras имеет в своей основе TensorFlow, который имеет достаточно хорошую поддержку GPU.

Импортируем зависимости, которые нам понадобятся:

Загрузка датасета

Keras имеет из коробки функционал по загрузке интересующего нас датасета, потому им и воспользуемся.

Подготовка датасета и параметров обучения

Далее зададим переменные с параметрами датасета и настройками обучения. В нашем случаем размер изображения 28×28, число классов 10. В качестве настроек обучения примем размер подвыборки 512 изображений и длительность обучения 10 эпох.

Деление датасета на подвыборки приводит к уменьшению общности выборки на которой оптимизируются веса модели, однако позволяет производить обучение на больших датасетах последовательно оптимизируя модель для всех подвыборок из него. Основная причина использования подвыборок — ограничение на объем памяти и размера обучающей модели.

Кроме того, зададим путь для сохранения модели и имя модели.

Следующие команды преобразуют размерность входных данных в соответствии с форматом изображений, принятым в используемом бэкэнде Keras (это может быть как TensorFlow, так и Teano)

Теперь преобразуем значение пикселя из целочисленного значения в число с плавающей точкой и нормализуем его на диапазон [0, 1]

Следующим шагом является преобразование значение класса каждого изображения из целочисленного значения от 0 до 9 в вектор из 10 элементов. Для примера выведем первый.

Создание модели

Следующим шагом является создание нейросетевой модель, например, как последовательную модель Keras.

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

Для добавления слоев в последовательную модель используется метод add.

  • В строке 5 создается объект модели.
  • В строке 6 добавляется входной сверточный слой с указанием размерности входа.
  • В последующих строках добавляются слои модели.

В предложенной модели используются следующие слои:

  • Conv2D — сверточный слой
  • Activation — слой активации
  • MaxPooling2D -слой дискретизации на основе выборки . Цель состоит в том, чтобы уменьшить выборку входного представления (изображение, выходную матрицу скрытого слоя и т. Д.), Уменьшив его размерность и сделав допущения относительно предположений о свойствах, содержащихся в выбранных субрегионах. Работает на основе выбора максимального значения из подвыборки размером pool_size. По умолчанию подвыборка сдвигается без перекрытия.
  • Dropout — слой прореживания для решения проблемы переобучения сети
  • Flatten — преобразование в одномерный вектор
  • Dense — полносвязный слой

После того, как модель сформирована, ее необходимо скомпилировать с указанием функции потерь, оптимизатора и метрики. В нашем случае в качестве функции потерь используется categorical_crossentropy, метрика точности и оптимизатор Ададельта.

После компиляции производится обучение модели методом fit. В метод передаются введенные ранее параметры и данные для обучения и тестирования.

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

Визуализация результата

Для визуализации результатов обучения также как и ранее воспользуемся confusion matrix.

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

Введем имена классов и построим матрицу.

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

Colaboratory Jupiter Notebook

Компьютерное зрение. Машиное обучение с использовнием нейронных сетей (Keras): 1 комментарий

  1. Уведомление: Компьютерное зрение. Введение | Digiratory

Добавить комментарий