UniTR

UniTR

多模态变换器网络推动3D感知进展

UniTR是一种新型统一多模态变换器网络,用于3D感知任务。它通过共享权重处理相机和激光雷达等多传感器数据,实现高效多模态融合。在nuScenes数据集上,UniTR在3D目标检测和BEV地图分割任务中均达到最新水平,且降低推理延迟。该研究为提升自动驾驶系统的感知能力提供了新思路。

UniTR多模态转换器3D感知目标检测BEV分割Github开源项目

UniTR:首个统一的多模态3D感知Transformer主干网络

本仓库是ICCV2023论文《UniTR: 用于鸟瞰图表示的统一高效多模态Transformer》的官方实现,以及后续相关工作。我们的UniTR在nuScenes数据集上实现了最先进的性能,使用了真正统一的、权重共享的多模态(如摄像头和激光雷达)主干网络。UniTR基于[DSVT]的代码库构建,我们竭尽全力确保代码库简洁、易读、先进,并且只依赖最少的外部库。

UniTR: 用于鸟瞰图表示的统一高效多模态Transformer

王海阳*, 唐浩*, 石少帅 $^\dagger$, 李傲雪, 李正国, Bernt Schiele, 王立威 $^\dagger$

联系人: 王海阳 (wanghaiyang6@stu.pku.edu.cn), 唐浩 (tanghao@stu.pku.edu.cn), 石少帅 (shaoshuaics@gmail.com)

🚀 感谢唐浩对代码的大量重构和对开源项目的重要贡献。他的宝贵努力对UniTR的顺利完成至关重要。

🔥 👀 诚实地说,UniTR中的分区操作较慢,占用了总时间的约40%,但通过更好的策略或一些工程优化,这部分可以优化至零,表明速度优化还有很大空间。我们不是高性能计算专家,但如果业界有人想改进这一点,我们相信可以将其减半。重要的是,这部分不会随模型规模增加而增加,这对更大的模型很友好。

📘 我将毫无保留地分享我对通用3D感知基础模型的理解和未来计划。请参阅🔥 潜在研究方向🔥。如果您觉得对您的研究有用或有启发,欢迎加入我一起构建这个蓝图。

解读文章: [CVer] [自动驾驶之心] [ReadPaper] [知乎] [CSDN] [TechBeat (将门创投)]

新闻

  • [24-07-01] 🔥 我们的 GiTECCV2024 接收。如果您觉得有帮助,请给它一个星标。🤗
  • [24-03-15] 🔥 GiT,首个仅使用ViT的成功通用视觉模型已发布。对应潜在研究方向,我们尝试解决视觉端通用模型的问题。结合UniTR和GiT构建适用于自动驾驶场景的类LLM统一模型是一个有趣的方向。
  • [23-09-21] 🚀 NuScenes的代码已发布。
  • [23-08-16] 🏆 SOTA 我们的单一多模态UniTR在nuScenes检测基准(2023年8月)上超越了所有其他非TTA方法,NDS达到74.5
  • [23-08-16] 🏆 SOTA 在NuScenes验证集上实现了多模态3D目标检测和BEV地图分割的最佳性能。
  • [23-08-15] 👀 UniTR在arXiv上发布。
  • [23-07-13] 🔥 UniTR被ICCV 2023接收。

概览

待办事项

  • 发布arXiv版本。
  • 多模态3D目标检测(NuScenes)和BEV地图分割(NuScenes)的最佳性能。
  • 整理并发布NuScenes的代码。
  • 将UniTR合并到OpenPCDet

简介

联合处理多个传感器的信息对于实现准确和稳健的感知至关重要,这是可靠自动驾驶系统的基础。然而,当前的3D感知研究遵循特定模态的范式,导致额外的计算开销和不同传感器数据之间的协作效率低下。

在本文中,我们提出了一个高效的户外3D感知多模态主干网络,它使用统一建模和共享参数处理各种模态。这是一个基本上与任务无关的主干网络,天然支持不同的3D感知任务。它在nuScenes基准测试中创造了新的最先进性能,在3D目标检测方面实现了+1.1 NDS的提升,在BEV地图分割方面实现了+12.0 mIoU的提升,同时推理延迟更低。

主要结果

3D目标检测(NuScenes验证集)

模型NDSmAPmATEmASEmAOEmAVEmAAE检查点日志
UniTR73.070.126.324.726.824.617.9检查点日志
UniTR+LSS73.370.526.024.426.824.818.7检查点日志

3D目标检测(NuScenes测试集)

模型NDSmAPmATEmASEmAOEmAVEmAAE
UniTR74.170.524.423.325.724.113.0
UniTR+LSS74.570.924.122.925.624.013.1

BEV地图分割(在NuScenes验证集上)

模型平均IoU可行驶区人行横道人行道停止线停车场分隔带检查点日志
UniTR73.290.473.178.266.667.363.8检查点日志
UniTR+LSS74.790.774.079.368.272.964.2检查点日志

这里有什么新内容?

🔥 超越了之前室外多模态3D目标检测和BEV分割的最佳成果

我们的方法在多个任务(如3D目标检测和BEV地图分割)上取得了最佳性能,并且具有高度的通用性,只需替换骨干网络即可。

3D目标检测
<div align="left"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/9fe4895c-ee72-48a9-aa3b-822de2b97292.png" width="700"/> </div>
BEV地图分割
<div align="left"> <img src="https://yellow-cdn.veclightyear.com/835a84d5/28cebae7-759a-4d7b-aeac-9d791177b558.png" width="700"/> </div>

🔥 所有模态间共享权重

我们引入了一个与模态无关的transformer编码器,用于处理这些视角不一致的传感器数据,实现并行的模态特定表示学习和自动跨模态交互,无需额外的融合步骤。

🔥 3D视觉基础模型的先决条件

权重共享的统一多模态编码器是基础模型的先决条件,特别是在3D感知的背景下,统一来自图像和LiDAR数据的信息。这是第一个真正的多模态融合骨干网络,可以无缝连接到任何3D检测头。

快速开始

安装

conda create -n unitr python=3.8 # 安装torch,我们只在pytorch 1.10中测试过 pip install torch==1.10.1+cu113 torchvision==0.11.2+cu113 -f https://download.pytorch.org/whl/torch_stable.html git clone https://github.com/Haiyang-W/UniTR cd UniTR # 安装额外依赖 pip install -r requirements.txt # 安装nuscenes-devkit pip install nuscenes-devkit==1.0.5 # 开发 python setup.py develop

数据集准备

OpenPCDet
├── data
│   ├── nuscenes
│   │   │── v1.0-trainval (或v1.0-mini如果你使用mini版本)
│   │   │   │── samples
│   │   │   │── sweeps
│   │   │   │── maps
│   │   │   │── v1.0-trainval  
├── pcdet
├── tools
  • (可选)要安装用于bev地图分割任务的地图扩展,请从地图扩展(地图扩展包(v1.3))下载文件,并将文件复制到你的nuScenes地图文件夹中,例如/data/nuscenes/v1.0-trainval/maps,如下所示:
OpenPCDet
├── maps
│   ├── ......
│   ├── boston-seaport.json
│   ├── singapore-onenorth.json
│   ├── singapore-queenstown.json
│   ├── singapore-hollandvillage.json
  • 通过运行以下命令生成数据信息(可能需要几个小时):
# 创建数据集信息文件,激光雷达和图像gt数据库 python -m pcdet.datasets.nuscenes.nuscenes_dataset --func create_nuscenes_infos \ --cfg_file tools/cfgs/dataset_configs/nuscenes_dataset.yaml \ --version v1.0-trainval \ --with_cam \ --with_cam_gt \ # --share_memory # 如果使用共享内存进行激光雷达和图像gt采样(大约24G+143G或12G+72G) # 共享内存将大大提高你的训练速度,但需要150G或75G额外的缓存内存。 # 注意:所有实验都使用了共享内存。共享内存不会影响性能
  • 生成的数据格式如下:
