Spherical CNNs
这篇文章是ICLR 2018上的Best Paper,由阿姆斯特丹大学发表。
原文链接:https://arxiv.org/abs/1801.10130
参考:阿姆斯特丹大学论文提出球面CNN:可用于3D模型识别
摘要
卷积神经网络(CNNs)已经成为二维平面图像学习问题的首选方法。然后,近期研究中出现的大量问题需要面向球面图像的分析模型,应用包括无人机、机器人和自动驾驶汽车的全向视觉,分子能量的回归分析,以及全球气象建模等。将卷积神经网络简单的应用于球面图像的平面投影这一方法注定会失败,因为投影时的空间变化会引入变化的畸变,使得在平移卷积核时权值共享不再有效。
本文介绍了构建球面CNN的基本要素,并提出了球面互相关的定义,表达力强且具有旋转等变性。如此定义的球面互相关满足广义傅里叶定理,因此可以用广义(非交换的)快速傅里叶变换(FFT)算法高效计算。本文展示了球面CNN在三维模型识别和雾化能量回归问题中的计算效率、数值精度和有效性。
前言
卷积神经网络可以检测出图像任意位置的局部模式。与平面图像相似,球面图像的局部模式也可以移动,但这里的“移动”是指三维旋转而非平移。类比平面CNN,我们希望构造一个神经网络,可以用于检测球面上图像任意旋转的局部模式。
![](https://i-blog.csdnimg.cn/blog_migrate/94165fcb59ad8420a832f3da7dd45341.png)
如图1所示,目前没有很好的办法利用平移卷积或互相关来分析球面信号。那么最明显的解决办法是改变互相关的定义,将滤波器平移改为滤波器旋转。然而这时我们会遇到问题,平面和球面之间存在一个细微却重要的差异:平面的移动空间(二维平移)与该平面是同构的,而球面的移动空间(三维旋转)是一个与球面不同构的三维流形,称为
SO(3)
S
O
(
3
)
。因此球面互相关的结果(即输出的特征映射)是
SO(3)
S
O
(
3
)
上的信号,而非球面
S2
S
2
上的信号。鉴于此,我们在一个球面CNN较高的几层中实现
SO(3)
S
O
(
3
)
群内的互相关。
球面CNN(
S2−CNN
S
2
−
C
N
N
)的实现存在两个主要的难点。首先,平面上像素组成的方形栅格具有离散的平移对称性,而球面上不存在完全对称的栅格。所以很难对球面滤波器旋转一个像素的距离做出简单定义。为了旋转球面滤波器,我们需要做某种形式的插值。另一个难点是计算效率,因为
SO(3)
S
O
(
3
)
是一个三维流形,简单实现
SO(3)
S
O
(
3
)
群内的互相关,算法的时间复杂度为
O(n6)
O
(
n
6
)
。
本文采用了非交换谐波分析领域的方法解决上述两个问题。这一领域给出的广义傅里叶变化影响深远,不仅适用于球面信号,也适用于旋转群上的信号。已知
SO(3)
S
O
(
3
)
群内互相关关于
SO(3)
S
O
(
3
)
的傅里叶变换满足傅里叶定理,本文对球面
S2
S
2
互相关的定义也满足傅里叶定理,因此可以用广义的快速傅里叶变换算法高效实现
S2
S
2
互相关和
SO(3)
S
O
(
3
)
互相关。
本文是首个在多层神经网络中针对连续群做互相关的研究,因此就连续理论预测的数学性质在实际离散化实现中的适用程度进行了严格的评估。
同时,通过对三个数据集的实验,本文展示了球面CNN在旋转不变分类问题和回归问题中的应用。第一项实验显示,球面CNN对球面MNIST图像做旋转不变分类的效果远优于平面CNN;第二项实现采用CNN实现三维形状的分类;第三项实验将球面CNN模型用于分子能量回归分析,这是计算化学中的一类重要问题。
贡献
本文的主要贡献如下:
- 球面CNN理论;
- 对于 S2 S 2 和 SO(3) S O ( 3 ) 的广义傅里叶变化,本文给出首个可自动微分的实现。我们的PyTorch代码使用简单、运算快速,且内存使用效率高;
- 就球面CNN对旋转不变量的学习问题,本文首个给出实证支持。
相关工作
CNNs的能力很大一部分来源于它们对(平移)对称性的探索能力,CNNs通过权值共享和平移等变映射来实现。因此很自然想到将之推广到更大群组的对称性,这也确实成为了近期几篇论文的主题。其中
SO(2)
S
O
(
2
)
-steerable networks以外的网络限制于离散群,比如平面图像上的离散旋转,点云上的排列操作。其他这方面的工作关注的则是球面图像的分析,而不是定义一个等变映射的结构。我们的工作首次实现了连续、非交换群(
SO(3)
S
O
(
3
)
)的等变映射,并且是首次将广义傅里叶变换推广到快速群互相关。这项工作的最初版本在Cohen等人的工作中出现。
为了有效地在球面和旋转群上实现互相关,我们使用广义FFT算法。广义傅里叶分析(有时也称为抽象/非交换谐波分析)在数学中有很长的历史,而且有很多关于这个主题的书籍。
球面和旋转群的互相关
我们将类比经典的平面
Z2
Z
2
互相关来解释
S2
S
2
和
SO(3)
S
O
(
3
)
的互相关。平面互相关可以理解为(感觉自己翻译不顺,先暂时贴原文):
类似的,球面互相关可以理解为:
因为输出的feature map由旋转角度控制,所以可以建模为
SO(3)
S
O
(
3
)
的方程,我们将会在下面详细讨论这个问题。
上述定义涉及了大量我们没有数学定义的概念,下面我们将一个个给出准确的定义。本小节的目标只是提出球面CNNs的模型,广义傅里叶理论和实现将会在下面讨论。
球面单元:
S2
S
2
可以定义为一组点的集合
x∈R3
x
∈
R
3
,是一个二维流形,可以用球面坐标系参数来表示:
α∈[0,2π],β∈[0,π]
α
∈
[
0
,
2
π
]
,
β
∈
[
0
,
π
]
。
球面信号:我们使用连续函数
f:S2→RK
f
:
S
2
→
R
K
对球面图像和滤波器进行建模,其中
K
K
是通道的数量。
旋转:在三维空间中的一组旋转称为,“Special Orthogonal Group”。旋转可以通过一个
3×3
3
×
3
的矩阵表示,保存了距离(
∥Rx∥=∥x∥
‖
R
x
‖
=
‖
x
‖
,旋转不改变球面上点到球心的距离)和方向(
det(R)=+1
det
(
R
)
=
+
1
,旋转矩阵的行列式值等于1)。如果我们将球面上的点用3维向量
x
x
表示,则可以用矩阵-向量乘法来进行一个旋转。旋转群
SO(3)
S
O
(
3
)
是一个3维流形,可以用
ZYZ
Z
Y
Z
欧拉角参数化表示:
α∈[0,2π],β∈[0,π],γ=[0,2π]
α
∈
[
0
,
2
π
]
,
β
∈
[
0
,
π
]
,
γ
=
[
0
,
2
π
]
。
旋转球面信号: