0. 简介

对于激光雷达和视觉摄像头而言,两者之间的多模态融合都是非常重要的,而本文《Learning Optical Flow and Scene Flow with Bidirectional Camera-LiDAR Fusion》则提出一种多阶段的双向融合的框架,并基于RAFT和PWC两种架构构建了CamLiRAFT和CamLiPWC这两个模型。相关代码可以在 https://github.com/MCG-NJU/CamLiFlow.中找到。下面我们来详细的看一看这篇文章的详细内容。

1. 主要贡献

本文关注Camera和LiDAR的多模态融合问题,具体的任务是2D光流和3D光流(3D光流又称为场景流,Scene Flow)的联合估计。文中存在四个主要贡献点:

  1. 我们提出了一种双向和多阶段的相机LiDAR融合流程用于光流和场景流估计。我们的流程是通用的,并且可以应用于各种网络架构。
  2. 我们实例化了两种双向融合流程类型,一种基于金字塔粗到细架构(称为CamLiPWC),另一种基于递归全对场变换(称为CamLiRAFT)。
  3. 我们设计了一个可学习的融合运算符(Bi-CLFM),通过可学习的插值和双线性采样以双向方式对图像和点特征进行对齐和融合。还引入了梯度分离策略,以防止一种模态主导训练。
  4. 在FlyingThings3D和KITTI上,我们的方法在相机-LiDAR 3和仅LiDAR设置中均实现了最先进的性能。Sintel上的实验也展示了其强大的泛化性能和处理非刚体运动的能力。

2. 相关工作

这篇文章是比较新的工作,作者认为需要回顾一下相关工作,以便于读者了解这个领域是如何发展的。

2.1 光流法(2D)

光流估计法旨在从一对帧中为每个像素预测密集的2D运动。我们粗略地将相关的光流估计方法分为两类:传统方法和基于卷积神经网络(CNN)的方法。
传统方法:传统方法将光流估计公式化为能量最小化问题。Horn和Schunck [18]提出了变分方法来通过在数据项和正则化项之间施加权衡来估计光流。Black和Anandan [5]引入了一个稳健的框架来解决过度平滑和噪声敏感性问题。其他方法改善了数据项[68]和匹配成本。

基于CNN的方法:自Krizhevsky等人[27]展示卷积神经网络在大规模图像分类上表现良好以来,许多研究人员开始探索基于CNN的方法来处理各种计算机视觉任务。FlowNet [13]是第一个用于光流估计的端到端可训练CNN,采用编码器-解码器架构。FlowNet2 [21]将多个FlowNet堆叠成一个更大的网络。PWC-Net [50]和其他一些方法[19],[20],[46],[63]使用由粗到细的金字塔迭代细化。这些从粗到细的方法往往会错过那些在粗略级别上消失的小型和快速移动的对象。为了解决这个问题,RAFT [51]为所有像素对构建4D成本体积,并在高分辨率上迭代更新光流。在本文中,我们基于两种典型的光流架构:PWC-Net [50]和RAFT [51],实现了我们的双向融合管道。

2.2 场流法(3D)

场流法类似于光流法,只是场流是在3D空间中定义的运动场,而光流是在2D空间中定义的。一些方法从RGB-D输入中估计像素级稠密的场流,而其他方法则侧重于从点云估计稀疏的场流。

RGB-D帧的场流:RGB-D场流是指从成对的立体或RGB-D帧中为每个像素估计密集的3D运动与光流类似,传统方法探索变分优化和离散优化,并将场流视为能量最小化问题。最近的方法将场流估计分为多个子任务,并为每个子任务建立一个或多个子模块的模块化网络。具体而言,DRISF [36]从两个连续的立体图像中估计光流,深度和分割,并使用高斯-牛顿求解器找到最佳3D刚性运动。RigidMask [65]预测背景和多个刚体移动对象的分割掩模,然后通过3D刚性变换进行参数化。尽管取得了显着进展,它们的子模块彼此独立,无法利用不同模态的互补特征。RAFT-3D [52]探索了特征级融合,并在早期阶段将图像和深度映射连接到RGB-D帧中,然后使用统一的2D网络迭代更新像素级SE3运动的密集场。然而,这种“早期融合”使得2D CNN难以利用3D结构信息。

