Параллельно с факультативным участием инженеров ЦИТМ Экспонента в конкурсе Ice Vision перед нами стояла задача создания пригодного (по памяти и быстродействию) для автомобильных вычислителей алгоритма распознавания дорожной обстановки. Хакатон Ice Vision (UP GREAT Зимний город) был посвящен детектированию дорожных знаков в условиях российской зимы. Цель конкурса — поиск прорывных решений в области беспилотных транспортных средств. На конкурс подало заявку более 170 команд. Организаторы предоставили данные - 32 тысячи размеченных изображений с 62 тысячами знаков, всего порядка 200 тысяч изображений.
Как известно 90% успеха AI проекта - это качественные и правильно подготовленные данные для обучения алгоритма.
Особенности предоставленной базы данных:
Рис. 1. Распределение объектов по их площади
Ключевым фактором успешной реализации проекта стала наша компетенция по анализу и препроцессингу данных, а также экспертное владение инструментами МАТЛАБ. Для выявления наиболее оптимального подхода к проекту потребовалось оперативно определить свойства базы данных, статистику размеров объектов, пригодность базы для обучения того или иного алгоритма, а также возможности по синтезу, доразметке, обрезке, масштабированию и иным преобразованиям данных, которые успешно нами автоматизированы с помощью МАТЛАБ.
То, насколько важна предварительная подготовка данных мы убедились на опыте. Некоторые алгоритмы в принципе не начинали обучаться на предоставленной организаторами базе данных, и только после предварительного обучения алгоритма на специально подготовленном фрагменте данных мы могли продолжить обучение алгоритма по основной базе.
Экспертное владение инструментами МАТЛАБ позволило нам быстро создать весь framework предобработки данных, а также написать адекватную функцию ошибки, которая использовалась при поиске различных вариантов алгоритма. По нашему мнению многие участники Ice Vision не дошли до финала по причинам нехватки компетенций в написании функции ошибки и невозможности быстро подготавливать данные для обучения различных вариантов алгоритмов.
В отличие от других финалистов из ТОП 10, а у нас была возможность пообщаться по итогам конкурса, мы не пользовались дополнительными внешними базами знаков для обучения наших алгоритмов, но смогли получить максимум из представленных изображений. Также мы старались подбирать такие алгоритмы, которые могут поместиться в маломощные бортовые вычислители и быть применены в контексте практических вычислительных ограничений автомобиля. После драки кулаками не машут, но все же мы создали финальную версию алгоритма которая стала вдвое лучше по той же системе оценки.
Рис. 2. Качество снимков
Рис. 3. Исходное распределение знаков
Рис. 4. Распределение знаков после предобработки
В качестве детектора сначала был выбран алгоритм сети Faster RCNN, в основе которой была ResNet-50 предварительно обученная на базе данных ImageNet.
Рис. 5. Принципиальная схема Faster RCNN
Обучение проходило в несколько этапов. На первом этапе система обучалась на сжатых изображениях с низким уровнем регуляризации и после сходимости, мы увеличивали разрешение и регуляризацию. Для пополнения базы данных и максимизации качества детектирования использовались процедуры преобразования исходных данных, такие как выбор центральной части изображения, случайный выбор части изображения и сжатие изображения со случайным масштабом между 0.5 и 1.
Все команды, с которыми мы общались (включая победителя) использовали решения, основанные на 2-шаговых методах, которые сложно применить в автомобильной промышленности из-за низкой скорости их работы. Причина, почему эти алгоритмы применялись в конкурсе — высокая точность детектирования. Поэтому, после подведения итогов мы приняли решение реализовать одношаговый метод основанный на YOLO. Использовав тот же подход к обучению, мы добились высокой точности, но гораздо важнее, что скорость при этом увеличилась более чем на порядок. И теперь эту систему распознавания можно использовать в режимах реального времени, т. е. на беспилотных автомобилях.
Далее мы осуществили перенос CUDA кода на устройство Nvidia Jetson и проверку алгоритма в реальных условиях. Такие устройства очень удобно использовать во многих областях компьютерного зрения, где необходима мобильность и скорость принятия решений на основе видеоданных.