(2024/5) BEVFusion интегрирован в NVIDIA DeepStream для объединения датчиков.
(2023/5) NVIDIA предоставляет решение для развертывания TensorRT BEVFusion, обеспечивающее скорость 25 кадров в секунду на Jetson Orin.
(2023/4) BEVFusion занимает первое место в таблице лидеров по обнаружению 3D-объектов Argoverse среди всех решений.
(2023/1) BEVFusion интегрирован в MMDetection3D.
(2023/1) BEVFusion принят на ICRA 2023!
(2022/8) BEVFusion занимает первое место в таблице лидеров обнаружения объектов Waymo 3D среди всех решений.
(2022/6) BEVFusion занимает первое место в таблице лидеров по обнаружению 3D-объектов nuScenes среди всех решений.
(2022/6) BEVFusion занимает первое место в таблице лидеров по обнаружению 3D-объектов nuScenes среди всех решений.
Объединение нескольких датчиков необходимо для точной и надежной системы автономного вождения. Последние подходы основаны на слиянии на уровне точек: дополнении облака точек LiDAR функциями камеры. Однако проекция камеры на LiDAR теряет семантическую плотность функций камеры, что снижает эффективность таких методов, особенно для семантически-ориентированных задач (таких как сегментация 3D-сцены). В этой статье мы нарушаем это глубоко укоренившееся соглашение с помощью BEVFusion, эффективной и универсальной многозадачной среды слияния нескольких датчиков. Он объединяет мультимодальные функции в общем пространстве представления «с высоты птичьего полета» (BEV), которое прекрасно сохраняет как геометрическую, так и семантическую информацию. Для достижения этой цели мы диагностируем и устраняем ключевые узкие места эффективности преобразования представлений с помощью оптимизированного пула BEV, сокращая задержку более чем в 40 раз . BEVFusion принципиально не зависит от задач и легко поддерживает различные задачи восприятия 3D практически без архитектурных изменений. Он устанавливает новый уровень развития в тесте nuScenes, достигая на 1,3 % более высокого уровня mAP и NDS при обнаружении трехмерных объектов и на 13,6 % более высокого уровня mIoU при сегментации карт BEV, при этом стоимость вычислений снижается в 1,9 раза .
Модель | мАП-Л1 | МАФ-L1 | МАП-Л2 | МАФ-L2 |
---|---|---|---|---|
БЕВФьюжн | 82,72 | 81,35 | 77,65 | 76,33 |
BEVFusion-ТТА | 86.04 | 84,76 | 81,22 | 79,97 |
Здесь BEVFusion использует только одну модель без увеличения времени тестирования. BEVFusion-TTA использует одну модель с дополнением во время тестирования, без применения ансамбля моделей.
Модель | модальность | карта | НДС |
---|---|---|---|
BEVFusion-е | С+Л | 74,99 | 76.09 |
БЕВФьюжн | С+Л | 70,23 | 72,88 |
База BEVFusion* | С+Л | 71,72 | 73,83 |
*: Мы увеличили значения MAC модели, чтобы они соответствовали вычислительным затратам параллельной работы.
Модель | модальность | карта | НДС | Контрольно-пропускной пункт |
---|---|---|---|---|
БЕВФьюжн | С+Л | 68,52 | 71,38 | Связь |
Базовая линия только для камеры | С | 35,56 | 41.21 | Связь |
Базовый уровень только для LiDAR | л | 64,68 | 69,28 | Связь |
Примечание . Базовая линия обнаружения объектов только камерой — это вариант BEVDet-Tiny с гораздо более тяжелым преобразователем вида и другими различиями в гиперпараметрах. Благодаря нашему эффективному оператору объединения BEV, эта модель работает быстро и имеет более высокое значение mAP, чем BEVDet-Tiny, при том же входном разрешении. Пожалуйста, обратитесь к репозиторию BEVDet для получения исходной реализации BEVDet-Tiny. Базовым вариантом только для LiDAR является TransFusion-L.
Модель | модальность | МИЛОУ | Контрольно-пропускной пункт |
---|---|---|---|
БЕВФьюжн | С+Л | 62,95 | Связь |
Базовая линия только для камеры | С | 57.09 | Связь |
Базовый уровень только для LiDAR | л | 48,56 | Связь |
Код построен с использованием следующих библиотек:
Питон >= 3.8, <3.9
OpenMPI = 4.0.4 и mpi4py = 3.0.3 (необходимы для факела)
Подушка = 8.4.0 (см. здесь)
PyTorch >= 1.9, <= 1.10.2
tqdm
фонарик
ммкв = 1.4.0
ммдетектирование = 2.20.0
nuscenes-dev-kit
После установки этих зависимостей запустите следующую команду, чтобы установить кодовую базу:
разработка python setup.py
Мы также предоставляем Dockerfile для упрощения настройки среды. Чтобы начать работу с Docker, убедитесь, что на вашем компьютере установлен nvidia-docker
. После этого выполните следующую команду для создания образа Docker:
cd docker && сборка докера. -t bevfusion
Затем мы можем запустить докер с помощью следующей команды:
nvidia-docker run -it -v `pwd`/../data:/dataset --shm-size 16g bevfusion /bin/bash
Мы рекомендуем пользователям по возможности запускать подготовку данных (инструкции доступны в следующем разделе) вне докера. Обратите внимание, что каталог набора данных должен иметь абсолютный путь. В докере выполните следующую команду, чтобы клонировать наш репозиторий и установить собственные расширения CUDA:
cd home && git clone https://github.com/mit-han-lab/bevfusion && cd bevfusion разработка python setup.py
Затем вы можете создать символическую ссылку на data
в каталоге /dataset
в докере.
Следуйте инструкциям здесь, чтобы загрузить и предварительно обработать набор данных nuScenes. Не забудьте загрузить как набор данных обнаружения, так и расширение карты (для сегментации карты BEV). После подготовки данных вы сможете увидеть следующую структуру каталогов (как указано в mmdetection3d):
mmdetection3d ├── mmdet3d ├── tools ├── configs ├── data │ ├── nuscenes │ │ ├── maps │ │ ├── samples │ │ ├── sweeps │ │ ├── v1.0-test | | ├── v1.0-trainval │ │ ├── nuscenes_database │ │ ├── nuscenes_infos_train.pkl │ │ ├── nuscenes_infos_val.pkl │ │ ├── nuscenes_infos_test.pkl │ │ ├── nuscenes_dbinfos_train.pkl
Мы также предоставляем инструкции по оценке наших предварительно обученных моделей. Загрузите контрольные точки, используя следующий скрипт:
./tools/download_pretrained.sh
Затем вы сможете запустить:
torchpack dist-run -np [количество графических процессоров] python Tools/test.py [путь к файлу конфигурации] pretrained/[имя контрольной точки].pth --eval [тип оценки]
Например, если вы хотите оценить вариант обнаружения BEVFusion, вы можете попробовать:
torchpack dist-run -np 8 python Tools/test.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml pretrained/bevfusion-det.pth --eval bbox
А для варианта сегментации BEVFusion эта команда будет полезна:
torchpack dist-run -np 8 python Tools/test.py configs/nuscenes/seg/fusion-bev256d2-lss.yaml pretrained/bevfusion-seg.pth --eval map
Мы предоставляем инструкции по воспроизведению наших результатов на nuScenes.
Например, если вы хотите обучить вариант только для камеры обнаружению объектов, запустите:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/det/centerhead/lssfpn/camera/256x704/swint/default.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages -pretrained.pth
Для модели сегментации BEV только для камеры выполните:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/seg/camera-bev256d2.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth
Для детектора только с LiDAR запустите:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/det/transfusion/secfpn/lidar/voxelnet_0p075.yaml
Для модели сегментации BEV только для LiDAR выполните:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/seg/lidar-centerpoint-bev128.yaml
Для модели обнаружения BEVFusion выполните:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/convfuser.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages -pretrained.pth --load_from pretrained/lidar-only-det.pth
Для модели сегментации BEVFusion выполните:
torchpack dist-run -np 8 python Tools/train.py configs/nuscenes/seg/fusion-bev256d2-lss.yaml --model.encoders.camera.backbone.init_cfg.checkpoint pretrained/swint-nuimages-pretrained.pth
Примечание. Запустите tools/test.py
отдельно после обучения, чтобы получить окончательные показатели оценки.
CUDA-BEVFusion: передовой опыт для TensorRT, который предоставляет решения для ускорения INT8 и достигает 25 кадров в секунду на ORIN.
Вопрос: Можем ли мы напрямую использовать информационные файлы, подготовленные mmdetection3d?
О: Мы рекомендуем повторно сгенерировать информационные файлы с использованием этой базы кода, поскольку мы создали ответвление mmdetection3d до рефакторинга их системы координат.
BEVFusion основан на mmdetection3d. Он также во многом вдохновлен следующими выдающимися вкладами в сообщество открытого исходного кода: LSS, BEVDet, TransFusion, CenterPoint, MVP, FUTR3D, CVT и DETR3D.
Пожалуйста, также ознакомьтесь с соответствующими статьями в сообществе, посвященном 3D-восприятию только с помощью камеры, например BEVDet4D, BEVerse, BEVFormer, M2BEV, PETR и PETRv2, которые могут стать интересными будущими расширениями BEVFusion.
Если BEVFusion полезен или имеет отношение к вашему исследованию, пожалуйста, обратите внимание на наш вклад, процитировав нашу статью:
@inproceedings{liu2022bevfusion, title={BEVFusion: многозадачное многосенсорное объединение с унифицированным представлением с высоты птичьего полета}, автор={Лю, Чжицзянь и Тан, Хаотянь и Амини, Александр и Ян, Синъюй и Мао, Хуэйцзы и Рус , Даниэла и Хан, Сонг}, booktitle={Международная конференция IEEE по робототехнике и автоматизации (ICRA)}, год={2023}}