点云的场流:PointNet是对点集进行深度学习研究的先驱性工作,可以直接处理3D点(例如来自LiDAR)。从那时起,研究人员[15],[26],[32],[33],[41],[55],[56],[59]开始探索基于点的场流估计方法。基于PointNet ++ [44],FlowNet3D [32]使用流嵌入层来表示点的运动。FlowNet3D ++ [55]通过添加几何约束获得更好的性能。受双边卷积层启发,HPLFlowNet [15]将点投影到Permutohedral格上。PointPWCNet [59]引入可学习的点云成本体积,并以粗到细的方式估计场流。FLOT [41]将场流估计视为相邻帧中对应点之间的图匹配问题,并使用最优传输解决该问题。PV-RAFT [56]提出点-体素相关场来捕获点对的局部和长程依赖性。FlowStep3D [26]设计了一种递归架构,学习迭代地细化场流预测。然而,这些方法没有利用图像提供的颜色特征,这限制了性能。

2.3 相机-LiDAR融合

相机和LiDAR具有互补的特性,方便许多计算机视觉任务,例如深度估计,场流估计和3D物体检测。这些方法可以分为结果级别和特征级别的融合。

结果级融合:一些研究人员构建了模块化网络并进行了结果级融合。FPointNet [42]使用现成的2D物体检测器来限制3D物体检测的搜索空间,从而显着减少计算量并提高运行时间。IPOD [66]用2D语义分割替换2D物体检测器,并使用基于点的建议生成。PointPainting [54]将LiDAR点云投影到图像的语义分割网络的输出中,并将类别得分附加到每个点。然而,结果级融合的性能受到子模块的限制,因为整个网络取决于其结果。相比之下,我们的方法利用特征级融合,可以以端到端的方式进行训练

特征级融合:另一种方法是特征级融合。PointFusion [60]利用2D物体检测器生成2D框,然后使用基于CNN和点的网络将图像和点特征融合用于3D物体检测。MVX-Net [49]使用预训练的2D Faster R-CNN提取图像特征和VoxelNet生成最终框。点或体素投影到图像平面上,并将相应的特征与3D特征融合。Liang等人[30]利用连续卷积将图像特征融合到不同分辨率的BEV特征图上。BEVFusion [34]使用升降射击操作将相机特征转换为BEV空间,并使用BEV编码器融合两种模态。TransFusion [2]遵循两阶段流水线:查询从LiDAR特征生成,并分别与2D和3D特征交互。CMT [62]探索了跨模态变压器,使用坐标编码隐式地对齐多模态特征。与以往工作不同的是,我们提出了一个多阶段双向融合流程,不仅充分利用每种模态的特点,而且最大化了模态间的互补性。

3. Bidirectional Camera-LiDAR Fusion Module(Bi-CLFM)详细方法

本节介绍双向相机-LiDAR融合模块(Bi-CLFM),它可以以双向方式(2D到3D和3D到2D)融合密集的图像特征和稀疏的点特征。如图3所示,Bi-CLFM将图像特征F_{2D}∈\mathbb{R}^{H×W×C_{2D}}、点特征G_{3D}={g_i|i=1,…,N}∈\mathbb{R}^{N×C_{3D}}和点位置P={p_i|i=1,…,N}∈\mathbb{R}^{N×3}作为输入,其中N表示点的数量。输出包含融合后的图像和点特征。因此,Bi-CLFM在不改变输入特征的空间结构的情况下进行双向融合,可以轻松地插入任何点-图像融合结构中。对于每个方向(2D到3D或3D到2D),首先使用双线性网格采样和可学习插值将特征对齐具有相同的空间结构。接下来,基于选择性核卷积[29]自适应地融合对齐特征。此外,我们引入了梯度分离策略,解决了尺度不匹配梯度的问题。

