Submanifold Sparse Convolutional Networks

学习文章Event-based Asynchronous Sparse Convolutional Networks涉及到本文的稀疏卷积操作。

关注点

目前卷积网络主要对密集输入进行处理,但是现实中有许多数据是稀疏的,作者提出了稀疏卷积操作用于处理系数点,该卷积可以在子流形结构上进行操作。

1.Motivation

1.1子流形膨胀

在这里插入图片描述
如图所示,一维的源泉在二维平面上进行卷积操作时,发现随着卷积层数的增加,输出的特征图的稀疏性会迅速消失。

子流形用于表示稀疏数据,因为它的有效维数低于它所在的空间,例如二维空间的一维曲线或者三维空间中的二维曲面

1.2 SC和VSC

Sparse Convolution(SC):

表示为SC(m,n,f,s),其中m表示输入特征平面(通道数),n表示输出的特征平面(channel),f表示filter size,s表示步长。其中f可以为non-square的,例如1x7或者7x1大小。
SC与普通卷积不同之处主要在于,它假设非活跃位点的输入恰好为0,从而丢弃了基态(ground state)。

  • SC的输入输出变化:输入大小为l时,输出为(l-f+s)/s;
  • 普通卷积的输入输出变化:输入大小为l时,输出为(l-f+2p)/s+1。
  • 对于active site而言。对于之后的层,如果一个site的感受野中存在actives site, 那么这个site为active site,与普通卷积的操作相同;
    -对于non-active site,将这些site的基态(第一层的输入)直接设置为0,这样input与kenel weight相乘时,输出还是为0,则non-activte site在计算时相当于被丢弃。

Valid Sparse Convolution
VSC可以表示为VSC(m,n,f,1),是之前提到的SC(m,n,f,1)的变体。

  • VSC的输入输出变化,由于VSC使用了大小为(f-1)/2的padding,因此输入和输出的大小相同
  • active site,对激活site进行限制(比如,下一层site的接收域中的中心site为激活的,该site才是激活的);SC的计算中,只要site的感受野中存在activate site,该site就会被看做active site。
  • non-active site 与SC操作相同。

其他组件

使用SV或VSC构建的卷积网络会使用激活函数、BN层和pooling等组件

  • 对于激活函数和BN,操作只对active site使用;
  • 对于avg pooling,取active输入向量的和除以感受野的大小,不考虑non-active site;
  • 对于max-pooling 取感受野内的最大值

2.网络构建

2.1几个重要的模块架构

子流形卷积网络(Submanifold Convolutional Networks)
在这里插入图片描述
本文使用了VSC、跨步SC和稀疏pooling算子等组件构建了一些改进的VGG、ResNet、DensNet等组件,其具体结构如上图所示。
(a)为VGG模块,由两个VSC和一个max pooling组成;
(b) 输入和输出分辨率不变的ResNet模块,将两个VSC卷积添加到输入
©Resnet模块:输出的分辨率比输入的分辨率小;第一个VSC模块被跨步SC模块替代
(d)Densnet模块:维持输入和输出分辨率,将经过两个VSC模块的输出与输入concatenate;
(f)Densnet模块:减小分辨率,一个VSC模块和一个avg pooling相连

2.2网络构建过程

为了有效实现SC/VSC矩阵,使用hash table和矩阵储存输入/隐藏层的状态
(1)input matrix:每一行存放输入的active site的特征值;若输入大小为axm,表示active sites的个数为a,每个site特征值的个数为m
(2)input hash table:保存一个(location,row),location为整数坐标的元祖,对于图像数据来说,为二维坐标(x,y);row表示input matrix中对应的行数
(3)定义了rule book每一个filter都有一个rule book,假设记录为Ri,里面的每一行存放的均为输入和输出对应的关系矩阵,通过rule book可以找到输入 activate site对应的输出 activate site;例如,Ri中某一行存放的为(5,6),可以表示为input matrix的第5行对应out matirx的第6行。
(4)output matirx和output hashtable
与输入类似

实现SC(m,n,f,s)操作

输入层的matrix和hash table可以直接构建;

  • 根据输入构建输出的hash table和rule book;如果一个output site为active site,且为第一次访问时,输出hash table中会建立一个新的条目,记录输入和输出的对应关系;每个滤波器均对应一个rule book;
  • 首先将输出的matrix置为0;从rule book中找到一堆active pairs:(input index,output index)。从输入matrix得到输入,输入matrix的每一行均对应一个大小为1xm的site,filter weight的大小为mxn,二者相乘得到一个大小为1xn的输出值,将输出值写入output对应的行中。
    由于访问的仅为active site,因此non-active site的值仍然是0.

VSC操作而类似

参考文献

https://zhuanlan.zhihu.com/p/97367489

猜你喜欢

转载自blog.csdn.net/space_dandy/article/details/108243274
今日推荐