[论文阅读] 3D感知相关论文简单摘要

Adaptive Fusion of Single-View and Multi-View Depth for Autonomous Driving

提出了一个单、多视图融合深度估计系统,它自适应地集成了高置信度的单视图和多视图结果

动态选择两个分支之间的高置信度区域执行融合

提出了一个双分支网络,即一个以单目深度线索为目标,而另一个利用多视图几何结构,两个分支都预测深度图和置信度图

通过使用这样的置信度图来执行逐像素融合,可以最终实现更稳健的深度

AFNet,它由三个部分组成,即单视图深度模块、多视图深度模块和自适应融合模块

Single-view branch

多尺度解码器 并获得深度特征D_s=(H/4,  W/4, 257),通过对$D_s$的前256个通道使用softmax,得到深度概率P_s=(H/4 , W/4, 256)。最后一个通道作为单视图深度估计的置信度图M_s=(H/4, W/4),最后通过软加权来计算单视图深度

Multi-view branch

保留特征的通道维度并构建4D cost volume,然后通过两个3D卷积层将通道数量减少到1 即初始cost volume  C_{init}=(H/4 , W/4, 128)使用堆叠的2D沙漏网络进行正则化 获得最终的多视图cost volume  C_m=(H/4 , W/4, 256) 使用残差结构来组合单视图深度特征D_s(H/4,  W/4, 257)和cost volume(H/4 , W/4, 256),以获得融合深度特征F_fuse

Adaptive Fusion Module

自适应地选择两个分支之间最准确的深度作为最终输出。单视图分支和多视图分支中的M_s和M_m反应了整体匹配歧义(reflect the overall matching ambiguity),而M_w反映了亚像素精度(subpixel accuracy)将这三个置信度图作为单视图深度d_s和多视图深度d_m融合的指导,并通过两个 2D 卷积层得到最终的融合深度d_{fuse}=(H/4 , W/4)

AFNet训练过程中的损失函数主要由深度损失和置信度损失两部分组成。深度损失使用简单的 L1 损失

对于置信度损失,为了防止异常值干扰训练,我们首先计算有效掩码如下:

最终置信度损失计算如下:

Ns和Nm分别表示Ωs和Ωm中有效点的总数。总损失是上述两个损失 Ld 和 Lc 的总和。

CLIP-BEVFormer: Enhancing Multi-View Image-Based BEV Detector with Ground Truth Flow

CLIP-BEVFormer框架,该框架由Ground Truth BEV (GT-BEV)模块和Ground Truth Query Interaction (GT-QI)模块组成

GT-BEV

GT-BEV 的核心目标是将生成的 BEV 表示与 GT-BEV 对齐,确保 BEV 元素的显式排列。为了使BEV和GT-BEV嵌入更接近,我们采用对比学习过程来优化BEV特征空间中的元素关系和距离。这种显式元素排列与 GT 引导(标签、位置和清晰边界)相结合,可以提高模型的感知能力,从而提高 BEV 地图上各种对象的检测和区分。

先前模型中先前未探索的方面在于了解GT实例如何在 BEV 图上相互交互。通过自注意力和注意力机制从空查询中恢复地面实况信息,如先前模型中使用的,本质上是有限的。这个过程充当黑盒探索,仅在端点提供监督,因此缺乏对地面实况解码的全面理解。(DETR范式在BEV上用Query的方式检测的缺陷

因此来自 Ground Truth Encoder (GTEnc,也就是GT-BEV中从GT那一端出来的GT编码) 的 β 被引入解码器 Dec 的查询池中

GT-QI

在训练的解码阶段注入GT流,我们的 GT-QI 模块使模块能够从GT实例间交互和GT实例 BEV 通信中获得见解。注入 GT 查询的扩大查询池不仅增强了模型的鲁棒性,而且增强了它在源图上检测各种对象的能力

损失函数

基础检测损失(空Query和BEV的Key、Value经过Decoder和Head得到的预测和GT的损失)、对比学习损失(监督BEVFormer前端和GT编码器(LLM、MLP)生成具有区分度的高质量Key、Value和Query)、Decoder损失(通过已知的Query和BEV的Key、Value,监督Decoder模块从空Query生成预测的能力)

Learning Transferable Visual Models From Natural Language Supervision (CLIP )

神器CLIP:连接文本和图像,打造可迁移的视觉模型 - 知乎 (zhihu.com)

BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework

后融合,因为这种方案比较灵活,鲁棒性也更好 能够更好的处理单一传感器失效时对系统的影响 缺点也很多,一是信息的利用不是很充分,二是把系统链路变得更加复杂,链路越长,越容易出问题,三是当规则越堆叠越多之后维护代价会很高

前融合更好的利用神经网络端到端的特性。但是前融合的方案少有能够直接上车的,原因我们认为是目前的前融合方案鲁棒性达不到实际要求

1)雷达和相机的外参不准 2)相机噪声 3)雷达噪声

