PointWeb: Enhancing Local Neighborhood Features for Point Cloud Processing

Abstract

19年IEEE

这篇文章提出了PointWeb,一种在点云的局部邻域上下文中提取特征的新方法,与之前工作不同是,我们在局部邻域中稠密的将每个点和其他点连接起来。目的是基于局部区域的特征来指定每个点的特征,以更好地表示该区域。提出了一种新的特征调整模块,即AFA(Adaptive Feature Adjustment)模块,用于发现点之间的相互作用。

待补充

PointNet直接使用MLP去处理原始点信息,紧随其后的PointNet++引入了分层结构和局部特征信息进一步提高性能,其与将像素的特征与其局部邻域集成在一起的2D卷积不同,PointNet++中局部区域的特征聚合是通过最大池实现的。如下图a,对于DGCNN,它通过将中心点的特征与其通过knn计算的临近点之间的特征差作为另外的输入维度连接起来,然后进行MLPmax-pooling来聚合每个局部区域中的信息。这里仅仅考虑了中心点的对关系,因为区域信息的聚合操作也是通过简单的max-pooling实现的,所以区域信息的整合依然是有限的。PointCNN通过将\(\mathcal{X}-Conv\)对特征进行排序,在隐空间对特征进行重排,消除输入顺序的影响。
image

和上面的方法不同的是,我们通过连接和探索该区域的点的上下文信息去exhaust局部区域的信息。为此,我们提出了一种新颖的模块。即自适应特征调整,将 局部区域中的所有点对互联,最终形成一个局部完全链接的网络。然后,我们从上图C所示的点对差异中学习点特征的调整。该策略丰富了局部区域的点特征,形成聚集特征,更好地描述局部区域进行三维识别。


image

我们的网络从点对差异中学习影响指标,以确定特征调整,从而允许进行适当的调整以获得更好地通用性。图2使特征调整的过程。以此,我们提出了PointWeb框架和我们的AFA模块,针对3D场景识别。

本文主要贡献有:

  1. 我们通过自适应特征调整(AFA)实现每个成对3D点之间的信息互换。该模块大大提高了逐点特征学习的能力。
  2. 我们提出了带有关键模块AFA的PointWeb框架。他在各种点云数据集上实现了最佳性能,从而证明了其有效性和通用性。

虽然OctNet探索了体素数据的稀疏性并缓解了这个问题。然而,当涉及到更深层次的神经网络的时候,内存占用率依然很高。并且如果想保留更高质量数据的话,就需要更高的分辨率网格和大量的内存消耗,以保持一定的质量。


Our Method

本文的重点是探讨局部区域中点的关系。在使用神经网络提取点特征后,进一步聚合这些局部特征有助于提高语义分割和分类任务的点云质量。


给定3D点云,PointNet++使用最远点采样选择点作为中心,然后应用Knn查找每个中心点周围的相邻点,这很好的定义了点云中的局部面片。对于用R表示的有M个点的local patch。我们用\(\mathbb{F}\)表示\(R\)中的点特征集,使得\(\mathbb{F}=\{F_1,F_2,\dots,F_M\}\),其中\(F_i\in\mathbb{R}^C\)\(C\)表示每个点有\(C\)个通道数。
此处最终的目的是获取区域\(R\)的代表性特征\(F_{out}\in\mathbb{R}^{C_{out}}\),这里的\(C_{out}\)指的是输出特征的通道数,PointNet++使用MLPmax-pooling获得具有代表性的特征。然而,该程序不涉及本地邻域中各点之间的区域信息交换。

PointNet++的缺点是,没有利用到local patch中各点之间区域信息的交换。


在我们的方法中,我们将\(R\)中的点密集连接为一个局部点网,并设计了一个Adaptive Feature Adjustment(AFA)模块,以学习每个点对其他点的影响,从而调整其特征。通过该种方案,我们将邻域上下文信息引入到点特征中,增强了特征对局部邻域的描述能力。上图2给出了关于AFA模块的概述,我们称整体网络为PointWeb,因为我们的方法能够通过局部密集连接点的网络有效的提取局部邻域上下文信息。


AFA 模块

给定一个区域\(R\)和他的特征集合\(\mathbb{F}=\{F_1,F_2,\dots,F_M\}\),我们首先制定AFA模块通过学习局部邻域的上下文信息去提升\(\mathbb{F}\)中的特征。

