[Paper Weekly]CNN采样方法:空间变换网络(STN)与可变形卷积网络(DCN)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Paper Weekly]CNN采样方法:空间变换网络(STN)与可变形卷积网络(DCN)相关的知识,希望对你有一定的参考价值。
参考技术A 卷积神经网络(CNN)是一种强大的非结构化数据抽象特征抽取模型,其最基本的结构卷积层为一个权值共享矩阵,但是在不考虑池化(pooling)层的情况下,单纯的卷积操作对图像的仿射变换(平移、缩放、剪切、旋转)缺乏不变性。这种缺陷与CNN默认的采样方法(矩阵采样)有很大的关系。所以,为了使网络获得对仿射变换的不变性,通常采用了改变 采样方式 的做法(如采用pooling方式的采样使网络获得了一定的平移、缩放、剪切不变性和较小的旋转不变性)。
在以往的卷积网络中,采样方式通常以强先验的方式直接给出(如基于hough变换的位置修正),但是显然强先验的方式通用性较差,我们看到基于矩阵的pooling只能通过数据增强的方式获得对旋转的识别能力。很容易联想到,基于学习的启发式采样,可能是一种更通用的采样方式。本文将介绍两篇启发式采样方面的相关工作:空间变换网络(STN)和可变形卷积网络(DCN)。
《Spatial Transformer Networks》是一篇2015年deepmind的研究。这篇文章提出了一种以启发式仿射变换矩阵为基础的结构来为网络提供一定的空间不变性。
有点懒,待补充
正如前文所说,通过仿射矩阵可以求得特征矩阵上的点在经过特定仿射变换后对应输出的位置,通过双线性插值,我们可以得到一个新的特征矩阵。我们可以通过学习来设定仿射矩阵的参数,从而通过仿射矩阵对特征矩阵进行有效归一,我们称其为空间变换器(Spatial Transformers)。来论文的第一部分,只介绍了单变换器(即对一个feature map只有一个仿射矩阵)。
空间变换结构包含三个部分:
通过以上三个结构,就形成了了一个空间变换器。该结构可以背放在卷积网络的任意位置,通过训练学习如何得到最有效的变换方式。
STN的基本原理大致就是这样,文章之后还讨论了multiple spatial transformers、 半监督的co-localisation、higher dimensional transformers等应用形式。
STN网络确实是一个好的想法,但是比较怀疑这种针对全局的变换在比较复杂的任务(如分类较多时)中是否依然有效。
《Deformable Convolutional Networks》是一篇2017年Microsoft Research Asia的研究。基本思想也是卷积核的采样方式是可以通过学习得到的。作者提出了两种新的op:deformable convolution和deformable roi pooling,主要是通过给传统卷积采样点加offsets的方式来获得新的采样点。
在传统的卷积中采样的grid为一个矩形,如对于一个3*3的卷积核来说,其grid为 :
在每一个输出feature map位置上做卷积操作:
用于加上offset后,位置可能会出现非整数的情况,故需要采用插值的方式(如二次线性插值)确定非整位置下对应的值:
在训练过程中,offset通过二次线性插值进行反向传播(见STN)。
Roi Pooling是detection中的一种方法,目的是将一个任意大小的feature map映射到特定大小的feature map上。在传统的Roi Pooling中:
Deformable Convolution和Deformable RoI Pooling两种结构都可以直接应用到conv网络中去,同时直接端到端训练达到启发式采样的目的。
STN和DCN两篇文章都提出了启发式的CNN采样方法。bilinear interpolation确实是个好方法,即解决了采样问题也解决了反向问题,实际实验里也确实work了。但是为什么会work,还是不明白。
两篇文章都是端到端的方法,非常有启发性,但是也都没有完全逃离传统采样,期待以后的工作。
以上是关于[Paper Weekly]CNN采样方法:空间变换网络(STN)与可变形卷积网络(DCN)的主要内容,如果未能解决你的问题,请参考以下文章
paper:A Deep Learning based Stock Trading Model with 2-D CNN Trend Detection 2D CNN模型
Paper Reading - CNN+CNN: Convolutional Decoders for Image Captioning