3D 可变形注意力 (DFA3D)
作者:Hongyang Li*, Hao Zhang*, Zhaoyang Zeng, Shilong Liu, Feng Li, Tianhe Ren, 和 Lei Zhang :email:。
这个仓库是论文"DFA3D: 用于2D到3D特征提升的3D可变形注意力"的官方实现。
:fire: 新闻
[2023/7/15] 我们的论文被ICCV2023接收。
[2023/8/24] 我们开源了3D可变形注意力(DFA3D)以及启用DFA3D的BEVFormer。
:spiral_calendar: 待办事项
- 发布3D可变形注意力。
- 发布BEVFormer-DFA3D-PredDepth(-base & -small)和BEVFormer-DFA3D-GTDepth。
- 添加更多注释。
- 格式化并发布"准备深度图"的代码。
- 发布3D注意力可视化工具。
:scroll: 摘要
在本文中,我们提出了一种新的算子,称为3D可变形注意力(DFA3D),用于2D到3D特征提升,它将多视图2D图像特征转换到统一的3D空间用于3D目标检测。 现有的特征提升方法,如基于Lift-Splat和基于2D注意力的方法,要么使用估计的深度获取伪激光雷达特征然后将其分散到3D空间,这是一个没有特征细化的单次操作,要么忽略深度并通过2D注意力机制提升特征,这实现了更精细的语义但存在深度模糊问题。 相比之下,我们基于DFA3D的方法首先利用估计的深度将每个视图的2D特征图扩展到3D,然后利用DFA3D从扩展的3D特征图中聚合特征。借助DFA3D,深度模糊问题可以从根本上得到有效缓解,并且由于采用了类Transformer的架构,提升的特征可以逐层渐进细化。此外,我们提出了DFA3D的数学等价实现,可以显著提高其内存效率和计算速度。我们将DFA3D集成到几种使用基于2D注意力特征提升的方法中,只需对代码进行少量修改,并在nuScenes数据集上进行评估。实验结果显示平均提升了+1.41 mAP,当有高质量深度信息可用时,最高可提升+15.1 mAP,展示了DFA3D的优越性、适用性和巨大潜力。
:hammer_and_wrench: 方法
特征提升方法的比较。
改进。
我们的DFA3D为几种方法带来了一致的改进,包括两项同期工作(DA-BEV 和 Sparse4D)。
提高深度质量将带来进一步的收益(最高可达15.1% mAP)。
如何将基于2D注意力的特征提升转换为我们的基于3D可变形注意力的方法。
这里,我们以2D可变形注意力为例,只需对代码进行少量修改。更多详情,请参考我们在模型库中提供的示例。
更多详情,请参考我们提供的启用DFA3D的BEVFormer。
:rocket: 模型库
我们分别用DFA2D和DFA3D表示2D可变形注意力和我们的3D可变形注意力。
方法 | 特征提升 | mAP / NDS | 配置 | 检查点 | |
---|---|---|---|---|---|
0 | BEVFormer-base | 基于DFA2D | 41.6 / 51.7 | 配置 | 模型 |
基于DFA3D | 43.2 / 53.2 +1.6 / +1.5 | 配置 | 模型 | ||
1 | BEVFormer-small | 基于DFA2D | 37.0 / 47.9 | 配置 | 模型 |
基于DFA3D | 40.3 / 50.9 +3.3 / +3.0 | 配置 | 模型 | ||
2 | BEVFormer-base-GTDepth | 基于DFA2D | - / - | - | - |
基于DFA3D | 57.6 / 63.6 +16.0 / +11.9 | 配置 | 模型 |
:gear: 使用方法
我们基于mmcv开发了3D可变形注意力。我们在python=3.8.13,pytorch=1.9.1,cuda=11.1
环境下测试了我们的方法。其他版本可能也适用。
安装
- 克隆此仓库。
git clone https://github.com/IDEA-Research/3D-deformable-attention.git
cd 3D-deformable-attention/
- 安装Pytorch和torchvision。
按照https://pytorch.org/get-started/locally/的说明操作。
# 示例:
conda install -c pytorch pytorch torchvision
- 编译并安装3D-Deformable-Attention。
cd DFA3D
bash setup.sh 0
# 检查是否正确安装。
cd ../
python unittest_DFA3D.py
运行
准备数据集
按照BEVFormer中的说明构建数据集。并下载我们准备的深度图(通过将单次扫描的激光雷达点投影到多视图图像上获得),并在以下位置解压:
./data/nuscenes/depth_gt/
评估我们预训练的模型
下载模型库中提供的检查点。
cd BEVFormer_DFA3D
bash tools/dist_test.sh 配置文件路径 检查点路径 1
# 示例:
bash tools/dist_test.sh ./projects/configs/bevformer/bevformer_base_DFA3D_GTDpt.py ./ckpt/bevformer_base_DFA3D_gtdpt.pth 1
训练模型
bash ./tools/dist_train.sh 配置文件路径 8
# 示例
bash ./tools/dist_train.sh ./projects/configs/bevformer/bevformer_base_DFA3D_GTDpt.py 8
:black_nib: 引用
@inproceedings{
title={DFA3D: 3D Deformable Attention For 2D-to-3D Feature Lifting},
author={Hongyang Li and Hao Zhang and Zhaoyang Zeng and Shilong Liu and Feng Li and Tianhe Ren and Lei Zhang},
booktitle={Proceedings of the IEEE/CVF international conference on computer vision},
year={2023}
}