3.1 特征对齐

由于图像特征是密集的而点特征是稀疏的,因此我们需要在融合之前对两种模式的特征进行对齐。具体而言,需要对图像特征进行采样以变得稀疏,而需要对点特征进行插值以变得稠密。

2D->3D:对于2D到3D方向的对齐,我们首先将点投影到图像平面来sample相应的2D特征,其中,非整数坐标的情况使用双线性插值来处理。接着使用一个1×1卷积将sample得到的特征的通道维度与输入点特征dim对齐。

3D->2D:3D到2D方向的对齐也是类似,我们将点投影到图像平面,利用一个新的可学习的插值模块(下面有讲)从稀疏点特征中得到密集的特征图。接着也使用一个1×1卷积将插值点特征的通道维度与输入图像特征dim对齐。

可学习插值:对于密集特征图的每一个像素,我们在图像平面中寻找k个离它最近的投影后的点。接着,我们用一个ScoreNet根据坐标偏移量为相邻特征生成权重,ScoreNet会给每一个特征赋予一个(0,1)区间的分数。最后再根据分数赋予相邻特征权重,并使用max或sum这类对称运算进行聚合。

3.2 自适应特征融合

对齐了特征之后,我们需要对他们进行融合。最简单的方法就是concat或者add,不过它们不够adaptive。这里我们使用了基于SKNet的方法进行adaptive的特征融合,它能够自适应地挑选出需要融合的channel。

图4. 可学习插值的细节。对于每个目标像素,我们找到其周围的k个最近点。接着使用轻量级MLP,并跟随一个Sigmoid激活函数来加权邻近特征。

3.3 梯度截断

在进行多模态融合时,可能会遇到两个模态梯度尺寸不匹配的问题。如果不进行处理,可能会导致一种模态主导训练。我们对两个模态的梯度进行分析,发现2D的梯度比3D大了约40倍!因此,我们在Bi-CLFM中截断了来自另一个模态的梯度,使模态间不会受到相互影响。

4. PWC pipeline(CamLiPWC)

PWC-Net [50] 是根据简单和成熟的原则设计的,包括金字塔处理、变形和使用代价体积。在粗略级别计算的光流被上采样并扭曲到更精细的级别。如图6所示,我们引入基于PWC架构的两个分支网络,即CamLiPWC。

4.1 基本架构

我们将IRR-PWC [20]用作图像分支。唯一的区别是我们用可学习的凸上采样模块[51]替换双线性上采样,从期望的级别产生最终预测。点分支基于PointPWC-Net [59],有两个主要修改。首先,我们增加了金字塔的级别以匹配图像分支。因此,点金字塔分别具有8192、4096、2048、1024、512和256个点的6个级别。其次,解码器的权重在所有金字塔级别之间共享。根据IRR-PWC,具有权重共享的迭代式残差细化可以减少参数数量并增加准确性。

图6. CamLiPWC的架构。同步的相机和激光雷达帧被作为输入,分别估计出密集光流和稀疏场景流。CamLiPWC建立在PWC架构之上,是一个具有多个双向融合连接(Bi-CLFM)的两支网络。

4.2 融合位置

两个分支连接在三个位置:(1)特征金字塔。图像金字塔编码丰富的纹理信息,而点金字塔编码几何信息。因此,特征在多个级别上融合,以合并纹理和结构信息。(2)相关特征。基于像素的2D相关性维持固定的邻域范围,而基于点的3D相关性搜索动态范围。因此,感受野可以是互补的。(3)流解码器。来自流解码器倒数第二层的特征融合以交换信息进行最终预测。

4.3 损失函数。

尽管光流和场流的估计非常相关(场景流投影到图像平面上变成光流),但我们将它们制定为两个不同的任务。我们分别监督2D和3D分支,并设计一个多任务损失进行联合优化。

5. RAFT pipeline(CamLiRAFT)