OpenPCDet
├── data
│   ├── nuscenes
│   │   │── v1.0-trainval (或v1.0-mini如果你使用mini版本)
│   │   │   │── samples
│   │   │   │── sweeps
│   │   │   │── maps
│   │   │   │── v1.0-trainval  
│   │   │   │── img_gt_database_10sweeps_withvelo
│   │   │   │── gt_database_10sweeps_withvelo
│   │   │   │── nuscenes_10sweeps_withvelo_lidar.npy (可选) # 如果开启共享内存
│   │   │   │── nuscenes_10sweeps_withvelo_img.npy (可选) # 如果开启共享内存
│   │   │   │── nuscenes_infos_10sweeps_train.pkl  
│   │   │   │── nuscenes_infos_10sweeps_val.pkl
│   │   │   │── nuscenes_dbinfos_10sweeps_withvelo.pkl
├── pcdet
├── tools

训练

请从unitr_pretrain.pth下载预训练检查点,并将文件复制到根文件夹下,例如UniTR/unitr_pretrain.pth。这个文件是在Imagenet和Nuimage数据集上预训练DSVT的权重。

3D目标检测:

# 多GPU训练 ## 普通 cd tools bash scripts/dist_train.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr.yaml --sync_bn --pretrained_model ../unitr_pretrain.pth --logger_iter_interval 1000 ## 添加lss cd tools bash scripts/dist_train.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr+lss.yaml --sync_bn --pretrained_model ../unitr_pretrain.pth --logger_iter_interval 1000

BEV地图分割:

# 多GPU训练 # 注意,我们在BEV地图分割中不使用图像预训练 ## 普通 cd tools bash scripts/dist_train.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr_map.yaml --sync_bn --eval_map --logger_iter_interval 1000 ## 添加lss cd tools bash scripts/dist_train.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr_map+lss.yaml --sync_bn --eval_map --logger_iter_interval 1000

测试

3D目标检测:

# 多GPU测试 ## 普通 cd tools bash scripts/dist_test.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr.yaml --ckpt <检查点文件> ## 添加LSS cd tools bash scripts/dist_test.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr+lss.yaml --ckpt <检查点文件>

BEV地图分割

# 多GPU测试 ## 普通 cd tools bash scripts/dist_test.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr_map.yaml --ckpt <检查点文件> --eval_map ## 添加LSS cd tools bash scripts/dist_test.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr_map+lss.yaml --ckpt <检查点文件> --eval_map # 注意:评估结果不会记录在*.log中,只会在终端中打印

缓存测试

  • 🔥如果你使用的数据集的相机和激光雷达参数保持不变,那么使用我们的缓存模式不会影响性能。你甚至可以在训练阶段缓存所有映射计算,这可以显著加快你的训练速度。
  • Nuscenes中的每个样本的相机参数会有一些变化,在正常推理过程中,我们禁用缓存模式以确保结果准确性。然而,由于我们映射的鲁棒性,即使在像Nuscenes这样相机参数有变化的场景中,性能也只会略微下降(大约0.4 NDS)。
  • 缓存模式目前只支持batch_size为1,8x1=8
  • 根据我们的观察,骨干网络缓存可以减少40%的推理延迟。
# 仅适用于3D目标检测 ## 普通 ### 缓存多模态骨干网络的映射计算 cd tools bash scripts/dist_test.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr_cache.yaml --ckpt <检查点文件> --batch_size 8 ## 添加LSS ### 缓存多模态骨干网络的映射计算 cd tools bash scripts/dist_test.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr+LSS_cache.yaml --ckpt <检查点文件> --batch_size 8

添加LSS

缓存多模态主干网络和LSS的映射计算

cd tools bash scripts/dist_test.sh 8 --cfg_file ./cfgs/nuscenes_models/unitr+LSS_cache_plus.yaml --ckpt <检查点文件> --batch_size 8

