[论文翻译]PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clouds(CVPR 2021)

论文翻译

PV-RAFT: Point-Voxel Correlation Fields for Scene Flow Estimation of Point Clouds

摘要:

在本文中,我们提出了一种点-体素递归全对场变换( PV-RAFT )方法来从点云中估计场景流。由于点云具有不规则性和无序性,在三维空间中高效地从所有点对字段中提取特征具有挑战性,其中所有点对相关性在场景流估计中具有重要作用。为了解决这个问题,我们提出了点体相关场,它同时捕获了点对的局部依赖和长程依赖。为了捕获基于点的相关性,我们采用保留局部区域细粒度信息的K近邻搜索。通过对点云进行多尺度体素化,我们构建了金字塔相关体素来建模长距离的对应关系。综合这两类相关性,我们的PV - RAFT利用所有点对关系来处理小位移和大位移。我们在FlyingThings3D和KITTI Scene Flow 2015数据集上对提出的方法进行了评估。实验结果表明,PV - RAFT方法的性能明显优于现有方法。

图1:点体素相关场的示意图。对于源点云中的一个点,我们在目标点云中找到它的k近邻来提取基于点的相关性。此外,我们通过构建以该源点为中心的体素来建模长程相互作用。结合这两种类型的相关性,我们的PV-RAFT捕获所有点对依赖来处理大位移和小位移。

1、引言

三维场景理解[ 7、16、32、34、45、51]由于其广泛的实际应用,近年来受到越来越多的关注。场景流估计[ 6、10、18、23、26、50]作为一种基本的三维计算机视觉任务,侧重于计算连续两帧之间的三维运动场,提供了重要的动态信息。通常情况下,场景流由RGB图像[ 20、21、41、43]直接估计得到。由于三维数据变得更容易获取,最近许多工作[ 6、18、26、50]开始关注点云的场景流估计。

得益于深度学习的最新进展,许多方法采用深度神经网络进行场景流估计[ 6、18、26、39、50]。其中,[ 18、50]借鉴[ 5、11、35]的思路,利用成熟光流领域的技术。FlowNet3D设计了一个流嵌入模块来计算两帧之间的相关性。在PWC - Net [ 35 ]的基础上,PointPWC-Net [ 50 ]引入了一种无需4D稠密张量即可学习的基于点的代价体。这些方法遵循由粗到精的策略,首先在低分辨率下计算场景流,然后上采样到高分辨率。然而,这种策略有几个局限性[ 37 ],例如早期步骤的错误积累和错过快速移动物体的倾向。一种可能的解决方案是采用递归全对场变换( Recurrent All-Pairs Field Transforms,RAFT ) [ 37 ],一种最先进的二维光流方法,为所有像素对建立相关体积。与由粗到精的策略相比,所有点对场既保留了局部相关性,又保留了长程相关性。尽管如此,将其上升到3D空间是困难的。这是由于点云的不规则性构建结构化所有点对相关场变得具有挑战性。此外,由于点云是无序的,很难有效地查找三维位置的邻近点。遗憾的是,以往方法[ 6、18、50]使用的关联体积只考虑了近邻关系,无法捕捉所有点对关系。

为了解决这些问题,我们提出了点体相关场,它综合了基于点和基于体素的相关性(如图1所示)的优点。正如[ 19、32、36]中提到的,基于点的特征保持了细粒度的信息而基于体素的操作有效地编码了大的点集。受此启发,我们采用K近邻( K-Nearest Neighbor,KNN )搜索为基于点的相关场寻找固定数量的近邻点。同时,我们以多尺度的方式对目标点云进行体素化以构建金字塔相关体素。这些基于体素的相关场收集长期依赖关系并指导预测方向。此外,为了节省内存,我们提出了一个截断机制来舍弃低分数的相关性。

