文章解析——UGSCNN: Spherical CNNs on Unstructured Grids


前言

天气预报

paper地址 https://openreview.net/pdf?id=Bkl-43C9FQ

作者 Chiyu “Max” Jiang, Jingwei Huang, Karthik Kashinath, Prabhat, Philip Marcus, Matthias Niessner

github地址 https://github.com/maxjiang93/ugscnn

一、导论

传统卷积神经网络天气预报是在Mercator Projection下生成的地图中做的,这会导致极地地区信息过剩,而赤道地区采样稀疏导致信息不足。

为了解决这个问题,Chiyu “Max” Jiang等人提出了使用球面卷积来改进传统卷积。这不得不引入一个新的问题——如何构建基于球面卷积的三维网格数据。该文章认为,计算机视觉及相关领域的大量机器学习问题需要在球形域内处理信号; 例如,来自商用全景相机的全向RGBD图像,全景视频与自动驾驶汽车的激光雷达扫描相耦合,或科学领域的行星信号)。不幸的是,将球面信号简单映射到平面域会导致图像失真。特别是,极区附近的投影伪影和边界处理使得2D卷积神经网络(cnn)的学习特别具有挑战性。2018年的工作提出了在球形域中原生运行的网络架构,并且对SO(3)组中的旋转不变性。这种不变性在一系列问题中是可取的——例如,分子的机器学习问题——在这些问题中,引力效应可以忽略不计,方向是任意的。然而,对于其他不同类别的问题,假设的方向信息对网络的预测能力至关重要。MNIST数字识别问题就是这样一个很好的例子,方向在区分数字" 6 “和” 9 "中起着重要作用。其他示例包括全向图像,其中图像自然地由重力定向;行星信号,行星自然地以它们的旋转轴为方向。

文章提出一种新的卷积核,用于任意流形和拓扑上的cnn,由非结构化网格(即网格)离散,并关注其在二十面体球面网格近似的球面域中的应用。文章提出并评估了CNN卷积核的一种新的参数化方案的使用,称为参数化微分算子(PDOs),很容易在非结构化网格上实现。我们将使用这种核在网格上操作的卷积运算符称为MeshConv运算符。这种参数化方案每个核仅使用4个参数,在参数少得多的情况下取得了比其他方法更好的性能。

二、相关技术

1.Spherical CNNs

在处理球面信号时,首先要考虑的是将信号从曲面投影到平面时产生的失真。Su和Grauman在极区附近用增加核尺寸的正则卷积处理等矩形图像,平面映射在极区引入了更大的失真。Coors et al.和Zhao et al.使用常数核在球面图像的切平面上采样点以减少失真。稍有不同的文献探索了球形cnn的旋转等变实现。Cohen等人提出了具有SO(3)中旋转等变的中间特征映射的球面卷积。Esteves等人使用球调和基来实现类似的结果。

2.Reparameterized Convolutional Kernel

对卷积核进行重参数化,有利于对难以求解或者难以离散化表达的卷积核进行表征,这种方法虽然会增加运算量,但是可以保证计算公式与数据的一致性,同时引入球面卷积的思想。这与我们使用参数化微分算子的方法有关,一些工作利用扩散核进行高效的机器学习和cnn。Kondor和Lafferty是最早建议在图上使用扩散核的人之一。Atwood和Towsley提出扩散卷积神经网络(DCNN)用于在图结构数据上进行高效卷积。Boscaini等人通过使用一组定向各向异性扩散核,将经典cnn推广到非欧氏域。Cohen & Welling利用滤波器组的线性组合来获得等变卷积滤波器。Ruthotto & Haber利用规则网格图像的抛物线和双曲线微分探索了卷积核的重新参数化。

3.Non-Euclidean Convolutions

非欧卷积即在由非结构化网格(即网格)表示的流形上执行卷积。而几何深度学习的工作解决了类似的问题。其他方法包括通过参数化谱域中的卷积核来进行图卷积,从而将卷积步骤转换为谱点积。Masci等人利用基于测地距离的互相关直接在流形上执行卷积,Maron等人使用最优表面参数化方法(无缝环面覆盖)将零属形状参数化为2D信号,以便使用常规平面cnn进行分析。

