https://blog.csdn.net/yaoqi_isee/article/details/72784881
Abstract:
作者说明了CNN对于输入的数据缺乏空间变换不变形(lack of spatially invariant ability to input data),因此作者引入了一个spatial transformer module,不需要额外的监督,能够以data-driven的方式学习得到输入图像的空间变换参数,赋予网络spatial invariant能力。
Introduction:
普通的神经网络通过max-pooling实现了一定程度上的translation invariance,但是这种不变形是通过网络的max-pooling层的堆叠实现的,对于网络内部的feature map来说,输入的图像如果进行了大范围的(平移)变换,feature map还是无法做到invariance(因为每一个max-pooling就只是2x2大小的模块,只能保证在2x2大小范围内的微小的变换,输出是不变的,通过堆叠这些2x2的池化单元,才能实现对大尺度平移变换的不变性)。
这篇文章中,作者提出了一个spatial transformer module(记为ST模块),这个模块对于任意输入的图像或者feature map,产生一个对应的spatial transform的参数,然后根据这个参数将原来的图像或者feature map做一个全局(而非局部)的空间变换,得到最终的canonical pose(也就是正正方方的图,比如原来物体是斜的,通过ST模块之后变成正的了)。
Spatial Transformer:
ST模块可以分成三个部分:localization network根据输入的feature map回归spatial transform的参数 θθ,然后用这个参数去生成一个采样的grid,最后根据这个grid以及输入的feature map得到输出的经过空间变换的feature map,如下图所示
Localization network
localization的网络输入一张feature map U∈RH×W×CU∈RH×W×C,输出 θ=floc(U)θ=floc(U), θθ 的size取决于我们预先定义的空间变换的类型,比如仿射变换的话,大小就是6维。
Parameterized Sampling Grid
有了空间变换的参数之后,我们就可以知道输出的feature map上的每一个点在输入的feature map上的位置了。比如说对于二维的仿射变换,我们可以建立输出feature map上的坐标和输入feature map上坐标之间的映射关系:
其中 (xti,yti)(xit,yit) 表示输出的feature map上的坐标,(xsi,ysi)(xis,yis) 表示输出feature map上坐标对应在输入feature map上的采样点坐标。
当我们把上面的参数特殊化之后,其实就可以model其他的变换,比如attention,crop,translation,以attention为例,参数为
Differentiable Image Sampling
知道了输出feature map在输入feature map上的采样点坐标之后,接下来就是要根据采样点的值确定输出目标点的值了。这里一般会用到kernel,以采样点为中心的kernel范围内的点对输出目标点的值都有贡献。
上式中,V表示输出特征图,i表示特征图的下标,c表示第c个channel,所有的空间变换对于各个channel都是一样的。H′,W′H′,W′ 表示输出的特征图的长宽。U表示输入的特征图,k表示预定义的kernel,xsi,ysixis,yis 表示采样点坐标,ΦΦ 表示kernel的参数。
一般常用的kernel为双线性插值kernel(根据输出feature map上规律的坐标值计算输入的feature map上采样点的坐标通常得到的坐标值是小数,所以可以用双线性插值计算采样点处的feature值),这个时候,上式就退化成
求导的话也很方便
根据采样点的坐标值可以继续对参数 θθ 求导,从而更新localization网络的参数。
Experiment
1.Distorted MNIST
作者首先在Distorted MNIST数据集上进行实验,主要存在以下几种空间变换:R(旋转)、RTS(旋转平移尺度变换)、P(投影变换)、E(弹性变换)
作者设置了两个baseline:fully-connected NN(FCN)以及convolutional NN(CNN)。
实验组加入了ST模块,分别是Aff(仿射变换)、Proj(投影变换)以及TPS(plate spline transformation)
实验结果如下所示:
表格中的数字表示不同的模型在不同的distorted mnist数据集上的错误率。可以看到加了ST模块的模型相比没有加ST的对照模型,错误率降低了。
右图中第一栏表示输入的distorted的图像,(b)栏表示根据 θθ 得到的sampling grid,(c)栏表示spatial transformer的输出。
3.Fine-Grained Classification
通过在一个网络里面加入多个ST模块,可以提高网络model各种空间变换的能力。作者在CUB数据集(the birds appear at a range of scales and orientations, are not tightly cropped)上进行了实验。
作者以state-of-art作为baseline
作者自己的网络采用了2个或者4个ST模块,模型如下图所示,ST模块用的是attention机制的:
通过locoliation网络预测两个 θθ,然后根据这两个 θθ 得到两个sampling的结果,分别取提取特征做分类。
上图表示CUB上的结果。可以看到2ST-CNN中一个集中在头部一个集中在身体。
---------------------
本文来自 yj_isee 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/yaoqi_isee/article/details/72784881?utm_source=copy
原文地址:https://www.cnblogs.com/Allen-rg/p/9728998.html