BEVFusion框架,和之前的方法不同的是雷达点云的处理和图像处理是独立进行的,利用神经网络进行编码,投射到统一的BEV空间,然后将二者在BEV空间上进行融合。这种情况下雷达和视觉没有了主次依赖,从而能够实现近似后融合的灵活性

当增加多种模态后,性能会大幅提高,但是当某一模态确实或者产生噪声,不会对整体产生破坏性结果

雷达分支我们测试了基于Voxel和基于Pillar的编码方式,Camera分支是我们对Lift-Splat-Shoot[8]进行了改造 融合模块的改进如下:

Multi-Task Multi-Sensor Fusion with Unified Bird's-Eye View

使用摄像头特征增强激光雷达点云。然而,摄像头到激光雷达的投影丢弃了摄像头特征的语义密度(semantic density),阻碍了此类方法的有效性,尤其是对于面向语义的任务(如3D场景分割)。文章特别指出:对于典型的32线激光雷达扫描,只有5%的摄像头特征与激光雷达点匹配,而其他所有特征都将被删除。对于更稀疏的激光雷达(或成像雷达),这种密度差异将变得更加剧烈

我们优化了BEV池化,解决视图转换中的关键效率瓶颈,将延迟减少了40倍。BEVFusion从根本上来说是任务无关的,无缝支持不同的3D感知任务。

BEV池化的效率和速度惊人地低,在RTX 3090 GPU上需要500毫秒以上(而模型的其余部分计算只需要100毫秒左右)。这是因为摄像头特征点云非常大,即典型的工作负载,每帧可能生成约200万个点,比激光雷达特征点云密度高两个数量级。为了消除这一效率瓶颈,建议通过预计算和间歇降低来优化BEV池化进程

TransFusion: Robust LiDAR-Camera Fusion for 3D Object Detection with Transformers

具体的过程为:

(1)3D点云输入3D backbones获得BEV特征图

(2)初始化Object query按照下面左边的Transformer架构输出初始的边界框预测。初始化方法见3.2节

(3)上一步中的3D边界框预测投影到2D图像上,并将FFN之前的特征作为新的query features通过SMCA选择2D特征进行融合。

TransFusion由卷积backbone和基于Transformers解码器的检测头组成,解码器的第一层使用稀疏的object queries集预测来自LiDAR点云的初始边界框,第二层解码器自适应地将object queries与有用的图像特征融合,充分利用空间和上下文关系。Transformers的注意力机制使我们的模型能够自适应地决定从图像中获取什么信息和从什么位置获取信息

Query Initialization

通过更好的object queries初始化,可以弥补1层结构和6层结构之间的差距。受此启发,我们提出了一种基于center heatmap的输入相关初始化策略,用一个解码器实现高性能

首先预测类别热力图(X,Y,K)选择所有类别的前n个候选对象作为我们的初始object queries 选择局部最大元素作为我们的对象查询,其值大于或等于它们的8个相连的邻居 所候选对象的位置和特征用于初始化query positions和query features 我们的初始化对象查询将位于或接近潜在的对象中心,而不需要多个解码器层来细化位置

我们往每个object queries中放入一个类别嵌入 每个被选中候选的类别,我们对object query和category-embedding逐元素求和 类别嵌入通过将one-hot类别向量线性投影到维度为d的向量得到

参考DETR3D,我们采用了辅助解码机制,在每个解码层后增加了FFN和监督

Image-Guided Query Initialization

折叠操作基于我们的观察,认为BEV位置和图像列(image columns)之间的关系可以很容易地使用相机几何关系(camera geometry)建立,通常每个图像列最多有一个对象。因此沿高度折叠可以显著减少计算而不会丢失关键信息,尽管在这个过程中可能会丢失一些细粒度的图像特征,但我们只需要对潜在对象位置的提示

DeepInteracion

所有现有的将图像信息聚合到3D的空间,与3D信息聚合到2D透视空间的方法,都是将某个模态的信息聚合到另一个模态最终形成一个模态的表示方式。最新融合方案将图像和点云特征合并为一个联合鸟瞰图(BEV)表示。然而,这种融合方法在结构上受到限制,因为它的内在局限性是,由于大部分不完美的信息融合到统一的表示中,可能会降低很大一部分特定于模态的表示优势

本研究引入了一种用于多模态3D物体检测的新型模态交互策略 关键思想是,我们学习并维护两种特定于模态的表示,而不是派生一个融合的单一表示,从而实现模态间的交互,从而自发地实现信息交换和特定于模态的优势

