锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

大白话用Transformer做BEV 3D目标检测

时间:2022-11-07 22:00:00 zc01029950传感器

276820ebc5117f10dbb830c17a47d0cf.gif

?作者 | 张恒

单位 | 法国国家信息与自动化研究所

研究方向 |目标检测、传感器集成

如何利用车载环视相机收集的多个图像实现准确 3D 目标检测是自动驾驶感知领域的重要课题之一。针对这个问题,传统的检测方案可以概括为:先用一个 2D 模型从各自的相机视角获取 3D 检测结果,然后通过后处理算法从各个角度进行 3D 投影到检测框 ego frame 再组合在一起。这种做法简单有效,但除了模型学习之外,很难检测到相邻环视相机重叠部分被切断的物体,也很难实现和实现 3D 点云传感器 (LiDAR) 数据级/特征级融合。

▲ Perspective view VS BEV view 3D object detection

随着 Attention 机制在 Vision 领域的成功应用,大家开始关注如何将多个 Perspective view 的图片表征 (image representation) 转化为统一BEV view (Bird's Eye View, 鸟瞰图) 的场景表征 (scene representation),实现完全统一 3D 目标检测。具体来说,传统的 2D 网络包含 Backbone 和 Head 特征提取和目标检测分别使用两个模块。具体来说,传统的 2D 网络包含 Backbone 和 Head 特征提取和目标检测分别使用两个模块。BEV 网络在两者之间增加了一个 BEV Neck,用于 2D 到 3D 的 BEV 投影以及 BEV 从视角提取特征。本文试图盘点市场上几种主流 Transformer-based BEV 3D object detection 该方法侧重于如何从环视相机的角度有效提取 BEV 特征。

以下文章或多或少都是借鉴的 DETR [1] 不懂考试思路的同学建议复习前一篇解读 —— 大白话用Transformer做Object Detection,实现无缝连接。

Feature point sampling

DETR3D [2] 将原本的 DETR 模型拓展到 3D 空间。具体来说:在 2D Image feature extraction 部分使用共享权重 ResNet FPN (output stride = 1/8, 1/16, 1/32, 1/64) 提取环视相机收集的收集 6 图片的特点。

在 3D Transformer decoder 部分,每个 object query 首先,通过子网络预测在现实世界中查询的物体 3D 坐标 (reference point),再利用相机内外参构成的坐标转换矩阵 (camera transformation matrices, 3x4) 现实世界 3D 坐标投影到环视相机 2D 对于像素坐标,采用双线插值采样各相机视角相机视角 PFN 同一位置的特征点(图像外投影的特征点) 0 填充),最后使用采样到的 6x4=24 特征点的平均值作为物体特征的更新 object query。

Feature point sampling计算量小有很多优点(毕竟只采样) 24 2)兼容性 FPN(有助于检测不同距离的物体);3)避免 dense depth prediction(只需要预测 sparse object query 的 3D 坐标,不需要预测每张图片和像素的深度信息)。

Global cross-attention

无法直接用 3D object query 在 2D spatial features 查询匹配的原因之一是空间上的不一致性: 2D 图中两点之间的坐标距离难以表达 3D 这两点在世界上的实际距离。

为了将 2D 图像特征扩展到 3D 检测空间(以方便 3D object query 查询匹配),PETR [3] 选择在 Positional embedding 方面做改进:为 2D 特征图上的每个像素生成一个对应现实世界的像素 3D 坐标列表(2D 图片上的一个点对应 3D 在现实世界中,以相机镜头为起点的射线 (camera ray),列表是在这条射线上采样的 N 个点的 3D 坐标集合),然后通过 MLP 将坐标列表转化为坐标列表 3D Positional embedding。

下图显示了前视相机的左、中、右三点和所有其他相机视角 3D Positional embedding 对比相似性,可以发现与这三点对应的现实世界三个射线夹角较小的区域相似性较高,证明这一点 2D 到 3D 转换是有效的。

▲ 图片来自PETR

有了 3D Positional embedding 原装修,原装修 2D 图像特征可以升级为 3D 直接与空间特征 3D object query 查询匹配。PETR [3] 最大限度地保留 Anchor DETR [4] 在 Transformer decoder 使用原始阶段 Global cross-attention,即每个 3D object query 要和 6 对图片的所有特征点进行相似度匹配。

值得注意的是:1)可能是出于计算考虑,PETR [3] 不采用多尺度 FPN,相反,它只使用固定的大小(stride=根据作者的实验,BEV query(3D anchor points)需要高度(z 轴)细分,目前很多 pillar-based 检测方法不同。

Deformable cross-attention

BEVFormer [5] 继承自 Deformable DETR [6]与上述两项工作的主要区别在于:1)显式结构 BEV features(200x200 分辨率,覆盖以汽车为中心的边长 102.4 米的正方形区域);2)利用 Deformable cross-attention 从 image space aggregate spatial information 到 BEV query 3)引入多帧时序信息。