三.方法

1.参数化微分算子

参数为θ的3×3核:G 3×3 θ可以写成基核的线性组合,这些基核可以被视为恒定偏移量的delta函数:

总结公式1

其中x和y指的是空间坐标,对应于执行卷积的两个空间维度。由于互相关算子(∗)的线性,输出特征图可以表示为与不同基函数互相关的输入函数的线性组合。

定义线性算子∆ij为具有基delta函数的互相关函数,有:
公式2
我们将互相关线性算子∆ij替换为变阶微分算子。与通过基函数互相关得到的线性算子类似,微分算子是线性的,近似于局部特征。与流形上的互相关(cross-correlations)不同,网格上的微分算子可以利用有限元基或离散外演算来高效地计算。在下面的实际实现中,我们选择恒等式(I,零阶微分,同∆00)、两个正交空间维度的导数(∇x,∇y,一阶微分)和拉普拉斯算子(∇2,二阶微分)
公式3
这就组成了这一部分,即变量自身,变量的二方向一阶导,两个方向的二阶导:
概述
这种方法的科学之处在于,对大气环流的一阶导的计算体现了动量守恒,二阶导的计算体现了大气中的力学(压强力,科里奥利力,重力,摩擦力)。对于球体,文章选择了东西向和南北方向作为x和y分量,因为极点自然地确定了球面信号的方向。网格上的拉普拉斯算子可以用余切公式离散化:
公式4
之后,加入多层残差网络构建成mesh_block:
图片2
其中,N (i)是i的相邻单环上的节点,Ai是对应于节点i的对偶面面积,αij和βij是对边ij的两个角。 有了卷积核的这种参数化,参数可以类似地通过使用标准随机优化例程的反向传播进行优化。x与y对应了文章代码中球面mesh的NS与EW分量
图片3

2.生成球面网格

生成球面主要依据二十面体icosphere方法,该方法的特点是先生成一个二十面体,接着在每个三角形的棱的中点相连,生成四个新的三角形,接着重新将这些三角形和点映射到球面上,保持一个均匀的形状。
图片4
这一部分的C++代码可以写为

SurfaceMesh icosphere(size_t n_subdivisions)
{
  auto mesh = icosahedron();
  SurfaceSubdivision subdivision(mesh);
  for (size_t i = 0; i < n_subdivisions; i++)
  {
    subdivision.loop(); //分形
    project_to_unit_sphere(mesh); //重映射
  }
  return mesh;
}

这部分主要由libigl提供支持
图片5
首先是导入包方面,该部分代码主要由libigl提供,文章代码使用的是pyigl,但是2020年libigl团队重构了代码并统一改成了igl。遗憾的是,重构后的代码使用方法已经与pyigl有巨大的偏差,因此该部分需要重构该文章代码或者想办法找到pyigl的包以及使用python3.5环境。该环境可以通过docker进行简单的部署:

docker pull gilureta/pyigl

关于构建mesh的代码,我们对之进行解析:
mesh
接着看分形:
分形
以及重映射:
重映射
而最初的二十面体由这部分代码构建:

二十面体
其他的细节部分函数这里不一一列举了,主要负责提供一些矩阵运算的辅助。我们通过以下指令来生成多次迭代出来的网格:

import numpy as np

import mesh

icos = mesh.export_spheres([0,1,2,3],'./')

这样就可以生成4阶的二十面体网格。

三、实验对比

文章首先对比了参数量以及参数的效率:
实验
由于有参数化的卷积核,因此可以预料到参数量有所增加,但是由于球面卷积取得的高性能,因此这些增加反而大大提升了参数的效率。

此外,文章还对不同球面任务进行了对比:

球面
可以看到取得的性能还是不错的。

最后文章在气候预测方面进行了实验与消融实验:气候

这一部分的结果反而比较粗糙,有待进一步开发与研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值