基于点-体素相关场,我们提出了一种点-体素循环全对场变换( Point-Vxel Recurrent All-Pairs Field Transforms,PVRAFT )方法来构建用于点云场景流估计的新网络架构。我们的方法首先使用特征编码器提取每个点的特征,然后利用这些特征构建所有点对相关字段。然后我们采用基于GRU的算子以迭代的方式更新场景流,其中我们利用基于点和基于体素的机制来查找相关特征。最后,引入细化模块对估计的场景流进行平滑处理。为了评估我们的方法,我们在FlyingThings3D [ 20 ]和KITTI [ 21、22]数据集上进行了广泛的实验。结果表明,我们的PVRAFT在很大程度上优于现有的方法。

2、相关工作

3D深度学习:3D深度学习[ 7 , 12 , 16 , 27-29 , 31-33 , 45 , 49 , 51]因其广泛的应用而备受关注。作为一项开创性工作,PointNet[ 28 ]是第一个直接在点云上运行的深度学习框架。它使用一个最大池化层来聚合无序集合的特征。PointNet+ + [ 29 ]以点网络为单元模块,引入分层结构。Kd - network [ 14 ]提供了一个kd - tree来划分点云并计算一系列的层次表示。DGCNN [ 46 ]将点云建模为图,利用图神经网络提取特征。得益于这些架构,在三维识别[ 15、17、28、29]、三维分割[ 7、12、45]等多个领域取得了巨大的成就。最近,一些工作[ 19、32、36]同时利用基于点和基于体素的方法对点云进行操作。Liu等[ 19 ]提出了点体素CNN ( PVCNN )用于高效的3D深度学习。它结合了基于体素的CNN和基于点的MLP来提取特征。作为后续,Tang等[ 36 ]设计了SPVConv [ 36 ],采用稀疏卷积与高分辨率点基网络。他们进一步提出3D - NAS来寻找最佳架构。PV-RCNN [ 32 ]利用了来自3D体素CNN的高质量3D建议和来自基于点网络的集合抽象操作的精确位置信息。我们没有配备点-体素架构来提取特征,而是设计了点-体素相关场来捕获相关性

光流估计:光流估计[ 5、9、11、30、38]是2D领域的研究热点。FlowNet [ 5 ]是第一个用于光流估计的可训练CNN,采用U - Net自编码器架构。Flow Net2 [ 11 ]在文献[ 5 ]的基础上,将多个Flow Net模型进行堆叠来计算大位移光流。通过这种级联结构,FlowNet2 [ 11 ]比FlowNet [ 5 ]的性能有了很大的提高。为了处理大运动,SPyNet [ 30 ]采用空间金字塔由粗到精的策略。在SPy Net [ 30 ]之外,PWC-Net [ 35 ]通过限制每个金字塔层级的搜索范围来构建代价体。与PWC - Net类似,LiteFlowNet [ 9 ]也利用了在特征金字塔上操作的多个相关层。最近,GLU-Net [ 38 ]将全局和局部相关层与自适应分辨率策略相结合,实现了高精度和鲁棒性。不同于由粗到精的策略,RAFT [ 37 ]对所有像素对构建多尺度4D相关体。它进一步通过循环单元迭代更新流场,并在光流估计任务上取得了先进的性能。PV - RAFT的基本结构与他们的类似。然而,我们调整框架以适应点云数据格式,并提出点体素相关字段来利用所有点对关系。

场景流估计:场景流最早在文献[ 41 ]中提出,是描述真实场景中运动的三维向量。除此之外,许多研究从RGB图像[ 1 , 2 , 8 , 25 , 42-44 , 47 , 48]估计场景流。基于立体序列[ 8 ],提出了一种估计场景流的变分方法。类似于[ 8 ],[ 48 ]将立体图像中位移一致的位置和速度估计步骤解耦。文献[ 44 ]将动态场景表示为刚性移动平面的集合,并相应地引入了分段刚性场景模型。随着三维传感器的发展,获取高质量的三维数据变得越来越容易。越来越多的工作集中在如何利用点云进行场景流估计[ 4、6、18、26、39、40、50]。Flow Net3D [ 18 ]引入两层同时学习点云和流嵌入的深层层次特征。受双边卷积层的启发,HPLFlowNet [ 6 ]将非结构化点云投影到一个半面体网格上。该方法通过对格点进行操作,可以高效地计算场景流。受益于由粗到精的策略,PointPWC-Net [ 50 ]提出了代价体、上采样和变形层用于场景流估计。与上述方法不同,FLOT [ 26 ]采用最优传输来寻找对应关系。然而,这些方法中引入的相关层仅考虑局部区域中的邻居,无法有效捕获长期依赖关系。利用点体素相关场,我们的PVRAFT同时捕获了局部和长程相关性。

