转自:https://zhuanlan.zhihu.com/p/97367489
摘要
卷积处理的数据(比如图片)一般都是很dense的,但是有些数据是sparse的(比如点云数据,在纸上形成的笔画)。在这些稀疏数据上直接用dense的卷积网络是非常没有效率的。本文引入了一种稀疏卷积运算,该运算针对处理稀疏数据而定制,与之前的稀疏卷积网络的工作不同,该卷积仅仅是在在子流形结构上运行,而不是将观测扩展到网络的每一层(不是对网络的每一层进行扩张)。
作者的工作就是在不改变稀疏度的基础上,实现稀疏卷积。也就是只对有值的位置坐卷积。采用这种结构,最终可以以减少50%的空间消耗。
(总之就是一个很适合处理稀疏数据的卷积操作)
为什么不能用一般的卷积操作处理稀疏数据?
左: 原始输入,是一个手画的圆形, 是嵌入在二维网格(grid)上的一维曲线(curve)。
中:一次3x3卷积之后的结果
右:两次3x3卷积之后的结果
上图的输入是一个手写数字识别的例子,作者把上图表示出来的问题叫做submanifold dilation (子流形扩张)问题 ,可以看到原始数据是非常sparse的,但是用了传统卷积之后,特征图的稀疏性很快就消失了。特征就不会捕捉到该流型结构。
如果不是对所有的pixel进行卷积,只对白色的有curve的pixel进行卷积操作会怎么样?
结果就是,会丢失很多信息,没法分类。
注:作者把白色的这些有意义的pixel叫做active site
Very Deep Convolutional Networks
在卷积中,一般小的核比较适用于深层的网络结构,比如一些VGG,ResNet等结构,但是作者指出,这些结构都不能适用当前的稀疏卷积去实现,就是因为深度过深导致了感受野更大,随后模糊信息更严重,稀疏性减少,流型结构丢失。
什么是(submanifold)子流形?
We use the term ‘submanifold’ to refer to input data that is sparse because it has a lower effective dimension than the space in which it lives, for example a one-dimensional curve in 2+ dimensional space, or a two-dimensional surface in 3+ dimensional space.
我们使用术语“子流形”来表示输入数据是稀疏的,因为它的有效维数低于它所在的空间,例如二维空间中的一维曲线,或三维空间中的二维曲面。
稀疏卷积SC和VSC
作者提出两种卷积操作:SC 和 VSC。
(1)SC卷积操作
稀疏卷积操作sparse convolution,可以表示为SC(m, n, f, s), 其中m是input feature planes,我感觉应该就是输入特征channel数;n是输出特征channel数; f是filter size; s是stride。
其中 f 可以是non-square filter。传统的filter size一般是3x3, 5x5 …这里可以是1x7…可以用于实现inception的结构)
和一般的卷积最大的区别在于。如果一开始输入的数据中该ground state是 non-active的,那么最后的输出也是non-active的。它假定non-active sites的输入恰好为零,从而丢弃了non-active sites的ground state。
我感觉最关键的部分就是:
(2)VSC卷积操作
VSC结构是通过SC结构修改过来的,对于SC而言,可以出现输出的fea-map的大小和输入的不一样,但是对VSC来说则是一样的。作者首先是进行的一个padding操作,接着也限制了那些仅仅是只有在输入是active的,输出才能是activate。
(3)激活函数和pooling函数
(4)计算和内存开销
下图展示了active site和non-active site在传统卷积C,SC, VSC的计算和内存开销。
Context:filter size为3,对一个d维的single location进行卷积。
其中, a是active sites number, m是input channel number, n是output channel number。
用提出的卷积构建常用网络
用于构建子流形稀疏卷积网络的模块
实现过程
(3)VSC的实现过程
和SC不同的只是rule book的构建。
实验
在ModelNet-40数据集上的结果。
最后
结果可视化里面如果有个类似下面这样的图,更能表示使用SC/VSC不会降低数据稀疏性。
然而没有,试着自己可视化看看吧。
这篇文章没有发表,而是作为《3D Semantic Segmentation with Submanifold Sparse Convolutional Networks》的一部分后来发表的。
如果看不懂这篇文章的一些细节,没关系,去读写的更清楚详细的《3D Semantic Segmentation with Submanifold Sparse Convolutional Networks》。我有点吐血,写完这个才读了《3D Semantic Segmentation with Submanifold Sparse Convolutional Networks》,很多我猜出来的细节,在文章中就写明了,去读吧,清晰很多。
翻译:
https://blog.youkuaiyun.com/weixin_38087692/article/details/107400425?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-2&spm=1001.2101.3001.4242