В статье описана реализация поэтапного решения задачи распознавание дорожных знаков. Разработка программы состоит на основе сверточной нейронной сети.
Для реализации программы использовалась библиотека Keras [2], работающая совместно с библиотекой TensorFlow [3], позволяющая разработать нейронную сеть, которая осуществляет классификацию дорожных знаков.
Данная работа выполнена в рамках курсового проекта по дисциплине «Machine Learning. Обучающиеся технические системы», научный руководитель – д.ф.-м.н., профессор Воронова Л.И. [5]
Введение
В ХХI веке, век «Интернета и технологий», люди все чаще пользуются информационными системами в которых применяются нейронные сети, которые позволяют решать широкий круг задач обработки и анализа данных: распознавание и классификация образов, прогнозирование. Области применения нейронных сетей разнообразные: медицина, бизнес, безопасность и охранные системы, интернет, робототехника, машиностроение.
По статистике ГИБДД [1] ежедневно на автомобильных дорогах происходят дорожно-транспортные происшествия (ДТП), нарушение правил дорожного движения (ПДД) одной из самых распространённых причин – это невнимательность водителя. Предлагается рассмотреть методику распознавание дорожных знаков, используя нейронные сети, которая будет встраиваться в автомобили любого класса с минимальными затратами на установку. Данная методика позволит информировать водителя о действующих дорожных знаках на проезжаемом участке дороги, что уменьшит риски появления ДТП и нарушения ПДД.
На сегодняшний день автомобиль может позволить себе как обеспеченный человек, так и студент, в связи с этим автомобилей на дорогах становится больше, следовательно, вероятность появления ДТП увеличивается, как и актуальность данной методики.
Постановка задачи
Задача заключается в создании системы распознавания дорожных знаков. Разработанная система позволит информировать водителя о действующих дорожных знаках на проезжаемом участке дороге, что уменьшит вероятность попадания в дорожно-транспортные происшествия по причине невнимательности водителей.
Для реализации системы распознавания дорожных знаков автор статьи использует сверточную нейронную сеть, в роли обучающего набора данных выступает за ранее подготовленные изображения.
Модель нейронной сети
Проектируемая сеть имеет структуру сверточной нейронной сети, она состоит из первого слоя свертки состоящей из 32 карт размерностью 3х3 и слоя подвыборки 2х2, второго и третьего слоя свертки состоящей из 64 карт размерностью 3х3 и слоя подвыборки 2х2, полносвязного слоя, состоящего из 64 нейронов и выходного слоя из 3 нейронов. Во всех слоях используется функция активации ReLu, на выходном слое используется функция активации sigmoid. Архитектура сверточной нейронной сети изображена на рисунке 1.
Формула функция активации ReLu [4]:
Формула функция активации sigmoid [4]:
Рисунок 1. Архитектура сверточной нейронной сети
Обучение и оценка точности нейронной сети
В качестве набора данных были скачены случайным образом изображения дорожных знаков с сайта Яндекс картинки [6].
Параметры изображения:
Размер пикселей 50х50;
Формат изображения '.jpg';
Изображения цветные (RGB- палитра);
Для реализации нейронной сети было подготовлено три класса дорожных знаков (Таблица №1):
Таблица №1. Входные данные
Классы |
Количество изображений, шт. |
||
Обучающий набор |
Тестовый набор |
Проверочный набор |
|
Знак «Въезд запрещен» (Рис. 2) |
50 |
10 |
10 |
Знак «Уступи дорогу» (Рис.3) |
50 |
10 |
10 |
Знак «Пешеходный переход» (Рис. 4) |
50 |
10 |
10 |
Рисунок 2. Въезд Рисунок 3. Уступи Рисунок 4. Пешеходный
запрещен; дорогу; переход;
Подготовленные изображения хранятся в папках на компьютере «train», «val» и «test» соответственно.
Для распознания дорожных знаков используется сверточная нейронная сеть. Она представляет из себя:
Первой слой свертки, состоящий из 32 карт размерностью 3х3, слой подвыборки на котором происходит уменьшение до 2х2
Второй и третий слой свертки, состоящий из 64 карт размерностью 3х3, слой подвыборки на котором происходит уменьшение до 2х2
Используется функция Flatten для преобразования в одномерную плоскость
Идет полносвязный слой состоящий из 64 нейронов, за ним используем функцию dropout которая предотвращает переобучение.
Выходной слой состоящий из 3 нейронов, дает принадлежность к кому классу относится изображение
Процесс создания сети представлен на рис.5.
Рисунок 5. Создание нейронной сети
Запускаем созданную модель с 15 эпохами и 3 передаваемыми примерами за раз, после чего запускаем обучение, результат которой показан на рис.6.
Рисунок 5. Результат обучения нейронной сети
Точность работы нейронной сети на тестовой выборке составила 88, 89%.
Распознание дорожных знаков
Распознание дорожных знаков производилось на случайно скачанных цветных изображениях дорожных знаков с сайта Яндекс картинки [6] в формате «.jpg» и размерностью 50х50 пикселей. Результаты распознания дорожных знаков приведены в таблице 2.
Таблица 2. Результаты распознания дорожных знаков
Класс 1 |
Класс 2 |
Класс 3 |
|
На вход нейронной сети поступает изображение |
|||
Ожидаемый результат |
«Въезд запрещен» |
«Пешеходный переход» |
«Уступи дорогу» |
Результат работы нейронной сети |
Из таблицы №2 видно, что показания точности нейронной сети к каждому классу равно:
Вьезд запрещен, точность ;
Пешеходный переход, точность ;
Уступи дорогу, точность ;
Распознание дорожных знаков с помощью сверточной нейронной сети считается эффективной если точность не превышает .
Выводы
В данной статье описана создание и тестирование нейронной сети задача которой состоит в распознавание дорожных знаков. Программная реализация показала точность 88, 89% и точность при распознавании дорожных знаков не превышает , основной причиной не сто процентной точности является малый набор примеров в датасете (150 шт.), однако данная точность также доказывает, что данная модель нейронной сети подходит для обучения и может показать куда лучшие результаты при увеличении датасета.
Список литературы и источников информации
Статистика ДТП в России за январь-ноябрь 2018 г. [Электронный ресурс] – –Режим доступа: http://www.1gai.ru/521669-statistika-dtp-v-rossii-za-yanvar-noyabr-2018-goda.html (дата обращения: 13.01.2019).
Открытая библиотека машинного обучения Keras [Электронный ресурс]. –Режим доступа: https://keras.io/ (Дата обращения: 13.01.2019).
Открытая библиотека машинного обучения TensorFlow [Электронный ресурс]. –Режим доступа: https://www.tensorflow.org/ (дата обращения: 13.01.2019).
Научная электронная библиотека, выбор функции активации [Электронный ресурс]. –Режим доступа: https://monographies.ru/ru/book/section?id=2465 (дата обращения: 13.01.2019)
Воронова Л.И., Воронов В.И. Machine Learning: Регрессионные методы интеллектуального анализа данных: учебное пособие – МТУСИ, 2017 – 81 с.
Яндекс картинки [Электронный ресурс]. –Режим доступа: https://yandex.ru/images/(дата обращения: 13.01.2019).