对点云的局部结构信息进行建模已经被证明是一件非常重要的事情,而之前的研究主要通过层级的方式提取点云的局部特征。显式的对局部点集的几何结构信息进行建模的研究很少。基于点云的几何信息隐含在点云的坐标中这一合理的假设,作者提出了一种名为Geo-Conv的卷积方式,对每个点和它的邻居点进行特征提取。
Geo-Conv主要是将中心点到邻居点所组成的向量分解到三个正交轴上,然后根据该向量和三个坐标轴的夹角来提取特征。这种方式可以在欧式空间中很好的保存几何结构信息。
如图所示,GeoConv应用于每个点及由半径 r r r所确定的局部球面邻域。向量 p q → \overrightarrow{pq} pq代表两个点之间的几何结构,他可以分解为到三个正交轴(Base,基底)上。基于分解后的向量,我们可以将两个点之间的边特征映射到三个正交轴上(图中的 x ⃗ , y ⃗ 和 z ⃗ \vec{x},\vec{y}和\vec{z} x,y和z),在使用方向相关的权重矩阵 W x ⃗ , W y ⃗ , W z ⃗ W_{\vec{x}},W_{\vec{y}},W_{\vec{z}} Wx,Wy,Wz来提取各方向上的特征。然后我们将刚刚提取的特征以 p q → \overrightarrow{pq} pq与基底的夹角( θ p q → , x ⃗ \theta_{\overrightarrow{pq},\vec{x}} θpq,x, θ p q → , y ⃗ , θ p q → , z ⃗ \theta_{\overrightarrow{pq},\vec{y}},\theta_{\overrightarrow{pq},\vec{z}} θpq,y,θpq,z)成比例的(proportional)聚合。
这样做的好处在于:
1.通过将两点所组成边特征提取过程分解到三个正交基底,降低了点云绝对坐标的方差,并鼓励网络沿着各个基底独立学习边特征;
2.通过根据边向量与基底之间的几何关系对特征进行聚合,我们显式的对点之间的集合结构信息进行了建模。
3.以这样的方式进行学习,其实就是将一个复杂的几何结构学习问题分解成了几个简单的小问题,并很好的保存了边的几何结构信息。
我们从中心点 p ⃗ \vec{p} p和其邻域中的点的特征进行聚合。点 p p p在 l + 1 l+1 l+1层抽取的公式化为:
X p ⃗ l + 1 = s ( p ⃗ ) + ∑ q ⃗ ∈ N ( p ⃗ , r ) h ( p ⃗ , q ⃗ , r ) = W c X p ⃗ l + ∑ q ⃗ ∈ N ( p ⃗ , r ) d ( p ⃗ , q ⃗ , r ) g ( p ⃗ , q ⃗ ) ∑ q ⃗ ∈ N ( p ⃗ , r ) d ( p ⃗ , q ⃗ , r ) X^{l+1}_{\vec{p}}=s(\vec{p})+\sum_{\vec{q}\in N(\vec{p},r)}h(\vec{p},\vec{q},r) \\ =\textbf{W}_c\textbf{X}^l_{\vec{p}}+\frac{\sum_{\vec{q} \in N(\vec{p},r)}d(\vec{p},\vec{q},r)g(\vec{p},\vec{q})}{\sum_{\vec{q} \in N(\vec{p},r)}d(\vec{p},\vec{q},r)} Xpl+1=s(p)+q∈N(p,r)∑h(p,q,r)=WcXpl+∑q∈N(p,r)d(p,q,r)∑q∈N(p,r)d(p,q,r)g(p,q)
其中 N ( p ⃗ , r ) = { q ⃗ ∣ ∥ p ⃗ − q ⃗ ∥ ≤ r } N(\vec{p},r)={\{\vec{q}| \|\vec{p}-\vec{q}\|\le r }\} N(p,r)={ q∣∥p−q∥≤r}是以点 p p p为中心, r r r为半径的圆形区域。 W c \textbf{W}_c Wc为从中心点抽取特征的权重矩阵;
d ( p ⃗ , q ⃗ , r ) = ( r − ∥ p ⃗ − q ⃗ ∥ ) 2 d(\vec{p},\vec{q},r)=(r-\|\vec{p}-\vec{q}\|)^2 d(p,q,r)=(r−∥p−q∥)2:根据 p p p和 q q q两点的距离计算出的一个权重。不难发现,随着点 q q q距离变大,该函数单调递减,也就意味着权重变小; r r r增大意味着感受野增大。
g ( p ⃗ , q ⃗ ) g(\vec{p},\vec{q}) g(p,q):对边特征进行建模的操作,也是Geo-Conv最重要的一部分。
总的来说分为以下几个步骤:
在三维空间中,每个向量都可以被投影到三个正交基底中,每个基底中的范数可以代表它在该方向上的“能量”。所以作者使用 W b ⃗ \textbf{W}_{\vec{b}} Wb来分别抽取每个方向的边特征。如图所示,三维空间被分成了8个象限,这样可以对基底的正负进行区分。基底B:
B = { ( 1 , 0 , 0 ) , ( − 1 , 0 , 0 ) , ( 0 , 1 , 0 ) , ( 0 , − 1 , 0 ) , ( 0 , 0 , 1 ) , ( 0 , 0 , − 1 ) } \textbf{B} = {\{(1,0,0),(−1,0,0),(0,1,0), (0, −1, 0), (0, 0, 1), (0, 0, −1)}\} B={ (1,0,0),(−1,0,0),(0,1,0),(0,−1,0),(0,0,1),(0,0,−1)}
任意一个向量都可以被 B \textbf{B} B中三个基所表示。然后以中心点 P P P为原点建立坐标系。融合边特征可公式为:
g ( p ⃗ , q ⃗ ) = ∑ b ⃗ ∈ B q ⃗ c o s 2 ( θ p q → , b ⃗ ) W b ⃗ X q ⃗ l g(\vec{p},\vec{q})= \sum_{\vec{b} \in B_{\vec{q}}} cos^2(\theta_{\overrightarrow{pq},\vec{b}})\textbf{W}_{\vec{b}}\textbf{X}^l_{\vec{q}} g(p,q)=b∈Bq∑cos2(θpq,b)WbXql
X q ⃗ l \textbf{X}^l_{\vec{q}} Xql是点q在第l层上的特征, B q ⃗ B_{\vec{q}} Bq为点q所处的象限的基底。至于为什么有 c o s 2 cos^2 cos2我不太明白,如果说是投影的话那么直接乘以 c o s cos cos就好了吗。
原文中说的是:
The feature along each direction is aggregated with the coefficients c o s 2 ( θ p q → , b ⃗ ) cos^2(\theta_{\overrightarrow{pq},\vec{b}}) cos2(θpq,b)
which corresponds to the square of the ratio between the norm of each projected component of p q → \overrightarrow{pq} pq and the norm of p q → \overrightarrow{pq} pq, and they naturally sum to 1.
我的翻译是L对应着 p q ⃗ \vec{pq} pq在一个方向上的投影和 p q → \overrightarrow{pq} pq的范数的比例的平方,自然而然相加为1。然而还是没看懂。。。。。
很多文献都表明对输入的点云进行旋转会降低模型的性能。作者分析可能是因为现有的方法还不能有效的从多个3D视角引入的大的变化中学习到一个紧凑的模型。所以作者在特征层面上进行扩充。新的 g ( p , q ) g(p,q) g(p,q)为:
g M V ( p ⃗ , q ⃗ ) = ∑ v ∈ V w v ∑ b ⃗ ∈ B q ⃗ c o s 2 ( θ p q v → , b ⃗ ) W b ⃗ X q ⃗ l g_{MV}(\vec{p},\vec{q})= \sum_{v \in V}w_v \sum_{\vec{b} \in B_{\vec{q}}} cos^2(\theta_{\overrightarrow{pq_v},\vec{b}})\textbf{W}_{\vec{b}}\textbf{X}^l_{\vec{q}} gMV(p,q)=v∈V∑wvb∈Bq∑cos2(θpqv,b)WbXql
This is done by sharing the computations on edge features along different directions and only changing the aggregation model.
g ( p ⃗ , q ⃗ ) = ∑ b ⃗ ∈ B q ⃗ c o s 2 ( θ p q → , b ⃗ ) W b ⃗ X q ⃗ l g(\vec{p},\vec{q})= \sum_{\vec{b} \in B_{\vec{q}}} cos^2(\theta_{\overrightarrow{pq},\vec{b}})\textbf{W}_{\vec{b}}\textbf{X}^l_{\vec{q}} g(p,q)=b∈Bq∑cos2(θpq,b)WbXql
从公式中我们不难看出, θ \theta θ的下标发生了改变,也就是说向量进行了旋转自然 θ \theta θ角度发生了变化。此外还多了一项 w v w_v wv让网络自己去学习聚合的参数。
对中心点来说直接用一个权重矩阵 W c W_c Wc来提取特征;邻域内的每个点使用bottleneck的方法先降为,然后刚刚说的提取特征的方式提取特征,再升维度,以达到减少计算消耗的问题。任性的是作者使用了交叉验证来选参数 r r r,有钱的组就是不一样。。。。
结果很好,作者也做了消融实验验证了Feature-Level Augmentation的有效性。
刚学习点云不久,还是很多地方不懂,也不知道自己看对了这篇文章没有。。。
The most important part of the GeoConv operation is the way it models the edge features. A straightforward way would be to apply a neural network or multilayer perceptron (MLP) to compute its activation against each edge. However, this method could easily suffer overfitting due to the vector the large variance of edge geometry, which is represented by the vector p q → \overrightarrow{pq} pq.
这里为什么会过拟合?
2.第二个就是上面所说的 c o s 2 cos^2 cos2
3.Geo-Conv是在中心点建立坐标系的,那是不是也具有旋转不变性?我想的是如果旋转所有的点都会旋转,那么p和q的相对位置是不会发生改变的。既然如此,旋转不变性得到了保证。
总结:本文的卷积想法很好,把一个难的问题分解成小的问题,这样的话模型更容易去学习。