点击上方“计算机书童”,选择加"星标"或“置顶”
顶刊论文解读,第一时间分享
题目:Learning Optical Flow and Scene Flow With Bidirectional Camera-LiDAR Fusion双向摄像头-激光雷达融合学习光流和场景流
作者:Haisong Liu; Tao Lu; Yihui Xu; Jia Liu; Limin Wang
源码链接: https://github.com/MCG-NJU/CamLiFlow
摘要
在本文中,我们研究了从同步的二维和三维数据中联合估计光流和场景流的问题。以往的方法要么采用一个复杂的流程,将联合任务分解为独立的阶段,要么以“早融合”或“晚融合”的方式融合二维和三维信息。这种一刀切的方法因未能充分利用每种模态的特性或最大化模态间的互补性而陷入困境。为了解决这个问题,我们提出了一个新颖的端到端框架,它由二维和三维分支组成,在特定层之间有多个双向融合连接。与以往的工作不同,我们应用了一个基于点的三维分支来提取激光雷达特征,因为它保留了点云的几何结构。为了融合密集的图像特征和稀疏的点特征,我们提出了一个可学习的算子,名为双向相机-激光雷达融合模块(Bi-CLFM)。我们实现了两种类型的双向融合流程的实例,一种基于金字塔粗到细架构(称为CamLiPWC),另一种基于循环的全部配对场变换(称为CamLiRAFT)。在FlyingThings3D上,CamLiPWC和CamLiRAFT都超越了所有现有方法,并将3D终点误差从最佳已发布结果降低了高达47.9%。我们表现最佳的模型CamLiRAFT在KITTI场景流基准测试中达到了4.26%的误差,参数数量大大减少,排名第一。此外,我们的方法具有很强的泛化性能和处理非刚性运动的能力。
关键词
I. 引言
光流代表相邻帧的像素运动,而场景流是动态场景的三维运动场。通过它们,我们可以获得对场景动态的洞察,这对于某些高级场景理解任务至关重要。在这项工作中,我们专注于联合估计光流和场景流,这涉及到从激光雷达(或立体相机的密集深度图)获取的单目相机帧中的稀疏点云。
先前的方法[6], [41], [70], [71]构建了模块化网络,将场景流的估计分解为几个子任务。尽管取得了令人印象深刻的结果,但这些子模块独立运行,阻碍了它们互补性质的利用。此外,子模块中的任何限制都可能对整体性能产生负面影响,因为整个流程依赖于其结果。另一方面,一些研究人员[54], [58]采用特征级融合,并基于著名的光流架构构建了端到端架构。基于RAFT [57]构建的RAFT-3D [58]将图像和密集深度图合并为RGB-D帧,并输入到统一的2D网络中以预测像素级3D运动。然而,这种“早融合”(图2(a))导致2D CNN未能充分利用深度提供的大部分3D结构信息。DeepLiDARFlow [54]将图像和激光雷达点云作为输入。在此过程中,点被投影到图像平面上进行密集化,然后使用“晚融合”方法(图2(b))与图像融合。然而,早期阶段产生的错误没有机会被另一种模态纠正,并且累积到后续阶段。结果,两种模态之间的潜在互补性没有得到充分利用。
总的来说,单阶段融合面临着一个困境:它未能充分利用每种模态的特性或最大化模态间的互补性。为了克服这一挑战,我们引入了一个多阶段和双向融合流程(参见图2(c))。这种方法不仅提高了性能,还减少了参数数量。在每个阶段中,两种模态使用模态特定的架构在单独的分支中处理。在每个阶段结束时,一个可学习的双向桥连接两个分支,促进互补信息的交换。整个网络可以以多任务损失的方式端到端训练。我们的融合方案是通用的,可以应用于不同的架构,如PWC-Net [56]和RAFT [57]。此外,最近基于点的方法[37], [49], [50], [65]在激光雷达场景流方面取得了显著进展。这启发我们使用基于点的分支处理激光雷达点云,它可以在没有任何体素化或投影的情况下提取精细的3D几何信息。因此,我们的点分支直接消费点云并预测点级场景流,而我们的图像分支从输入图像估计密集的像素级光流。
值得注意的是,在图像分支和点分支的融合过程中存在三种不匹配问题。首先,图像特征和点特征的数据结构不匹配。具体来说,图像特征以密集的网格结构组织,而点云不遵循规则网格,并且在连续域中稀疏分布。因此,像素和点之间没有一一对应的保证。当需要双向融合特征时,这个问题变得更加棘手。在这里,我们提出了一个新的可学习的融合算子,名为双向相机-激光雷达融合模块(Bi-CLFM),其中特征在两个方向上进行融合:2D到3D和3D到2D。2D到3D的过程可以被理解为密集到稀疏,因为点被投影到图像平面上以检索相应的2D特征,使用双线性网格采样。对于3D到2D的过程,这是稀疏到密集的,我们提出了一个可学习的插值方法来密集化稀疏的3D特征。
其次,两个分支的性能不匹配。对于图像分支,我们可以很容易地采用现有的光流方法(例如,RAFT [57])。然而,构建一个与图像分支的架构和性能相匹配的强大的点分支并非易事。尽管有一些现成的网络[31], [62]将RAFT的思想扩展到3D空间,但由于性能不佳、架构不一致和计算量大,很难将它们作为我们的点分支采用。为了解决这个问题,我们从头开始构建我们的点分支,它与RAFT完全同质化。关键贡献是点基的相关金字塔,可以捕捉到小和大的运动。有了更好的设计和优化的实现,我们的点分支在性能上大大超过了竞争对手,同时运行速度更快。
第三,两个分支的梯度尺度不匹配。正如我们在实验中发现的,融合属于不同模态的两个分支可能会遇到尺度不匹配的梯度,这使得训练不稳定并被一种模态主导。在本文中,我们提出了一个简单但有效的策略,通过从一个分支到另一个分支分离梯度,以便每个分支专注于其任务。实验表明,我们的梯度分离策略使训练更加稳定,并显著提高了性能。
我们在两种流行的架构上实现了我们的融合方案,即金字塔粗到细策略[56]和循环的全部配对场变换[57]。两个模型分别命名为CamLiPWC和CamLiRAFT。实验表明,我们的方法在参数数量大大减少的情况下取得了更好的性能。在FlyingThings3D[42]上,CamLiPWC和CamLiRAFT都超越了所有现有方法,并在RAFT-3D的基础上将端点误差降低了高达47.9%。在KITTI[43]上,即使是非刚性的CamLiRAFT也与之前利用严格刚体假设(SF-all: 4.97% 与 4.89%)的最先进方法表现相当。通过用刚性先验细化背景场景流,CamLiRAFT进一步达到了4.26%的误差,以较大的优势超越了所有以前的方法(排行榜显示在图1中)。我们的方法还具有很强的泛化性能,并且能够处理非刚性运动。在Sintel[12]上没有微调的情况下,CamLiRAFT在训练集的最终通过上达到了2.38 AEPE,将误差比RAFT和RAFT-3D分别降低了12.2%和18.2%。此外,我们方法的激光雷达变体,被称为CamLiPWC-L和CamLiRAFT-L,在准确性和速度方面也超越了之前所有的激光雷达单一场景流方法。
总之,我们做出了以下四项主要贡献:
我们提出了一种双向和多阶段的相机-激光雷达融合流程,用于光流和场景流估计。我们的流程是通用的,可以应用于各种网络架构。
我们实现了两种类型的双向融合流程,一种基于金字塔粗到细架构(称为CamLiPWC),另一种基于循环的全部配对场变换(称为CamLiRAFT)。
我们设计了一个可学习的融合算子(Bi-CLFM),通过可学习的插值和双线性采样以双向方式对齐和融合图像和点特征。还引入了梯度分离策略,以防止训练过程中某一种模态占主导地位。
在FlyingThings3D和KITTI上,我们的方法在相机-激光雷达和激光雷达单一设置中都取得了最先进的性能。在Sintel上的实验也证明了它强大的泛化性能和处理非刚性运动的能力。
本文的初步版本CamLiFlow [36]已在CVPR 2022上作为口头报告被接受。在本文的期刊版本中,我们在以下几个方面扩展了我们之前的工作:
我们实现了两种类型的双向融合流程,即基于金字塔粗到细架构的原始CamLiPWC,以及基于循环的全部配对场变换的新CamLiRAFT。CamLiRAFT在各种数据集上都取得了一致的性能提升,并在多个数据集上设立了新的最先进的记录。
对于CamLiRAFT的点分支(称为CamLiRAFT-L),我们优化了实现,并提出了一个基于点的相关金字塔来捕捉小和大的运动。与其他基于RAFT的激光雷达场景流方法相比,CamLiRAFT-L在性能上更优越,同时效率提高了5倍。
我们通过通道注意力改进了双向相机-激光雷达融合模块(Bi-CLFM),使模型能够自适应地选择要融合的特征。
我们在没有微调的情况下在Sintel上验证了我们的方法。实验表明,我们的方法具有良好的泛化性能,并且能够处理非刚性运动。
III. 方法论
在以下部分中,我们首先介绍双向相机-激光雷达融合模块(Bi-CLFM)。然后,我们将双向融合管道在两种流行的架构上实现,即金字塔式粗到细策略[56]和递归所有对场变换[57]。
A. 双向相机-激光雷达融合模块 (Bi-CLFM)
本节介绍双向相机-激光雷达融合模块(Bi-CLFM),该模块能够以双向方式(2D到3D和3D到2D)融合密集的图像特征和稀疏的点特征。
如图3所示,Bi-CLFM输入包括图像特征 、点特征 和点位置 ,其中 表示点的数量。输出是融合后的图像和点特征。Bi-CLFM在不改变输入特征空间结构的前提下执行双向融合,可以方便地集成到任何点图像融合架构中。每种方向(2D到3D或3D到2D)的特征首先通过双线性网格采样和可学习的插值对齐以匹配空间结构。然后,对齐的特征基于选择性核卷积自适应融合。此外,我们引入了梯度分离策略,解决了不同模态间梯度尺度不匹配的问题。1)特征对齐:由于图像特征是密集的而点特征是稀疏的,我们需要在融合前对两种模态的特征进行对齐。具体来说,图像特征需要被采样以变得稀疏,而点特征需要被插值以变得密集。- 2D 到 3D:首先,点投影到图像平面上(表示为 )以检索相应的2D特征:其中 表示 x 处的图像特征,可以通过双线性插值检索以适应非整数坐标。然后,检索到的特征通过1×1卷积与输入点特征对齐。
- 3D 到 2D:同样,点首先投影到图像平面上。由于点云是稀疏的,我们提出了一个可学习的插值模块来创建密集特征图 从稀疏点特征。然后,“插值”的点特征通过1×1卷积与输入图像特征的形状对齐。
可学习的插值:为解决将稀疏点特征融合到密集图像特征的问题,我们提出了一个可学习的插值模块。如图4所示,对于密集图中的每个目标像素 q,我们找到其在图像平面上投影点的 k 个最近邻居。然后,使用一个轻量级多层感知器(MLP),后接sigmoid激活,根据坐标偏移对邻近特征加权。最后,邻近特征根据分数加权并聚合。请注意,此处的插补模块不同于会议版本[36]中的插补模块。改进之处在于两个方面:1)不再处理相邻偏移量和具有较重MLP的特征之间的连接,而是显式地构建了一个轻量级ScoreNet来为相邻特征生成权重;2)我们去掉了Q与其邻居之间的2D相似性度量,因为我们经验发现它不再提高性能。2)自适应特征融合 (Adaptive Feature Fusion):在上述部分中,我们已经将2D和3D特征对齐,使其具有相同的空间形状,为特征融合做好了准备。常见的特征融合操作包括加法和连接,但这些操作可能会受到大量无关特征的影响。受选择性核网络(Selective Kernel Networks, SKNet)[34]的启发,我们提出基于通道注意力自适应地融合这些特征。以密集特征为例,考虑图像特征 和“插值”后的点特征 (它们都具有形状 ),我们首先生成输入的通道级统计量 z :其中 P 表示全局平均池化。然后,通过一个全连接层将 z 的维度从 C 降至 ,得到紧凑的特征表示 z',这有助于实现更精细和自适应的特征选择。接着,使用紧凑的通道统计量 z' 来预测注意力分数 A :这里 softmax 操作确保了对于所有通道 i,其两个方向上的注意力分数之和为 1,即 。最后,通过加权求和的方式结合 F2D 和 F3D 得到融合后的特征图 :这种自适应融合方法允许网络基于当前特征的重要性动态调整不同模态特征的融合方式,而不是简单地将它们相加或连接。这有助于网络专注于最有利于任务的特征,从而提高最终性能。3)梯度分离:如前所述,多模式融合可能会遇到尺度不匹配的梯度,导致训练不稳定,并被一种模式所支配。为了解决这个问题,我们建议在BiCLFM中将梯度从一个分支分离到另一个分支,如图3所示。在这一部分中,我们首先对通过计算梯度的L2范数得到的梯度尺度进行统计分析。从图5我们可以看到,这两个分支的损失和梯度规模是非常不同的。2D渐变比3D渐变大40倍,并且间隔不会随着训练周期数的增加而缩小。这可能是由于两种模式的数据范围和特征空间存在较大差异。在这种情况下,直接融合来自不同模式的特征可能会遇到尺度不匹配的梯度,这促使我们将梯度从一个分支分离到另一个分支。我们还进行了消融来演示梯度分离的效果,如图12所示。在没有梯度分离的情况下,2D分支主导训练,并损害3D分支的性能。通过将梯度从一个分支分离到另一个分支,我们防止了一种通道占据主导地位,从而使每个分支都专注于其任务。B. 金字塔式粗到细融合管道 (Pyramidal Coarse-to-Fine Fusion Pipeline)
PWC-Net [56] 是基于简单且成熟的原则设计的,包括金字塔处理、变形和代价体的使用。在粗级别计算得到的光流被上采样并变形到更细的级别。如图 6 所示,我们引入了 CamLiPWC,这是一个基于 PWC 架构的双分支网络。基本架构 (Basic Architecture):我们使用 IRR-PWC [23] 作为图像分支。唯一的区别是我们用一个可学习的凸上采样模块 [57] 替换了双线性上采样,以从期望的级别生成最终预测。点分支基于 PointPWC-Net [65],并进行了两处主要修改。首先,我们增加了金字塔的级别以匹配图像分支。因此,点金字塔有 6 个级别,分别包含 8192、4096、2048、1024、512 和 256 个点。其次,解码器的权重在所有金字塔级别上共享。根据 IRR-PWC 的观点,具有权重共享的迭代残差细化可以减少参数数量并提高精度。融合位置 (Fusion Locations):两个分支在三个位置连接:- 特征金字塔:图像金字塔编码丰富的纹理信息,而点金字塔编码几何信息。因此,特征在多个级别上融合,以合并纹理和结构信息。
- 相关特征:基于像素的 2D 相关性保持固定范围的邻域,而基于点的 3D 相关性搜索动态范围。因此,感受野可以互补。
- 光流解码器:从光流解码器的倒数第二层融合特征,以交换最终预测的信息。
损失函数 (Loss Functions):尽管光流和场景流的估计高度相关(场景流在图像平面上的投影变为光流),我们将其制定为两个不同的任务。我们分别对 2D 和 3D 分支进行监督,并设计了多任务损失进行联合优化。设 和 分别为第 l 层的光流和场景流的真实值。每个分支的回归损失定义如下:C. 递归所有对场融合管道 (Recurrent All-Pairs Field Fusion Pipeline)
递归所有对场变换(RAFT)[57] 是目前最先进的光流估计算法,它为所有像素对构建了4D相关体积,并使用门控机制进行迭代更新。在本节中,我们将我们的融合管道扩展到RAFT架构,并构建了一个名为CamLiRAFT的模型。特征提取 (Feature Extraction):我们为每个分支构建了一个特征编码器。图像编码器由6个残差块组成,并在1/8分辨率下输出特征。点编码器使用最远点采样将点云下采样到1/4,并使用PointConv[64]聚合特征。上下文网络 (Context Network):遵循RAFT[57],我们为每个分支构建了一个上下文网络,以从第一帧中提取语义和上下文信息。上下文网络的架构与特征编码器相同,但权重不共享。所有对相关性 (All-Pair Correlation):对于图像分支,相关体积 定义为所有图像特征对的点积。为了捕获长距离依赖性,我们通过在 的最后两个维度上应用平均池化,使用内核大小1、2、4和8构建了一个4层相关金字塔 。相关性查找 (Correlation Lookup):在每次迭代中,我们在所有级别的相关金字塔上执行查找。对于图像分支,查询 q 的第 i 层相关特征 是通过从 中索引以 q 为中心的 d × d 邻域构建的,其中 d 设置为 9。最终的相关特征是通过连接每个级别的值形成的:。对于点分支,由于代价体是稀疏的,我们使用 k-最近邻算法在每个查询周围搜索邻域。假设查询 q 在 中的第 i 个最近邻是 p_i 并且相关值为 ,我们以可学习的方式计算 q 和 p_i 之间的匹配成本:其中 [·] 表示连接。然后,查询 q 的第 l 层相关特征定义为其 k 个最近邻中的最大值:迭代更新 (Iterative Updates):给定当前的光流和场景流估计,我们使用它们来从上述描述的相关体积中检索各自的相关特征。接下来,我们按照RAFT的实现来构建一个运动编码器和一个GRU单元用于图像分支。运动编码器从相关特征和当前流估计中生成运动特征。然后,GRU单元根据运动和上下文特征更新隐藏状态。最后,我们使用两个3×3卷积从更新后的隐藏状态预测剩余光流。对于点分支,我们构建了相同的管道,但将标准2D卷积替换为基于点的卷积。然而,在这里使用原始版本的PointConv算子将显著增加在多次迭代时(例如,20×)的计算开销。因此,我们构建了一个深度可分离版本的PointConv(称为PointConvDW),它的灵感来自于深度卷积[21]。形式上,PointConvDW从其邻居{j: (i, j) ∈ N}中聚合特征F'j ∈ 𝔽𝔹𝔾𝔾𝔽,其中pj ∈ ℝ^3和Fj ∈ 𝔽^𝔹𝔾是邻居的坐标和特征:在这里,深度和空间维度的过滤器被分开,使PointConvDW比PointConv运行得快得多。为了使特征能够双向融合,我们对图像分支和点分支执行相同数量的迭代。融合位置 (Fusion Locations):对于CamLiRAFT,我们在四个阶段执行特征融合:来自特征编码器、上下文编码器、相关性查找操作和运动编码器的特征被融合以传递互补信息。每个融合连接都发挥其独特的作用,并对最终性能做出贡献。损失函数 (Loss Functions):与CamLiPWC类似,我们对每个分支进行监督,并设计了多任务损失。形式上,设 和 分别为光流和场景流的真实值,设 和 为第 i 次迭代预测的光流和场景流。每个分支的损失定义如下:其中 计算 L2 范数,N 是迭代次数,α 设置为 0.8。最终损失是上述定义的损失的总和:D. 实现细节 (Implementation Details)
在实现我们的模型时,我们关注了两个主要的架构:CamLiPWC 和 CamLiRAFT,并针对每个架构提供了详细的实现说明。CamLiPWC:我们构建了一个6级的金字塔结构,用于同时处理图像和点分支。从最顶层开始,我们逐步进行从粗到细的估计,直至第二层。因此,CamLiPWC能够在的分辨率下输出光流,以及在的分辨率下输出场景流。通过使用凸上采样[57]和k-最近邻(k-NN)上采样,我们能够获得全尺度的光流和场景流。CamLiRAFT:对于 CamLiRAFT,初始的光流和场景流都被设置为零。在训练过程中,我们进行了10次迭代,并在20次迭代后进行评估。CamLiRAFT在的分辨率下输出光流,在的分辨率下输出场景流。与CamLiPWC类似,全尺度的光流和场景流也是通过凸上采样和k-NN上采样获得的。我们采用了逆深度缩放(Inverse Depth Scaling, IDS)技术来处理激光雷达点云的不均衡分布问题。IDS通过以下公式对点云的每个维度进行缩放:其中 和 都设置为 0,而 设置为 1 以避免出现零深度的情况。IV. 实验
A. 主要结果
我们在合成数据集FlyingThings3D [42]和真实世界数据集KITTI [43]上评估了我们的方法。FlyingThings3D由来自ShapeNet [13]的多个随机移动对象渲染而成的立体和RGB-D图像组成,该数据集规模大且具有挑战性。KITTI Scene Flow是一个用于自动驾驶的真实世界基准,包括200个训练场景和200个测试场景。我们还在MPI Sintel [12]上评估了模型的泛化性能,该数据集主要包括非刚性运动。1)FlyingThings3D: 数据预处理:按照之前工作 [17], [26], [65] 的做法,我们使用了FlyingThings3D的一个子集。训练和验证集分别包含19640对和3824对相机-激光雷达帧。我们遵循FlowNet3D [37]而非HPLFlowNet [17]的做法将深度图像提升为点云,因为HPLFlowNet仅保留非遮挡点,这过于简化了问题。训练:在表I中,我们提供了CamLiPWC和CamLiRAFT的超参数和训练配方。这里,由于模态的性质,我们为图像和点分支使用了不同的学习率。采用余弦衰减作为学习率计划。对于数据增强,由于训练样本数量足够,我们只执行了随机翻转(包括水平和垂直方向)。评估指标:我们使用2D和3D终点误差(EPE)以及阈值指标(ACC1px和ACC.05)评估网络性能,这些指标衡量了在一定阈值内的误差部分。对于2D指标,我们遵循RAFT-3D [58]的做法,在全图像上评估,不包括流速超过250px的极快速移动区域。对于3D指标,我们评估所有点(包括遮挡的点)的深度小于35米。我们还包括了模型大小在比较中。定量结果:在表II中,我们与几种使用不同输入模态的最先进方法进行了比较。值得注意的是,我们的CamLiPWC超越了所有现有方法,包括建立在更高级架构RAFT之上的RAFT-3D。与此相反,我们的方法有四个优点。首先,我们有更好的性能,特别是在3D指标上(EPE3D: 0.057 m 与 0.094 m)。其次,RAFT-3D以密集的RGB-D帧作为输入,而我们只需要稀疏的深度测量。第三,RAFT-3D利用场景刚性通过刚性运动嵌入,而我们不依赖于这样的假设,可以处理刚性和非刚性运动。第四,我们的方法更轻量,参数少于10M。这证明了多阶段双向融合比单阶段融合更优越。通过将我们的融合管道扩展到RAFT架构,CamLiRAFT在所有方面进一步提高了性能。我们还添加了CamLiRAFT的一个变体进行比较,该变体使用ImageNet1k预训练的ResNet-50 [18]的前两个阶段作为2D特征编码器。在ImageNet上预训练可以加速收敛并略微提高最终性能。定性结果:光流和场景流估计的视觉比较如图8所示。我们的结果是由表现最好的模型CamLiRAFT预测的。我们可以看到,由于缺乏纹理或缺乏几何信息,单模态方法难以获得满意的性能。我们的方法可以更好地处理具有重复结构的对象和具有重叠对象的复杂场景。2)KITTI: 由于KITTI排行榜对提交数量有限制,我们只评估了表现最好的模型CamLiRAFT。我们遵循[70], [71]的做法,将200个训练图像按照4:1的比例划分为训练和验证集。使用提供的校准参数将真值视差图提升为点云。训练:使用在FlyingThings3D上预训练的权重,我们在KITTI上对CamLiRAFT进行了800个周期的微调。在微调期间,我们按照RAFT的建议冻结了所有BatchNorm [27]层。应用了基本的数据增强策略,包括颜色抖动、随机水平翻转、随机缩放和随机裁剪。我们使用Torchvision [45]中的ColorJitter,亮度0.4,对比度0.4,饱和度0.2,色相0.4/π。图像随机缩放因子在[1.0, 1.5]范围内。测试:在测试期间,由于没有提供视差图或点云,我们使用GA-Net [75]从立体图像估计视差,并生成深度小于90米和高度小于2米的伪激光雷达点云。点分支的稀疏输出被插值以创建密集预测。背景场景流的细化:由于KITTI中大多数背景对象是刚性的(例如,地面、建筑物等),我们可以使用刚性细化步骤来细化背景场景流。具体来说,我们使用DDRNet-Slim [19],这是一个轻量级的2D语义分割网络,预先在Cityscapes [14]上训练,然后在KITTI上微调。接下来,我们通过从背景流图中拟合和分解本质矩阵使用神经引导的RANSAC [8]估计自我运动。最后,使用自我运动生成背景场景流,并替换模型预测的原始流。与最先进方法的比较:我们将我们的方法提交到KITTI Scene Flow基准的网站上,并在表III中报告了排行榜。可视化的比较如图9所示。值得注意的是,CamLiRAFT在没有利用任何刚体假设的情况下,与之前最先进的方法RigidMask [71](SF-all: 4.97% 对比 4.89%)表现相当。相比之下,RigidMask通过为所有对象分配刚性运动并使用多10倍的参数来利用更严格的刚体假设。通过使用刚性先验细化背景场景流,CamLiRAFT实现了4.26%的误差,以较大的优势超越了所有以前的方法。此外,我们的方法更轻量,只有20.4M参数(6.3M GA-Net + 8.4M CamLiRAFT + 5.7M DDRNet-Slim),并且可以处理一般非刚性运动,因为我们只对静态背景应用刚性运动细化。我们希望强调的是,CamLiRAFT的潜力还没有完全发挥,因为由立体匹配方法(例如GA-Net)生成的伪激光雷达点云并不完美。在实践中,当部署在配备真实激光雷达传感器的汽车上时,CamLiRAFT可以实现更好的性能。3)Sintel: 以前的场流方法 [6], [41], [43], [58], [71] 通常只关注刚性场景。在这一部分,我们在MPI Sintel [12]上测试了我们方法的性能,该数据集主要包括非刚性运动。由于测试集上没有深度图,我们评估了泛化性能:模型在合成数据上训练,在Sintel的训练分割上验证,没有微调。同样,我们将真值深度图提升为深度小于30米的点云。定量结果:在表IV中,我们将我们的方法与单模态基线和多模态竞争对手RAFT3D进行了比较。由于缺乏真值3D场景流,我们只评估了光流性能。由于RAFT-3D将刚性运动嵌入到模型中,它不适合非刚性场景,其性能甚至比RAFT更差(2.91与2.71在最后通过)。相比之下,我们的方法可以处理一般非刚性运动,并且具有良好的泛化性能。即使是CamLiPWC也能在Sintel的最后通过上达到2.55定性结果:我们进一步选择了Sintel最后通过中的一些具有挑战性的样本,并在图10中提供了可视化比较。我们可以看到,RAFT-3D的刚性运动嵌入导致了大面积的错误,而我们的方法不依赖于任何刚性先验,在各种场景中都有稳健的性能。借助3D信息,我们可以克服低光、运动模糊等挑战。B. 与仅激光雷达方法的比较
构建一个强大且高效的点分支是双向多模态融合的重要先决条件。在这一部分,我们在FlyingThings3D和KITTI上分别将我们两个模型的点分支(分别称为CamLiPWC-L和CamLiRAFT-L)与现有的仅激光雷达场景流方法进行了比较。评估设置:有两种不同的数据预处理方式。第一种是HPLFlowNet [17]提出的,它在预处理期间仅保留非遮挡点。第二种设置由FlowNet3D [37]提出,保留了遮挡点。我们报告了遮挡/非遮挡设置的结果,以便更全面地进行比较。定量结果:在表V中,我们报告了在FlyingThings3D上的结果。在没有相机辅助的情况下,我们的点分支仍然以很大的优势超越了以前的工作。此外,我们的方法的吞吐量(在Tesla V100 GPU上,批量大小为8进行测量)比竞争对手高得多。在非遮挡数据上,CamLiPWC-L将EPE3D降低了46%,与PointPWC-Net相比,同时运行速度提高了5倍。CamLiRAFT-L(8次迭代)将误差降低了36%,并且比FlowStep3D快6倍。在表VI中,我们在KITTI上测试了最佳模型CamLiRAFT-L的泛化能力。这里,我们按照GMSF [76]调整KITTI数据,以覆盖相同的域范围,使用均值和标准差。再次,CamLiRAFT-L在遮挡/非遮挡设置下均超越了所有先前的方法。我们希望我们的点分支可以作为激光雷达仅场景流估计的强基线。讨论:尽管CamLiRAFT-L似乎与现有方法如FlowStep3D [31]和PV-RAFT [62]有一些共同之处,但由于架构不同、训练计划复杂和计算量大,很难采用它们作为我们的点分支。- FlowStep3D只展开4次迭代,因为在此之后性能开始下降。原因可能是初始粗糙流的较大误差无法通过迭代更新进行校正,因为更新模块的相关单元仅具有局部感知领域。相比之下,CamLiRAFT-L基于点的相关金字塔可以捕捉到小和大的运动,并且随着迭代次数的增加,性能持续提高,这与RAFT一致。这对于我们的融合管道至关重要,因为点和图像分支的迭代次数应该匹配,以便在更新块内实现融合。
- PV-RAFT依赖于流细化模块,使预测更平滑。由于内存限制,细化模块没有与主网络端到端训练。然而,CamLiRAFT-L不需要额外的网络进行细化,并且可以端到端训练。
- FlowStep3D和PV-RAFT由于设计复杂和实现缓慢,都不高效。具体来说,训练它们需要超过4天,这在预算有限的情况下是不可行的。相反,配备更好的设计和优化实现的CamLiRAFT-L可以在不到24小时内训练完成,同时仍然在两个竞争者中取得更好的性能。
C. 消融研究
在这一部分,我们在FlyingThings3D上进行了消融研究,以确认每个模块的有效性。由于计算资源有限,我们将训练周期减半,即CamLiRAFT 100个周期,CamLiPWC 300个周期。除非另有说明,我们使用CamLiPWC作为参考模型。我们模型的默认选择用灰色表示。单向融合与双向融合:在我们的管道中,特征以双向方式融合。这里,我们为CamLiPWC和CamLiRAFT训练了两个变体,其中特征以单向方式融合(2D ⇒ 3D或2D ⇐ 3D)。如表VII所示,单向融合可以改善2D或3D指标之一,而双向融合为两种模态都提供了更好的结果。改进在不同的架构中是一致的。此外,与单向融合相比,双向融合将最佳EPE2D从1.88提高到1.86,EPE3D从0.056提高到0.053,表明一种模态的改进也可以使另一种模态受益。早期/晚期融合与多阶段融合:我们融合管道的另一个亮点是多阶段融合。在表VIII中,我们验证了每个融合阶段的有效性。对于CamLiPWC,我们将三个阶段(特征编码器、相关性、流估计器)分别表示为SF、SC和SD。表VIII显示了单阶段融合只能提供次优结果。相比之下,在所有三个阶段融合特征可以带来显著的改进。我们还提供了图11中的更详细的定性分析。如图所示,融合编码器特征可以使对象的结构更清晰,因为点金字塔编码了几何信息,有助于恢复复杂对象的形状。融合相关性特征使模型能够捕捉到小而快速移动的对象,因为基于点的3D相关性搜索动态范围的邻域,可以与搜索固定范围的2D相关性互补。融合流解码器的特征提高了整体性能,特别是在对象重叠的复杂场景中。对于CamLiRAFT,我们使用SF、SX、SC和SM分别表示四个融合位置:特征编码器、上下文编码器、相关性查找和运动编码器。同上,多阶段融合比单阶段融合带来更好的性能。然而,我们发现融合GRU的隐藏状态(表中表示为SH)会降低性能。因此,只有前四个阶段SF、SX、SC和SM被融合。可学习的插值:在表IX中,我们测试了Bi-CLFM的插值模块的不同配置。顶行表示一个简单的实现,即将3D特征直接投影到图像平面上而不进行插值(空白位置用零填充)。直接使用最近邻插值将特征图密集化并不会带来显著的改进(见第二行)。通过在最近邻插值中引入可学习的ScoreNet(第三行),我们将EPE2D从2.60降低到2.52,并提高了ACC1px从81.8%到82.2%,证明可学习的插值是一个关键设计。我们还通过将k(最近邻的数量)从1增加到3进行了两个实验,然后用诸如MEAN和MAX之类的对称操作。然而,没有观察到显著的改进,表明k=1对插值来说就足够了。由于可学习插值在FlyingThings3D上的改进相对于简单基线看起来边缘化,我们进一步比较了表XI中的泛化性能。所有变体都是在FlyingThings3D上训练,并在KITTI的训练集上未经微调测试的。如图所示,可学习插值显著优于基线,特别是在2D指标上(EPE2D: 3.64 → 3.03),证明了它良好的泛化性能。特征融合:在第三节A2中,我们基于选择性核网络(SKNet)提出根据不同模态的特征适应性地融合特征。这里,我们将选择性融合与其他常见的特征融合操作进行了比较,包括加法、连接和门控融合[67]。门控融合也是一种基于注意力的融合方法。不同之处在于,门控融合利用空间注意力为每个位置适应性地合并特征,而选择性融合关注通道。如表X所示,与加法和连接相比,门控融合没有带来任何改进。选择性融合在3D指标上略好(EPE3D: 0.075 → 0.070),但与连接在2D指标上并列。在表XI中,我们使用CamLiRAFT进一步测试了这些融合方法的泛化性能。在这种设置下,选择性融合与连接和其他方法相比具有绝对优势。这一结果表明,通道注意力带来了更好的泛化性能,这对于流任务更为重要。梯度分离:在图12中,我们对CamLiPWC进行了消融,以证明梯度分离的效果。2D分支不受3D梯度的影响,但3D分支却受到2D梯度的很大影响。这可能是因为2D梯度如此之大以至于它主导了训练(见图5)。通过在两个分支之间分离梯度,我们防止了一种模态的主导,以便每个分支都专注于其任务。逆深度缩放:在图13中,我们对FlyingThings3D和KITTI的原始Velodyne数据进行了统计分析,以说明有无IDS时不同距离上的点的密度。通过平均其k个最近邻的偏移来衡量围绕点的局部密度(k = 16)。如图所示,IDS使得不同区域的点分布更加均匀。我们还在FlyingThings3D上进行了几项比较实验,以验证IDS的效果。由于IDS不需要输入图像,我们还测试了CamLiPWC-L和CamLiRAFT-L,其中去除了图像分支。如表XII所示,在仅激光雷达设置下性能有所提高,表明更均匀的点分布可以促进学习。D. 延迟和限制
推理延迟:在表XIII中,我们提供了在FlyingThings3D(960×540图像和8192点)上的推理延迟细分。计时结果在单个Tesla V100 GPU上使用fp32 PyTorch [45]后端进行测量。对于CamLiRAFT,为了效率,迭代更新的次数设置为8。如图所示,Bi-CLFM引入的计算成本仅占总数的10.6%。推理需要CamLiPWC 110毫秒,CamLiRAFT 216毫秒。请注意,我们没有使用任何推理加速技术,如TensorRT。因此,还有进一步改进的潜在空间。限制:由于Bi-CLFM对激光雷达点云和相机图像进行了硬关联,当传感器不对齐出现时,性能会受到损害。将来,我们将尝试在不使用投影矩阵建立确定性对应关系的情况下,自适应地对齐两种模态。另一个限制是,CamLiRAFT对更远距离的物体不太健壮,因为网络仅在深度小于35米的数据上进行了训练。V. 结论
在本文中,我们提出了一种双向多阶段融合管道,利用了相机和激光雷达之间的互补性。为了融合密集的图像特征和稀疏的点特征,我们引入了双向相机-激光雷达融合模块(Bi-CLFM),这是一种可学习的算子,通过可学习的插值和双线性采样以双向方式对齐和融合特征。借助所提出的Bi-CLFM,我们构建了基于金字塔粗到细策略的CamLiPWC和基于循环全部场变换的CamLiRAFT。实验表明,我们的融合管道是通用的,并在不同架构中实现了一致的性能提升。此外,我们在FlyingThings3D和KITTI上取得了新的最佳性能,证明了我们融合管道的有效性。我们的方法还具有良好的泛化性能,并且能够处理通用的非刚性运动。我们希望这一激动人心的结果能够吸引更多关注双向融合范式。声明
本文内容为论文学习收获分享,受限于知识能力,本文对原文的理解可能存在偏差,最终内容以原论文为准。本文信息旨在传播和学术交流,其内容由作者负责,不代表本号观点。文中作品文字、图片等如涉及内容、版权和其他问题,请及时与我们联系,我们将在第一时间回复并处理。