Skip to content

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)

\[ \mathcal{L}_{cls} = - \sum_{i=1}^Q y_i \log(\hat{c}_i) \]
  • 包含 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. 总损失函数

\[ \mathcal{L}_{total} = \lambda_{cls} \mathcal{L}_{cls} + \lambda_{L1} \mathcal{L}_{L1} + \lambda_{giou} \mathcal{L}_{giou} \]

典型超参设定为:\(\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