Spherical Convolution

摘要

Spherical Convolution_第1张图片

本文主要围绕2D,3D卷积网络讨论一下Spherical Convolution(球核卷积),并展现其在3D模型特征提取上的优势。

2D Convolution

我们知道,常规做convolution都是以一个矩形作为卷积核,通过输入输出通道数来指定核数,超参数直接指定核大小

Spherical Convolution_第2张图片

这是最常用的卷积,但是图片是一个regular的input,而3D数据是irregular的,如果直接将2D卷积使用在3D的input中,会使得模型泛化能力较差,即使当今很多模型,如DGCNN,有一些spatial transform,或者说直接抛弃卷积,使用attention代替,但是CNN提取cv特征的能力是毋庸置疑的,于是,文章便提出了一种在3D数据利用Spherical Kernel进行卷积的网络。

3D Convolution

Spherical Convolution_第3张图片Spherical Convolution_第4张图片 

(不同颜色表示不同卷积核,图一表示每两帧使用同一卷积核,图二表示每帧使用两个卷积核)

上面讲到,对于image使用的是2D Convolution,但是对于一个连续的视频,我们不希望只是把每一帧当作一个image来2D Convolution,因此有了3D Convolution,不仅可以提取每一帧中的局部特征,还可以从时间维度上提取上下帧之间的特征信息,于是根据这个原理,也有网络将其用在了3D模型的特征提取上,但是只能用于低分辨率的体素网格中,也就是说首先得将一个点云模型转化到体素网格中,即使后来提出的高分辨率OctNet(3层八叉树结构存储某一划分空间特征)降低了计算成本,但这同样会导致内存的不必要损耗。

Spherical Convolution_第5张图片 网格卷积

Spherical Convolution_第6张图片

Spherical Convolution

Spherical Convolution_第7张图片下面先引入Spherical Kernel的概念, 首先是定义一个中心点x_{i},然后指定半径R做个球,转到球面坐标系来看,根据多组的\theta\phir将球体分成多个bin,然后同一个bin使用相同的一组w_{k},有了weight就可以对bin内的feature进行更新,自然就是w_{k}a_{j}(这里有\lambda*(bin+1)组w_{k},有一组是做self convolution的,图中的self-loop,乘本身的a_{i})。

 (但是要注意,对于邻域点使用的坐标是相对坐标,也就是)

注意这里有个\lambda,就类似控制卷积核数量的作用,记输入通道数为C_{in},输出通道数C_{out}=\lambda C_{in} 

Spherical Convolution_第8张图片

下面就可以做Sperical Convolution了,首先根据原文意思,记x_{j}\in N(x_{i})表示x_{j}x_{i}的邻域点,将所有更新的feature进行求和求平均,再经过一个非线性激活,就得到中心点新的feature了。

Spherical Convolution_第9张图片

这里的l表示层数,l-1自然就表示上一层,f(.)是激活函数。

优势

核的不对称性使得卷积运算中的点对之间不能共享权值,从而实现对点云几何细节的学习。将球面空间划分为多个bin,以确保始终保持不对称性。由此产生的分割也保证了核的平移不变性,类似于标准的CNN核。此外,与PointCNN[37]的卷积器不同,提出的核对点排列是不变的,因为它显式地合并了点对之间的几何关系。我们可以应用球面卷积核来学习空间域的深度特征。点卷积可以很容易地通过共享的MLP或使用任何现代深度学习库的1 × 1卷积实现。更准确地说,这两个卷积使我们的核执行可分离卷积。

注意,如果我们从球面核的中心径向移动到外围,我们会在R定义的每条边之后遇到相同数量的bins(本例中为16个),其中细粒度的bins位于靠近原点的位置,可以编码点的详细的局部几何信息。这与CNN3D内核形成了鲜明的对比,CNN3D内核必须保持所有细胞的大小不变,并依赖于增加的分辨率来捕捉更精细的细节。这使得他们的参数数量急剧增长,损害了可伸缩性。球形核的多尺度粒度(SPH3D)允许更紧凑的表示。为了证实这一点,我们使用表1中流行的基准测试数据集ModelNet40[20],简要介绍了CNN3D和SPH3D内核的分类。我们将在第5节进一步详细介绍数据集和实验设置。在这里,我们关注的是SPH3D中垃圾箱的不均匀粒度导致的表示紧凑性的单一方面。在表中,网络的唯一区别在于所使用的内核。所有其他实验细节对所有网络来说都是“完全”相同的。Network-1和network - 2使用CNN3D内核,分别将空间划分为3 × 3 × 3 = 27和5 × 5 × 5 = 125 bins。SPH3D内核将空间划分为8 × 2 × 2 + 1 = 33个bins。

这是论文原话,大概意思就是说,按一个球来划分bin,并且半径不同分出来的bin不均匀相比于全部均匀的小正方体效果更好,即使bin的数目较少于小正方体,而且这样划分,其中bin中不固定的点数,能更好的学习到模型的几何特征,大概大概吧。

关于Spherical Convolution的分享就到这里,下一篇到分享Spherical Message Passing。

参考 

[1]. 3D Convolutional Neural Networks for Human Action Recognition

[2]. 点云球核卷积:Spherical Kernel for Graph Convolution 

[3]. 3D CNN

[4]. Spherical Kernel for Efficient Graph Convolution on 3D Point Clouds 

[5]. 3D重建的进阶了解---深度图,网格,体素,点云是什么

[6]. OctNet: Learning Deep 3D Representations at High Resolutions 

你可能感兴趣的:(计算机视觉,人工智能,python)