Spherical CNNs
当前访问频次受限,请登录后继续访问
⚠️ 警告: 此代码已过时,不支持最新版本的PyTorch!特别是自从FFT接口更改以来。⚠️ ⚠️
球面卷积神经网络(Spherical CNNs)
在PyTorch中实现的球面与SO(3)上的等变卷积神经网络

概览
本库提供了PyTorch版本的球面上旋转等变CNN的实现(例如用于全景图像和地球表面信号)[1]。平面上的等变网络可在此找到:Groupy。
依赖项
- PyTorch: http://pytorch.org/ (≥0.4.0)
- cupy: https://github.com/cupy/cupy
- lie_learn: https://github.com/AMLab-Amsterdam/lie_learn
- pynvrtc: https://github.com/NVIDIA/pynvrtc
(在新conda环境安装所有依赖项的命令)
conda create --name cuda9 python=3.6
conda activate cuda9
# s2cnn的依赖
conda install -c pytorch pytorch torchvision cuda90 # 访问http://pytorch.org/获取正确的命令行
conda install -c anaconda cupy
pip install pynvrtc joblib
# lie_learn的依赖
conda install -c anaconda cython
conda install -c anaconda requests
# shrec17示例依赖
conda install -c anaconda scipy
conda install -c conda-forge rtree shapely
conda install -c conda-forge pyembree
pip install "trimesh[easy]"
安装
运行以下命令以进行安装:
$ python setup.py install
使用方法
请查看示例了解如何使用。
在实验中使用此库时,请引用[1]。
球面CNN架构的设计选择
球面CNN伴随不同的网格选择及其超参数,这些初看起来与传统CNN的选择不太直观相关。
s2_near_identity_grid和so3_near_identity_grid是首选,因为它们对应于在北极定义的空间局部化核,并通过SO(3)的作用旋转在整个球体上。
相比之下,s2_equatorial_grid和so3_equatorial_grid定义了围绕赤道的线状(或环状)核。
对于s2_near_identity_grid的可能参数选择明确如下:
max_beta:
调整从北极测量的核大小。传统扁平空间上的CNN通常使用固定的核大小并空间池化信号。这种空间池化使得后期层的核具有更有效的视野范围。在球面CNN中模拟两倍的池化可以通过将信号带宽减少2倍并增加max_beta 2来实现。
n_beta:
围绕赤道的核环数,均匀分布在[\beta=0, \beta=max_beta]区间内。选择n_beta=1相当于conv2d中的小3x3核,因为在两种情况下,最终的核都包含一个中心像素和围绕中心的一圈。
n_alpha:
给出围绕极点的环上的学习参数数量。默认情况下,这些值在经度上等距分布。合理的数值取决于带宽和max_beta,因为更高的分辨率或空间扩展允许采样更精细的核而不产生混叠结果。实践中,这个值通常设为一个较低的常数值,如6或8,用以应对降低的信号带宽,通过增加max_beta来模拟空间池化。
so3_near_identity_grid有两个额外参数max_gamma和n_gamma。SO(3)可以视为SO(3)→S²的主纤维丛,其中球面S²作为基空间,每个点附着SO(2)纤维。这些额外参数以以下方式控制纤维上的网格:
max_gamma:
核跨越纤维SO(2)之间的γ∈[0, max_gamma]。纤维SO(2)编码给定球面上位置的所有样本方向的核响应。设置max_gamma≤2π意味着核不会同时看到所有核方向的响应,一般不被推荐。通常,旋转向量CNNs[3]总是使用max_gamma=2π。
n_gamma:
纤维上学习参数的数量。通常设置为与n_alpha相同,即一个低值如6或8。
MNIST示例的深度模型提供了一个如何随层级适应这些参数的例子。
反馈
有关问题和评论,请随时联系我们:geiger.mario@gmail.com,taco.cohen@gmail.com,jonas@argmin.xyz。
许可证
MIT
引用
[1] Taco S. Cohen, Mario Geiger, Jonas Köhler, Max Welling, Spherical CNNs. 国际学习表示会议(ICLR),2018年。
[2] Taco S. Cohen, Mario Geiger, Jonas Köhler, Max Welling, Convolutional Networks for Spherical Signals. ICML工作坊—深度学习的原理方法,2017年。
[3] Taco S. Cohen, Mario Geiger, Maurice Weiler, Intertwiners between Induced Representations (with applications to the theory of equivariant neural networks), ArXiv预印本1803.10743,2018年。