将3D点云和2D多视图图像并行映射为LiDAR BEV特征和图像透视特征,并使用两个独立的特征主干。随后,编码器以双边方式交互这两个特征以进行渐进式信息交换和表示学习。为了充分利用单模态表示,进一步设计了解码器/头,以级联方式进行多模态预测交互

关键见解是,我们保持两种特定于模态的特征表示,并进行表征和预测交互,以最大限度地探索它们的互补优势,同时保留各自的优势

DeepInteraction 分别学习了3D激光雷达和2D图像模态的两种表示,同时通过模型编码和解码进行多模态交互

由两个主要组件组成:具有多模态表征交互的编码器(第3.1节)和具有多模态预测交互的解码器

Encoder: Multi-modal representational interaction

MMRI(交互查询注意)

第一个分支如左图(a)所示

直接利用空间预定义的点位置3D-2D得到图像上的投影点(OFT),此时以3D空间中点对应的BEV网格为Query(或者对应有网格的那个柱子是Query),图像的2D点采样出的图像像素特征是K和V(这里其实就是BEVFormer中cross-attention的方法)

第二个分支如右图(b)所示

首先将点云投影到相机坐标系3D-2D,形成稀疏的深度图,并进行深度补全(In Defense of Classical Image Processing: Fast Depth Completion on the CPU)从而得到稠密深度图。稠密的深度图覆盖了所有的图像像素,那么直接利用2D-3D原理将带有深度信息的像素点嵌入到BEV网格空间中。此时认为每个图像稠密深度图对应的图像像素特征是Query,而其投影到3D空间中的对应BEV的特征是K和V(对应柱位置的)

 Decoder: Multi-modal predictive interaction

引入了具有多模态预测相互作用(MMPI)的解码器,以最大限度地提高预测中的互补效果

核心思想是在一个模态的条件下增强另一个模态的3D物体检测

首先给定初始化的N个Query,然后开始不断refine直到m次。详细的结构如下图:

通过交互堆叠两个模态的信息来实现信息的深度交互,也就是不断去refine网络的预测\

Multi-modal predictive interaction on image representation (MMPI-image)

对于前一层网络的预测N个框b和前一层的Query,以及当前层的图像输入hc'(D),首先需要从图像中提取对应个数的感兴趣的RoI,维度就是N, C, S, S。然后对于每个边界框b,3D-2D投影到图像上得到二维凸多边形(具体来说可以是四边形和六边形)并取最小的轴向边界矩形(得到矩形框)

同时设计了一个多模态交互算子先把Query进行通道映射和RoI区域特征的维度一致然后乘积叠加,经过两层融合作为增强的信息

Multi-modal predictive interaction on LiDAR representation (MMPI-LiDAR)

对于激光雷达表示的RoI,我们将前一层的3D边界框投影到激光雷达BEV表示中,并取最小的轴向矩形。

由于自动驾驶场景中物体的尺度在BEV坐标系中通常很小,所以我们将3D边界框的尺度放大了2倍

Cross Modal Transformer: Towards Fast and Robust 3D Object Detection

作者单位:MEGVII Technology

论文:https://arxiv.org/pdf/2301.01283.pdf

代码:https://github.com/junjie18/CM

 

上图是本文之前的所有融合的一些范式,包括BEV直接融合,以及TransFusion的BEV热点初始化查询信息。

CMT通过空间中的锚点来显示构建查询的Query,原理基于单模态的PETR。

•我们提出了一个快速和强大的3D探测器,这是一个真正的端到端框架,没有任何后处理。它克服了传感器缺失的问题。

•3D位置被编码成多模态标记,没有任何复杂的操作,如网格采样和体素池。

•CMT在nuScenes数据集上实现了最先进的3D检测性能。它为未来的研究提供了一个简单的基准。

将多视图图像和激光雷达点馈送到两个单独的骨干中以提取多模态标记。通过坐标编码将3D坐标编码为多模态标记(图像和点云特征各自有一套编码结果并叠加到原始提取的特征中)。

Coordinates Encoding Module(CEM)

对于图像特征,采用的是PETR的相机坐标系下的一系列预定的视锥点云,通过相机内参和外参得到在BEV空间中的预定一点:N, D, H, W, 4,经过MLP层得到位置编码向量N, H, W, C

对于BEV特征, 由于使用的是VoxelNet或者PointPillar的编码方式,也就直接是BEV坐标系下的网格点坐标Z, H, W, 4

Position-guided Query Generator

Masked-Modal Training for Robustness

在本文中,我们尝试了更极端的故障,包括单摄像头脱靶、摄像头脱靶和LiDAR脱靶,如图4所示。

