Проекты

Свёрточные нейронные сети для распознавания дорожных знаков

Работа призёра открытой городской научно-практической конференции «Инженеры будущего» в секции «Информационные технологии, программирование, прикладная математика, социальный инжиниринг» среди работ учащихся 10−11 классов

Направление работы: Искусственный интеллект
Авторы работы: ГБОУ Школа № 171
Предметы: Информатика
Классы: 10 класс
Мероприятия: Открытая городская научно-практическая конференция «Инженеры будущего» 18−20 апреля 2019 года

Цель

Исследование возможности использования свёрточных нейронных сетей для распознавания дорожных знаков и создание программы по их распознаванию.

Задачи

  • Получение базы данных дорожных знаков, состоящей из фотографий дорожных знаков.
  • Изучение литературных источников по теории разработки свёрточных нейронных сетей.
  • Разработка архитектуры свёрточной нейронной сети.
  • Разработка обучающего нейронную сеть цикла.
  • Разработка цикла проверки корректности обученной нейронной сети.

Описание

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

Нейронная сеть состоит из 6 слоёв:

1. conv1 свёрточный слой с 3 входами (картинка на вход − rgb) и 16 каналами выходов и kernel size = 5 (размер квадратных матриц).

2. pool1 слой типа MaxPool, «объединяющий» пиксели, иначе –  уплотнение карты признаков. Kernel size = 2, stride = 2 (сдвиг, избегающий пересечений).

3. conv2 – свёрточный слой с 16 входами (от предыдущего conv-слоя), 16 выходами (фильтрами) и аналогичной матрицей. 4−6. – fully connected слои – слои полносвязной сети.

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

Обучение и валидация проводились на разных данных, что позволило объективно оценить результаты. В качестве метода минимизации ошибки используется метод градиентного спуска. Функция активации на слоях классификации – relu.

Результат

Результатом работы стала программа, которая определяет класс дорожного знака, изображённого на картинке, в основе которой лежит нейронная сеть. Хотя в силу несбалансированности данных имеет место переобучение нейронной сети на некоторых классах, где число вхождений картинок менее 200 и, как следствие, крайне низкая точность предсказания. Однако у классов, количество изображений которых более 200, наблюдается точность распознавания около 80 %, что является отличным результатом для такого набора данных. Таким образом, в ходе работы были получены и использованы знания о разработке свёрточных нейронных сетей. А также обучен образец свёрточной нейронной сети, распознающий знаки из тестового набора данных с точностью до 90 % и средней точностью 50 %.

Созданная нейронная сеть после доработки может быть использована для установки в автотранспорт. Важно отметить, что решённая задача является реальной и актуальной в области разработки автопилотируемого дорожного транспорта.

Оснащение и оборудование

  • Язык программирования Python 3.
  • Библиотеки для машинного обучения: PyTorch, Pandas, NumPy.

Перспективы использования результатов работы

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

Особое мнение

«Цель работы является одной из актуальных в области машинного обучения. Планируется её дальнейшее развитие»