3DETR:基于 Transformer 的端到端 3D 目标检测器
📄 论文:3DETR: An End-to-End Transformer for 3D Object Detection 🔗 arXiv:http://arxiv.org/abs/2109.08141 💻 GitHub:https://github.com/facebookresearch/3detr
引言
随着 Transformer 在 2D 目标检测中取得成功,DETR(Detection Transformer)开创了端到端目标检测范式。3DETR 将这一思路扩展到稀疏的点云输入,在 3D 空间中实现无需 anchor、NMS、候选框生成的全流程检测器。其核心理念是用一个 Transformer 模块从一组 learnable queries 中直接预测物体框,实现结构简洁、训练稳定、推理高效的检测模型。
模型结构
整体架构如下图所示(建议你可插入流程图):
点云输入 → PointNet++ 特征提取 → Transformer Encoder → Learnable Queries → Transformer Decoder → 3D 边界框与类别预测
1. 点云编码(Point Cloud Feature Extractor)
- 使用 PointNet++ 提取点云的局部特征。
- 原始输入为 \(N \times 3\) 或 \(N \times 4\),包含 (x, y, z) 及可选强度值。
- 输出 \(M \times C\) 特征,$M$ 是采样后的点数量,$C$ 是通道数。
2. Transformer 编码器(Encoder)
-
输入为上一步得到的 \(M\) 个点特征,每个特征带有位置嵌入。
-
结构类似于 DETR,采用多层自注意力结构:
$$ \text{Encoder}(x) = \text{SelfAttn}(x + \text{pos}) + \text{FFN} $$
- 作用:建模全局上下文关系,捕捉点与点之间的语义关系。
3. Learnable Object Queries
- 与 DETR 类似,定义固定数量的可学习查询向量 \(Q\),如 128 个,每个代表一个待预测的物体。
- 输入给 Decoder,作为物体存在的先验假设。
4. Transformer 解码器(Decoder)
- 每层 Decoder 中,object queries 与 Encoder 输出做 cross-attention:
$$ \text{Decoder}(q) = \text{CrossAttn}(q, \text{EncoderOut}) + \text{FFN} $$
- 输出每个 query 的嵌入特征,进一步用于预测位置与类别。
5. 边界框与类别预测
-
Decoder 输出的每个 query 被送入两个独立的 MLP:
-
类别预测分支:
\[ \hat{c}_i = \text{Softmax}(MLP_{\text{cls}}(q_i)) \] -
边界框回归分支(预测 3D 包围盒参数):
\[ \hat{b}_i = [x, y, z, dx, dy, dz, \theta] \]
损失函数设计
1. 匈牙利匹配(Hungarian Matching)
为每个 ground truth box 分配唯一预测框,使得:
- 最大化 IoU
- 最小化分类误差与 L1 框误差的加权和
2. 分类损失(Cross Entropy)
- 包含 no-object 类,确保未匹配的 query 不预测虚假目标。
3. 边界框损失
组合两部分:
- L1 损失:
$$ \mathcal{L}_{L1} = \sum ||b_i - \hat{b}_i|| $$
- 3D GIoU 损失(Generalized IoU):
$$ \mathcal{L}_{giou} = 1 - \text{IoU}(b_i, \hat{b}_i) $$
4. 总损失函数
典型超参设定为:\(\lambda_{cls} = 1.0, \lambda_{L1} = 5.0, \lambda_{giou} = 2.0\)
DETR vs. 3DETR 对比
| 模块 | DETR (2D 图像) | 3DETR (3D 点云) |
|---|---|---|
| 输入形式 | H × W 图像(固定分辨率) | N 个点的稀疏点云(变长) |
| 特征提取 | CNN(ResNet) | PointNet++ |
| 位置信息编码 | 图像坐标编码 | 点的 3D 坐标编码 |
| 编码器结构 | Transformer | Transformer |
| 查询方式 | Learnable object queries | Learnable object queries |
| 解码输出 | 2D BBox + 类别 | 3D BBox + 类别 |
| 框架优点 | 无 anchor,无 NMS | 无 anchor,无 voxel,无 proposal |
| 框架挑战 | 收敛慢、对数据量敏感 | 点云稀疏、三维建模复杂 |
总结:
- 3DETR 是 DETR 在 3D 空间的自然拓展,但处理对象由密集像素 → 稀疏点云。
- 相比 2D 图像,3D 点云中的几何结构更复杂,特征稀疏、不规则,空间关系更关键,因此 3DETR 引入 PointNet++ 以适应输入特性。
实验结果
论文在两个主流 3D 检测数据集上进行测试:
| 数据集 | mAP\@0.25 | mAP\@0.5 | 比较模型 |
|---|---|---|---|
| SUN RGB-D | 64.0 | 47.0 | VoteNet, H3DNet |
| ScanNet | 67.2 | 52.7 | VoteNet, GroupFree |
-
观察点:
-
在不使用后处理的前提下,结果优于多数传统 3D 检测方法。
- 对大物体如床、桌子预测效果明显提升。
- 整体检测速度更快,端到端推理流程简单。
总结
3DETR 实现了以下突破:
- ✅ 完全端到端的 3D 检测框架
- ✅ Transformer 强大的上下文建模能力适用于点云
- ✅ 抛弃 anchor 和 NMS,简化检测流程
- ✅ 具有更强的泛化能力和扩展性
它是 3D 检测从 “基于手工结构” 向 “统一建模” 过渡的重要一环。
Ref
- https://zhuanlan.zhihu.com/p/430198800
- https://blog.csdn.net/zyw2002/article/details/128259695
- https://developer.aliyun.com/article/1173817
- https://blog.csdn.net/zwhdldz/article/details/136374371
- https://github.com/WangYueFt/detr3d
- https://tsinghua-mars-lab.github.io/detr3d/
- https://blog.csdn.net/Srlua/article/details/144413327