【论文简述】Occlusion Guided Scene Flow Estimation on 3D Point Clouds(CVPR 2021)

一、论文简述

1. 第一作者:Bojun Ouyang

2. 发表年份:2021

3. 发表期刊:CVPR

4. 关键词:场景流、3D点云、遮挡、卷积

5. 探索动机:对遮挡区域的不正确处理会降低光流估计的性能。这适用于图像中的光流任务,当然也适用于场景流。

  1. When calculating flow in between objects, we encounter in many cases the challenge of occlusions, where some regions in one frame do not exist in the other. Due to the displacement between the sensor and the object, the sensor does not see the entire object in all time steps.
  2. Classical methods usually regularize incoherent motion to propagate flow from non occluded pixels to the occluded region. That is also true in the deep learning era where occlusions were learned in addition to flow estimation. Those attempts worked well on regular grids but traditionally failed on a sparse set of points due to numerical challenges.

6. 工作目标:解决遮挡问题。

In this work, we focus on that exact task and show for the first time that if we couple the task for flow and occlusion tight enough in a guided approach we can gain in both worlds; getting a more accurate flow and understanding what is occluded.

7. 核心思想:该网络是第一个在点云上测量三维场景流估计中的遮挡。

1. 提出了一个名为OGSF-Net的深度学习模型,它可以从点云中联合估计场景流和遮挡图。

2. 在代价体层中使用了遮挡处理机制。

3. 提出了一种新的多尺度结构来取代传统的多尺度流方案。

8. 实验结果:

We show state-of-the-art performance on Flyingthings3D and KITTI Scene Flow 2015

9.论文下载:

https://openaccess.thecvf.com/content/CVPR2021W/WAD/papers/Ouyang_Occlusion_Guided_Scene_Flow_Estimation_on_3D_Point_Clouds_CVPRW_2021_paper.pdf

二、实现过程

1. 问题定义

给定两个三维场景的采样,我们希望估计源和目标之间的空间运动,并确定源中不出现在目标中的点。我们将两个采样场景,源S和目标T表示为点云。即S = pi有n1点,T = qj 有n2个点。每个点也可以有一个特征向量,如颜色或局部表面的法向量。用ci来表示点pi的特征,gj表示点qj的特征。

假设S代表源域的一个采样,希望找到S中每个点在空间中的流动,我们用fi表示点p的流向量i。注意,本文不学习源点和目标点之间的对应关系,而是学习源上每个点的流表示。由于潜在的遮挡,源中的一些点可能不会出现在目标帧中。注意到p点的遮挡i在源代码中使用二进制标量 ∈{0,1},其中0表示被遮挡,1表示非遮挡。对于源中的每一点目标是得到场景流和遮挡标签。

2. OGSF-Net结构

受Pointpwc-ne架构的启发,该网络采用特征金字塔结构,并使用来自两个不同时间框架的点云作为输入,其中每个点可以拥有丰富的特征向量,如颜色或表面法向量。在本文的例子中,使用RGB颜色作为我们的输入点特征,并使用PointConv+FPS在每个级别下采样点云。网络结构见图2。在每个金字塔层级,我们首先通过使用前一级的上采样流将应用目标点云T来向后warp至S源。然后,利用点云的特征和前一层的上采样的遮挡掩码,为s中的每个点构造代价体。代价体是立体匹配中一个广泛使用的概念。它存储每个点的匹配代价,并测量不同帧之间的相关性。最后,利用代价体、来自S的特征、上采样流和掩码预测更精细的光流和掩码。在Feature传播层中使用PointConv和MLP,为Flow/Occlusion分支创建共享的输入特征。

金字塔结构。为了提取语义强的特征来准确预测流和遮挡掩码,构建了一个4层的特征金字塔,输入在顶层(0)。对于每个金字塔级别l,使用最远点采样(FPS)对较粗级别(l+1)的点云进行下采样。在PointConv操作之后,为每个下采样点创建并增加特征的数量。每一层的流和掩码的较精细预测是通过使用其较粗层(底层除外)的上采样预测来实现的。

Warp。在每一个金字塔层级,首先使用前一个较粗级的上采样的场景流对目标点进行向后warp至源点。使用与Pointpwc-net相同的上采样层。由于warp层使目标“更接近”源点,因此在代价体构建过程中,对目标在源点周围的邻域搜索会更精确。表示来自较粗层的上采样流为{fiup}。在warp
层内部,首先做一个从源到目标的前向warp:

对于在目标T中的每个点qj ,我们反向计算流,采用上采样流的加权平均计算:

其中NSw(qj)是对于Sw的qj的K近邻(K-NN) ,权重w(pi, qj)=1/d(pi,qj)只是pi与qj之间的欧氏距离的倒数 。最后,warp的目标点是将反向流和其本身的元素相加:

代价体与遮挡机制。传统上,遮挡在二维立体帧的场景流估计中起着至关重要的作用。当谈到三维点云时,由于物体的运动和相机的位置,遮挡问题仍然存在。由于遮挡点的匹配代价是不可用的,因此遮挡对开销的影响是主要的。与图像相似,源点云相对于目标点云的遮挡可以被建模为一个地图:OCCS−T : S→[0,1],其中0为被遮挡点,1为未遮挡点。FlowNet3D使用流嵌入层来聚合源周围目标中每个领域的特征和空间关系。由于他们的模型只找到一定半径范围内的相邻点,因此被遮挡点与目标之间的相对位移通常较大,因此对遮挡有一定的鲁棒性。PointPWC- Net提出了一种新颖的代价体,可以以一种patch-to-patch的方式聚合两个输入点云的特征。然而,对于源中的遮挡区域,这种特征聚合操作可能是不正确的,因为它们在目标帧中没有对应关系。受PWOC-3D的启发,我们提出了一种新颖的遮挡机制,有助于构建我们的代价体。