3、方法

为了构建所有点对字段,设计一个能够同时捕获短程和长程关系的相关体非常重要。在本节中,我们首先说明如何在点云上构建点体素相关场。然后我们将介绍我们的点-体素递归全对场变换( PV-RAFT )的流程。

3.1 点-体素相关场

我们首先基于所有对之间的特征相似性构建全相关体。给定点云特征E θ ( P1 )∈RN1 × D,Eθ ( P2 )∈RN2 × D,其中D为特征维数,则相关场C∈RN1 × N2可以很容易地通过矩阵点积计算得到:

相关性查找:相关卷C只建立一次,并保存为查找表,用于不同步骤的流估计。给定一个源点p1 = ( x1 , y1 , z1)∈P1,一个目标点p2 = ( x2 , y2 , z2)∈P2和一个估计的场景流f = ( f1 , f2 , f3)∈f,期望源点移动到q = ( x1 + f1 , x2 + f2 , x3 + f3)∈Q,其中Q为平移后的点云。通过在P2中搜索Q的邻域,并在C中查找对应的相关值,可以很容易地得到Q和P2之间的相关场。这样的查找过程避免了对Q进行特征提取和重复计算矩阵点积,同时保留了所有点对相关。由于三维点数据不是在稠密体素中结构化的,网格采样不再有用,我们无法直接将二维方法[ 37 ]转换为三维版本。因此,面临的主要挑战是如何在三维空间中高效地定位邻居和查找相关值。

截断相关:根据我们的实验结果,并不是所有的关联项在后续的关联查找过程中都是有用的。相似度较高的配对往往会引导流量估计的正确方向,而不相似的配对往往贡献不大。为了节省内存和提高相关查找的计算效率,对于P1中的每个点,我们选择其top - M个最高相关。具体来说,我们将得到截断相关场CM∈RN1 × M,其中M < N2是预先定义的截断数。点分支和体素分支建立在截断相关场的基础上。

点分支:在三维点云中定位近邻点的一种常见做法是使用K近邻( KNN )算法。设Q在P2中的前k个最近邻为Nk = N ( Q ) k,其对应的关联值为CM ( Nk ),则Q与P2的关联特征可定义为

其中,concat表示级联,max表示k维上的最大池化操作。我们在下面的陈述中简要地记N ( Q )为N,因为本文中所有的邻居都是基于Q。点分支提取估计流的细粒度相关性特征,因为最近邻点往往靠近查询点,如图1的上分支所示。虽然点分支能够捕获局部相关性,但在KNN场景中,长程关系往往不被考虑。现有方法试图通过实施由粗到精的策略来解决这一问题,但如果在粗阶段的估计不准确,误差往往会累积。

体素分支:为了解决上述问题,我们提出了一个体素分支来捕获长程相关性特征。我们不直接对Q进行体素化,而是构建以Q为中心的体素近邻立方体,并检查P2中哪些点位于这些立方体中。此外,我们还需要知道每个点与Q的相对方向。因此,如果我们用r表示子立方体的边长,用a表示立方体的分辨率,那么Q的邻接立方体就是一个a × a × a的Rubik立方体:

其中i = [ i , j , k]T,⌈-a2⌉≤i,j,k≤⌈a2⌉∈Z且每个r × r × r子立方体N ( i ) r表示邻居点(例如, [ 0,0,0 ] T表示中心子立方体)的特定方向。然后识别子立方体N ( i ) r中的所有近邻点,并对它们的相关值取平均,得到子立方体特征。Q与P2的相关性特征可以定义为:

其中ni是P2中位于Q的第i个子立方体上的点的个数,且Cv( Q , P2)∈RN1 × a3 .请参见图1的下方分支进行说明。

Voxel分支有助于捕捉远距离相关特征,因为r,a可以足够大以覆盖远距离点。此外,我们提出以固定的立方体分辨率a和成比例增长的子立方体边长r来提取金字塔相关体素。在每次金字塔迭代过程中,将r扩大一倍,使得邻域立方体扩大到包含更远的点。在馈入MLP层之前,将金字塔特征串联在一起。

图2:提出的PV - RAFT架构示意图。特征提取器同时编码P1和P2的高维特征,而上下文提取器只编码P1的上下文特征。我们计算两个特征图的矩阵点积来构建所有点对相关场。然后在迭代更新块中使用截断相关场以节省内存。"迭代更新"模块的详细结构如图3所示。来自迭代块的预测流最终收敛到静态状态,并输入到单独训练的精化模块。我们使用细化后的流作为最终的场景流预测。

3.2 PV-RAFT

鉴于提出的结合细粒度和长范围特征的相关场,我们构建了一个用于场景流估计的深度神经网络。该流程包括4个阶段:( 1 )特征提取;( 2 )相关场构建;( 3 )迭代场景流估计;( 4 )流精化。前三个阶段以端到端的方式可微,而第四个阶段与前面的部分冻结分开训练。我们的框架被称为PV - RAFT,在这一部分我们将详细介绍它。详见图2。

特征提取:特征提取器E θ将只包含坐标信息的点云编码到更高维的特征空间,即E θ:Rn × 3 7→Rn × D。对于连续的点云输入P1,P2,特征提取器输出E θ ( P1 ),Eθ ( P2 )作为主干特征。此外,我们设计了一个内容特征提取器E γ来编码P1的上下文特征。其结构与特征提取器E θ完全相同,无需权重共享。输出上下文特征E γ ( P1 )作为GRU迭代中的辅助上下文信息。

相关字段构建:如3.1节所述,我们基于主干特征E θ ( P1 ),Eθ ( P2 )构建所有点对相关字段C。然后我们根据相关值排序对其进行截断,并将其保留为查找表,用于后期的迭代更新。

迭代流估计:迭代流量估计从初始化状态f0 = 0开始。随着每次迭代,场景流估计根据当前状态更新:ft + 1 = ft +∆f。最终,序列收敛到最终预测fT→f * .每次迭代以以下变量作为输入:( 1 )相关性特征,( 2 )当前流估计,( 3 )上一次迭代的隐藏状态,( 4 )上下文特征。首先,相关性特征是基于细粒度点特征和基于长范围金字塔体素特征的组合

其次,当前流量估计只是Qt和P1之间的方向向量:

第三,通过GRU单元计算隐藏状态ht [ 37 ]:

其中xt是相关性Ct、当前流ft和上下文特征E γ ( P1 )的级联。最后,将隐藏状态ht输入到一个小型卷积网络中,得到最终的场景流估计f *。详细的迭代更新过程如图3所示。

图3:迭代更新示意图。该图是对图2中"迭代更新"模块的详细说明。在迭代t时,我们在P2中找到Qt - 1的体素近邻和KNN。这有助于我们从截断的相关场中提取长范围体素相关特征和细粒度点相关特征。联合相关特征、上下文特征和当前流估计值ft - 1被送入卷积运动头。输出作为门控循环单元( GRU )的xt。最后,流头对GRU的隐藏状态ht进行编码,预测流量估计的残差,用于更新ft和Qt。

流细化:设计这个流细化模块的目的是使场景流预测f *在三维空间中更加平滑。具体地,将前一阶段估计的场景流输入到3个卷积层和1个全连接层。为了在不占用内存的情况下更新流进行更多的迭代,求精模块不与其他模块进行端到端的训练。我们首先训练主干和迭代更新模块,然后冻结权重并单独训练求精模块

