Особая благодарность инвестору Plotly, NVIDIA, за помощь в рассмотрении этих приложений Dash с открытым исходным кодом для исследований и разработок автономных транспортных средств, и Lyft за разработку начальной визуализации данных в Plotly.

Автор: Син Хан Лу, @xhlulu

📌 Чтобы узнать больше о том, как использовать Dash для автономных транспортных средств и приложений искусственного интеллекта, зарегистрируйтесь для участия в нашем записанном веб-семинаре с Син Хан Лу, ведущим инженером Plotly по искусственному интеллекту и машинному обучению.

Представьте себе обед, просмотр ваших любимых телешоу или беседу с друзьями через видеозвонок в комфорте вашего автомобиля, поскольку он может отвезти вас из дома на работу, на встречу или в совершенно другой город в нескольких часах езды. Фактически, он будет вести вас через дождь и снежные бури, избегать выбоин и идентифицировать пешеходов, переходящих улицы в условиях низкой освещенности; все это при обеспечении безопасности всех. Для этого производителям автомобилей потребуется достичь так называемой автоматизации вождения уровня 5 (L5), что означает, что функции автоматизированного вождения не потребуют от вас управления автомобилем и могут ездить везде в любых условиях. »По определению SAE International .

Достижение такого уровня автоматизации управления было мечтой многих инженеров, разработчиков программного обеспечения и исследователей. Любой производитель автомобилей, способный первым достичь уровня L5, сразу же окажется впереди конкурентов. Это также могло бы сделать дороги безопаснее для всех, уменьшив человеческий фактор, который вызывает 94% серьезных аварий в Соединенных Штатах. По этим причинам различные модели, наборы данных и библиотеки визуализации были публично выпущены на протяжении многих лет, чтобы стремиться к полностью автономным транспортным средствам (АВ). Чтобы поддержать развитие автономного вождения и помочь исследователям лучше понять, как беспилотные автомобили видят мир, мы представляем четыре приложения Dash, которые охватывают воспроизведение автономных автомобильных поездок, считывание и визуализацию данных в реальном времени, а также обнаружение видеокадров и аннотации.

От KITTI к Motional и Lyft: 7 лет наборов данных открытого доступа для AV-сообщества

Опубликованный в 2012 году как исследовательский документ, Тест KITTI Vision был одним из первых общедоступных тестов для оценки моделей компьютерного зрения на основе автомобильной навигации. За 6 часов автомобильных поездок по сельскому городку в Германии он собирал данные датчиков в реальном времени: координаты GPS, видеопоток и облака точек (с помощью лазерного сканера). Кроме того, он предлагал аннотации трехмерных ограничивающих рамок, оптический поток, стерео и различные другие задачи. Создавая модели, способные точно предсказывать эти аннотации, исследователи могут помочь системам автономных транспортных средств точно определять местонахождение автомобилей / пешеходов и прогнозировать расстояние до объектов / дорог.

В 2019 году исследователи из Motional выпустили nuScenes, набор данных с открытым доступом, включающий более 1000 сцен, собранных в Сингапуре и Бостоне. Всего было собрано 1,5 млн цветных изображений и 400 тыс. Облаков точек на лидаре в различных метеорологических условиях (дождь и ночь). Чтобы облегчить навигацию по этому набору данных, авторы также выпустили Python devkit для легкого извлечения и чтения собранных данных датчиков для данной сцены. Он также включал возможности для построения статического 2D-рендеринга облаков точек на каждом изображении.

В том же году Lyft выпустила набор данных о восприятии уровня 5 (L5), который включает более 350 сцен и более 1,3 млн ограничивающих рамок. Чтобы изучить этот новый набор данных, они создали ответвление набора разработчиков nuScenes и добавили инструменты преобразования, улучшения рендеринга видео и интерактивные визуализации в Plotly. Чтобы побудить сообщество использовать набор данных для создания моделей, способных обнаруживать объекты в трехмерном мире, они объявили конкурс на Kaggle с призовым фондом в 25 000 долларов.

После вклада Motional и Lyft, различные автомобильные компании выпустили свои собственные наборы данных AV, включая Argo, Audi, Berkeley, Ford, Waymo и многие другие.

Веб-инструменты визуализации облаков точек и ограничивающих рамок LIDAR

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

Одна из библиотек, которая может быть использована для решения этой проблемы, - это deck.gl. Созданный в Uber и поддерживаемый командой vis.gl, он предлагает интерактивную трехмерную визуализацию, которую можно напрямую интегрировать с картами через Mapbox. Среди широкого диапазона типов слоев вы можете найти облака точек и многоугольники, которые могут соответственно использоваться для отображения и взаимодействия с точками LIDAR и аннотациями ограничивающей 3D-рамки.

