Распознавание монохромных изображений свёрточными нейронными сетями
Секция: Технические науки
XLVI Студенческая международная заочная научно-практическая конференция «Молодежный научный форум: технические и математические науки»
Распознавание монохромных изображений свёрточными нейронными сетями
Данная работа посвящена разработке программного продукта, позволяющего распознавать образы свёрточными нейронными сетями. В работе проанализированы существующие методы сравнения и распознавания образов, исследованы сверточные нейронные сети, а также произведены расчеты нейронной сети и составлен алгоритм обучения сети, на основе которых была написана программа для распознавания образов сверточными нейронными сетями.
Введение
Современные методы распознавания образов используются для решения многих задач, например, распознавание текста, изображений, звуковых сигналов, человеческих лиц и др. Также существует задача распознавания изображений на сложном фоне. Такие задачи используются для распознавания номеров автомобилей, для распознавания человеческих лиц и др. Процесс распознавания образов можно разделить на 3 этапа:
1. Выделение области расположения символов на изображении;
2. Выделение отдельных символов;
3. Распознавание символов.
В настоящее время такие технологии реализуются тремя традиционными методами – структурным, признаковым и шаблонным. Каждый из этих методов ориентирован на свои условия применения, для которых они являются эффективными [2].
Шаблонный метод реализации
В данной работе используется шаблонный метод реализации технологии распознавания. В качестве исходных данных имеется база данных MNIST с рукописными изображениями. База данных MNIST содержит 60000 изображений для обучения и 10000 изображений для тестирования. Половина образцов для обучения и тестирования были взяты из набора NIST для обучения, а другая половина из набора NIST для тестирования. MNIST является укороченной версией базы NIST. Кроме того изображения в базе нормированы по размеру и отцентрованы внутри изображения [3].
Свёрточная нейронная сеть
Свёрточная нейронная сеть состоит из чередующихся слоев свертки и субдискретизации. Поступающее на вход изображение подвергается свертке с некоторым ядром свертки [4].
Ядро свертки является набором разделяемых весовых коэффициентов. Результатом данной операции является также некоторое изображение, которое называется картой признаков. В зависимости от выбранного ядра свёртки, карта признаков будет выделять те или иные характеристики входного изображения. Для наиболее полного выделения характеристик входного изображения используется несколько различных ядер свертки так, что на выходе свёрточного слоя получается несколько карт признаков.
За свёрточным слоем следует слой усреднения и субдискретизации, который понижает размерность карты признаков, тем самым понижая чувствительность выходов к сдвигам и поворотам. Такое чередование свёрточных и субдискретизирующих слоёв приводит к постепенному увеличению количества карт признаков при уменьшении их размерности от слоя к слою.
Дополнительным преимуществом данного метода является то, что значения, получаемые на промежуточных слоях, можно интерпретировать в виде реальных объектов, то есть наблюдается некоторое «понимание» нейронной сетью изображения, а следовательно возможен подробный анализ полученных результатов с целью улучшения алгоритма.
Построение структуры свёрточной нейронной сети
Для распознавания выделенных символов была разработана структура сверточной нейронной сети с 3 скрытыми слоями (рис.1).
Рисунок 1. Структура свёрточной нейронной сети для распознавания символов: 1) вход; 2,3) сверточный слой; 4,5) слои из обычных нейронов
Каждый слой сверточной нейронной сети представляет собой набор плоскостей, состоящих из нейронов. Нейроны одной плоскости имеют одинаковые синаптические коэффициенты, ведущие ко всем локальным участкам предыдущего слоя. Каждый нейрон слоя получает входы от некоторой области предыдущего слоя (локальное рецептивное поле), т. е. входное изображение предыдущего слоя сканируется небольшим окном и пропускается сквозь набор синаптических коэффициентов, а результат отображается на соответствующий нейрон текущего слоя. Таким образом, набор плоскостей представляет собой карты признаков, и каждая плоскость находит «свои» участки изображения в любом месте предыдущего слоя. Размер локального рецептивного поля выбирается самостоятельно в процессе разработки нейронной сети [1].
После построения структуры сети, необходимо рассчитать количество нейронов, весов и соединений на всех слоях нейронной сети, чтобы далее использовать эти данные для написания кода программы.
Функция активации
В работе функция активации является масштабируемой версией гиперболического тангенса. Данное решение было принято на основе рекомендации в одной из статей доктора Я. ЛеКуна [5]. Функция гиперболического тангенса, имеет следующий вид:
На рисунке 2. видно, что график функции является полностью симметричным, за счет чего выбор этой функции в качестве активационной является лучшим выбором.
Рисунок 2. График функции гиперболического тангенса
Обучение нейронной сети
Нейронные сети могут обучаться различными алгоритмами и методами, такими как, прямое распространение ошибки, обратное распространение ошибки, методами первого и второго порядка и т.д.
Для обучения сверточной нейронной сети целесообразно использовать алгоритм обратного распространения ошибки [6].
Обратное распространение ошибки представляет собой итерационный процесс, который начинается с последнего слоя и движется в обратном направлении через все слои, пока не будет достигнут первый слой. Допустим, что для каждого слоя известна ошибка на выходе из слоя. Если известна ошибка на выходе, то не трудно рассчитать изменения для весов, тем самым уменьшив ошибку. Проблема заключается в том, что ошибка видна только на выходе самого последнего слоя. Т.е. алгоритм обратного распространения ошибки дает возможность определить ошибку на выходе предыдущего слоя, учитывая ошибку на выходе в текущем слое.
Алгоритм обучения нейронной сети, используемый в данной работе, продемонстрирован на рисунке 3.
Рисунок 3. Алгоритм обучения нейронной сети
Результаты практических экспериментов
Из базы данных MNIST на вход подается образ рукописной цифры. Результат распознавания представлен на рисунке 4.
Рисунок 4. Результаты практических экспериментов
Как мы видим на рисунке 1.4, на вход подаются цифры 8 и 3, на выходе программа распознала их как 8 и 3 соответственно. Это говорит о том, что входные изображения распознаны верно. В результате проведения 100 подобных экспериментов была выявлена всего лишь 1 ошибка распознавания, что составляет 1% от общего числа проведенных экспериментов. Данный результат можно считать отличным.
Заключение
В процессе разработки и проектирования системы были проанализированы существующие методы распознавания и сравнения образов, особенности нейронных сетей (в т.ч. сверточных), особенности обучения нейронных сетей.
Проанализировав существующие методы был разработан алгоритм, по которому написан код программы на языке С++. После отладки приложения получен программных продукт, способный распознавать рукописные цифры.
Результаты проведенных тестов показали высокую точность распознавания за короткий срок, что являлось главной целью данной работы.