1 STN (Spatial Transformer Network)
1.1 来源
论文来源:https://arxiv.org/pdf/1506.02025.pdf
参考博客:
1. https://blog.youkuaiyun.com/ly244855983/article/details/80033788(论文解读)
2. https://blog.youkuaiyun.com/xbinworld/article/details/69049680 (梯度流动图)
3. https://blog.youkuaiyun.com/l691899397/article/details/53641485(这里有caffe代码分析)
1.2 动机
普通CNN能够显式学习到平移不变性,隐式学习到旋转不变性、伸缩/尺度不变性(通常学的不够好),但是attention机制的成功告诉我们,与其让网络自己隐式学习某个能力,不如为它显式设计某个模块,让它更容易学习到这个能力。
因此,设计STN的目的就是为了显式地赋予网络以上各项变换(transformation)的不变性(invariance)。
1.3 网络结构

如上图所示,STN由Localisationnet(定位网络),Grid generator(网格生成器)和Sampler(采样器)三部分构成。
1. Localisation Net
Localisation Net 的目标是学习空间变换参数θ,无论通过全连接层还是卷积层,LocalisationNet 最后一层必须回归产生空间变换参数θ。
输入:特征图U ,其大小为 (H, W, C)
输出:空间变换参数θ(对于仿射变换来说,其大小为(6,))
结构:结构任意,比如卷积、全连接均可,但最后一层必须是regression layer来产生参数θ,记作θ= floc(U)
2. Grid Generator
该层利用LocalisationNet 输出的空间变换参数θ,将输入的特征图进行变换,这个决定了变换前后图片U、V之间的坐标映射关系。
以仿射变换为例,将输出特征图上某一位置(xit,yit)通过参数θ映射到输入特征图上某一位置(xis,yis),上标t表示target,上标s表示source,计算公式如下:
因此,GridGenerator的作用是,输入target坐标,计算输出source坐标,因为STN的目标是从source中的不同坐标采集灰度值“贴”到target中,从而实现target的变换。
举个例子,经过仿射变换,对原图产生了平移和旋转,使得原本倾斜的图片变正了,如下图所示:
3. Sampler
Sampler根据GridGenerator产生的坐标映射关系&#x