Хотя различные инструменты, предлагаемые deck.gl, чрезвычайно настраиваемы и могут использоваться в различных приложениях, вам все равно придется реализовать все самостоятельно, чтобы создать пользовательский интерфейс для визуализации AV-сцен. Чтобы облегчить этот процесс и ускорить разработку пользовательских панелей мониторинга AV, та же команда разработчиков deck.gl создала streetcape.gl (также известную как Autonomous Visualization System или AVS), набор компонентов React, который позволяет вам создавать полностью настраиваемая AV-панель на нескольких сотнях строк JavaScript. При использовании данных, записанных в формате XVIZ, вы можете предварительно сгенерировать полную сцену и загрузить ее в браузер клиента, обеспечивая плавное воспроизведение всего сегмента.

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

Хотя обе библиотеки чрезвычайно полезны для исследований AV, они требуют от пользователя некоторого знания JavaScript, React, Node.js и webpack. Из-за этого исследователям и инженерам AV становится сложнее создавать индивидуальные решения без команды разработчиков, специализирующихся на интерфейсных технологиях, что замедляет цикл разработки новых функций AV и затрудняет интеграцию этих инструментов визуализации с существующими инструментами AV и машинным обучением. библиотеки уже доступны в Python. По этим причинам мы представляем 3 шаблонных приложения Dash, которые могут помочь в исследованиях и разработках программного обеспечения, систем и инструментов AV путем абстрагирования, оптимизации и унификации различных AV-библиотек и наборов данных с открытым исходным кодом.

Приложение Dash №1: Автономная система визуализации (AVS) в Dash

Все основные компоненты Dash, а также многие популярные компоненты, созданные сообществом созданы с использованием React.js, который представляет собой ту же платформу для взаимодействия с streetcape.gl. Следовательно, можно было сначала создать приложение React UI, а затем обернуть его как пользовательский компонент Dash, используя шаблон компонента Dash. Это делает ваши пользовательские интерфейсы, созданные с помощью streetcape.gl, напрямую доступными для приложений Dash, созданных на Python, R или Julia.

Для этой демонстрации мы создали базовый пользовательский интерфейс, вдохновленный официальной демонстрацией Streetscape.gl и содержащий множество показателей и элементов управления, помогающих понять сцену.

В этом приложении Dash AVS вы можете воспроизвести интерактивный клип, содержащий сцену, которая представляет собой сегмент автомобильной поездки с данными, собранными с датчиков LIDAR, камер, GPS, самого автомобиля и от людей-аннотаторов (например, ограничивающей рамки аннотации). В любой момент вы можете остановить клип, чтобы:

  • перемещаться, перетаскивая зрителя
  • увеличивать или уменьшать масштаб с помощью колеса прокрутки
  • наклонять или вращать, удерживая CTRL и перетаскивая мышью

Используя собственные Основные компоненты Dash или компоненты, созданные сообществом, такие как Dash Bootstrap, вы также можете создавать собственные компоненты, чтобы дать пользователю больше контроля над тем, что визуализируется. Вы можете напрямую выбирать различные стили карты, наборы данных и URL-адреса сцен, а также использовать базовую или расширенную версию пользовательского интерфейса. Учитывая эти входные данные, вы можете просто создать компонент BasicUI или AdvancedUI и передать URL-адрес, содержащий журналы, в качестве аргумента.

Все это приложение написано менее чем на 200 строк кода Python, и его можно легко развернуть и масштабировать с помощью диспетчера приложений Dash Enterprise.

Приложение Dash # 2: Визуализация набора данных Lyft Perception с помощью панели инструментов

Наше второе приложение позволяет вам исследовать конкретную сцену из набора данных Lyft Perception. Вы можете перемещаться между кадрами, нажимая на одну из кнопок или перетаскивая ползунок, чтобы установить точное время сцены. Через приборную панель интерактивное средство просмотра отображает аннотации облаков точек и ограничивающих прямоугольников в заданном кадре аналогично первому приложению. Вы можете выбирать между различными видами карты, устройствами LIDAR, камерами и переключать различные наложения на изображение.

Разница между этим приложением и первым станет очевидным, если вы изучите детали реализации. Если вам нужна большая гибкость в визуализации и вы хотите использовать полностью ориентированное на Python решение, вам может быть интересно использовать pydeck, интерфейс Python для рендеринга представлений deck.gl. Хотя это требует дополнительных настроек и настроек, вы можете иметь значительно больший контроль во время разработки приложения. Например, вы можете решить, какой цвет будет иметь каждое облако точек, непрозрачность облака точек, точную форму объекта-сетки, начальное положение камеры и точку обзора (которая может быть орбитальной, от первого лица или вид карты).

