ПРОЕКТИРОВАНИЕ СВЁРТОЧНОЙ НЕЙРОННОЙ СЕТИ ДЛЯ ОПРЕДЕЛЕНИЯ ОБЪЕКТА НА ИЗОБРАЖЕНИИ - Студенческий научный форум

XI Международная студенческая научная конференция Студенческий научный форум - 2019

ПРОЕКТИРОВАНИЕ СВЁРТОЧНОЙ НЕЙРОННОЙ СЕТИ ДЛЯ ОПРЕДЕЛЕНИЯ ОБЪЕКТА НА ИЗОБРАЖЕНИИ

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

В статье описана разработка свёрточной нейронной сети, которая обучена методом обратного распространения ошибки, для определения объекта на изображении. Для реализации программы использовались библиотеки Keras[1] и TensorFlow[2], numpy[3], Pillow[4]позволяющие разработать свёрточную нейронную сеть, которая сможет классифицировать виды транспорта.

Данная работа выполнена в рамках курсового проекта по дисциплине «MachineLearning. Обучающиеся технические системы», научный руководитель – д.ф.-м.н., профессор Воронова Л.И.[5].

Введение

Технологии машинного обучения развиваются с каждым днём и применяются в разных отраслях: медицина, сельское хозяйство, госслужба, бизнес и т.д.Машинное обучение (MachineLearning) — обширный подраздел искусственного интеллекта, изучающий методы построения алгоритмов, способных обучаться[6].

В настоящий момент, в машинном обучении активно развивается сегмент компьютерного зрения. Данная отрасль помогает решить массу задач, начиная от определения объекта на изображении до определения лиц, эмоций на видеопотоке, что помогает при раскрытии преступлений. С помощью технологии компьютерного зрения камеры видеонаблюдения могут определить направление движения объекта, определить регистрационный номер транспортного средства человека, который превысил скоростной режим  на дороге. Используя свёрточные нейронные сети можно отличить, какой вид транспорта изображён на картинке.

Постановка задачи

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

Нейронная сеть, которая будет определять объект на изображении, обучается «с учителем», для этого необходимо подготовить набор данных и распределить его в процентном соотношении. Изображения будут распределены по папкам (каталогам), первый каталог  train(обучение)-70% примеров, validation (проверка)-15% примеров, test (тест)-15% примеров. На рисунке 1 изображены каталоги данных.

Рисунок 1 – Три каталога для обучения

Описание набора исходных данных

Набор данных (dataset) был собран из нескольких открытых наборовKaggle[7]. Таким образом, был подготовлен dataset транспортных средств, который включил в себя четыре классаобъектов для обучения нейронной сети это: самолёт, корабль, автомобиль, грузовик.

После того, как изображения загружены на диск, необходимо подготовить набор данных следующим образом. Для этого необходимо в каталогах train, testи valсоздать новые каталоги, но уже с названием классов. Так внутри каталога testбудет четыре подкаталога:  самолёт, корабль, грузовик, автомобиль, куда и будут распределены изображения. Изображения самолётов помещаются в папку «самолёт», изображения грузовиков в папку грузовик и т.д. Абсолютно так же мы поступаем и с каталогами trainи val, где таким же образом создаются подкаталоги и распределяются изображения. Пример каталога с подкатологом«самолёт» представлен на рисунке 2

Рисунок 2 –Каталог testс изображениями самолётов

Модель нейронной сети

Для распознавания объектов на изображении мы будем использовать свёрточную нейронную сеть. Она состоит из двух слоёв свёртки и одного слоя подвыборки. Именно данные слои отвечают за выделение признаков на поступающем на вход изображении.После слоя подвыборки идёт полносвязный слой, который включает в себя 512 нейронов. Далее следует выходной слой, количество нейронов на данном слое равно количеству классов, в нашем случае класса четыре: самолёт, грузовик, корабль, автомобиль, соответственно количество нейронов на выходе равно четырём (принадлежность к тому или иному классу).

Таким образом, на вход нейронной сети поступает изображение размером 32х32. Размерность изображения выбрана такая, чтобы снизить скорость обучения нашей сети, из этого следует, что на входе количество нейронов равно 1024, но так мы используем цветные изображения, картинка будет передаваться в трёх каналах-RGB (красный, зелёный и синий), поэтомуобщее количество нейронов на входе равно 3072.

На первом слое свёртке используется 32 карты признаков размером 3х3. Каждый нейрон свёрточного слоя, подключен к квадратному участку изображения размером 3х3. Следующий свёрточный слой имеет такую же архитектуру.

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

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

Рисунок 3 –Архитектура свёрточной нейронной сети

Для того чтобы снизить вероятность переобучение используется техника Dropout. Для этого в процессе обучения, когда на вход нейронной сети подаётся каждый новый объект, случайным образом выключается некоторое количество нейронов с заданной вероятностью. Оставшимся в сети нейронам во время обучения, приходится подбирать веса так, чтобы обнаруживать важные признаки самостоятельно, без участия соседних нейронов[8].

Обучение свёрточной нейронной сети

Обучение происходит методом обратного распространения ошибки. Задачей алгоритма является подобрать такие параметры

Просмотров работы: 19