3.3 损失函数

流监督:我们遵循监督场景流学习的通常做法来设计我们的损失函数。具体来说,我们在每次迭代中使用真实流fgt和估计流fest之间的l1范数:

其中T是迭代更新的总量,f ( t ) est是t次迭代时的流量估计值,w ( t )是t次迭代的权重:

其中γ是一个超参数,我们在实验中取γ = 0.8。

细化监督:当我们冻结前几个阶段的权重,只训练求精模块时,我们设计了类似的求精损失:

式中:fref为求精模块的流量预测。

4、实验

在这一部分,我们进行了大量的实验来验证PV - RAFT的优越性。我们首先介绍了实验设置,包括数据集、实现细节和评估指标。然后我们展示了在FlyingThings3D [ 20 ]和KITTI [ 21、22]数据集上的主要结果,以及消融研究。最后,我们给出了PV - RAFT的进一步分析,以更好地说明我们提出的方法的有效性。

4.1 实验设置

数据集:与[ 6、18、26、50]相同,我们在FlyingThings3D [ 20 ]数据集上训练模型,并在FlyingThings3D [ 20 ]和KITTI [ 21、22]数据集上进行评估。我们遵循[ 6 ]对数据进行预处理。FlyingThings3D作为一个大规模的合成数据集,是场景流估计的第一个基准。FlyingThings3D以ShapeNet [ 3 ]为对象,由渲染的立体图像和RGB - D图像组成。训练集中共有19,640对样本,测试集中共有3,824对样本。此外,我们从训练集中保留了2000个样本进行验证。我们将深度图像提升为点云,光流提升为场景流,而不是对RGB图像进行操作。作为另一个基准,KITTI Scene Flow 2015是一个在真实扫描[ 21、22]中进行场景流估计的数据集。它是由KITTI原始数据通过标注动态运动而建立的。根据之前的工作[ 6、18、26、50],我们在训练集中的142个样本上进行评估,因为在测试集中没有点云。地面点按高度( 0.3m )剔除。进一步,我们删除了深度大于35m的点。

实施细节:在每个点云中随机采样8192个点来训练PV - RAFT。对于点分支,我们搜索了32个最近邻。对于体素分支,设定立方体分辨率a = 3,建立r = 0.25,0.5,1的三级金字塔。为了节省内存,截断数M取为512。我们在训练时更新场景流8次迭代,并用32次流更新对模型进行评估。骨干和迭代模块共训练了20个历元。然后,我们用32次迭代固定它们的权重,并为另外10个历元训练求精模块。PV - RAFT在Py Torch [ 24 ]中实现。我们使用初始学习率为0.001的Adam优化器[ 13 ]。

评价指标:我们采用了[ 6、18、26、50]中使用的四个评价指标,包括EPE、Acc严格、Acc松弛和离群值。我们将估计场景流和真实场景流分别表示为fest和fgt。评价指标定义如下:

4.2 主要结果

在FlyingThings3D和KITTI数据集上的定量结果如表1所示。我们的PV - RAFT在两个数据集上都取得了最先进的性能,验证了其优越性和泛化能力。特别地,对于离群值,我们的方法在两个数据集上比FLOT分别高出18.1 %和10.6 %。图4中的定性结果进一步证明了PVRAFT的有效性。第一行和第二行分别在FlyingThings3D和KITTI数据集上进行可视化。可以看出,得益于点体相关场,我们的方法可以准确地预测小位移和大位移。

表1:FlyingThings3D和KITTI数据集上的性能比较。所有方法均在FlyingThings3D上以有监督的方式进行训练。每个数据集的最佳结果用粗体标出。

4.3 消融实验

我们通过实验证实了我们方法中各个模块的有效性。基于点的相关性、基于体素的相关性和精化模块被增量应用到我们的框架中。从表2中可以看出,各个模块在整个方法中占有重要地位。作为两条基线,仅基于点的相关或仅基于体素的相关的方法由于不能捕获所有的成对关系而无法实现高性能。一个直观的解决方法是在点分支中使用更多的最近邻来增加感受野或者在体素分支中减少边长r来获取细粒度的相关性。然而,我们发现这种简单的方法会导致较差的结果(详见补充材料)。