提出了一种称为掩模训练的训练策略。在训练过程中,我们随机只使用一种模式进行训练,如相机或激光雷达,其比值为η1和η2。该策略确保了模型在单模态和多模态下都得到了充分的训练

SimPB: A Single Model for 2D and 3D Object Detection from Multiple Cameras

作者单位:MEGVII Technology

论文:https://arxiv.org/pdf/2403.10353.pdf

代码:https://github.com/nullmax-vision/SimPB

引入了一个用于 2D 和 3D 物体检测的混合解码器。在 3D-2D-3D 循环方案中,
采用动态查询分配和自适应查询聚合模块不断更新和细化 2D 和 3D 结果之间的交互

动态查询分配模块

投影 3D 锚点: 将形状为 (N, 9) 的 3D 锚点通过相机内参 (3x3) 和外参 (4x4) 投影
到 V 个相机视图(V, Ci, Hi, Wi)上,得到每个锚点在每个视图上的投影坐标,形状为 (N,
V, K, 2), 其中 K 是投影点的数量 (论文中使用 9 个点,包括中心点和 8 个角点),N 是
3D 锚点个数,V 是相机数量,2 表示一个图像点的坐标维度

判断有效性: 根据投影坐标是否在图像范围内判断每个 3D 锚点在每个视图上的有
效性,得到形状为 (N, V) 的有效性矩阵,其中元素为 1 表示有效,0 表示无效。

进入自适应查询聚合模块,如下图所示:

Center indicator 表示了在一个 3D 查询反投影到 2D 之后(8 点+中心点投影),是否
被截断了(同时出现在多个视图)

UniTR

论文:https://arxiv.org/pdf/2308.07732.pdf
代码:https://github.com/Haiyang-W/UniTR

与以前的特定于模态的编码器不同,UniTR 的 Transformer 在模态间共享,并行处理
来自多传感器的数据,并在没有额外融合步骤的情况下自动集成它们。我们设计了再
DSVT 上扩展的两个主要 transformer blocks,一种是模态内 block(intra-model
block),便于并行计算来自每个传感器的模态表示,另一种是通过考虑 2D 视角和 3D
几何关系来执行跨模态特征交互的模块(inter-model block)输入是 camera 和 lidar 的 token,然后在 intra-model block 里面各自做 self-
attention,做完之后在 inter-model block(2D)里面把 3D lidar 投影到 2D(这一步用的
内外参),做自注意力操作,然后在 inter-model block(3D)里面把 2d 图像投影到 3d

DSVT

论文提出了动态稀疏窗口注意力,这是一种新的基于窗口的注意力策略,用于并行有效地处理稀疏三维体素。

论文提出了一种可学习的 3D 池化操作,它可以有效地对稀疏体素进行下采样,并更好地编码几何信息

基于上述关键设计,论文介绍了一种高效但易于部署的 Transformer 3D 主干,无需任何定制 CUDA 操作。

动态稀疏窗口注意力