Еще одно важное отличие заключается в том, что Dash AVS требует, чтобы вы сначала преобразовали ваши данные в XVIZ, прежде чем обслуживать или передавать сцену пользователю. С другой стороны, это приложение можно легко изменить для использования любого возможного формата данных, если вы можете предварительно обработать ввод в формате, принятом pydeck или dash-deck. Причина в том, что все делается динамически и в реальном времени. Фактически, каждый раз, когда пользователь выбирает определенный кадр, происходит следующее:

  1. Lyft / nuScenes SDK извлекает текущий кадр и загружает облака точек, аннотации и изображения, снятые камерами.
  2. Панды используются для предварительной обработки облаков точек.
  3. Pydeck создает облака точек и полигональные слои.
  4. Pyquarternion проецирует облака точек и прямоугольники на изображение.
  5. Dash Deck и Plotly Express соответственно визуализируют средство просмотра колоды и граф изображения.

Все шесть из этих библиотек доступны через Python. Фактически, первые четыре библиотеки не были специально предназначены для использования в Dash. Они просто работают из коробки, потому что Dash был разработан для бесперебойной работы с большинством сценариев использования Python. Это означает, что вы можете легко изменить это приложение для выполнения обработки в реальном времени, такой как создание трехмерной сетки или прогнозирование ограничивающей рамки с помощью PointNet, перед отображением кадра.

Приложение Dash №3: обнаружение объектов и редактируемые аннотации для видеокадров

Наше третье приложение позволяет воспроизводить сцены вождения из набора данных Berkeley DeepDrive, который содержит 1100 часов видеороликов о вождении. Видео дополнено аннотациями двухмерных ограничивающих рамок, созданными с помощью MobileNet v2, которые были сгенерированы и встроены в видео. В дополнение к воспроизведению сцены вы можете остановить видео в любое время, запустить алгоритм MobileNet в режиме реального времени и интерактивно редактировать или добавлять новые ограничивающие рамки в эту точную временную метку. Когда вы будете довольны аннотациями, вы можете перейти к следующему кадру или следующей сцене и загрузить обновленные и новые аннотации в виде файлов CSV.

Это приложение - наш любимый пример использования алгоритмов компьютерного зрения вместе с аннотаторами-людьми для ускорения процесса сбора данных. Поскольку приложение полностью построено на Python и использует только встроенные функции dash-player, Plotly.py и TensorFlow Hub, вы можете легко настроить его для использования более сложных моделей и выполнения требований к техническим аннотациям, которые фактически ограничены только вашим выбором библиотек в Python. Например, вы можете решить сохранить все новые аннотации в базе данных SQL (которые автоматически включаются в Dash Enterprise), экспортировать их в облачное хранилище с помощью библиотеки типа boto3 или создать снимок рабочий сеанс, которым вы можете поделиться с другими аннотаторами.

Дополнительные приложения Dash для улучшения визуализации беспилотных автомобилей

В дополнение к этим трем приложениям мы создали различные приложения Dash с открытым исходным кодом, которые можно использовать для поддержки разработки беспилотных автомобилей:

  • Dash Deck Explorer (демо - код): этот проводник позволяет вам попробовать все возможные слои, которые вы можете построить с помощью pydeck и отрендерить с помощью dash-deck. Краткое описание и исходный код прилагаются!
  • Dash DETR (демонстрация - код): это приложение позволяет вводить URL-адрес изображения и применять обнаружение объектов в реальном времени с помощью преобразователя обнаружения (DETR), модели нейронной сети. создано Facebook AI Research. Код может быть легко повторно использован и интегрирован в различные рабочие процессы для обнаружения 2D-объектов, таких как обнаружение пешеходов и транспортных средств внутри изображений с помощью PyTorch hub.
  • Обозреватель обнаружения объектов (демонстрация - код). Подобно приложению для обнаружения видео, это приложение позволяет воспроизводить видео, которые ранее были аннотированы с помощью детектора MobileNet. Вместо того, чтобы запускать модель на кадре, она вместо этого считывает журналы, созданные детектором, чтобы получить полезную информацию, такую ​​как количество пешеходов на изображении и достоверную тепловую карту объектов, которые в настоящее время присутствуют на экране.
  • Dash Uber Rides (демо - код): мониторинг и проверка поездок на беспилотном автомобиле станет важной задачей для обеспечения надежности AV-системы в различных условиях и местах. Это приложение позволяет визуализировать поездки Uber по Нью-Йорку и предлагает различные элементы управления для быстрого выбора определенного набора поездок.

Вы заинтересованы в создании приложений для автономного вождения или в использовании расширенных компонентов визуализации в Dash? Обратитесь, чтобы узнать больше о том, как вы можете принять участие в разработке средств визуализации автономного вождения нового поколения!