#### 在NuScenes验证集上的缓存测试性能(相机参数有些变化)
|  模型  | NDS | mAP |mATE | mASE | mAOE | mAVE| mAAE |
|---------|---------|--------|---------|---------|--------|---------|--------|
|  [UniTR (缓存主干网络)](https://github.com/Haiyang-W/UniTR/blob/main/tools/cfgs/nuscenes_models/unitr_cache.yaml) | 72.6(-0.4) | 69.4(-0.7) | 26.9 | 24.8 | 26.3 | 24.6 | 18.2 |
|  [UniTR+LSS (缓存主干网络)](https://github.com/Haiyang-W/UniTR/blob/main/tools/cfgs/nuscenes_models/unitr%2Blss_cache.yaml) | 73.1(-0.2) | 70.2(-0.3) | 25.8 | 24.4 | 26.0 | 25.3 | 18.2 | 
|  [UniTR+LSS (缓存主干网络和LSS)](https://github.com/Haiyang-W/UniTR/blob/main/tools/cfgs/nuscenes_models/unitr%2Blss_cache_plus.yaml) | 72.6(-0.7) | 69.3(-1.2) | 26.7 | 24.3 | 25.9 | 25.3 | 18.2 | 

## 潜在研究方向
* **3D视觉基础模型的基础架构。**
  对大型模型来说,高效的网络设计至关重要。有了可靠的模型结构,大型模型的开发就可以推进。如何使通用多模态主干网络更高效且易于部署。说实话,UniTR中的划分较慢,大约占总时间的40%,但通过更好的"划分策略"或"一些工程努力",这可以优化至零,表明在速度优化方面仍有巨大空间。我们不是高性能计算专家,但如果业内有人想改进这一点,我们相信可以将其减半。重要的是,这部分不会随模型大小而扩展,这对更大的模型很友好。
* **基于图像-激光雷达对和UniTR的多模态自监督学习。**
  请参考下图。图像和点云都描述了同一个3D场景;它们在高度信息丰富的对应关系方面相互补充。这允许使用共享参数对更通用的场景表示进行无监督学习。
* **单模态预训练。** 我们的模型与ViT几乎相同(除了一些位置嵌入策略)。如果我们适当调整位置嵌入,DSVT和UniTR可以直接加载ViT的预训练参数。这有利于与2D社区更好地整合。
* **3D视觉的统一建模。**
  请参考下图。
<div align="center">
  <img src="https://yellow-cdn.veclightyear.com/835a84d5/308acddf-9f45-41b8-a70f-62b51a29897d.png" width="800"/>
</div>

## 可能遇到的问题
* 如果在fp16训练过程中遇到梯度变为NaN的情况,不支持。
* 如果找不到解决方案,请在我们的github问题页面[这里](https://github.com/Haiyang-W/UniTR/issues)搜索已开放和已关闭的问题。
* 我们在训练阶段默认提供torch检查点选项[这里](https://github.com/Haiyang-W/UniTR/blob/3f75dc1a362fe8f325dabd2e878ac57df2ab7323/tools/cfgs/nuscenes_models/unitr.yaml#L125),以节省50%的CUDA内存。
* Nuscenes中的样本在相机参数上有一些变化。因此,在训练过程中,每个样本都会重新计算相机-激光雷达映射,这显著降低了训练速度(~40%)。如果您数据集中的外部参数是一致的,我建议在训练期间缓存这个计算。
* 如果仍然无法解决,请在我们的github上开一个新的问题。我们通常会在几天内回复。

## 引用
如果我们的工作对您有帮助,请考虑按以下方式引用:

@inproceedings{wang2023unitr, title={UniTR: A Unified and Efficient Multi-Modal Transformer for Bird's-Eye-View Representation}, author={Haiyang Wang, Hao Tang, Shaoshuai Shi, Aoxue Li, Zhenguo Li, Bernt Schiele, Liwei Wang}, booktitle={ICCV}, year={2023} }


## 致谢
UniTR使用了来自几个开源仓库的代码。如果没有这些人的努力(以及他们愿意发布他们的实现),UniTR就不可能实现。我们感谢这些作者的努力!
* Shaoshuai Shi: [OpenPCDet](https://github.com/open-mmlab/OpenPCDet)
* Chen Shi: [DSVT](https://github.com/Haiyang-W/DSVT)
* Zhijian Liu: [BevFusion](https://github.com/mit-han-lab/bevfusion)

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
�问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多