对于输入的一帧点云,通常是[N, 4],先经过标准的 Voxelization、VFE、Scatter 得到空间 BEVVoxel 特征[C, D, H, W],将 BEV 特征划分为 M 个窗口,其中每个窗口的大
小为[L', H', W']也就是总共有 L'*H'*W'个 Voxel。

为了方便讨论,假设使用的是 Pillar 模式,此时 D=1,在 BEV 视角下,有 BEV 特征[C,
H, W],划分为 M 个窗口,其中每个窗口大小为[H', W'],也就是每个窗口有 H'*W'个
Pillar(有些是空的,有些是有值的),如下图所示,有颜色的表示有值的 Pillar,其
余的 Pillar 为空值:

以下操作的 M 个窗口是并行处理的:
第一步:认为窗口中的所有非空的 Pillar 具有一个 Rank(0~N-1),文章定义为沿着BEV 的 X 轴和 Y 轴两种方式为非空的 Pillar 编码 Rank:然后需要将所有 N 个 Pillar 划分为认为定义的 S 个子集,其中认为给定超参数 tau,表示一个子集最多有几个 Pillar 组成,那么 N 个 Pillar 可以划分的子集个数 S 如下公式计算:

前者先把 N 先整除人为定义的 tau,由于是向下取整,如果 N 无法被 tau 整除则表示
有余数,那么直接多加一个子集,否则就刚好是 S 个子集,如上图所示可以看到按照
X 和 Y 方式划分出了 4 个子集,每个子集最大的 Pillar 数为 tau。
因此对于第 j 个子集的第 k 个 Pillar,其在整个 Rank(0~N-1)的唯一编号可以被计算
为:

也就是说,通过改变 Rank 的排序方式(X 排和 Y 排),每个子集可以提取到 tau 长度
的 Pillar,以及 Pillar 对应的坐标

第二步,对于每个子集 j,总共 S 个子集,则有[S, tau, C]的划分 Pillar,在每个子集上
进行注意力机制。
按照文章流程图,分别进行窗口划分 -X 排序分子集 -子集内自注意力 -Y 排序分子集 -
子集内自注意力 -的形式构成一个 DSVT 块,多个 DSVT 块堆叠得到了最终结果。

平衡性能和效率: 较小的窗口可以更好地处理小物体和细节信息,而较大的窗口可
以扩大感受野并减少计算量。混合窗口划分可以在这两者之间取得平衡。
适应不同尺度的物体: 不同大小的窗口可以更好地处理不同尺度的物体,从而提高
模型的整体性能。

注意力池化
具体操作步骤:
1. 填充: 对于一个大小为[H‘, W']的窗口区域,首先将其填充为密集的格式。这意味着
将所有空的体素位置都填充为 0。
2. 最大池化: 对填充后的密集区域进行最大池化操作,得到一个大小为 1 x 1 x C 的特
征向量。
3. 构建查询、键和值:

将最大池化后的特征向量作为查询向量 (Q)。
将原始未池化的特征图作为键 (K) 和值 (V) 向量。
4. 注意力计算: 使用查询向量 Q、键向量 K 和值向量 V 进行注意力计算。具体可以使用 Scaled Dot-Product Attention 或其他注意力机制。
5. 输出: 注意力计算的结果即为池化后的特征,它包含了原始特征图中最重要的信
息,并且尺寸更小。
注意力式 3D 池化: 在部分 DSVT Block 之间插入注意力式 3D 池化模块,对体素特征
图进行下采样,并更好地编码几何信息。

DSVT 流程总结
1.
点云输入: 将原始点云数据作为模型的输入。
2. 体素化并初步提取特征: 将点云数据体素化,并提取每个体素的特征 (例如点的反射强度、颜色等) 和体素是否非空的信息。
3. 连续的多个 DSVT 块:
每个 DSVT 块内部包含两个 DSVT Layer,分别进行 X 轴排序划分和 Y 轴排序划分,并在每个子集内进行自注意力计算。部分 DSVT 块之间可能插入注意力式 3D 池化模块,对体素特征图进行下采样。
4. BEV 主干 (可选): 将提取到的体素特征投影到 鸟 瞰图 (BEV) 特征图中。这一步取决于具体的任务需求,例如 3D 目标检测通常需要 BEV 特征图。
5. 任务头: 根据不同的 3D 感知任务,添加不同的任务头,例如目标检测头或语义分割头。
DSVT 的优势:
• 高效: 通过动态集合划分和并行计算,DSVT 可以高效地处理稀疏点云数据。
• 有效: 旋转集合注意力机制和注意力式 3D 池化模块,可以帮助模型更好地捕捉空间关系和几何信息,提高模型的性能。
• 易于部署: DSVT 无需自定义 CUDA 操作,可以使用深度学习框架中的标准操作实现,因此易于部署。

Swin-Transformer

ICCV2021 - 微软研究院
论文名称:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows
原论文地址: https://arxiv.org/abs/2103.14030

 文章中作者为了解决该问题所用的方法:
• 引入 CNN 中常用的层次化构建方式(Hierarchical feature maps)构建层次化
Transformer
• 提出了 Shifted Windows Multi-Head Self-Attention(SW-MSA)的概念,通过此
方法能够让信息在相邻的窗口进行传递

通过限制在窗口内使用自注意力,带来了更高的效率并且通过移动,使得两个窗口有
了交互,上下层之间也就有了跨窗口链接,从而变相达到一种全局建模的效果。另外
层级式的结构不仅非常灵活的去建模各个尺度的信息并且计算复杂度随着图像大小线
性增长。

Swin-Transformer 使用窗口多头自注意力,将特征图划成多个不相交的区域,然
后在每个窗口里进行自注意力计算,只要窗口大小固定,自注意力的计算复杂度也是
固定的,那么总的计算复杂度就是图像尺寸的线性倍,而不是 Vit 对整个特征图进行全
局自注意力计算,这样就减少了计算量,但是也隔绝了不同窗口之间的信息交流,随
之作者提出后文的移动窗口自注意力计算

Shifted Windows Multi-Head Self-Attention(SW-MSA)

 DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queries

DETR3D是迭代的,它使用基于集合的计算的L个layers,从2D特征映射产生bbox估计,每一层都包括以下步骤:

  1. 预测一组bbox center,它与object queries相关联
  1. 利用相机变换矩阵将这些center投影到所有特征图中
  1. 通过双线性差值对特征进行采样,并将其合并到对象查询中
  1. 使用多头注意力查询对象交互(describe object interactions using multi-head attention)

PETR: Position Embedding Transformation for Multi-View 3D Object Detection

作者认为DETR3D方法存在3个缺点:

参考点投影机制

DETR3D首先根据object query预测N个参考点,然后利用相机参数将参考点反投影回图像,对2D图像特征进行采样,最后根据采样得到的2D图像特征预测3D目标信息。如果参考点预测的不够准确,那么投影回图像的位置就有可能位于目标区域之外,导致采样得到无效的图像特征。

单点特征采样

DETR3D只会选择参考点反投影位置对应的图像特征,导致模型对于全局特征学习的不够充分

流程复杂

特征采样过程比较复杂,不利于方法落地

PETR通过3D Position Embedding将多视角相机的2D特征转化为3D感知特征,使得object query可以直接在3D语义环境下更新,省去了参考点反投影以及特征采样两个步骤。

 3D Coordinate Generator

PETR的空间转换方法取自论文DGSN,相机视锥空间用(u, v, d)表示,世界空间用(x, y, z)表示,利用相机内参可以将相机视锥空间变换到3D世界空间:

3D Position Encoder

经过backbone和3D coordinates Generator得到2D图像特征F2d及世界空间点P3d

P3d经过MLP得到3D Position Embedding,再和F2d相加,得到3D感知特征:

为了说明3D PE的作用,作者从前视图像中随机挑选了3个像素点对应的PE,并计算这3个PE和其他所有视角图像PE的相似度,如图7所示。3D世界空间中左前方的一点理论上会同时出现在前视相机左侧和左前相机右侧,从第一行图像可以看出,PE相似度的确是符合这个先验认知的。所以可以证明3D PE的确建立了3D空间中不同视角的位置关联。

DETR使用一组可学习的参数作为初始的object query,DETR3D基于初始object query预测一组参考点PETR为了降低3D场景的收敛难度,首先在3D世界空间中以均匀分布的方式初始化一组可学习的3D锚点,然后锚点经过一个小型MLP生成初始的object query。论文的作者还提到,如果使用DETR的方式在BEV空间生成anchor,最终模型性能不理想

PETR网络的后半部分基本沿用DETR和DETR3D的配置:使用L个标准Transformer Decoder层迭代地更新object query;检测头和回归头都沿用DETR3D,回归目标中心相对于anchor的偏移量;分类使用focal loss,3D框回归使用L1 Loss

图9是将卡车目标对应的object query的注意力可视化的效果,左前和左后镜头都有很高的响应。

BEVFormer - OFT - DAT

DAT(Deformable Attention Transformer)Vision Transformer with Deformable Attention

Deformable DETR是2D Transformer方法,其中的可变形注意力在图像上选取N个采样点,每个采样点获取图像上距离它最近的四个特征图像素,对它们进行双线性差值得到采样点的特征(N,C)

提出了一种可变形的自注意力模块,以数据依赖的方式选择了自注意力中的key 和value对的位置。模块用于图像分类和各种各种密集的预测任务。

作者提出学习几组query无关的offset,将key和value移到重要区域,这设计既保留了线性空间的复杂性,又为Transformer的主干引入了可变形的注意力模式

 

可变形注意力关键在key和value的变化,query都是一样的,ViT对每一个feature pixel都进行查询,可变形注意力只对可学习的位置的周围四个格点聚合,就会稀疏很多。

OFT(Orthographic Feature Transform for Monocular 3D Object Detection)

论文地址:https://arxiv.org/abs/1811.08188

代码地址:https://github.com/tom-roddick/oft

 

  1. 引入基于透视图像的正交特征变换,将特征映射为鸟瞰图视角,并使用积分图像对平均池化进行高效处理(提前积分,计算投射区域平均池化时直接查表)
  2. 构建了DL结构用于预测单目RGB图像目标的3D框

单目3D BEV 卷积方法,将3D假想grid的左上右下两个点投射到图像上,投射区域的feature map做pooling均值,pooling的对象是投射区域涉及到的几个feature map pixel。feature map维度为(H1, W1, C1),对于一个pillar中的N个gird,投射的结果为(N, C1),在垂直方向上压缩pillar中的所有grid特征,得到(1,C1),压缩的方式可以直接累加或者是通过全链接。

把压缩后的特征填入BEV(H2, W2),得到(H2, W2, C1)BEV特征

通过投影提取正交特征的方式,将卷积网络对图像卷积得到的特征,经过3D到2D的投影和平均池化操作取到3D鸟瞰图上,从而构成3D鸟瞰图的特征图,即可在该特征图上回归各种3D目标属性 

  1. 前段由Resnet特征提取器来提取输入图像的多尺度特征图
  2. 一种正交特征变换,将每个尺度上基于图像的特征转换为鸟瞰图的正交表述
  3. 以不受图像中观察到的透视效果影响的方式来处理鸟瞰图视角的特征图

正交特征图是通过将学习得到的权重矩阵沿着垂直轴与体素特征图相乘后求和得到

给定积分特征图F,由(u1,v1)和(u2,v2)定义的边界框,其输出特征为g(x,y,z)

BEVFormer: Learning Bird’s-Eye-ViewRepresentation from Multi-Camera Images viaSpatiotemporal

BEVFormer通过预定义的网络状BEV查询,将时间和空间进行交互,从而挖掘空间和时间信息。为了聚合空间信息,我们设计了一个空间交叉注意(spatial cross-attention),每个BEV查询都从摄像机视图的感兴趣区域提取空间特征。对于时间信息,我们提出了一种时间自注意力(temporal self-attention),以反复融合历史BEV信息。我们进一步表明,BEVFormer显著提高了低能见度条件下目标速度估计和调用的精度

我们设计了一种不依赖深度信息的BEV生成方法,可以自适应地学习BEV特征,而不是严格依赖3D先验知识。受递归神经网络(RNN)的启发,我们利用BEV特征反复地从过去到现在传递时间信息,这与RNN模型的隐藏状态具有相同的思想

我们的BEVFormer包含三个关键设计:

网络形状的BEV查询(grid-shaped BEV queries),通过注意机制灵活地融合空间和时间特征

空间交叉注意模块(spatial  cross-attention module),从多摄像头图像中聚合空间特征

时间自注意模块(temporal self-attention module),从历史BEV特征中提取时间信息,这有利于运动对象的速度估计和严重遮挡对象的检测,同时带来的计算开销可以忽略不计。

BEVFormer基于Deformable DETR(DAT)和OFT方法,DAT是2D可变形attention方法,OFT用3D BEV卷积方法,利用相机模型把3D假想grid投影到2D上采样。

在Spatial Cross-Attention中BEVFormer对于每一个假想grid中心点投影到图像上,利用DAT的方法双线性差值得到空间交叉注意力的K和V(D', C'),假设一个Pillar中有D个grid,其中有D'个grid可以投影到图像上),BEV query的维度为(W1*H1, C')。

ps:QKV的C维度一样就能计算,结果的维度和query相同,不改变其形状,KV的第一个维度无所谓,也就是这里不管有多少个grid存在投影,D'的值是多少都行

SCA的query来自TSA(Temporal Self-Attention),TSA的KV来自BEV History,Q为可训练的参数,利用上一帧的BEV输出来生成TSA的结果。

 Spatial Cross-Attention

我们开发的基于deformable attention的空间交叉注意模块,是一种资源高效的注意层,其中每个BEV查询仅与摄像机视图中的感兴趣区域交互,然而,可变形注意力最初是为2D感知设计的,所以3D场景需要进行一些调整。

首先将BEV平面上的每个query提升到柱状查询(Pointpillars),从柱状查询中提取Sample 3D参考点,然后将这些点投影到2D视图(每个grid中心为一个参考点)。对于一个BEV query,投影的2D点只能落在某些视图上,在这里我们把落点视图看做V_{hit},然后将这些2D点视为Query Q_p的参考点,并在这些参考点周围的落点视图V_hit中采样特征。最后我们将采样特征的加权和作为空间交叉注意的输出

Encoder模块包含Temporal Self-Attention和Spatial Cross-Attention两个子模块:

Temporal Self-Attention和Spatial Cross-Attention都用到了多尺度可变形注意力模块,这个模块是将Transformer的全局注意力变为局部注意力的一个非常关键的组件,用于减少训练时间,提高Transformer收敛速度

多尺度可变形注意力模块与 Transformer 中常见的先生成 Attention Map,再计算加权和的方式不同;常规而言 Attention Map = Query 和 Key 做内积运算,将 Attention Map 再和 Value 做加权;但是由于这种方式计算量开销会比较大,所以在 Deformable DETR 中用局部注意力机制代替了全局注意力机制,只对几个采样点进行采样,而采样点的位置相对于参考点的偏移量和每个采样点在加权时的比重均是靠 Query 经过 Linear 层学习得到的

Temporal Self-Attention模块

功能:通过引入时序信息与当前时刻的BEV Query进行融合,提高BEV Query的建模能力

Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D

原论文:https://arxiv.org/pdf/2008.05711v1.pdf

代码: GitHub - nv-tlabs/lift-splat-shoot: Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D (ECCV 2020)

 我们提出一个新的端到端架构,可以直接从任意数量的摄像机中提取给定图像数据的场景鸟瞰图表示。我们方法背后的核心思想是将每个图像单独"Lift"成一个特征截锥。对于每个相机,将所有截锥"Splat"到栅格化

Lift:潜在的深度分布(Lift: Latent Depth Distribution)

Lift对每个图像进行单独处理,获得了每个2D像素点在3D空间的特征。

第一阶段的任务是对来自多个摄像机的图像进行单独处理,这个阶段的操作目的是将每个图片从二维提升到统一的三维坐标系下。

单目传感器融合的挑战在于我们需要将深度转换为参考坐标系坐标,但与每个像素相关的“深度”本质上是模糊的。我们提出的解决方案是为每个像素生成所有可能的深度表示

具体来说,是将深度空间离散化成D段,则可以生成D,H,W的点云,对应的是一个棱台状的空间。对于每个像素p对应的坐标是( h , w ), 预测一个上下文向量C和深度分布 ,则点云(d, h, w)处对应一个向量C,相当于一个点云中的点

Splat:柱体池化(Splat: Pillar Pooling)​​​​​​​

通过像素的2D坐标值和深度值,以及相机的内参外参,计算出像素在车身坐标系中的3D坐标。

借鉴了pointPillars中的做法,把Lift步骤得到的点云转换成Pillars。具体做法是,把每个点分配到离它最近的Pillars中,然后执行求和池化得到一个C, H, W的张量,再对该张量进行CNN操作得到鸟瞰图的预测结果

将多个相机中的像素点投影在同一张俯视图中,先过滤掉感兴趣域(以车身为中心200*200范围)外的点。然后需要注意的是,在俯视图中同一个坐标可能存在多个特征,这里有两个原因:1是单张2D图像不同的像素点可能投影在俯视图中的同一个位置,2是不同相机图像中的不同像素点投影在俯视图中的同一个位置,例如不同相机画面中的同一个目标。对于同一个位置的多个特征,作者使用了sum-pooling的方法计算新的特征,最后得到了200x200xC的feature,源码中C取64

BEVDet

基于LSS方法,利用深度估计将像素投影到3D点云,对点云应用数据增强、对求和池化进行加速、对NMS放大,工程上提速很多,提出较为完整的范式

 BEVDepth​​​​​​​

隐式深度监督的准确度低,且基于深度的检测器检测速度更慢。

回顾基于深度的3D探测器(Bevdet, CaDDN, LSS),我们可以得到一下经验:

  • 最终的检测损失的反馈会促使网络的中间层学习正确的深度,从而建立一个隐式的深度监督。 然而,深度神经网络通常具有复杂的表示。 在没有显式的深度监督的情况下,准确输出深度感知特征对网络具有挑战性。
  • 从理论上讲,深度子网络应该知道摄像机的信息,才能正确地从图像中推断出深度。然而,现有的方法对摄像机参数是盲目的,导致了较差的结果。

按照经验,基于深度的3D目标检测器比不依靠深度的检测器,例如FCOS3D,在使用相同的主干网络和图像分辨率时,检测速度上要更慢。导致这样的原因是:在深度估计后,使用视图转换子网络会导致低效率

BEVDepth的两大工作:

(1) 提出了鲁棒的 Explicit Depth Supervision (显式的深度监督) :通过深度矫正和基于摄像机感知的深度预测。

(2)提出了Efficient Voxel Pooling(高效的体素池化) 去进一步提高BEVDepth的速度。

BEVDepth的框架图如下:

Image  Backbone  从多视角的图片中提取特征

Depth net:把图像特征作为输入,生成上下文语义和深度信息,并最终得到基于点的特征

Voxel Pooling:把所有基于点的特征统一到一个坐标系下,并在BEV特征图下对他们进行池化

论文要点:

  • 深度损失函数采用Binary Cross Entropy
  • 输入相机参数参与网络,反向传播进行校正

相机感知深度预测(Camera-aware Depth Prediction)

摄像机感知深度预测的设计提高了模型的深度预测能力。 然而,根据经典的相机模型,估计像素深度与相机的内参相关联,这意味着有必要将相机的内参建模到深度网络中。我们建议利用相机内参作为DepthNet的输入之一。

具体来说,首先使用MLP层将相机内部的尺寸放大到特征的尺寸。 然后,它们被用于通过Squeeze-Excitation (SE)来重新加权图像特征。最终,我们联系相机的内参和外参来帮助DepthNet 注意到相机图像的在自车坐标系下的空间位置信息。

高效的体素池化(Efficient Voxel Pooling)

​​​​​​​

Efficient Voxel Pooling 图示: 对于每一个点,对应一个线程。每个线程把相关联的点特征添加到BEV特征的对应位置。

如上图所示,我们的主要思想是为每个截头体特征分配一个CUDA线程,该线程用于将该特征添加到相应的BEV网格中

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值