近年来,随着深度传感器的发展,点云已经获得了相当大的研究兴趣。由于对象的不同布局,点云的方向在实际应用中常常是未知的。本文针对点云中的旋转问题,提出了一种新的点集学习框架——点云旋转不变网络( PRIN)。通过从稀疏点进行自适应采样来构造球形信号,并使用球卷积以及三线性插值来提取每个点的旋转不变特征。该网络可以应用于从物体分类、单个物体部分分割以及3D特征匹配和标签对齐等各种应用。PRIN在没有数据增强的情况下,在零件分割方面显示出与现有技术水平相当或更好的性能。
Github源码:https://github.com/qq456cvb/PRIN
以往对于点云的模型,往往都没有考虑点云的旋转不变性和尺度不变性。例如pointnet中,仅仅利用了一个T-net来学习点云的旋转特征,但是如果没有数据增强的话,仅仅是简单旋转物体,模型的效果还是会收到极大的影响。同时传统的点云网络都是基于普通的坐标系的,因此受限于点云的无序性,其很难捕捉点云的旋转特征。例如,pointnet++中若对点云进行一些旋转,分割效果就变得特别差
本文提出的PRIN网络的最大特点就是可以输入没有数据增强的点云信息,也能达到很好地分割或者分类效果。因此其称之为点云旋转不变网络( PRIN)
从图中可以看到,PRIN以任意的稀疏点云作为网络的输入,在(a)部分通过一个球型体素化(spherical voxel grids),将点云转换成球型体素。然后球型体素会通过若干个球卷积(spherical convolution) 和 旋转卷积组(SO(3) group convolutions) (b, c, d, e, f 部分) 。最终在(h)部分通过最大池化得到全局特征用于做分类问题(i)部分;或者通过一个逐个体素之间的信息交互,完成part segmentation的任务(j和k)部分。
这个部分讲述了点云的旋转不变性卷积的方式。
单位球 The Unit Sphere S 2 S^2 S2 被定义为一系列的三维点云的集合 x ∈ R 3 x \in R^3 x∈R3 并且范数归一化,即 n o r m = 1 norm=1 norm=1。其可以通过一个二维的球面坐标来参数化,即 α ∈ [ 0 , 2 π ] \alpha \in [0,2 \pi] α∈[0,2π] 和 β ∈ [ 0 , π ] \beta \in [0, \pi] β∈[0,π]。
球信号 Spherical Signals 是球面上的图像或者卷积操作,可以将其看做一个映射 g : S 2 → R g: S^2 \rightarrow R g:S2→R
旋转 Rotation R R R 被可以被三维参数化 α ∈ [ 0 , 2 π ] \alpha \in [0,2 \pi] α∈[0,2π] , β ∈ [ 0 , π ] \beta \in [0, \pi] β∈[0,π] 和 γ ∈ [ 0 , 2 π ] \gamma \in [0,2 \pi] γ∈[0,2π] 。其在实现的时候一般是用一个3x3的矩阵来储存变换信息。
旋转算子 Rotation operator L R L_R LR 被定义为:取一个球信号 g g g,并通过合成旋转 R − 1 R^{-1} R−1和 g g g来产生一个旋转函数 L R g L_Rg LRg:
[ L R g ] ( x ) = g ( R − 1 x ) [L_R g](x) = g(R^{−1} x) [LRg](x)=g(R−1x)
其中 x ∈ S 2 x \in S^2 x∈S2可以被表示为 ( α , β ) (\alpha,\beta) (α,β),g是一个 S 2 → R S^2 \rightarrow R S2→R的函数。
直观地说,旋转算子根据旋转 R R R将任意的信号 g g g在单位球上转换到另外一个位置。为了实现 R − 1 x R^{-1}x R−1x, x x x为3×1且范数为1的向量,并将其与 R − 1 R^{-1} R−1相乘, R − 1 R^{-1} R−1为3×3矩阵。
对于输入信号,传统方法,如PointNet、PointNet++和PointCNN均使用不规则稀疏点云直接作为输入,而PRIN中将这种不规则的点云转换成规则的球形体素,这有助于网络接下来提取旋转不变的特征。
为了将这种稀疏的不规则点云转换成统一的体素形式,PRIN先将点云用标准的球体包括住,再将球体分成球型体素,因此,每个点云中的点都包含在它对应的体素中。用三维 S 2 × H S2×H S2×H来识别球形体素,其中 S 2 S2 S2表示映射到单位球面上的坐标, H H H表示到球体中心的距离。这些球形体素可以看作是叠加在 H H H维上的多球体信号。
(这里需要注意,一旦离散体素以某个分辨率在 S 2 × H S2×H S2×H中定义,每个点都将位于某个体素中,但不完全位于体素中心位置。因此,我们需要使用采样点重建 S 2 × H S2×H S2×H上的信号。)
PRIN首先将每个点 ( x , y , z ) (x,y,z) (x,y,z)转换成其在单位球面上对应的球面坐标 ( α , β ) (α, β) (α,β),然后计算其到球面中心的距离 h h h。然后我们得到 S 2 × H 中 S2×H中 S2×H中的点位置 ( α , β , h ) (α,β,h ) (α,β,h)。为了计算每个离散体素位置处的信号 φ ( α [ i ] , β [ j ] , h [ k ] ) φ(α[i],β[j],h[k ]) φ(α[i],β[j],h[k]),并在每个球体上的欧几里德空间中使用 方向性的滤波器(Isotropic box filter) 和 归一化因子 w n w_n wn来重建输入信号 φ φ φ。其中归一化因子为:
w n ( i , j , k ) = 1 ( α [ i ] − δ ≤ α n ≤ α [ i ] + δ ) ⋅ 1 ( β [ j ] − ζ ≤ β n ≤ β [ j ] + ζ ) ⋅ 1 ( ∣ h [ k ] − h n ∣ < ϵ ) w_n (i,j,k) =1(α[i] − δ ≤ α n ≤ α[i] + δ)\\ · 1(β[j] − ζ ≤ β n ≤ β[j] + ζ) · 1(|h[k] − h n | < \epsilon) wn(i,j,k)=1(α[i]−δ≤αn≤α[i]+δ)⋅1(β[j]−ζ≤βn≤β[j]+ζ)⋅1(∣h[k]−hn∣<ϵ)重构的输入信号为:
φ ( α [ i ] , β [ j ] , h [ k ] ) = ∑ n N w n ( i , j , k ) ⋅ ( ϵ − ∣ h [ k ] − h n ∣ ) ∑ n N w n ( i , j , k ) φ(α[i],β[j],h[k]) = \frac {\sum_{n}^{N} w_n (i,j,k) · (\epsilon − |h[k] − h_n |)}{\sum_{n}^{N} w_n (i,j,k)} φ(α[i],β[j],h[k])=∑nNwn(i,j,k)∑nNwn(i,j,k)⋅(ϵ−∣h[k]−hn∣)
其中 i = 0 , 1 , ⋅ ⋅ ⋅ I , j = 0 , 1 , ⋅ ⋅ ⋅ J , k = 0 , 1 , ⋅ ⋅ ⋅ K i = 0,1,···I, j = 0,1,···J, k = 0,1,···K i=0,1,⋅⋅⋅I,j=0,1,⋅⋅⋅J,k=0,1,⋅⋅⋅K 和 I , J , K I,J,K I,J,K 是提前定义的分辨率。 ( α n , β n , h n ) (α_n ,β_n ,h_n ) (αn,βn,hn) 是 S 2 × H S_2 × H S2×H 中第 n n n 个点的坐标。 1 1 1是指示性函数, ϵ \epsilon ϵ 和 ζ ζ ζ 是提前定义的滤波器宽度。 δ = ζ s i n ( β ) δ =\frac{ζ}{sin(β)} δ=sin(β)ζ 是因为球坐标不同于欧几里德空间(均匀的),其voxel的大小分布是不均匀的。从图中可以看出,在球坐标上,越接近两极的体素会越小;而右侧在欧式空间上所有的filter大小都相同。
本文通过一定的数学推导,证明了这样的编码点云的方式具有旋转不变性
该网络的贡献点主要在与利用球卷积和三线性差值来提取点云特征,后面的卷积计算基本照搬S2CNN。最后的实验结果证明了该网络有旋转不变性的特点。
可以看出虽然分割效果挺一般的,但是在数据集进行旋转的时候,具有较好的鲁棒性。分割结果不加也有可能是因为球卷积的精度不够而造成的。