АННОТАЦИЯ 2
ВВЕДЕНИЕ 7
1 МЕТОДЫ РАСПОЗНАВАНИЯ 9
1.1 Требования к системе распознавания дорожных знаков 9
1.2 Существующие методы распознавания 9
1.2.1 Анализ признаков 9
1.2.2 Машина опорных векторов 11
1.2.3 Random forest 13
1.2.4 Каскад классификаторов 14
1.2.5 Искусственные нейронные сети 15
1.3 Обзор существующих разработок 18
Выводы по первому разделу 20
2 ЗАДАЧА РАСПОЗНАВАНИЯ. АЛГОРИТМ РЕШЕНИЯ
ПРЕДОБРАБОТКА ИЗОБРАЖЕНИЙ. ОБУЧЕНИЕ СВЕРТОЧНОЙ
НЕЙРОННОЙ СЕТИ 21
2.1 Постановка задачи распознавания 21
2.2 Алгоритм решения задачи 22
2.2.1 Предварительная обработка изображения 23
2.2.2 Сегментация изображения 27
2.2.3 Распознавание изображений дорожных знаков 31
2.3 Топология нейронной сети 34
2.4 Обучение сверточной нейронной сети 35
2.4.1 Ошибка сверточных слоев 35
2.4.2 Ошибка полносвязных слоев 35
Выводы по второму разделу 36
3 МЕТОДИКА ИССЛЕДОВАНИЙ. РЕЗУЛЬТАТЫ ЭКСПЕРИМЕНТА 37
3.1 Обучающая выборка для нейронной сети 37
3.2 Методика исследования 43
3.3 Результаты экспериментов 43
3.4 Время работы алгоритмов 45
Выводы по третьему разделу 46
ЗАКЛЮЧЕНИЕ 46
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 48
ПРИЛОЖЕНИЯ
ПРИЛОЖЕНИЕ 1 49
В настоящее время компьютерные технологии являются неотъемлемой частью жизни практически всех окружающих нас людей. Существует огромное множество вычислительных систем, возможности которых достаточно обширны, и с каждым днем спектр этих возможностей только увеличивается, поскольку компьютерная индустрия развивается колоссальными темпами. Компьютерные технологии стали доступными появились узкие сферы компьютерной деятельности.
Одним из самых популярных направлений компьютерных наук в наше время является компьютерное зрение. Программные решения, использующие компьютерное зрение постепенно внедряются в нашу повседневную жизнь. Различные интеллектуальные системы, выполняющие разную работу, помогают людям во многих задачах. Системы распознавания дорожных знаков - являются одним из примеров таких приложений. Они направлены на повышение безопасности дорожного движения и повышение комфорта водителей, за счет некоторой автоматизации. Зачастую, человеческий фактор играет далеко не последнюю роль. Это сказывается на качестве вождения. Потеря должного внимания, концентрации, может привести к опасным для жизни последствиям.
Следует отметить, что задачи распознавания являются абсолютно нетривиальными. Постоянные изменения условий, таких как изменение освещения, местоположения и различное окружение объектов усложняют задачи распознавания и, на данный момент, не существует какого-либо универсального, канонического решения. Но в то же время существует множество различных и принципиально разных подходов к решению подобных задач.
Цель данной работы - предложить один из способов реализации системы распознавания дорожных знаков с использованием сверточной нейронной сети. Данная система направлена на распознавание дорожных знаков на видеопотоке в режиме реального времени. В конечном итоге результат работы программы это соотнесенный найденный на изображении дорожный знак к одному из 23 классов. В качестве распознаваемых знаков были выбраны часто встречающиеся на территории Российской Федерации в условиях городского движения дорожные знаки[1]. Выделим эти классы распознавания.
Запрещающие дорожные знаки:
• «Ограничение скорости» (сюда относятся 10 классов распознавания, в зависимости от значения цифры ограничения: 5, 10, 20, 30, 40, 60, 70, 80, 100, 120 км/ч)
• «Въезд запрещен»
• «Обгон запрещен»
• «Конец зоны запрещения обгона»
Предписывающие дорожные знаки:
• «Движение прямо»
• «Движение налево»
• «Движение направо»
• «Движение прямо или налево»
• «Движение прямо или направо»
• «Объезд препятствия слева»
• «Объезд препятствия справа»
Предупреждающие знаки:
• «Пешеходный переход»
Знаки приоритета:
• «Главная дорога»
• «Уступите дорогу»
Для достижения поставленной цели были решены следующие задачи:
1. Разработка синтезатора изображений
2. Разработка алгоритма сегментации
3. Реализация программы распознавания
В работе разработан и исследован алгоритм распознавания дорожных знаков с использованием сверточной нейронной сети.
Особенности данного алгоритма в том, что он устойчив к изменению освещения,углов плоскости знака и поворота самой плоскости знака.
Разработана программа, реализующая предложенный алгоритм на языках Matlata C++ с использованием библиотеки OpenCV (рисунок 4.1). Реализованная программа позволяет распознавать дорожные знаки на видеопотоке в режиме реального времени.
Для создания обучающей выборки для сверточной нейронной сети, реализована программа имитации различных шумов для генерации большого количества изображений.
Цели и задачи данной работы выполнены.
Разработана методика эксперимента, в ходе которого были установлены оценки качества работы алгоритма. Алгоритм был протестирован в реальных условиях с помощью видеопотока. Было установлено, что сверточная нейронная сеть независимо дает верные ответы в около 97 % случаев, тогда как общий алгоритм распознавания дорожных знаков распознает 80 % случаев, вследствие неустойчивости алгоритма детектирования к определенному виду шумов.
Так как алгоритм обрабатывает в среднем 2 кадра в секунду, то можно использовать алгоритм для распознавания дорожных знаков в режиме реального времени, то вычислительная сложность не позволяет использовать алгоритм в мобильных устройствах.
В перспективе возможно усовершенствование части детектирования дорожных знаков за счет введения новых алгоритмов детектирования, которые будут более устойчивыми к изменению параметров среды, что позволит существенно повысить качество работы программы.
По результатам работы сделан доклад для Южно-Уральской школы по математическому моделированию. Тезисы доклада будут опубликованы.