代价体的关键组成部分之一是匹配代价。它衡量的是源点和目标点两者之间的相似性。由于我们认为点之间的相关与它们的特征和相对位移高度相关,对于无遮挡点pi, pi与qj之间的匹配代价由:

其中h(·)仅仅是它的输入的一个连接,然后是1×1卷积层,ci还有gj是pi∈S和qj∈Tw的对应特征。对于遮挡点pi ,期望得到的匹配代价为0,因为它们在目标帧中没有对应关系。如下图所示,利用对遮挡图的定义,可以计算出pi与qj的匹配代价如:

在该例子中,使用上采样的预测遮挡掩码作为公式中的遮挡图。

代价体层。对于源中的每个点,首先在目标中找到它的k-NN点。然后,将相对位移(qj−pi)和邻居的特征(gj)分组。在计算出匹配代价后,使用遮挡掩码和Max-pooling来构造代价体。

在计算出匹配代价后,可以将它们聚合形成代价体。理论上,可以使用所有可能的(piqj),但这在计算方面是低效的。借助warp层,可以假设源与目标之间正确的对应点对相对接近。因此,只对源中的每个点聚合最近的目标邻居的匹配代价。可以总结为以下形式:

其中NTw(pi)为在warp的目标Tw源点pi的最近邻域 。

在Pointpwc-net的代价体层,他们使用基于相对距离的可学习的加权和作为聚合函数来计算他们的Point-to-Patch代价。这意味着(pi,qj)之间的匹配代价在CV (pi)中所占的比例仅取决于它们之间的相对位移( qj-pi)。然而,在许多情况下,点之间的相关性取决于它们的特征而不是它们的相对位移,使用这种聚合设计,正确的对应对可以对代价体有较小的贡献。在我们的工作中,我们决定使用maxpooling来聚合匹配代价。直觉是,为了对流和掩码做出准确的预测,模型需要正确对应对的匹配代价在代价体中具有最高的贡献。使用最大池化可以迫使他们的匹配代价在训练期间在邻域NT w(pi)中具有最高值。这种设计选择也符合我们上文对匹配代价的定义。综上所述,我们通过下面的公式计算每个点pi的代价体:

预测层。为了对每个金字塔层级的流和遮挡掩码进行最终预测,使用了一个预测层。如图4所示,该层包含一个特征传播模块和两个预测分支。在特征传播模块中,首先将其所有输入沿着特征维度进行拼接。然后利用多个Point Conv和多层感知器( MLP )生成最终的特征用于流和掩码预测。特征传播模块的输入为源的特征、上文描述的掩码代价体、上采样流和上采样遮挡掩码。在特征传播层之后,并行地连接一个流预测器和遮挡预测器。由于认为场景流和遮挡是高度相关的,我们决定对两个分支使用共享的输入特征。流预测器由单个MLP层组成,使得输出张量的维数为( n1 , 3)。与PointPWC - Net不同的是,流预测器只预测一个残差流向量,使得最终的场景流是上一层的上采样流和源中每个点的残差流的逐元素相加。通过使用这种残差流设计,以迭代的方式解决场景流估计问题,得到了连续金字塔层级之间更强的相关性。从多尺度流估计转移到多尺度残差显著改善了结果,在消融研究中展示了这一点。

图4:预测层。Predictor层接受多个输入并在当前级别生成场景流和遮挡掩码。这些输出将被上采样并作为下一个金字塔层级的输入之一。

对于遮挡分支,我们使用了一个中间带有泄漏ReLU激活的2层MLP来处理输入特征。最后我们还连接了一个sigmoid激活层。这保证了输出是取值在[0,1]范围内的概率分布。

3. 损失函数

使用真实场景流和遮挡掩码以监督的方式训练模型。由于现有的具有真实扫描的场景流数据集过小,不利于训练,因此采用了与前期工作类似的训练方案。首先使用FlyingThings3D的合成数据训练模型,然后使用KITTI的真实LiDAR数据对模型进行测试。在实验部分证明了OGSF - Net对KITTI中未见数据的泛化能力最好。为了同时预测场景流和遮挡图,使用两个损失项来训练模型。

场景流损失。令f′i为真实流,fi为点pi∈S的预测流,令occ′i为pi的真实遮挡标签,其值在{ 0,1 }。对流使用如下的多级损失:

式中:Θ为OGSF - Net的可学习参数,Sl为金字塔层级l的采样点云,αl为每一层的权重。内积求和中的第一项惩罚了非遮挡区域估计流误差的L2范数。由于还想预测被遮挡区域的流,所以加入了第二项,它惩罚了每个Sl中所有点的误差,并通过实验提高了性能。

遮挡损失。在每个金字塔层级,使用预测的遮挡图来构建掩码代价体。这意味着准确的掩码预测对于每一级的流估计也很重要。令occ′i为真实遮挡标签,occi为点pi∈S的预测标签。使用类似的遮挡损失作为流损失:

使用的整体损失函数简单地是来自每个金字塔层级的流和遮挡损失的组合:

使用λ作为权重来控制流损失和遮挡损失之间的平衡。

猜你喜欢

转载自blog.csdn.net/qq_43307074/article/details/129618131