循环对所有像素对进行场变换(RAFT)[51]是用于光流估计的最先进算法,它构建所有像素对的4D相关性体积,并使用门控机制迭代地更新流。本节中,我们将我们的融合管道扩展到RAFT架构,并构建一个名为CamLiRAFT的模型。类似地,CamLiRAFT具有两个同质分支:图像分支和点分支。图像分支与RAFT完全相同。然而,对于点分支,由于不均匀的架构、复杂的训练计划和繁重的计算,难以采用现成的网络[26]、[52]、[56]。为了克服这些挑战,我们从头开始构建了完全同质于RAFT且适用于多阶段融合的点分支。接下来,我们使用多个双向CLFM将两个分支连接起来,构建完整的融合管道,如图7所示。

图7. CamLiRAFT的架构。CamLiRAFT建立在RAFT架构之上,我们进行了四阶段特征融合:来自特征编码器、上下文编码器、相关性查找操作和运动编码器的特征进行融合以传递互补信息。

特征提取:我们为每个分支构建一个特征编码器。图像编码器由6个残差块组成,输出1/8分辨率的特征。点编码器使用最远点采样将点云下采样到1/4,使用PointConv [58]聚合特征。

上下文网络:这块类似RAFT [51],我们为每个分支构建一个上下文网络,从第一帧中提取语义和上下文信息。上下文网络和特征编码器的架构相同,但权重不共享。

全对相关性:图像分支的相关性体积V_{2D}∈\mathbb{R}^{H×W×H×W}定义为所有图像特征对之间的点积。为了捕获长程依赖关系,我们使用核大小为1、2、4和8的平均池化将V2D的最后两个维度构造成4层相关金字塔{V^{(1)}_{2D}, V^{(2)}_{2D},V^{(13)}_{2D}, V^{(4)}_{2D}}。对于点分支,相关性体积V_{3D}∈\mathbb{R}^{N×N}定义为所有点特征对之间的点积。同样,我们使用基于点的平均池化构建了一个4层相关性金字塔{V^{(1)}_{3D}, V^{(2)}_{3D},V^{(13)}_{3D}, V^{(4)}_{3D}}。点的平均池化操作与图像的操作类似,只是我们使用最远点采样下采样点,并将邻域定义为k个最近邻居。

相关性查找: 在每次迭代中,我们在所有级别的相关性金字塔上执行查找。对于图像分支,第i层相关特征C^{(i)}_{2D}(q)通过在V^{(i)}_{2D}中索引每个查询q周围的d×d邻域(其中d设置为9)构建。最终通过连接每个级别的值完成相关特征,对于点分支,由于成本体积是稀疏的,我们使用k近邻算法搜索每个查询周围的邻域。假设查询qV^{(l)}_{3D}中的第i个最近邻居为pi,相关性值为V^{(l)}_{3D}(p_i),则我们以可学习的方式计算qp_i之间的匹配成本。

迭代更新:鉴于光流和场景流的当前估计值,我们使用它们从成本体积中检索相应的相关特征,如上文所述。接下来,我们按照RAFT的实现方式构建运动编码器和图像分支的GRU单元。运动编码器从相关特征和当前流估计中生成运动特征。然后,GRU单元通过运动和上下文特征更新隐藏状态。对于点分支,我们构建相同的管道,但将标准2D卷积替换为基于点的卷积。为了实现双向特征融合,我们展开相同数量的迭代次数以用于图像和点分支。

融合位置:对于CamLiRAFT,我们执行四阶段特征融合:来自特征编码器、上下文编码器、相关性查找操作和运动编码器的特征进行融合以传递互补信息。每个融合连接都发挥其独特的作用并有助于最终性能。

损失函数:与CamLiPWC类似,我们为每个分支提供监督并设计多任务损失。形式上,令ogt和sgt分别为地面真实光流和场景流,oi和si为第i次迭代时预测的光流和场景流。

6. 参考链接

https://mp.weixin.qq.com/s/p90nPibt83NSmJXMuFQ61g