《STN:Spatial Transformer Networks》论文笔记
1. 概述
由于CNN网络在计算量和参数有效性上的原因,限制了网络对输入数据的空间变换不变性。因此本文提出了一种新的网络模型——Spatial Transformer,它使得可以在网络内部操作和变换数据。并且可以集成到现有的网络中去,使得神经网络在特征图的基础上,在空间上主动变换特征图,而不需要对优化过程进行任何额外的训练监督或修改。结果表明,空间变换的使用使模型学习到平移、缩放、旋转和更一般的扭曲等不变性,并且在一些先进的分类网络中已经取得了不错的效果。
尽管CNN网路中的Pooling操作会使得网络在一定程度上具有空间不变性,但是这样的机制只是在固定和局部的感受野上进行的,而本文提出的方法是在全局输入图像或是feature map上做动态空间变换,产生对于每个输入合适的变换,这些变换包括了尺度、剪裁、旋转以及非刚性变换。该网络结构是能投通过反向传播进行参数更新的,因而是一种端到端的网络模型。
本文中提出的新的网络结构可以被运用到多重任务中去 :
1)图像分类:由于变换模块自带的变换可以对输入进行变换这样就使得图像分类更加鲁棒和准确。见下图1;
2)co-localisation:空间变换网路可以在每张图像上去定位每个目标;
3)空间注意力机制:该模型可以被运用在需要attention的地方,只需要反向传播就可以实现,并不需要增强学习;
2. Spatial Transformers
这里的变换网络其结构如下所示:
从上图中可以看出一个Spatial Transformer模块由三步部分组成,按照计算的顺序可以罗列如下:
1)Localisation net:这部分是使用一些隐藏的网络层去产生空间变换的参数;
2)Grid Generator:该网格生成器是在生成的参数的基础上在输入上生成采样网格,这些采样网格是一系列的点集合,输入feature map通过这些映射生成对应的结果,也就是说在输出上反向去寻找对应在上的像素;
3)Sampler:这里使用之前得到坐标对应关系将feature map输入与采样网格作为输入产生最后的输出,期间采样的方式可以使用诸如:双线性变换等;
2.1 Localisation net
这部分其实是一个函数,其中生成参数的尺寸(维度)是可以通过参数来设定的,比如说affine变换的参数就是6维的。这里的函数可以通过全连接,或是通过卷积及一些回归层实现。
2.2 Parameterised Grid Generator
这个部分的功能就是通过前一个分布的输出参数去产生输入到的映射,之后再交给Sampler去处理。这里根据采样网格是通过参数进行设置的,下面是使用不同参数得到的变换结果:
对于2D的affine变换其变换被描述为:
这里是输出中的第个像素,这时的尺寸不一定等于的尺寸,因为经过变换了嘛。是输出中的第个像素,相当于是记录了输出中的像素应该在中哪儿去寻找,至于具体怎么取值,就交给Sampler了。
2.3 Differentiable Sampler
在上面一步中已经记录了到的坐标对应关系,在对应位置上的取值并不是直接进行取值的,计算出的对应关系可能是存在小数的。那么文中呢给出了一个通用的计算函数:
其中是在通道位置为上的像素值,是一个计算核。其功能就是在的映射位置上生成上对应的输出。论文给出了两种计算的方式,个人还是倾向于双线性的形式:
下面是梯度传递的计算:
3. 实验
3.1 扭曲MNIST
文章现在扭曲的MNIST数据集上做了实验,得到的实验分类错误率如下:
其中:FCN代表的是全连接网络。RTS(rotation,translation,scale)分别代表旋转、平移与尺度变换,P(projective transformation)与Proj投影变换,E(elastic warping)弹性扭曲变换,Aff(Affine transformation)仿射变换,TPS(thin plate spline spatial transformers)薄板样条变换。其中可以看到机遇ST-CNN的TPS性能表现是最好的。
3.2 街景门牌号识别
使用文章提出的方法在街景门牌号数据集上进行实验,得到的实验结果(错误率)如下图左所示:
其中,ST-CNN Single代表ST模块中的定位网络是由4层卷积得到的;ST-CNN Multi是由两层全连接网络得到的。右图(a)是ST-CNN Multi的网络结构。
4. 个人总结
STN模块是从空间变换的角度提升网络的性能,既是通过不同的变换丰富输入数据的情形,也通过反向学习去产生适合输入的变换参数,使得网络变得鲁棒。后序的具体使用再在实践中去摸索吧。