Spherical CNN
1、四个问题
- 要解决什么问题?
- 用了什么方法解决?
- 提出了球形卷积操作,也叫作球形互相关(spherical cross-correlation)。球形卷积具有旋转不变性。
- 为了增强计算效率,使用FFT(Fast Fourier Transform)来计算球形卷积。
- 效果如何?
- 在3D模型识别上效果还不错,与其他深度神经网络的模型相比准确率差一些,但是对旋转变化的鲁棒性更强。
- 还存在什么问题?
- 由于在球形卷积中使用了FFT和IFFT,在转换过程中会损失一部分信息。
- 球形卷积仅针对的理想的3D物体做到了旋转不变性,不存在背景或者其他噪声的干扰,如果在存在多个3D物体的自然场景下,必须要先分割出3D物体再提取旋转不变特征,流程过于繁琐。
2、论文概述
1、简介

- 一种比较常见的思路是,将球形曲面展开为一个2D平面,如图1所示。从一个球面的信号到平面的映射过程中存在不规则的畸变。当图1的左图旋转到右图中的情况时,第一行表示球面上的情况,其实相当于在球面上平移;第二行表示从球面投影到平面的情况,不仅存在平移变化,还存在投影畸变。
- 上面这个简单的例子说明了:球形曲面上的信号,不适合使用卷积(convolution)或互相关(cross-correlation)这类操作提取特征。尽管卷积这类操作具有平移不变性,但是球形曲面上还存在不规则的投影畸变。从不同旋转状态下的同一目标使用卷积提取到的特征不具备等效性(equivalence)。
- 因此作者想要提出一个网络来解决这个问题,也就是本文中的Spherical CNN(S2-CNN)。三维空间下的旋转矩阵R可以用一个特殊正交群SO(3)来表示。Spherical CNN的目的是做到在SO(3)下的等效性。
-
SO(3)互相关满足傅里叶理论,即SO(3)傅里叶变换。因此使用广义FFT算法来能高效地实现SO(3)傅里叶变换和S2傅里叶变换。
2、贡献
- 球面CNN理论。
- 提出了对于球面S2和三维特殊正交群SO(3)的广义傅里叶变换。
- 实验验证球面CNN对旋转不变性的适用性。
3、球面和旋转群的互相关
- 首先类比经典的平面互相关(x∈Z2),随后再引出S2和SO(3)互相关。
- 平面互相关(planar correlation)的理解:
- 输出的特征图是按x平移时(x∈Z2)输入的特征图与滤波器的内积计算得到的结果。
- 类似的,球面互相关(spherical correlation)可以理解为:
- 输出的特征图是按R旋转时(R∈SO(3))输入的特征图与滤波器的内积计算得到的结果。
4、球面CNN
- 球面单元:
-
S2可以定义为一组单位球面上的点的几何x∈R3,是一个三维流型,可以用球面坐标系来表示:α∈[0,2π],β∈[0,π]。
- 球面信号:
- 使用连续函数f:S2→RK对球面图像和滤波器进行建模,其中K是通道数。
- 旋转:
- 在三维空间中一组旋转称为SO(3),也叫作“特殊正交群”,用一个3×3的矩阵表示旋转。这个旋转矩阵具有以下性质:∥Rx∥=∥x∥,det(R)=+1。
- 如果用三维向量x来表示球面上的点,那么可以使用矩阵向量乘法Rx来表示旋转。
- 旋转群SO(3)是一个三维流型,它也可以用ZYZ欧拉角进行参数化表示:α∈[0,2π],β∈[0,π],γ∈[0,2π]。
- 球面信号的旋转:
- 为了定义球面互相关,引入旋转算子LR,结合函数f,可以得到旋转函数LRf:[LRf](x)=f(R−1x)。
- 我的理解是:LRf是一个旋转了R的特征图,在其上x位置对应的特征是[LRf](x),换算回旋转前的函数f的特征图上,对应于R−1x位置的特征。
- 旋转算子在R上是可逆的,即有:LRR′=LRLR′。
- 内积:
- 在球面信号矢量空间上的内积定义为:
- ⟨ψ,f⟩=∫S2k=1∑Kψk(x)fk(x)dx
- 积分测度dx表示球面上的标准旋转不变积分测度,可以由球面坐标dαsin(β)dβ/4π表示。
- 由于球面高度图的体积不随转动变化,所以,可以具有对于任意的旋转R∈SO(3)的不变性:∫S2f(Rx)dx=∫S2f(x)dx。
- 注意到,LR−1与LR伴随,那么LR是幺正(unary)的:
- ⟨LRψ,f⟩=∫S2k=1∑Kψk(R−1x)fk(x)dx=∫S2k=1∑Kψk(x)fk(Rx)dx=⟨ψ,LR−1f⟩
- 球面相关性(spherical correlation):
- 对球形信号f和ψ,定义相关性为:
- [ψ⋆f](R)=⟨LRψ,f⟩=∫S2∑k=1Kψk(R−1x)fk(x)dx
- 输入是SO(3)上的一个旋转矩阵,f为输入信号,ψ为滤波器,这个函数就是计算输入信号与滤波器在旋转为R时的相关性。
-
SO(3)上信号的旋转:
- 对旋转算子进行推广,以便能对SO(3)上的信号起作用。
- 对于f:SO(3)→RK和R,Q∈SO(3):[LRf](Q)=f(R−1Q)。
- 旋转群相关:
- 与前面类似,定义旋转群上两个信号f,ψ:SO(3)→RK的相关性:
- [ψ⋆f](R)=⟨LRψ,f⟩=∫SO(3)k=1∑Kψk(R−1Q)fk(Q)dQ
- 这里的dQ是SO(3)上的不变测度,可以用ZYZ欧拉角来表示:dαsin(β)dβdγ/(8π2)。
- 等变性:
- 等变性指的是,对于一些算子TR,如果Φ∘LR=TR∘Φ,那么Φ就是等变的。
- [ψ⋆[LQf]](R)=⟨LRψ,LQf⟩=⟨LQ−1Rψ,f⟩=[ψ⋆f](Q−1R)=[LQ[ψ⋆f]](R)
- 球面相关性和群相关性都是等变的。
5、使用G-FFT进行快速卷积
- 总所周知,快速傅里叶变换(FFT)可以高效地计算相关性和卷积。
- 由傅里叶定理给出:f∗ψ=f^⋅ψ^。
- FFT的时间复杂度为O(nlogn),而乘法算子具有线性复杂度,因此使用FFT实现的相关性比原始的相关性计算时间复杂度O(n2)快的多。
- 对于球面和旋转群上的函数,有一个类似的变换,把它称作广义傅里叶变换(GFT)和其对应的快速算法(GFFT)。论文中没有做详细描述,这里也不展开描述,详细可以参考这篇文档:SOFT: SO(3) Fourier Transforms。这篇论文中也是直接使用了他们推导好的数学公式。
- 用X表示S2或SO(3),再用Ul表示相应的基函数,在函数f:X→R,GFT可以写为:
- f^l=∫Xf(x)Ul(x)dx
- 实际应用中使用GFFT可有效计算这个积分。
-
SO(3)的逆变换定义为:
- f(R)=l=0∑b(2l+1)m=−l∑ln=−l∑lf^mnlDmnl(R)
-
S2下的逆变换也依次类推。
- 最大频率b是带宽,与网格的分辨率相关。
- 在频域内实现球面互相关:

- 信号f与滤波器ψ经过傅里叶变换得到球形频域上旋转等变的频谱,相乘随后对各通道求和,最终做傅里叶逆变换转换回空域。由于滤波器是局部的,所以使用矩阵乘法(DFT)会比FFT更快。
6、实验


3、参考资料
- Spherical CNNs(全文翻译)
- 从群等变卷积网络到球面卷积网络
- https://www.jiqizhixin.com/articles/spherical-cnns
- SOFT: SO(3) Fourier Transforms
- Spherical CNNs
相关文章: