О чем эта история
Студенческая гоночная команда МГТУ им. Н. Э. Баумана одна из первых в России проектирует беспилотные гоночные автомобили для международных соревнований Formula Student. Система автономного вождения беспилотного болида должна распознавать объекты на трассе. Для этого используются нейросети.
Участники команды обучили четыре сети архитектуры YOLOv5 в Compute Cloud и выбрали оптимальный вариант с точки зрения быстродействия и качества детекции, получив в сжатые сроки и без посторонней помощи точные и эффективные инструменты для решения задач распознавания объектов на трассе.
В чем суть driverless-гонок
Formula Student — это международные студенческие инженерные соревнования, для участия в которых необходимо за один год спроектировать и построить болид. Ежегодно в них принимает участие около тысячи команд со всего мира. Например, в Германии, где проводится состязание, практически у каждого немецкого вуза, связанного с автомобильной промышленностью, есть своя команда. По результатам Formula Student талантливый студент может попасть в автомобильную индустрию.
Гонки автомобилей класса FSD (Formula Student Driverless) были заявлены как отдельное направление лишь в 2016 году. В отличие от Roborace (первых в мире беспилотных автогонок), в Formula Student беспилотные автомобили не соревнуются друг с другом непосредственно на трассе, а оцениваются отдельно по скорости, маневренности и эффективности.
Соревнование делится на статические и динамические дисциплины. В статических испытаниях оценивается проектирование автомобиля, его стоимость, бизнес-план. После них обязательно проходит техническая инспекция. Среди динамических испытаний самое зрелищное — Track Drive. Гоночные автомобили двигаются по трассе поодиночке и преодолевают десять кругов длиной в 5 километров с максимальной скоростью, без помощи пилотов и без дистанционного управления. Победителем становится тот участник, который набрал наибольшую сумму баллов по всем дисциплинам.
Что нужно беспилотному болиду
Команда Bauman Racing Team существует с 2012 года. Студенты регулярно готовят автомобили для участия в Formula Student. За все время команда построила семь гоночных автомобилей (BRT1 — BRT7), которые состязались в классе FSC (Formula Student Combustion). Все болиды принимали участие в международных соревнованиях в Германии, Австрии, Чехии, Венгрии, Италии, Испании и России. При этом команда дважды становилась победителем российского этапа и призером гонки в Андорре.
Перейдя в класс соревнований FSD, студенты работают над беспилотным гоночным болидом с электрической силовой установкой и системой управления, обеспечивающей автономное передвижение по гоночной трассе. Bauman Racing Team — одна из первых команд в России, разрабатывающая такой автомобиль.
Сверточные нейронные сети
В систему автономного вождения заложен алгоритм, который позволяет распознавать объекты на трассе (например, конусы) в реальном времени, за счет чего автомобиль движется в правильном направлении. Для распознавания студенты Bauman Racing Team использовали сверточные нейронные сети, которые лучше всего справляются с этой задачей.
Основа работы этих сетей — многократный прогон так называемой матрицы весов по всему обрабатываемому изображению. Нейросеть создает целую гамму матриц, каждая из которых кодирует отдельные элементы изображения (например, линии и дуги, расположенные под разными углами). Проход матрицы по слою формирует новое, чуть менее детальное изображение — карту признаков. Все эти карты признаков формируют новый слой. К нему снова применяется тот же механизм прогона матриц весов. С каждым повторением появляется всё больше карт, их детализация падает, а признаки становятся всё более явными. Повторяя этот процесс, нейросеть отфильтровывает маловажные детали и выделяет существенные элементы изображения.
Архитектура YOLO
Вычислительные ресурсы на борту болида ограниченны, поэтому очень важно было выбрать архитектуру, лучше всего подходящую с точки зрения быстродействия и качества детекции. Участники команды остановились на архитектуре YOLO. Она позволяет различать объекты за один прогон, и поэтому она на несколько порядков быстрее по сравнению с другими алгоритмами обнаружения. Студенты протестировали наиболее широкий класс сетей YOLOv5, в котором архитектуры значительно отличаются друг от друга по количеству используемых параметров распознавания.
Виртуальные машины в облаке
Для быстрого обучения нейросети нужно обрабатывать большие объемы данных при бесперебойной работе железа, поэтому потребовалось быстро увеличить вычислительные мощности. При этом покупать и обслуживать собственное оборудование дорого и трудозатратно. Кроме того, нужно постоянно тратить время на обслуживание инфраструктуры. Оптимальным вариантом стало использование облачных технологий.
Для тестирования набора нейросетей команда выбрала сервис Compute Cloud облачной платформы Yandex Cloud.
Как обучали нейросети
Нужно было обучить четыре сети архитектуры YOLOv5 (s, m, l, x) и выгрузить результаты в виде графиков, отчетов о работе, весах нейросетей. Для решения этой задачи в Compute Cloud было создано несколько виртуальных машин с высокопроизводительными графическими процессорами NVIDIA Tesla V100, внутри которых были развернуты Docker‑контейнеры с различными архитектурами нейронной сети. Эта конфигурация позволила проводить быстрые вычисления, делать это бесперебойно и таким образом сократить время тестирования и ускорить разработку.
Каждая из нейросетей обучалась на исходном наборе данных из двадцати тысяч изображений. Всего потребовалось 66 часов: обучение YOLOv5s заняло 5,23 часа, YOLOv5m — 9,3 часа, YOLOv5l —15 часов, а YOLOv5x — 36 часов.
Итоги обучения и выбор архитектуры
По результатам тестирования нейросетей удалось сузить круг подходящих архитектур до двух с наименьшим числом параметров — YOLOv5s и YOLOv5m. Выяснилось, что качество детекции на тестовой выборке у всех четырех сетей для поставленной задачи отличается слабо. Таким образом команде удалось определиться с выбором инструментов для распознавания объектов.
Что дальше
Команда Bauman Racing Team заканчивает проектировать автомобиль и отлаживать алгоритмы в симуляторе. Кстати, студенты планируют увеличивать датасет для обучения нейросети в Yandex Cloud и использовать облачную платформу в других областях, например для решения задачи семантический сегментации. Сейчас команда только начинает собирать свой болид, а закончить планирует к лету — разгару сезона Formula Student, когда должны пройти этапы в Чехии, Венгрии и Германии.
Мнение
Когда мы начали работать над детекцией объектов, мы выбрали платформу Yandex Cloud потому, что для нас, новичков, она оказалась наиболее удобной. Прежде всего из-за прозрачного выбора аппаратных ресурсов — собирая виртуальную машину в Compute Cloud, мы точно знали, какие процессор, видеокарта или память будут использованы. Кроме этого, работе помогла подробная документация на русском языке и широкий набор сервисов. Так как мы получаем новые пригодные для наших целей датасеты и продолжим обучать на них нейросети, то планируем использовать сервисы Yandex Cloud и в дальнейшем. Например, сейчас мы пробуем сервис Yandex DataSphere.