Методы распознавания 3D-объектов для беспилотных автомобилей. Доклад Яндекса |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-01-27 11:23 Беспилотному авто не обойтись без понимания, что находится вокруг и где именно. В декабре прошлого года разработчик Виктор Отлига vitonka выступил на «Дата-елке» с докладом о детекции 3D-объектов. Виктор работает в направлении беспилотных автомобилей Яндекса, в группе обработки дорожной ситуации (а также преподает в ШАДе). Он объяснил, как мы решаем задачу распознавания других участников дорожного движения в трехмерном облаке точек, чем эта задача отличается от распознавания объектов на изображении и как извлечь пользу из совместного использования разных типов сенсоров.
Широко изучена задача 2D-распознавания объектов на изображении. Ссылка со слайда Можно воспользоваться стандартными метриками или их аналогами. Есть коэффициент Жаккарда или intersection over union, замечательный коэффициент, который показывает, насколько хорошо мы объект задетектили. Можем взять коробочку, где, как мы предполагаем находится объект, и коробочку, где он находится на самом деле. Посчитать эту метрику. Есть стандартные пороги — допустим, для машин часто берут порог в 0,7. Если эта величина больше, чем 0,7, мы считаем, что успешно задетектировали объект, что объект там находится. Мы молодцы, можем ехать дальше. Ссылка со слайда Обычно для измерения качества 3D-детекции берут датасет и делят его на несколько частей, потому что объекты могут находиться близко или дальше, могут быть частично заслонены чем-то другим. Поэтому часто валидационную выборку делят на три части. Объекты, которые легко задетектировать, средней сложности и сложные, далекие или которые заслонены сильно. И меряют отдельно на трех частях. И в результатах при сравнении мы тоже будем брать такое разбиение. Мерить качество можно как в 3D, аналог intersection over union, но уже не отношение площадей, а, например, объемов. Но беспилотному автомобилю, как правило, не очень важно, что творится по координате Z. Мы можем взять вид сверху, bird’s eye view, и считать какую-то метрику, как будто мы смотрим это все в 2D. Человек навигируется более-менее в 2D, и беспилотный автомобиль так же. Насколько высока коробочка, не очень часто важно. На чем мерить? Наверное, все, кто хоть как-то сталкивался с задачей детекции в 3D по лидарному облаку, слышали о таком датасете, как KITTI.Ссылка со слайда В некоторых городах Германии был записан датасет, ездила машинка, оборудованная сенсорами, у нее были и GPS датчики, и камеры, и лидары. Потом было размечено порядка 8000 сцен, и было поделено на две части. Одна часть тренировочная, на которой все могут тренироваться, а вторая — валидационная, чтобы мериться результатами. Валидационная выборка KITTI считается мерилом качества. Во-первых, на сайте датасета KITTI есть лидер-борд, туда можно посылать свое решение, свои результаты на валидационном датасете, и сравниваться с решениями других игроков на рынке или исследователями. Но также этот датасет доступен публично, можно скачать, никому не рассказать, проверить свои, сравниться и с конкурентами, но публично не выкладывать. Внешние датасеты — это хорошо, на них не надо тратить свое время и ресурсы, но как правило, машина, которая ездила в Германии, может быть оборудована совсем другими датчиками. И всегда хорошо иметь свой внутренний датасет. Тем более внешний датасет расширять за счет других тяжелее, а свой проще, можно этим процессом управлять. Поэтому мы используем замечательный сервис Яндекс.Толока. Мы доработали свою специальную систему для заданий. Пользователю, который хочет помочь в разметке и получить за это вознаграждение, мы выдаем картинку с камеры, выдаем лидарное облако, которое можно повертеть, приблизить, отдалить, и просим его поставить коробочки, ограничивающие наше пространство bounding boxes, чтобы в них попадала машина или пешеход, или что-то другое. Таким образом мы собираем внутреннюю выборку для личного использования. Допустим, мы определились, какую задачу мы будем решать, как будем считать, что мы это сделали хорошо или плохо. Взяли где-то данные.Какие есть алгоритмы? Начнем с 2D. Задача детекции 2D очень хорошо известна и изучена. Ссылка со слайда Наверняка многие знают об алгоритме SSD, который является одним из state of the art методов детекции 2D-объектов, и в принципе можно считать, что в некотором роде задача детекции объектов на изображении достаточно хорошо решена. Если что, мы можем пользоваться этими результатами как какой-то дополнительной информацией. Ссылка со слайда Например, можно подклеивать его к дескрипторам отдельных точек и решать задачу сегментации, для каждой точки определять, к какому объекту она принадлежит. Это просто дорога или человек, или машина. И тут представлены результаты из статьи. Ссылка со слайда Можно заметить, что этот алгоритм очень хорошо справляется. В частности, мне очень нравится тот столик, в котором часть данных о столешнице выкинули, и он, тем не менее, определил, где ножки и где столешница. И этот алгоритм, в частности, можно использовать как кирпичик для построения дальнейших систем. Ссылка со слайда Архитектура выглядит примерно так. Сначала мы как-то выделяем регионы, которые нас интересуют, в каждом регионе делаем сегментацию, а потом решаем задачу нахождения bounding box, который ограничивает интересующий нас объект. Подход себя зарекомендовал. На картинках можно заметить, что он достаточно хорошо работает, но в нем есть и недостатки. Подход двухуровневый, из-за этого он может быть медленным. Нам нужно сначала применить сети и распознать 2D-объекты, потом вырезать, а потом уже решить на кусочке облака задачу сегментации и выделения bounding box, поэтому он может работать немного медленно. Другой подход. Почему бы нам не превратить наше облако в какую-нибудь структуру, похожую на картинку? Идея такая: давайте посмотрим сверху и дискретизируем наше лидарное облако. Получим кубики пространств.Ссылка со слайда Внутри каждого кубика к нам попали какие-то точки. Можем какие-то фичи по ним посчитать, а можем применить PointNet, который для каждого кусочка пространства посчитает какой-то дескриптор. У нас получится воксель, у каждого вокселя признаковое описание, и это будет более-менее похоже на плотную структуру, как у картинки. Мы уже сможем делать разные архитектуры, например SSD-подобную архитектуру для детекции объектов. Последний подход, который был одним из самых первых подходов к объединению данных с нескольких сенсоров. Было бы грешно использовать только лидарные данные, когда у нас есть еще и данные с камер. Один из этих подходов называется Multi-View 3D Object Detection Network. Его идея в следующем: подадим на вход большой сети сразу три канала входных данных.Ссылка со слайда Это картинка с камеры и, в двух вариантах, лидарное облако: сверху, с bird’s-eye view, и какое-то представление спереди, то, что мы видим впереди себя. Подадим это на вход нейронке, и она сама внутри себя все сконфигурирует, будет выдавать нам конечный результат — объект. В завершение — пример работы нашего детектора:
Источник: habr.com Комментарии: |
|