在ConvNN中,我们通常使用池化层来提供空间不变性,池化层可以将复杂的图像划分为cells,每个小网格监测信息描述输出,而不用关注其位置信息。
但是池化层有以下缺点:1)丢弃了75%的特征激活,使我们丢失位置信息,但视觉认知任务中这是非常重要的。2)池化是Local and predefined,小的感受野会影响网络更深的层,使中间特征图经受更大的输入失真,但增大感受野又会使下采样特征图太激进。
即由一个受限的预定义的池化机制处理空间变化,会导致CONVNET对于较大的输入失真并不具有不变性。
所以引入 spatial transformer network ,具有以下特点:
1)模块化:可以插入任何结构,只用作很小的调整。
2)可微分:对于他插入的端对端模型可以反向传播训练。
3)动态:相比于对所有输入样本作用相同的池化层,它对于每个输入样本执行active空间变换。
https://arxiv.org/abs/1506.02025
图像处理仿射变换步骤包括:
1)生成一个由坐标组成的采样网格,和图片维度一样。
2)应用变换矩阵到采样网格上。
3)从原始图像上使用插值技术采样生成的网格。
A:定位网络: 输出要用在输入特征图上的仿射变换的参数。
输入:(H,w,c)形状的特征图
输出:形如(6,)的变换矩阵
结构:完全连接网络或卷积层
B 参数化采样网格: Grid Generator输出一个参数化采样网格,是一组点,输入应该能被采样去生成想要的变换输出。
执行以下操作:
1)生成一个由坐标组成的采样网格,和图片维度一样。
2)应用变换矩阵到采样网格上。
C 可微图像采样:可以使用双线性插值采样或其他可微的采样。这一步即通过指明采样网格的形状进行上采样和下采样,
网络即是要学习这种最优的仿射变换参数。