▲ 图片来自BEVFormer

具体做法是:为 BEV space 的每个 feature point 定义一组 anchor heights(pillar-like query, four 3D reference points from -5 meters to 3 meters),将这 4 个点投影回 2D image space 采样特征点(sampling 4 points around this reference point),采样获得的特征点和 BEV query 做 deformable attention。

与前两种方法相比,Deformable cross-attention 更灵活:它不仅采样一个点,也不跟随 6 图片的所有位置都一匹配,而是查询 reference point 周边感兴趣区域(RoI, region of interest)。

仔细算一下,一个 pillar-like BEV query 对应 4 不同高度的 reference points,每个 reference point 采样 4 个特征点,deformable attention 还涉及 8 个 heads,再加上 3 层 FPN(output stride=1/16, 1/32, 1/64)特征输出,最后一个 BEV query 实际上是调查 4x4x8x3=384 个特征点。

Lift-Splat

严格来说 Lift-Splat [7] 并不是基于 Attention 根据(预测)深度信息加权实现特征 perspective view 到 BEV 转换(值得注意的是,每张图片的每个特征点都需要预测其深度信息)。

▲ 图片来自Lift, Splat, Shoot

具体来说,在 Lift 步骤:与 PETR [3] 类似,考虑 2D 图片上的一个点对应 3D 世界上的一条射线可以在这条直线上采样 N 点(使用例图) 10 个,实际使用 41 个);之后网络需要预测这个特征点的深度信息 (distribution over depth,参考直线上的直方图),加权使用深度信息 (scale) 图像特征在同一位置 C(参考示例右侧,因为网络预测的深度在第三个 bin 因此,当深度较高时 D=3 时间特征和图片特征 C 最接近,其他深度特征较弱)。

每张图片 2D 做同样的操作,可以生成类似平头金字塔的形状 (frustum) 的点云。在 Splat 第一步:先建一个 pillar-based BEV 视角特征图(200x200 分辨率覆盖以汽车为中心的边长 100 米的正方形区域),然后得到上一步 6 个平头金字塔点云中的每个点匹配 (assign) 给最近的 pillar,最终 BEV sace 上每个 pillar 的特征就是所有匹配到的特征点的和 (sum pooling)。

基于此方法的后续改进包括:

1. 通过添加显式的深度预测监督 (explicit depth estimation supervision) 实现更精确的 camera to BEV 特征转换 [8];

2. 通过添加坐标转换预计算 (precomputation) 与 GPU 多线程并行池化 (specialized GPU kernel that parallelizes directly over BEV grids) 实现更快速的 camera to BEV 特征转换 [9];

3. 由于 Splat 步骤所采用的 sum pooling 会粗暴地压缩一个BEV grid 的高度(Z轴)信息,故可以先将 Lift 步骤得到的点云渲染成立体特征 (pseudo voxel, feature shape = XYZC),再 reshape 成 XY(ZC),最后通过 3x3 卷积降低特征通道数至 C [10]。

Future directions

仿照 Sparse RCNN [11] 的思路,在 BEV space 通过 RoIAlign 的方式抽取环视相机 perspective view 的 2D 特征(每个视角一个 RoI,投影到图片外的 proposal 用 0 填充)是否可行?目前还没有读到类似的工作,有待进一步验证。 

上面介绍的方法都是基于 query-based detection,出于计算量考虑 query 的数量一般比较少(大约 500-1500 左右),复杂场景下模型的 recall 表现还有待调研。 

Transformer-based BEV 3D object detection 模型是否必须依赖 perspective view 的预训练模型 (e.g., FCOS3D [12])?能否设计一种时间+空间、2D 到 3D、单任务到多任务、单传感器到多传感器的大规模自监督预训练?能否利用大规模仿真产生的数据?

参考文献

[1] End-to-End Object Detection with Transformers https://arxiv.org/abs/2005.12872

[2] DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries https://arxiv.org/abs/2110.06922

[3] PETR: Position Embedding Transformation for Multi-View 3D Object Detection https://arxiv.org/abs/2203.05625

[4] Anchor DETR: Query Design for Transformer-Based Object Detection https://arxiv.org/abs/2109.07107

[5] BEVFormer: Learning Bird's-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers https://arxiv.org/abs/2203.17270

[6] Deformable DETR: Deformable Transformers for End-to-End Object Detection https://arxiv.org/abs/2010.04159

[7] Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D https://arxiv.org/abs/2008.05711

[8] Categorical Depth Distribution Network for Monocular 3D Object Detection https://arxiv.org/abs/2103.01100

[9] BEVFusion: Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View Representation https://bevfusion.mit.edu/assets/paper.pdf

[10] BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework https://arxiv.org/abs/2205.13790

[11] Sparse R-CNN: End-to-End Object Detection with Learnable Proposals https://arxiv.org/abs/2011.12450

[12] FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection https://arxiv.org/abs/2104.10956

更多阅读

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章