经典文献阅读之--Bidirectional Camera-LiDAR Fusion(Camera-LiDAR双向融合新范式)
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)的联合估计。文中存在四个主要贡献点:
- 我们提出了一种双向和多阶段的相机LiDAR融合流程用于光流和场景流估计。我们的流程是通用的,并且可以应用于各种网络架构。
- 我们实例化了两种双向融合流程类型,一种基于金字塔粗到细架构(称为CamLiPWC),另一种基于递归全对场变换(称为CamLiRAFT)。
- 我们设计了一个可学习的融合运算符(Bi-CLFM),通过可学习的插值和双线性采样以双向方式对图像和点特征进行对齐和融合。还引入了梯度分离策略,以防止一种模态主导训练。
- 在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 2 D ∈ R H × W × C 2 D F_{2D}∈\mathbb{R}^{H×W×C_{2D}} F2D∈RH×W×C2D、点特征 G 3 D = { g i ∣ i = 1 , . . . , N } ∈ R N × C 3 D G_{3D}=\{g_i|i=1,...,N\}∈\mathbb{R}^{N×C_{3D}} G3D={gi∣i=1,...,N}∈RN×C3D和点位置 P = { p i ∣ i = 1 , . . . , N } ∈ R N × 3 P=\{p_i|i=1,...,N\}∈\mathbb{R}^{N×3} P={pi∣i=1,...,N}∈RN×3作为输入,其中 N N 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,具有权重共享的迭代式残差细化可以减少参数数量并增加准确性。