0 写在前面

在对原文进行了翻译,以及参考了别人的一些博客后,lz打算提炼一下自己对STN的理解,后续有更深入的认识后会不断地增加内容。

1 STN的创新点

单纯的CNN对于图像的transformation(旋转、缩放、大尺度平移)是不具有invariance的。而这篇论文创新性地提出了一种spatial transformer(ST)结构,一定程度上赋予了CNN transformation invariance,算是STN领域的开山之作了,谷歌引用3400+。

2 ST的工作原理

[论文理解]Spatial Transformer Networks

图1 ST的结构

含有ST的CNN叫做STN。ST可以被插入到CNN的任何深度,比如图像输入端,或者是中间的特征层。数量也是没有限制的。

1.U是一个输入图,可以是初始输入图像,也可以是CNN中间特征层。

2.Localisation net(本地网络)是一个神经网络,比如是CNN或全连接层。无论是什么形式,Localisation net最后都会有个回归层,否则无法输出参数 θ \theta θ。工作时,前一步的U被丢到Localisation net中,回归得到参数 θ \theta θ θ \theta θ的size是人为指定的(比如仿射变换需要6个参数,投影变换需要8个参数等等), θ \theta θ的value决定了后续在U上采样时采样框的形状。:训练开始前,Localisation net中的参数是随机初始化的,其参数是随整个任务的loss而改变的,不需要拿出来单独训练,因此ST是unsupervised的。

3.不管怎么说,我们回归得到了某个参数 θ \theta θ。现在我们的目标是对输入图U进行旋转、缩放等变换,得到一个适合CNN后续处理的输出图V。注意,V的size是提前指定的,比如说,我可以指定输出图V为128*128 pixels 这样的尺寸。现在看图2,图中的G是一个点集,包括了V上的所有点,但是G中的点(V中的点)只有对应的坐标,没有值。然后 T θ {T_\theta } Tθ呢,是一个由参数 θ \theta θ控制的变换。这里解释下, θ \theta θ是前面回归得到的参数,T是某种变换方式,如仿射变换等。二者组合,就有了 T θ {T_\theta } Tθ T θ {T_\theta } Tθ作用在V上的一个个点,也就是作用在G上,就把G映射到了图2中的一个个绿色点—— T θ ( G ) {T_\theta }\left( G \right) Tθ(G),这个过程是由Grid generator完成的。

4.接着,这些绿色点将以某种方式对输入U进行采样(比如直接取整采样,二次线性插值采样等,可以去看原文的数学公式或其他博客的介绍),因此每个绿色点就有了一个value。由于绿色点和输出图V中的点(也就是G中的点)是一一对应的,因此就得到了V图上每一个点的值,从而V有了输出值。事实上,绿色点对U进行采样的过程就是图1中Sampler做的事情。

[论文理解]Spatial Transformer Networks

图2 采样网格的形成

相关文章: