Одно из самых востребованных направлений Computer Vision сейчас — разработка AV-систем (autonomous vehicles). С появлением автономных транспортных средств значительно увеличились объемы и точность сенсорных данных, которые записываются аппаратными датчиками.
Новые элементы обеспечивают разрешение намного выше, что дает возможность получать более точные измерения. Но для того, чтобы использовать их, нужно корректно объединить и обработать данные со всех датчиков и чаще всего для этого используют 3D Point Cloud Data Labeling.
В данной статье рассмотрим, как слияние данных с датчиков обеспечивает наибольшую оптимизацию процесса разметке данных и обеспечивают стабильную работу моделей.
Зачем нужно совмещать данные с разных датчиков
Сейчас подавляющее большинство автономных транспортных средств используют набор специализированных датчиков для определения факторов окружающей среды. Аппаратные датчики имеют одну или несколько камер, которые размещены по кругу транспортного средства для лучшего обзора. Это позволяет записывать видео в 2D и фиксировать местоположение в 3D при помощи системы RADAR, которая размещается на крыше.
Поставщики датчиков для Tesla уверены в том, что данных двумерных данных достаточно, чтобы автомобиль идентифицировал окружающую обстановку. Определение расстояния до объектов базируется на изменение размеров объектов. Чем ближе объект к датчику, тем больше он будет.
Но многие вместо фотодатчиков используют данные LIDAR, предназначенные для сбора 3-х мерных данных об окружающей среде. Принцип объединения данных 2D и 3D-видео дает AV-системе более точное представление о местоположении объектов, окружающих автомобиль. Развитие этого принципа является самым важным компонентом AV-системы.
Компьютерная зрение - раздел машинного обучения , в которой используются камеры для обработки визуальной информации. При наличие качественной разметке данных, такой подход позволяет компьютерам определить автомобили, грузовики, велосипедистов, пешеходов, дорогу, разметку полос, светофоры, строения, горизонт.
Минус таких камер в том, что они дают 2-х мерное изображение и не показывают расстояние до объекта. Хотя фокусное расстояние и апертура датчика используются для приблизительной оценки глубины объекта, это расстояние не будет точным, так как захват производится 3D датчиком на 2D плоскости, за счет чего происходит потеря информации.
Изначально технология радиолокации использовалась для управления воздушным судном, а также для обнаружения летающих объектов. Радар использовался для оценки местоположения и примерной скорости объекта, но он был непригоден для идентификации конкретных объектов, таких как авто, человек, здание. Это было невозможно в связи с низкой точностью датчиков.
LIDAR в свою очередь использует лазерную технологию для оценки положения и скорости окружающих объектов. Он генерирует до 2 миллионов точек в секунду и благодаря этому он способен измерять форму и контур объекта.
Во многих камерах с RGB системой отсутствует информация о глубине, а вот в данных облака точек нет информации о текстуре и цвете, которая присутствует в изначальной RGB-сетке.
В данных облака точек пешеход определяется контуром на расстоянии 20 футов. На таком же расстоянии можно идентифицировать и остальные объекты. Но частичная визуализация дает информацию низкого качества в тени и не всегда возможно правильно идентифицировать объект.
Получаем палку о двух концах: фото дает нам возможность распознать объект, но не дает понимание о расстояние, а облако точек позволяет оценить расстояние, но не дает визуальной информации об объектах. И именно поэтому самым правильным решением будет - синтез двух подходов.
В результате выполнения слияния визуальных данных и данных облака образуется модель восприятия окружающей среды, которая сохраняет некоторые визуальные особенности объектов и их положение в 3-х мерной сетке. Такой способ помогает обеспечить резервирование в случае отказа датчика. Объединение данных с камер и датчиков включает в себя преобразование изображения 2D в 3D и обратно.
Преобразование 3D в 2D
Чтобы подробно рассмотреть принцип действий, воспользуемся самым большим набором данных с открытым исходным кодом nuScenes для AV-систем. Его ключевые особенности:
● 1500 часов данных о вождении из 4 городов (Бостон, Питтсбург, Лас-Вегас и Сингапур)
● Данные датчиков за 150 часов (5 LIDAR, 8 камер, IMU, GPS)
● Левостороннее и правостороннее движение
● Подробная информация о карте
● 5B 3D-ограничивающие рамки с автоматической маркировкой для 7 классов
● Более 30 типов сценариев (например, смена полосы движения, незащищенный поворот, перебежчик)
Такой датчик имеет 6 камер, три расположены спереди и 3 сзади с частотой 12 ГЦ. При этом они выдают разрешение в 1600x900 пикселей, что позволяет кодировать изображения в формате 1байт/1 пиксель jpeg.
При этом данные с камеры генерируются со скоростью до 1.7 мб/с на кадр. Один такой лидар размещают на крышке автомобиля и захватывает изображение с частотой до 20ГЦ в 32 канала. Если говорить о поле зрения, то оно составляет от -30 до +10 градусов, при дальности до 100 метров. С точностью до 2 см он может собирать информацию до 1.4 миллиона точек в секунду и на выходе все сжимать до pcd формата. Скорость выходных данных датчика составляет 26,7 мб/c.
Важные ссылки:
Страница датасета: https://www.nuscenes.org/overview
URL-адрес статьи: https://arxiv.org/pdf/1903.11027.pdf
URL-адрес набора для разработки: https://github.com/nutonomy/nuscenes-devkit
Настройка единой системы координат с разных датчиков
Для синхронизации датчиков необходимо определить глобальную систему координат, где каждый сенсорный инструмент имеет свою систему отсчета и координат.
Лидар имеет собственную систему отсчета и систему координат L1,
Каждая камера имеет свою систему отсчета и координат C1, C2, C3, C4, C5, C6.
IMU имеет собственную систему отсчета и систему координат I1.
Для целей данного обсуждения система отсчета транспортного средства с датчиком является такой же, как система отсчета лидара.
Как определить глобальную систему отсчета и систему координат
Сейчас глобальной системой отсчета является W1. В ней можно выбрать первый кадр лидара как основную точку и центр (0,0,0) глобальной системы координат. Потом каждый кадр с лидара будет преобразован в общую систему координат. Матрицы камер M1, M2, M3, M4, M5, M6 будут преобразованы из системы координат каждой камеры C1, C2, C3, C4, C5, C6 обратно в мировую систему координат W1.
Преобразование данных 3D-облака точек в глобальную систему координат
Все кадры в системе отсчета лидара (L1) преобразуются обратно в глобальную систему координат посредством умножения на матрицы перевода и вращения эго-кадра.
Преобразование из глобальной системы координат в систему координат камеры
Следующим шагом является преобразование данных из общей системы отсчета в систему отсчета камеры путем умножения на матрицы вращения и перемещения камеры.
Преобразование из системы координат 3D-камеры в рамку 2D-камеры
Когда данные находятся в основном кадре, их необходимо спроецировать из опорного кадра 3D-камеры на плоскость 2D. Это достигается путем умножения на внутреннюю матрицу камеры.
Результат: точная аннотация
Слияние 2 видов данных позволяет разметчикам данных использовать как визуальную информацию об объектах, так и о том, насколько далеко они расположены. Данные, полученные с датчиков лидар имеют высокую степень точности. Они имеют точность до 2 см и разрешение 1600x900 пикселей. Такой высокий уровень точности позволяет использовать автоматические и полуавтоматические методы для уменьшения рутинных задач по маркировке данных.
Если рассматривать на простом примере, то можно взять аннотацию 10 последовательных кадров данных облака точек, где каждый кадр самого элемента сопровождается 6 кадрами с каждой из камер.
Если говорить о разметчиках данных, то они используют специализированные инструменты, позволяющие разметить прямоугольниками объекты, попавшие в область видимости датчиков. При этом инструменты позволяют автоматически интерполировать положение прямоугольника из одного кадра в другой, что снижает объем работ. Им не нужно дважды размечать один и тот же объект в облаке точек и изображениях.
Всем хорошей разметки!
holy_slav
Два раза Ctrl+V нажали.
DELTA37 Автор
Спасибо, поправил)