PRIN: Pointwise Rotation-Invariant Networks
1、四个问题
- 要解决什么问题?
- 使用特殊结构的神经网络来提取具有旋转不变性的点云特征。
- 用了什么方法解决?
- 提出了一套新的网络结构:Pointwise Rotation-Invariant Network(PRIN),所提取的特征具有旋转不变性。
- 预处理阶段,使用密度感知自适应采样(Density-Aware Adaptive Sampling,DAAS)从稀疏点云上采样球形信号(spherical signals)。
- 随后采用Spherical Voxel Convolution(SVC)从点云提取旋转不变特征。
- 效果如何?
- 在目标分类、部件分割等任务上,可以不进行额外的数据增强,就能有效地处理旋转变化,并取得了SOTA(state-of-the-art)的效果。
- 还存在什么问题?
- 关于旋转不变性的部分基本上是照搬Spherical CNN里的那一套东西,给人的感觉更像是把被人的东西用到了点云分类、点云部件分割等任务上,但是球形信号的采样方法还是比较有参考价值的。
2、论文概述
2.1、简介
- 尽管PointNet和PointNet++都在点云感知和形状分析相关的任务中取得了相当不错的效果,但是他们都只关注于理想的情况,即不考虑旋转变换,假定所有物体都是出于同一个固定视角下。然后实际中,往往还存在旋转变换,而PointNet这类的方法肯定就会失效,因为我们事先无法知道物体的方向以及旋转角度。示意图如图1所示,旋转变换会导致PointNet系的网络失效。
- 因此这篇论文就提出了一系列应对旋转变化的方法。
- 提出了一个具有旋转不变性的网络:PRIN(pointwise rotation-invariant network)。
- 使用密度感知自适应采样(density-aware adaptive sampling,DAAS)来采样球形信号。
- 使用球形体素卷积(spherical voxel convolution,SVC)来提取旋转不变特征。
2.2、准备知识
- 球形卷积。
- 球形卷积是在Spherical CNN中提出的,主要思想是实现等变性。如果输入信号旋转了,那么卷积后的输出也相应地旋转。接着再进行全局最大池化就可以得到全局旋转不变特征了。
- 如果有兴趣进一步了解,可以查看我之前的博客:论文笔记:Spherical CNN
- 示意图如图2所示。
2.3、密度感知自适应采样(DAAS)
- Spherical CNN中已经通过理论推导和实验证明了球形卷积具有旋转等变性,但是它是应用在mesh结构的数据上,无法直接用来处理不规则的点云数据。所以还需要对点云进行预处理,即将点云转换为欧式结构的球形体素。
- 作者认为直接对点云进行均匀采样是不合理的,因为在两极附近的点相对稀疏,而在赤道附近的点则更加稠密。我们应该将这个点云分布的不均匀性也考虑进去,根据分布的稠密程度自适应地对点进行采样,构建球形体素。
- 一些定义如下:
- 单位球:
- 单位球 S 2 S^2 S2上的任意点为 p ∈ R 3 p \in \mathbb{R}^{3} p∈R3,点的模长为1。这是一个二维流型,我们使用球面坐标 ( α , β ) (\alpha, \beta) (α,β)来定义。 α ∈ [ 0 , 2 π ] \alpha \in[0,2 \pi] α∈[0,2π]指的是XY平面上的方位角。 β ∈ [ 0 , π ] \beta \in[0, \pi] β∈[0,π]指的是到正Z轴的极距角。
- 球形体素空间:
- 一个球形体素定义为 S 2 × H S^2 \times H S2×H,其中 ( α , β ) ∈ S 2 (\alpha, \beta) \in S^{2} (α,β)∈S2表示点被投影到单位球上的坐标,而 h ∈ H h \in H h∈H表示点到球体中心的距离。
- 单位球:
- 给定了一个离散球形体素的位置
(
α
[
i
]
,
β
[
j
]
,
h
[
k
]
)
(\alpha[i], \beta[j], h[k])
(α[i],β[j],h[k]),我们要计算信号
f
:
S
2
×
H
→
R
f : S^{2} \times H \rightarrow \mathbb{R}
f:S2×H→R,其中
i
∈
{
0
,
1
,
…
,
I
}
i \in\{0,1, \ldots, I\}
i∈{0,1,…,I},
j
∈
{
0
,
1
,
…
,
J
}
j \in\{0,1, \ldots, J\}
j∈{0,1,…,J},
K
∈
{
0
,
1
,
…
,
K
}
K \in \{0,1, \ldots, K\}
K∈{0,1,…,K},并且
I
I
I,
J
J
J,
K
K
K都是预先定义好的分辨率。在
S
2
×
H
S^{2} \times H
S2×H上的第
n
n
n个点的坐标为
(
α
n
,
β
n
,
h
n
)
\left(\alpha_{n}, \beta_{n}, h_{n}\right)
(αn,βn,hn),且总共有
N
N
N个点。采样函数
f
f
f的计算公式如下:
- f ( α [ i ] , β [ j ] , h [ k ] ) = ∑ n = 1 N w n ⋅ ( δ − ∥ h [ k ] − h n ∥ ) ∑ n = 1 N w n f(\alpha[i], \beta[j], h[k])=\frac{\sum_{n=1}^{N} w_{n} \cdot\left(\delta-\left\|h[k]-h_{n}\right\|\right)}{\sum_{n=1}^{N} w_{n}} f(α[i],β[j],h[k])=∑n=1Nwn∑n=1Nwn⋅(δ−∥h[k]−hn∥)
- 其中: w n = 1 ( ∥ α [ i ] − α n ∥ < δ ) ⋅ 1 ( ∥ β [ j ] − β n ∥ < η δ ) ⋅ 1 ( ∥ h [ k ] − h n ∥ < δ ) \begin{aligned} w_{n}=& \mathbf{1}\left(\left\|\alpha[i]-\alpha_{n}\right\|<\delta\right) \\ & \cdot \mathbf{1}\left(\left\|\beta[j]-\beta_{n}\right\|<\eta \delta\right) \\ & \cdot \mathbf{1}\left(\left\|h[k]-h_{n}\right\|<\delta\right) \end{aligned} wn=1(∥α[i]−αn∥<δ)⋅1(∥β[j]−βn∥<ηδ)⋅1(∥h[k]−hn∥<δ)
- δ \delta δ是预先定义好的滤波器宽度。
- 每个球形体素的信号都是 ( δ − ∥ h [ k ] − h n ∥ ) ∈ [ 0 , δ ] \left(\delta-\left\|h[k]-h_{n}\right\|\right) \in[0, \delta] (δ−∥h[k]−hn∥)∈[0,δ],表示沿着 H H H轴的信息,与 S 2 S^2 S2正交,同时对于旋转变换是不变的。
- 密度感知系数:
- η = sin ( β ) \eta=\sin (\beta) η=sin(β)用来控制 f f f自适应地对非均匀密度下的点集进行采样。示意图间图4。
2.4、球形体素卷积(SVC)
- 旋转:
- 旋转群 S O ( 3 ) SO(3) SO(3),也被叫作特殊正交群,是一个三维流型,可以参数化为ZYZ欧拉角 ( α , β , γ ) (\alpha, \beta, \gamma) (α,β,γ),其中 α ∈ [ 0 , 2 π ] \alpha \in[0,2 \pi] α∈[0,2π], β ∈ [ 0 , π ] \beta \in[0, \pi] β∈[0,π], γ ∈ [ 0 , 2 π ] \gamma \in[0,2 \pi] γ∈[0,2π]。
- 球形体素信号的旋转:
- 定义球形体素信号的旋转操作子 L R L_R LR。
- [ L R f ] ( x , h ) = f ( R − 1 x , h ) \left[L_{R} f\right](x, h)=f\left(R^{-1} x, h\right) [LRf](x,h)=f(R−1x,h)
- 其中, R ∈ S O ( 3 ) R \in S O(3) R∈SO(3), x ∈ S 2 x \in S^{2} x∈S2, h ∈ H h \in H h∈H并且 f : S 2 × H → R f : S^{2} \times H \rightarrow \mathbb{R} f:S2×H→R。
- 这里的旋转只会影响球面坐标,而不会对 H H H域有影响。
- 球形体素卷积(spherical voxel convolution):
- 两个球面信号相互卷积的计算公式如下:
- [ ψ ⋆ f ] ( p ) = ⟨ L p ~ ψ , f ⟩ = ∫ h ∫ x ψ ( p ~ − 1 x , h ) f ( x , h ) d x d h \begin{aligned}[\psi \star f](p) &=\left\langle L_{\tilde{p}} \psi, f\right\rangle \\ &=\int_{h} \int_{x} \psi\left(\tilde{p}^{-1} x, h\right) f(x, h) d x d h \end{aligned} [ψ⋆f](p)=⟨Lp~ψ,f⟩=∫h∫xψ(p~−1x,h)f(x,h)dxdh
- 其中 p ∈ S 2 × H p \in S^{2} \times H p∈S2×H, p ~ ∈ S O ( 3 ) \tilde{p} \in S O(3) p~∈SO(3), x ∈ S 2 x \in S^{2} x∈S2, h ∈ H h \in H h∈H,还有 ψ , f : S 2 × H → R \psi, f : S^{2} \times H \rightarrow \mathbb{R} ψ,f:S2×H→R。
- 具体实现部分请参考Spherical CNN。
- 两个球面信号相互卷积的计算公式如下:
- 等变性:
- [ ψ ⋆ [ L R f ] ] ( p ) = [ L R [ ψ ⋆ f ] ] ( p ) \left[\psi \star\left[L_{R} f\right]\right](p)=\left[L_{R}[\psi \star f]\right](p) [ψ⋆[LRf]](p)=[LR[ψ⋆f]](p)
- 上式对于任意的 R ∈ S O ( 3 ) R \in S O(3) R∈SO(3)都成立。
- 旋转不变KL散度损失:
- 对于每个点
p
p
p的损失函数定义为:
Loss
(
p
)
=
K
L
(
[
ψ
⋆
f
]
(
p
)
,
y
(
p
)
)
\operatorname{Loss}(p)=K L([\psi \star f](p), y(p))
Loss(p)=KL([ψ⋆f](p),y(p))。
- f f f是输入信号, ψ \psi ψ是要学习的卷积核, y y y是ground truth的one-hot标签。
- 旋转不变性证明:
- 假设点 p p p旋转了 R R R,得到: f ′ = L R f f^{\prime} = L_R f f′=LRf, p ′ = R p p^{\prime} = R p p′=Rp。
- 拿过来前面定义的几个公式:
- 等变性公式: [ ψ ⋆ [ L R f ] ] ( p ) = [ L R [ ψ ⋆ f ] ] ( p ) (Equation 5 ) \left[\psi \star\left[L_{R} f\right]\right](p)=\left[L_{R}[\psi \star f]\right](p) \text { (Equation } 5 ) [ψ⋆[LRf]](p)=[LR[ψ⋆f]](p) (Equation 5)
- 球形信号旋转公式: [ L R f ] ( x , h ) = f ( R − 1 x , h ) (Equation 3 ) \left[L_{R} f\right](x, h)=f\left(R^{-1} x, h\right) \text { (Equation } 3 ) [LRf](x,h)=f(R−1x,h) (Equation 3)
- 代入前面两个公式:
- Loss ( p ′ ) = Loss ( R p ) = K L ( [ ψ ⋆ f ′ ] ( R p ) , y ( p ′ ) ) = K L ( [ ψ ⋆ [ L R f ] ] ( R p ) , y ( p ′ ) ) = K L ( [ L R [ ψ ⋆ f ] ] ( R p ) , y ( p ′ ) ) (Equation 5 ) = K L ( [ L R − 1 L R [ ψ ⋆ f ] ] ( p ) , y ( p ′ ) ) (Equation 3) = K L ( [ ψ ⋆ f ] ( p ) , y ( p ′ ) ) = K L ( [ ψ ⋆ f ] ( p ) , y ( p ) ) (label stays the same) = Loss ( p ) \begin{aligned} \operatorname{Loss}\left(p^{\prime}\right) &=\operatorname{Loss}(R p) \\ &=K L\left(\left[\psi \star f^{\prime}\right](R p), y\left(p^{\prime}\right)\right) \\ &=K L\left(\left[\psi \star\left[L_{R} f\right]\right](R p), y\left(p^{\prime}\right)\right) \\ &=K L\left(\left[L_{R}[\psi \star f]\right](R p), y\left(p^{\prime}\right)\right) \quad \text { (Equation } 5 ) \\ &=K L\left(\left[L_{R^{-1}} L_{R}[\psi \star f]\right](p), y\left(p^{\prime}\right)\right) \quad \text { (Equation 3) } \\ &=K L\left([\psi \star f](p), y\left(p^{\prime}\right)\right) \\ &=K L([\psi \star f](p), y(p)) \quad \text { (label stays the same) } \\ &=\operatorname{Loss}(p) \end{aligned} Loss(p′)=Loss(Rp)=KL([ψ⋆f′](Rp),y(p′))=KL([ψ⋆[LRf]](Rp),y(p′))=KL([LR[ψ⋆f]](Rp),y(p′)) (Equation 5)=KL([LR−1LR[ψ⋆f]](p),y(p′)) (Equation 3) =KL([ψ⋆f](p),y(p′))=KL([ψ⋆f](p),y(p)) (label stays the same) =Loss(p)
- 对于每个点
p
p
p的损失函数定义为:
Loss
(
p
)
=
K
L
(
[
ψ
⋆
f
]
(
p
)
,
y
(
p
)
)
\operatorname{Loss}(p)=K L([\psi \star f](p), y(p))
Loss(p)=KL([ψ⋆f](p),y(p))。
- 实际实现时采用了FFT先将球形信号与滤波器信号都转换到频域,相乘后再做逆变换转换回原先的空域。主要目的是加速计算。
2.5、网络结构
- 上图是PRIN的分类网络和分割网络示意图。
- 分类网络比较简单,就是SVC提取旋转不变特征,然后接上一个全局最大池化,然后进行分类。
- 分割网络在SVC提取特征后,还需要重新上采样回原始点集,这里用到了三线性插值。每个点的特征是其最近邻的8个体素的加权平均和,权重是距离的倒数。