\[F'_i=F_i+\Delta F_i\ and\ \Delta F_i=f_{mod}(F_i,\mathbb{F}),\forall F_i\in\mathbb{F} \tag{1} \]

这里\(F'_i\)是被特征提升过的\(F_i\),这里的\(\Delta F_i\)是通过\(f_{mod}\)\(\mathbb{F}\)中学习到的。


下一个挑战是指定特征聚合器,以有效的交换和更深层次的聚合\(\mathbb{F}\)中的信息。直观的讲,局部区域的不同特征会产生不同的影响,以增强每个\(F_i\)。我们的\(f_{mod}\)通过自适应的学习\(\mathbb{F}\)中的每个特征对\(F_i\)的影响来解决这个问题。

\[f_{mod}(F_i,\mathbb{F})=\sum_{j=1}^M f_{imp}(F_i,F_j)\cdot f_{rel}(F_i,F_j)\tag{2} \]

其中的\(f_{imp}\)函数是为了计算\(F_j\)\(F_i\)的影响力,\(f_{rel}\)代表\(F_j\)\(F_i\)的关系。值得注意的是,我们还在AFA模块上包括了\(F_i\)的自影响。

影响函数\(f_{imp}\)

image

我们使用多层感知机去模拟\(f_{imp}\),如图3所示。其公式化表述如下:
\(w_{ij}=f_{imp}(F_i,F_j)=MLP(g(F_i,F_j))\tag{3}\)
其中\(g\)是一个\(F_i\)\(F_j\)的组合特征函数。


DGCNN和下面讲的缺陷是一模一样的,是否可以改进DGCNN?

  1. 模型\(g\)的一个简单方法就是对这两个特征做一个concatenate,这个方案有一个明显的缺陷,即\(g\)完全包含\(F_i\)\(F_j\),其中一般的通道保持不变。这样会使得\(F_i\)在计算时的影响占据主导地位。
  2. 另一种选择是将特征进行求和:\(g=(F_i+F_j)\),但是这样的话\(F_i\)\(F_j\)的影响和\(F_j\)\(F_i\)的影响就相同了。这种对称会产生一种不理想的特征,后面有具体的实验演示。
  3. 考虑到这些因素,因此我们将其建模为\(g(F_i,F_j)=F_i-F_j\),将影响计算为两个特征向量之间的差值。

image

此处\(i=j\)是一种特殊情况,我们让\(g(F_i,F_j)=F_i\),也就是说\(F_i\)对其自身的影响是通过其自身特征来估计的。

关系函数 \(f_{rel}\)

关系函数\(f_{rel}\)旨在确定影响函数\(f_{imp}\)如何作用于\(f_i\)。一种直接的方法就是做乘法:

\[f_{rel}(F_i,F_j)=F_j\tag{4} \]

这样的话,上面的公式2就可以转化为:

\[f_{mod}(F_i,\mathbb{F})=\sum_{j=1}^Mf_{imp}(F_i,F_j)\cdot F_j\tag{5} \]

虽然使用上面朴素的关系函数的点云识别任务的结果质量已经比基线有所提高,但使用不同的\(f_{rel}\)向量形式可以进一步提高框架性能。在数学上,建模如下:

\[f_{rel}(F_i,F_j)=\left\{ \begin{aligned} F_i-F_j && i\neq j \\ F_j && i = j \end{aligned} \right. \tag{6} \]

这样的话,区域\(R\)中的\(F_i\)的特征输出如下:

\[F'_i=\alpha_i^{(i)}\cdot F_i+\sum_{j=1,j\neq i}^M\alpha_j^{(i)}\cdot(F_j-F_i)\tag{7} \]

其中

\[\alpha_j^{(i)}=\left\{ \begin{aligned} -f_{imp}(F_i,F_j) && i\neq j \\ 1+f_{imp}(F_i,F_i) && i = j \end{aligned} \right. \tag{8} \]

综上\(F'_i\)为:

\[F'_i=(1+MLP(F_i))\cdot F_i-\sum_{j=1,j\neq i}^MMLP(F_i-F_j)\cdot(F_j-F_i) \]

看不太懂,下面这句话。没有具象出来这个画面。

换句话说,这个公式在局部区域\(R\)中的工作原理类似于力场,区域\(R\)中的所有其他特征用一个力作用于\(F_i\)(在特征空间中),试图将\(F_i\)推向远离自身的地方。力的方向和强度的系数由\(\alpha_j^{(i)}\)确定,该系数根据两个特征向量之间的差异去自适应的学习。因此输出\(F'_i\)包含了整个区域的上下文信息,从而可以更好的描述区域的特征。

posted @ 2021-11-25 21:12  X-POWER  阅读(436)  评论(0编辑  收藏  举报