为了更好地说明两类相关性的影响,我们在图5中进行了可视化展示。在更新步骤开始时,当预测流初始化为零时,估计的平移点与目标点云(第1列)中的真实点对应点相差较远。在这种情况下,与近邻的相似度得分较小,基于点的相关性提供了无效信息。相比之下,由于基于体素的相关性具有较大的感受野,因此能够发现长距离的对应关系并指导预测方向。随着更新迭代的增加,我们会得到越来越精确的场景流。当平移后的点接近真值对应时,高得分的相关性将集中在体素的中心格点(第三列),而这并不提供详细的相关性。然而,由于KNN完美地编码了局部信息,我们将从点分支中获得信息相关性。

图4:FlyingThings3D (上)和KITTI (下)的定性结果。蓝色点和红色点分别表示P1和P2。平移点P1 + f是绿色的。我们的PV - RAFT可以同时处理小位移和大位移两种情况。

表2:Flyingthings3D数据集上Pv -筏的消融研究。我们将基于点的相关、基于体素的相关和细化模块增量应用到框架中。

表3:截断操作的影响。M为截断数。

表4:与其他相关体积方法的比较。MLP + Maxpool '和'基于图像块分割'分别为Flow Net3D [ 18 ]和Point PWC-Net [ 50 ]中使用的相关体积。

4.4 进一步分析

截断操作的影响:我们引入截断操作,在保持性能的同时减少运行内存。为了证明这一观点,我们进行了不同截断数M的实验,如表3所示。一方面,当M过小时,由于缺少相关信息,准确率会下降。另一方面,为了达到与M = 512相当的性能,采用M = 1024的模型需要大约14G的运行内存,这在很多GPU服务( e.g. RTX 2080Ti)上是不可用的。这一结果表明top 512相关足以准确地估计场景流,且效率较高。

与其他相关体素相关场的比较:为了进一步证明本文提出的点体素相关场的优越性,我们与FlowNet3D [ 18 ]和PointPWC - Net [ 50 ]中介绍的相关体素相关场方法进行了比较。为了公平比较,我们在我们的框架中应用它们的相关体来替代点体素相关场。评价结果见表4。利用所有点对关系,我们的点体素相关模块优于其他相关体积方法。

图5:点体素相关场的可视化。在第一行中,绿色点表示平移后的点云P1 + f,红色点表示目标点云P2。粉色立方体是平移后的点云中的一个点,其在P2中的对应关系为黄色立方体。体素分支的相关场在第二行( r = 1)和第三行( r = 0.25)中进行说明。如果目标点(黄色立方体)位于一个格子中,则该格子的边界将被染成黑色。最后一行显示了点分支的相关场。最后三行的颜色表示归一化的相关性分数,其中红色最高,紫色最低(彩图见图1)。在迭代更新(第一列)的初期,预测的流量不准确,使得平移后的点距离目标点较远。由于体素分支具有较大的感受野,可以在点分支失效的情况下覆盖目标点。从第一列和第二行可以看出,包含目标点的子立方体具有最高的相关性得分。这表明体素分支在迭代初期为流量预测提供了有效的指导。随着迭代的进行,平移后的点逐渐靠近目标点(第三列)。体素分支只提供目标点(在中心子立方体处)的粗略位置,而点分支通过计算局部区域内所有近邻点的相关性得分,可以准确定位目标点。选择其中得分最高的子立方体进行可视化。

5、结论

本文提出了一种用于点云场景流估计的PV - RAFT方法。通过点体素相关场,我们的方法整合了两种类型的相关,捕获了所有点对关系。利用截断操作和求精模块,我们的框架变得更加精确。在FlyingThings3D和KITTI数据集上的实验结果验证了PV - RAFT的优越性和泛化能力。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值