MV2DFusion:利用模态特定目标语义进行多模态三维检测
MV2DFusion
- 摘要
- 引言
- 相关工作
- 基于LiDAR的3D检测
- 基于Camera的3D检测
- 基于融合的3D检测
- 方法
- 概述
- 利用模态特有的目标语义
- 来自模态特定专家的目标候选框
- 从专家中提取目标级语义
- 点云目标查询生成
- 图像目标查询生成
- 融合多模态信息
- Self-Attention
- Cross-Attention
- Query Calibration
- 模型输出
- 时间信息利用
- 损失函数
- 实验
- 结论
MV2DFusion: Leveraging Modality-Specific Object Semantics for Multi-Modal 3D Detection
论文网址: MV2DFusion
论文代码: MV2DFusion
摘要
自动驾驶汽车的兴起,显著提升了人们对鲁棒三维目标检测系统的需求。相机与激光雷达各自具备独特优势:前者纹理信息丰富,后者则提供精确的三维空间数据;然而,仅依赖单一模态往往导致性能受限。本文提出多模态检测框架 MV2DFusion,通过先进的基于查询的融合机制,将两者的优势整合于一体。MV2DFusion 引入图像查询生成器以对齐图像特有属性,并配备点云查询生成器,能够在不偏袒任一模态的前提下,有效融合模态特定的目标语义。随后,基于这些宝贵的目标语义完成稀疏融合,确保在各种场景下都能实现高效且精准的目标检测。该框架具备高度灵活性,可无缝接入任意基于图像或点云的检测器,展现出良好的适应性与未来拓展潜力。在 nuScenes 和 Argoverse2 数据集上的大量实验表明,MV2DFusion 达到了当前最优性能,尤其在远距离检测场景中表现卓越。
引言
自动驾驶技术的兴起进一步提升了对 3D 目标检测 的需求。由于不同传感器(如摄像头和激光雷达)的成像原理存在差异,相应的数据模态能够捕捉到现实世界目标的不同属性。不同模态的固有特性使其在目标区分上各具优势。例如,在图像中,目标表现为富含纹理的像素区域;而在点云中,目标则表现为由三维点组成的集合。近年来,大量基于摄像头的检测方法和基于激光雷达的检测方法被提出,并取得了显著进展。然而,仅依赖单一模态进行检测不可避免地会暴露其局限性。例如,图像缺乏深度信息,难以直接获取三维位置;而点云则缺乏丰富的语义信息,并且由于稀疏性,在远距离目标的捕获上存在困难。
为了同时利用两种模态的优势,研究者提出了多模态融合方法,期望能够兼具二者的优点。现有的多模态融合方法大体可以分为两类:特征级融合 和 候选框级融合。特征级融合方法:构建一个统一的特征空间(通常是以激光雷达坐标系为基准),并将不同模态的特征抽取后整合成一个多模态特征体。例如:DeepFusion 和 AutoAlign 利用点云特征去查询图像特征,从而增强点云的特征表示。BEVFusion 将图像和点云特征都转换到鸟瞰图(BEV)空间后再进行融合。CMT 则并未构建统一的特征空间,而是采用了一种基于注意力机制 [15] 的统一特征聚合方式,同时查询图像和点云特征。尽管特征级融合方法能够较为直接地实现目标识别与定位,但它们并未充分利用原始模态数据中蕴含的 目标先验信息。在融合过程中,有些方法甚至可能削弱不同模态所特有的强语义信息。
与此不同,候选框级融合方法 利用模态特有的候选框来最大化地发挥各自模态数据的作用。F-PointNet 作为早期的代表性方法之一,将图像中检测到的二维边界框转换为三维视锥体(frustums),并据此从点云中提取目标。FSF 和 SparseFusion 则分别从图像和点云中独立生成候选框,然后将这些候选框统一为基于点云的实例表示,用于后续的多模态交互。然而,在这两种方法中,融合后的表示往往会偏向于某一种模态。比如,在 F-PointNet 中,相机候选框主导了整个多模态融合过程;而在 SparseFusion 中,图像候选框最终被转换成与点云候选框相同的表示形式。
为了解决上述挑战,本文提出了一种名为 MV2DFusion 的多模态检测框架。我们的框架基于 MV2D 扩展而来,将其拓展至多模态检测场景,其中“以目标为查询”的设计为向多模态环境的自然延伸提供了便利。我们对 图像查询生成器 进行了重新设计,使其更契合图像模态:引入了 不确定性感知的图像查询,以保留来自图像的目标语义信息,并继承投影视图中的丰富语义。与此同时,我们增加了一个 点云查询生成器,从点云中提取目标语义,并与图像查询进行结合。随后,融合过程即可通过基于注意力的方式顺利完成。
通过精心设计的查询生成器,我们能够充分利用各模态特有的目标语义,而无需绑定在某一种特定的表示空间中。此外,这一设计还使我们能够灵活地集成任意类型的图像检测器和点云检测器,展现出框架的通用性和扩展潜力。
得益于稀疏化的融合策略,我们的框架在远距离场景中同样具备可部署性,而不会导致内存消耗和计算成本的二次方级增长。除此之外,只需进行极少的修改,该框架还可以轻松结合任意基于查询的方法,从而有效利用历史信息(例如 StreamPETR)。
我们在大规模 3D 检测基准数据集 nuScenes 和 Argoverse 2 (AV2) 上对所提出的方法进行了评估,并取得了当前最先进的性能表现。我们的贡献可以总结如下:
- 我们提出了一种框架,能够充分利用模态特有的目标语义,实现全面的多模态检测。在 nuScenes 和 AV2 数据集上的实验验证了该框架的有效性与高效性。
- 该框架可以灵活地与任意模态检测器结合,适应不同的部署环境,并能够利用不断发展的检测模型以获得更优性能。
- 得益于稀疏化的融合策略,该框架在远距离场景中同样提供了一种可行的解决方案。
总之,我们的方法在多模态 3D 检测中展现了新的进展,提供了一种稳健且灵活的解决方案,充分发挥了摄像头与激光雷达两种模态的优势。
相关工作
基于LiDAR的3D检测
基于激光雷达的 3D 检测在自动驾驶领域受到了广泛关注,因为它能够提供精确的深度和结构信息。现有方法主要分为 点云方法、体素方法、柱状方法和 距离图方法。点云方法:直接利用原始点云而不进行量化。PointRCNN 使用两阶段网络:第一阶段直接从原始点云中生成 3D 候选框,第二阶段通过融合语义特征和局部空间特征来对候选框进行精细化。3DSSD 构建了一个轻量且高效的单阶段点云 3D 检测框架,采用基于三维欧几里得距离和特征距离的新采样策略。FSD 引入了一个点云模块,用于解决全稀疏管线中缺失中心特征的问题。体素方法:将原始点云量化为体素。由于体素空间的稀疏性,SECOND 在体素表示的处理过程中引入了稀疏卷积,大幅降低了训练和推理的开销。基于体素空间,CenterPoint 提出了一个强大的基于中心的无锚 3D 检测器,成为 3D 目标检测的常用基线方法。TransfusionL 在检测头中引入了 Transformer,以进一步提升性能。距离图方法 和 柱状方法:将原始点云转换为二维表示(从不同视角),并利用 2D 网络进行特征提取。
基于Camera的3D检测
由于摄像头传感器成本较低,基于摄像头的 3D 检测同样受到了广泛关注。多年来,2D 检测器已得到充分发展,一种直接的方法是将 2D 检测器扩展到 3D 检测器。沿着这一思路,CenterNet 和 FCOS3D 将 3D 目标映射到图像域进行监督,从而可以在透视视图中直接预测 3D 边界框。一些方法则明确构建 BEV(鸟瞰图)空间 进行预测,它们通过深度估计获取深度信息,将图像特征投影到 BEV 空间,或直接使用 3D-2D 交叉注意力技术查询二维图像特征。BEVDet、BEVDet4D 和 BEVDepth 利用 LSS 模块,将来自多摄像头视角的特征投影到 BEV 表示中,同时利用预测的深度分布。BEVFormer 使用空间交叉注意力实现 2D 到 3D 的转换,并利用时间自注意力结合历史 BEV 特征表示当前环境。PolarFormer 提出利用极坐标系统,并设计了新的 Polar Transformer,以在 BEV 中实现更精确的 3D 目标检测。虽然这些 3D 空间表示有利于统一多视角图像,但随着 3D 检测范围的扩大,内存消耗和计算成本也会增加。
一些方法借鉴 DETR 的思路,使用查询(queries)来聚合图像特征进行预测。DETR3D 利用一组稀疏的 3D 目标查询在二维特征中进行索引,而无需估计密集的三维场景几何信息。PETR 直接将 3D 位置信息嵌入分配到二维图像上。Sparse4D 利用四维参考点在多帧图像中采样特征,无需依赖密集的视图变换。值得注意的是,上述方法都采用可学习的目标查询(learnable object queries),需要在三维空间中分布密集的查询,以保证对目标的充分召回。MV2D 提出了一个基于二维目标引导的框架,利用动态查询来召回目标,同时消除噪声和干扰物的影响。在本文中,我们将 MV2D 扩展至多模态检测,并且我们的框架保持了在远距离场景下的可部署性,同时避免了内存和计算成本的二次方增长。此外,我们的框架可以轻松结合任何基于查询的时间建模方法(如 StreamPETR),以有效利用历史信息。
基于融合的3D检测
摄像头和激光雷达具有互补性:摄像头提供密集的颜色和纹理信息,而激光雷达则提供精确的深度和结构信息,因此两者可以协同工作以获得更高的检测精度。因此,多模态融合成为提升感知系统性能和鲁棒性的关键问题。目前的多模态融合方法主要分为 特征级融合 和 候选框级融合 两类:1. 特征级融合方法:旨在构建统一的特征空间。早期方法将点云投影到图像上,并将投影位置周围的语义标签附加到三维点上。更新的方法,如 SD-Fusion 和 AutoAlign,使用点云特征去查询图像特征,从而增强点云特征表示。BEVFusion 将图像和点云特征都转换到鸟瞰图(BEV)空间后进行融合。CMT 将三维坐标整合到图像和点云特征中,使 DETR 流程能够有效用于多模态融合和端到端学习。SparseFusion 则侧重于稀疏化 BEV 特征,以提高融合过程的效率。2. 候选框级融合方法:利用模态特有的候选框以最大化模态数据的利用。F-PointNet 将检测到的图像边界框转换为视锥体,从点云中提取目标。FSF 和 SparseFusion 先分别从图像和点云生成候选框,然后将它们统一为基于点云的实例表示,用于多模态交互。然而,这些方法往往偏向于某一模态,无法充分发挥融合的优势。本文提出了一种基于候选框的多模态方法,通过利用模态特有的目标语义来解决模态偏置问题。
方法
概述
MV2DFusion 的整体流程如图 1 所示:
给定 NimgN_{img}Nimg 个多视角图像和点云作为输入,模型首先通过 图像主干网络(image backbone) 和 点云主干网络(point cloud backbone) 独立提取各模态特征。随后,分别对图像特征和点云特征应用 基于图像的二维检测器 和 基于点云的三维检测器,输出各自的检测结果。
接着,图像查询(image queries) 和 点云查询(point cloud queries) 由对应的查询生成器(query generators)根据模态特征和检测结果生成。最后,将这些模态查询和特征输入到 融合解码器(fusion decoder) 中,在解码器中,查询会聚合来自两种模态的信息,并在查询更新后进行 三维目标预测(3D predictions)。
我们将在后续章节中详细阐述各个部分的设计原理和具体细节。
利用模态特有的目标语义
我们设计了一种融合策略,能够挖掘各模态原始形式中的信息,而不会偏向某一模态。具体来说,我们不是在三维空间中表示并融合整个场景,而是通过利用并融合 模态特有的目标语义 来进行多模态 3D 检测。这一融合策略既保留了每种模态的独特特性,同时也利用了稀疏性的优势,从而降低计算成本和内存消耗。
来自模态特定专家的目标候选框
首先,我们采用独立的主干网络来提取各模态特征。带有 FPN 颈部的图像主干网络从多视角图像中提取图像特征 {Fvimg∣1≤v≤Nimg}\{F^{img}_v \mid 1 \le v \le N_{img}\}{Fvimg∣1≤v≤Nimg}。激光雷达主干网络则从点云中提取体素特征 FpcF^{pc}Fpc。在特征提取过程中,两条分支互不干扰,以保持各模态的独特信息。
基于各模态特征,我们利用模态特定的专家来发现每种模态中的目标候选框。每个专家能够挖掘对应模态的特性,以获得更好的检测性能。例如,基于图像的二维检测主要依赖像素的丰富纹理信息,而基于点云的三维检测则侧重于点云分布所反映的目标形状。
具体来说,对于基于图像的二维检测,我们可以使用 任意二维检测器,而不限制检测器的结构,例如 基于锚点(anchor-based) 或 无锚点(anchor-free),两阶段(two-stage) 或 单阶段(one-stage) 检测器。二维检测会为每张图像生成 MimgM^{img}Mimg 个二维边界框,每个边界框用 (xmin,ymin,xmax,ymax)(x_{min}, y_{min}, x_{max}, y_{max})(xmin,ymin,xmax,ymax) 表示。整体二维检测结果可以表示为 {bvimg∈RMimg×4∣1≤v≤Nimg}\{b^{img}_v \in \mathbb{R}^{M_{img} \times 4} \mid 1 \le v \le N_{img}\}{bvimg∈RMimg×4∣1≤v≤Nimg}。
得益于所提出的稀疏融合策略,对于基于点云的三维检测,我们可以直接使用在体素上操作的 稀疏检测器,从而使整个模型实现 全稀疏化。由于全稀疏模型不构建密集的 BEV 特征,它们在降低内存消耗和计算成本方面具有显著优势,尤其是在 远距离场景下。三维检测结果由 MpcM^{pc}Mpc 个三维边界框组成,每个边界框用 (x,y,z,w,l,h,rot)(x, y, z, w, l, h, rot)(x,y,z,w,l,h,rot) 表示。整体三维检测结果可表示为 bpc∈RMpc×7b^{pc} \in \mathbb{R}^{M_{pc} \times 7}bpc∈RMpc×7。
从专家中提取目标级语义
虽然两种检测结果都为目标识别提供了有价值的线索,但它们的表示方式本质上是不同的。基于点云的三维检测结果在 三维空间 中表示,而基于图像的二维检测结果则在 投影的二维空间 中表示。这种巨大的域差异会给信息融合带来困难。本文提出 从检测结果中提取目标级语义,而不是直接融合原始的检测结果。
由于点云通常分布在物体表面,因此它们在准确捕捉物体形状和姿态方面表现出色。但与点云不同的是,物体的三维姿态无法直接从图像中推断出来。相反,根据投影原理,物体在图像平面上的分布可以作为三维定位的线索。另一方面,图像像素可以用丰富的纹理描述物体,即使在远距离情况下,稀疏的点云可能无法捕捉到目标,图像仍然能够提供有效信息。
考虑到两种模态的不同特性,我们采用 目标查询(object query) 的形式来编码每种模态的目标级语义,从而实现多模态信息的无缝整合。在现代基于 Transformer 的检测框架中,每个目标查询通常由两部分组成:内容部分(content part) 和 位置部分(positional part)。在获得基于图像的检测结果 {bvimg}\{b^{img}_v\}{bvimg} 和基于点云的检测结果 bpcb^{pc}bpc 后,我们基于边界框及对应的模态特征构建目标查询。接下来各章节将详细介绍每种模态的目标查询生成过程。
点云目标查询生成
由于基于点云的三维检测器直接在三维空间中输出,我们采用 目标中心点 rpc∈RMpc×3r_{pc} \in \mathbb{R}^{M^{pc} \times 3}rpc∈RMpc×3 作为位置部分,以指示目标的真实位置。对于内容部分 cpc∈RMpc×Cc^{pc} \in \mathbb{R}^{M^{pc} \times C}cpc∈RMpc×C,我们整合了外观特征和几何特征。因此,点云查询表示为:
qpc=(cpc,rpc)q^{pc} = (c^{pc}, r^{pc})qpc=(cpc,rpc)
点云查询生成器的细节如图 2 所示。需要注意的是,外观特征 opco^{pc}opc 依赖于检测器的类型。例如,在基于中心的检测器中,外观特征是每个 BEV 网格中的值;在两阶段检测器中,外观特征是 RoI 特征。在我们的实现中,我们使用了一个稀疏点云的三维检测器,因此外观特征 opco^{pc}opc 就是用于生成预测的体素特征。我们将几何特征视为目标的物理属性,如尺寸和朝向,这些在检测结果 bpcb^{pc}bpc 中有明确表示。因此,内容部分 cpcc^{pc}cpc 可以简要表示为:
cpc=MLP(opc+MLP(SinPos(bpc)))c^{pc} = MLP(o^{pc} + MLP(SinPos(b^{pc})))cpc=MLP(opc+MLP(SinPos(bpc)))
其中,SinPos 表示正弦位置编码(sinusoidal positional encoding),用于将低维向量转换为高维特征。
图像目标查询生成
一种直观的生成图像查询的方法是使用基于图像的 3D 检测器,并将检测到的实例转换为图像查询。通过这种方式,可以轻松地获得与点云查询相同形式的图像查询,从而便于查询之间的多模态融合。然而,由于模态之间的固有差异,强制不同模态的查询采用相同形式会损害性能。由于从图像中估计深度是一个病态问题,3D 预测容易出现较大误差,这会影响图像查询的特征质量和定位精度。
为了解决这一挑战,我们基于二维检测引入了新型的不确定性感知图像查询(uncertainty-aware image queries)。对于由第 vvv 个摄像头视角生成的查询,其 内容部分 cvimg∈RMimg×Cc^{img}_v \in \mathbb{R}^{M^{img} \times C}cvimg∈RMimg×C 是嵌入了几何信息的 RoI(兴趣区域)外观特征。至于 位置部分,我们并不像以往工作那样选择估计的目标中心,而是保留了图像深度估计的不确定性。具体而言,我们使用 概率分布 来表示查询位置,而非确定值。该分布使用 类别分布(categorical distribution) 建模,包括 ndn_dnd 个采样位置
simg∈RMimg×nd×3s_{img} \in \mathbb{R}^{M^{img} \times n_d \times 3} simg∈RMimg×nd×3
及其对应的概率
uimg∈RMimg×nd。u_{img} \in \mathbb{R}^{M^{img} \times n_d}。 uimg∈RMimg×nd。
从第 v 个相机视角得到的图像查询由内容部分 cvimgc^{img}_vcvimg 和位置部分 svimg,uvimgs^{img}_v, u^{img}_vsvimg,uvimg 表示:
qvimg=(cvimg,svimg,uvimg)q^{img}_v = (c^{img}_v , s^{img}_v , u^{img}_v) qvimg=(cvimg,svimg,uvimg)
整体的图像查询 qimgq^{img}qimg 是由各个相机视角的查询聚合而成的:
qimg={qvimg=(cvimg,svimg,uvimg)∣1<=v<=Nimg}q^{img} = \{q^{img}_v = (c^{img}_v , s^{img}_v , u^{img}_v)| 1<= v <= N^{img}\} qimg={qvimg=(cvimg,svimg,uvimg)∣1<=v<=Nimg}
根据这种不确定性感知的图像查询公式,我们可以提供物体位置的初始估计,并减轻由相机到世界坐标投影带来的不准确性。具体过程如图 3 所示。
给定第 v 幅图像的二维目标检测结果 bvimgb^{img}_vbvimg 和图像特征图 FvimgF^{img}_vFvimg,图像查询生成器首先通过 RoI-Align [60] 提取 RoI 目标外观特征
ovimg∈RMvimg×Hr×Wr×C,o^{img}_v \in \mathbb{R}^{M^{img}_v \times H^r \times W^r \times C}, ovimg∈RMvimg×Hr×Wr×C,
其中 Hr×WrH^r \times W^rHr×Wr 表示空间尺寸:
ovimg=RoI-Align(Fvimg,bvimg)o^{img}_v = \text{RoI-Align}(F^{img}_v, b^{img}_v) ovimg=RoI-Align(Fvimg,bvimg)
除了外观特征 ovimgo^{img}_vovimg 之外,我们还将相应的相机内参矩阵 KvK_vKv 输入到图像查询生成器中,以补偿 RoI-Align过程中丢失的几何信息。记原始相机内参矩阵为:
Kvori=[fx0ox00fyoy000100001]K^{ori}_v = \begin{bmatrix} f_x & 0 & o_x & 0 \\ 0 & f_y & o_y & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} Kvori=fx0000fy00oxoy100001
然后,第 iii 个二维检测框 (xmini,ymini,xmaxi,ymaxi)(x^i_{\min}, y^i_{\min}, x^i_{\max}, y^i_{\max})(xmini,ymini,xmaxi,ymaxi) 对应的等效相机内参矩阵 KviK^i_vKvi,用于定义从相机坐标系到该检测框的投影,可表示为:
Kvi=[fx⋅rx0(ox−xmini)⋅rx00fy⋅ry(oy−ymini)⋅ry000100001]K^i_v = \begin{bmatrix} f_x \cdot r_x & 0 & (o_x - x^i_{\min}) \cdot r_x & 0 \\ 0 & f_y \cdot r_y & (o_y - y^i_{\min}) \cdot r_y & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix} Kvi=fx⋅rx0000fy⋅ry00(ox−xmini)⋅rx(oy−ymini)⋅ry100001
其中:
rx=Wrxmaxi−xmini,ry=Hrymaxi−yminir_x = \frac{W_r}{x^i_{\max} - x^i_{\min}}, \quad r_y = \frac{H_r}{y^i_{\max} - y^i_{\min}} rx=xmaxi−xminiWr,ry=ymaxi−yminiHr
因此,图像查询的内容部分 cvimgc^{img}_vcvimg 由外观特征 ovimgo^{img}_vovimg 和几何信息 KvK_vKv 参数化:
cvimg=MLP([Pool(Conv(ovimg));Flat(Kv)])c^{img}_v = \text{MLP}\Big( \big[ \text{Pool}(\text{Conv}(o^{img}_v)); \text{Flat}(K_v) \big] \Big) cvimg=MLP([Pool(Conv(ovimg));Flat(Kv)])
其中,符号 “;” 表示拼接操作(concatenation),而 Flat()\text{Flat}()Flat() 表示将张量的末尾维度展平(flatten)。
对于位置部分,我们在预定义的深度范围 [dmin,dmax][d_{\min}, d_{\max}][dmin,dmax] 内均匀采样 ndn_dnd 个值,形成深度集合 d∈Rndd \in \mathbb{R}^{n_d}d∈Rnd。然后,我们预测一组二维采样位置 s2d∈RMimg×nd×2s^{2d} \in \mathbb{R}^{M^{img} \times n_d \times 2}s2d∈RMimg×nd×2 及其对应的概率 uimg∈RMimg×ndu^{img} \in \mathbb{R}^{M^{img} \times n_d}uimg∈RMimg×nd,其中下标 vvv 为简化而省略。
[s2d,ulogit]=MLP(cimg)[s^{2d}, \; u^{\text{logit}}] = \text{MLP}(c^{img}) [s2d,ulogit]=MLP(cimg)
uimg=softmax(ulogit)u^{img} = \text{softmax}(u^{\text{logit}}) uimg=softmax(ulogit)
利用二维采样位置 s2ds^{2d}s2d 和深度值 ddd,我们可以通过相机到世界坐标的投影得到三维采样位置 simgs^{img}simg。
需要注意的是,这种基于分布的表述与 LSS有一定的相似性,但实际上它并没有将查询特征分布到三维空间中。该编码格式不仅节省了 LSS 所需的计算资源和内存,而且在深度预测出现误差时提高了鲁棒性。此外,它还为后续进一步精炼位置提供了第二次机会,如第 3.3.3 节将讨论的内容。
融合多模态信息
受到 Detection Transformer 的启发,我们使用类似解码器的结构来融合多模态信息并预测最终结果。该解码器包含 LLL 层解码器层,每层由自注意力层(self-attention)、交叉注意力层(cross-attention)、层归一化(layer normalization)、前馈网络(feed-forward network)以及查询校准层(query calibration layer)组成。点云查询 qpcq^{pc}qpc 和图像查询 qimgq^{img}qimg 被组合为解码器的输入,这些组合后的输入查询记作 q0=(qpc,qimg)q^0 = (q^{pc}, q^{img})q0=(qpc,qimg),而第 lll 层之后的查询记作 qlq^lql。
下面重点强调几个重要的改进。
Self-Attention
如公式 1 和公式 3 所述,不同模态的查询具有不同的表示形式,即 qpc=(cpc,rpc)q^{pc} = (c^{pc}, r^{pc})qpc=(cpc,rpc) 和 qimg=(cimg,simg,uimg)q^{img} = (c^{img}, s^{img}, u^{img})qimg=(cimg,simg,uimg)。为了使它们能够兼容典型的自注意力层,我们保留内容部分,并将位置部分转换为统一的表示。
我们分别使用位置编码方法(PE)和不确定性感知位置编码方法(U-PE)为每种模态生成位置编码,得到点云模态的位置编码 ppc∈RMpc×Cp^{pc} \in \mathbb{R}^{M^{pc} \times C}ppc∈RMpc×C 和图像模态的位置编码 pimg∈RMimg×Cp^{img} \in \mathbb{R}^{M^{img} \times C}pimg∈RMimg×C:
ppc=PE(rpc)p^{pc} = \text{PE}(r^{pc})ppc=PE(rpc)
pimg=U-PE(simg,uimg)\quad p^{img} = \text{U-PE}(s^{img}, u^{img})pimg=U-PE(simg,uimg)
在位置编码(PE)中,ppcp^{pc}ppc 是由中心点 rpcr^{pc}rpc 生成的。
PE(rpc)=MLP(SinPos(rpc))PE(r^{pc}) = MLP(SinPos(r^{pc}))PE(rpc)=MLP(SinPos(rpc))
其中,SinPos\text{SinPos}SinPos 表示正弦位置编码(sinusoidal positional encoding)。
在不确定性感知位置编码(U-PE)中,我们首先将 simgs^{img}simg 转换为基础位置编码 pbasep^{base}pbase,然后通过门控操作(gating operation)将概率 uimgu^{img}uimg 注入到 pbaseimgp^{img}_{base}pbaseimg 中。
sbase=MLP(Flat(simg))s^{base} = MLP(Flat(s^{img}))sbase=MLP(Flat(simg))
U-PE(simg,uimg)=MLP(sbase⊙σ(MLP(uimg)))\text{U-PE}(s^{img}, u^{img}) = \text{MLP}\Big(s^{base} \odot \sigma(\text{MLP}(u^{img}))\Big) U-PE(simg,uimg)=MLP(sbase⊙σ(MLP(uimg)))
其中,Flat()\text{Flat}()Flat() 表示展平操作(flatten),⊙\odot⊙ 表示逐元素相乘(element-wise multiplication),σ\sigmaσ 表示 Sigmoid 函数。
在多头注意力(multi-head attention,记作 MHA(Q,K,V)\text{MHA}(Q, K, V)MHA(Q,K,V))的典型表示下,自注意力可以写为:
SelfAttn=MHA(WQ(csa+psa),WK(csa+psa),WVcsa)\text{SelfAttn} = \text{MHA}\big(W^Q(c^{sa} + p^{sa}), \; W^K(c^{sa} + p^{sa}), \; W^V c^{sa}\big) SelfAttn=MHA(WQ(csa+psa),WK(csa+psa),WVcsa)
其中,psap^{sa}psa 表示点云模态和图像模态位置编码的拼接,csac^{sa}csa 表示内容特征的拼接。
不失一般性,该公式可以简化表示为:
SelfAttn=MHA(WQqsa,WKqsa,WVqsa)\text{SelfAttn} = \text{MHA}\big(W^Q q^{sa}, \; W^K q^{sa}, \; W^V q^{sa}\big) SelfAttn=MHA(WQqsa,WKqsa,WVqsa)
Cross-Attention
虽然在自注意力层中仅在查询自身之间交换信息就能得到较好的预测,但我们的实验发现,像 Transformer 解码器中那样增加交叉注意力层可以进一步提升性能,尽管会增加模型的复杂度。交叉注意力层的目标是聚合有用的模态特定特征以更新查询,如图 4 所示。
对于图像特征,我们采用基于投影的可变形注意力(projection-based deformable attention。具体来说,我们首先获取每个查询的锚点。点云查询的锚点 apca^{pc}apc 直接取其三维位置 rpcr^{pc}rpc。而图像查询的锚点 aimga^{img}aimg 则为通过概率分布 uimgu^{img}uimg 对采样位置 simgs^{img}simg 的加权平均。对于第 iii 个图像查询:
aiimg=(uiimg)⊤⋅siimg.(17)a^{img}_i = (u^{img}_i)^\top \cdot s^{img}_i. \tag{17} aiimg=(uiimg)⊤⋅siimg.(17)
基于投影的可变形注意力(projection-based deformable attention)计算公式为:
DFA(cm,am,Fimg)=∑v=1Nimg∑k=1KAvk⋅WFvimg(Proj(am+Δak)),(18)\text{DFA}(c^m, a^m, F^{img}) = \sum_{v=1}^{N^{img}} \sum_{k=1}^{K} A_{vk} \cdot W F^{img}_v \big( \text{Proj}(a^m + \Delta a_k) \big), \tag{18} DFA(cm,am,Fimg)=v=1∑Nimgk=1∑KAvk⋅WFvimg(Proj(am+Δak)),(18)
其中:
- AvkA_{vk}Avk 和 Δak\Delta a_kΔak 分别表示从内容部分 cmc^mcm 预测的注意力权重和偏移量
- KKK 是采样点的数量
- Proj()\text{Proj}()Proj() 表示从世界坐标到相机坐标的投影
- mmm 表示查询的模态(图像或点云)
对于点云特征,如果模型接受 BEV 形式的点云特征,也可以使用类似的可变形注意力操作来交换信息。在我们的实现中,点云特征 FpcF^{pc}Fpc 由稀疏 voxel 构成,从而实现完全稀疏的模型。在这种情况下,我们采用普通的多头注意力(vanilla multi-head attention)来聚合点云特征。
点云特征通过柱化(pillarization)进行压缩,例如沿高度方向做平均池化,以生成内容部分 cpillarc^{pillar}cpillar。柱状特征的位置编码 ppillarp^{pillar}ppillar 由 BEV 位置 rpillarr^{pillar}rpillar 生成:
ppillar=MLP(SinPos(rpillar)).p^{pillar} = \text{MLP}(\text{SinPos}(r^{pillar})). ppillar=MLP(SinPos(rpillar)).
Query Calibration
通过参考其他查询和模态特征,一个查询可以对其所属的物体有更精确的描述。由于不同模态的特性,我们认为由图像生成的查询位置可靠性较低,而由点云生成的位置相对准确。因此,我们在每个解码器层之后使用更新后的特征对图像查询进行校准。该校准将精炼图像查询的位置,并减轻不确定性。在此过程中,仅对概率分布 uimgu^{img}uimg 进行更新,而采样位置 simgs^{img}simg 保持不变。
特别地,最新的 uimgu^{img}uimg 通过对旧的概率分布在 logit 空间 进行残差加法来更新,而不是在概率空间中完成。该过程可表示为:
ulogit=log(uimg),u^{\text{logit}} = \log(u^{img}), ulogit=log(uimg),
uimg←softmax(ulogit+MLP(cimg)).u^{img} \leftarrow \text{softmax}\big(u^{\text{logit}} + \text{MLP}(c^{img})\big). uimg←softmax(ulogit+MLP(cimg)).
查询校准层会相应地影响图像查询的位置编码 pimgp^{img}pimg 和锚点 aimga^{img}aimg。
模型输出
在得到最后一层解码器的物体查询 qLq^LqL 后,我们对其分别应用分类头和回归头以得到模型输出。具体地,分类分数 zclsz^{cls}zcls 可以通过上下文特征 cLc^LcL 获得:
zcls=MLP(cL).z^{cls} = \text{MLP}(c^L). zcls=MLP(cL).
回归目标包括位置、尺寸、旋转和速度(如果需要),表示为 (x,y,z,w,l,h,rot,vx,vy)(x, y, z, w, l, h, \text{rot}, v_x, v_y)(x,y,z,w,l,h,rot,vx,vy)。回归基于上下文特征 cLc^LcL 和锚点 aLa^LaL 进行:
zreg=MLP(cL)+[aL;0].z^{reg} = \text{MLP}(c^L) + [a^L; 0]. zreg=MLP(cL)+[aL;0].
时间信息利用
为了进一步利用时间信息,我们选择了一种高效的基于查询的时间融合方法,计算开销可忽略。具体来说,我们维护一个历史查询队列 qhist∈R(K×T)×Cq^{hist} \in \mathbb{R}^{(K \times T) \times C}qhist∈R(K×T)×C,大小为 K×TK \times TK×T,用作历史信息。在当前帧完成预测后,我们将得分最高的前 K 个物体查询推入 qhistq^{hist}qhist,从而使其包含前 T 帧的历史信息。
历史查询队列 qhistq^{hist}qhist 会参与自注意力层。具体地,它首先结合对应的时间延迟 t∈RK×Tt \in \mathbb{R}^{K \times T}t∈RK×T、自车位姿 P∈R(K×T)×4×4P \in \mathbb{R}^{(K \times T) \times 4 \times 4}P∈R(K×T)×4×4 和历史查询的速度 v∈R(K×T)×2v \in \mathbb{R}^{(K \times T) \times 2}v∈R(K×T)×2 进行变换:
qtrans=ϕ(qhist∣t,P,v),q^{trans} = \phi(q^{hist} \mid t, P, v), qtrans=ϕ(qhist∣t,P,v),
其中 ϕ\phiϕ 是一个小型网络,用于编码相关信息。
然后,变换后的历史查询 qtransq^{trans}qtrans 作为额外的键(key)和值(value)参与自注意力计算。此时公式 16 中的自注意力更新为:
SelfAttn=MHA(WQqsa,WK[qsa;qtrans],WV[qsa;qtrans]).\text{SelfAttn} = \text{MHA}\big(W^Q q^{sa}, \; W^K [q^{sa}; q^{trans}], \; W^V [q^{sa}; q^{trans}]\big). SelfAttn=MHA(WQqsa,WK[qsa;qtrans],WV[qsa;qtrans]).
损失函数
模态特定的查询生成器可以兼容任意基于图像的二维检测器和基于 LiDAR 的三维检测器。这些检测器可以无缝地集成到 MV2DFusion 框架中,无需对模型结构或损失函数进行任何修改。这些检测器经过预训练,以为动态查询提供更好的初始化。在训练阶段,它们也可以与框架联合训练。在这种情况下,我们将基于图像的二维检测器的原始损失函数记作 Ldet2DL_{\text{det2D}}Ldet2D,将基于 LiDAR 的三维检测器的损失函数记作 Ldet3DL_{\text{det3D}}Ldet3D。
对于融合解码器层的输出,我们沿用了 DETR 的目标分配和损失函数设计。标签分配采用匈牙利算法(Hungarian algorithm)[62];目标分类和框回归分别采用 Focal loss [53] 和 L1 loss。三维目标检测的输出损失可总结为:
Lout=λcls⋅Lcls+Lreg.(26)L_{\text{out}} = \lambda_{\text{cls}} \cdot L_{\text{cls}} + L_{\text{reg}}. \tag{26} Lout=λcls⋅Lcls+Lreg.(26)
除了上述用于目标检测的损失外,我们还在图像查询生成器上增加辅助监督,以促进深度估计。给定第 vvv 张图像预测的二维边界框 bvimgb^{img}_vbvimg 和由真实三维边界框投影得到的二维边界框 b^vproj\hat{b}^{proj}_vb^vproj,我们首先计算它们之间的成对 IoU 矩阵 UUU,使得:
Ui,j=IoU(bv,iimg,b^v,jproj).U_{i,j} = \text{IoU}(b^{img}_{v,i}, \hat{b}^{proj}_{v,j}). Ui,j=IoU(bv,iimg,b^v,jproj).
若满足以下条件,二维 RoI 边界框 bv,iimgb^{img}_{v,i}bv,iimg 被分配到目标 b^v,jproj\hat{b}^{proj}_{v,j}b^v,jproj:
- Ui,j=maxkUi,kU_{i,j} = \max_k U_{i,k}Ui,j=maxkUi,k
- Ui,j=maxkUk,jU_{i,j} = \max_k U_{k,j}Ui,j=maxkUk,j
- Ui,j>τIoUU_{i,j} > \tau_{\text{IoU}}Ui,j>τIoU
如果二维 RoI 成功分配到目标,则图像查询生成器输出的深度分布 dv,iimgd^{img}_{v,i}dv,iimg 将由目标深度 d^v,jproj\hat{d}^{proj}_{v,j}d^v,jproj 进行监督,辅助损失定义为:
Laux=CELoss(dv,iimg,d^v,jproj),(27)L_{\text{aux}} = \text{CELoss}(d^{img}_{v,i}, \hat{d}^{proj}_{v,j}), \tag{27} Laux=CELoss(dv,iimg,d^v,jproj),(27)
其中 CELoss\text{CELoss}CELoss 表示交叉熵损失(cross entropy loss)。
MV2DFusion 的总体损失函数为:
L=λdet2D⋅Ldet2D+λdet3D⋅Ldet3D+λaux⋅Laux+λout⋅Lout.(28)L = \lambda_{\text{det2D}} \cdot L_{\text{det2D}} + \lambda_{\text{det3D}} \cdot L_{\text{det3D}} + \lambda_{\text{aux}} \cdot L_{\text{aux}} + \lambda_{\text{out}} \cdot L_{\text{out}}. \tag{28} L=λdet2D⋅Ldet2D+λdet3D⋅Ldet3D+λaux⋅Laux+λout⋅Lout.(28)
超参数 {λ}\{\lambda\}{λ} 是经验设定,用于平衡不同损失项的尺度。
实验
!!!
结论
在本文中,我们提出了 MV2DFusion,一种通用且高效的多模态目标检测框架。延续其前身 MV2D 的“以目标为查询”(object as query)思路,MV2DFusion 引入了模态特定的目标检测器来生成目标查询。随后,采用带交叉注意力的解码器聚合来自 LiDAR 和图像空间的特征,并预测最终结果。该设计不仅兼容各种图像和 LiDAR 检测器,还由于融合过程的稀疏性而支持远距离目标检测。我们在多种场景下验证了该框架,实验结果显示其在 nuScenes 和 AV2 数据集上均优于近期的最先进方法。我们希望这一设计能够推动多模态目标检测框架在科研和实际应用中的发展。