Spatial Transformer Networks(STN)-论文笔记

Posted Paul-Huang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spatial Transformer Networks(STN)-论文笔记相关的知识,希望对你有一定的参考价值。

Spatial Transformer Networks(STN)-论文笔记

  • 论文: Spatial Transformer Networks
  • 作者:Max Jaderberg Karen Simonyan Andrew Zisserman Koray Kavukcuoglu
  • code1:https://github.com/oarriaga/STN.keras
  • code2:https://github.com/kevinzakka/spatial-transformer-network

1. 问题提出

  1. CNN在图像分类中取得了显著的成效,主要是得益于 CNN 的深层结构具有 : 平 移 不 变 性 、 缩 小 不 变 性 \\colorred平移不变性、缩小不变性 ;还对缺失的 空 间 不 变 性 ( s p a t i a l l y    i n v a r i a n c e ) \\colorred空间不变性(spatially\\;invariance) spatiallyinvariance做了相应的实验。

    • 平 移 不 变 性 平移不变性 主要是由于 Pooling 层 和 步长不为1的卷积层 的存在带来的。实际上主要是池化层的作用:
      • 层越多,越深,池化核或卷积核越大,空间不变性也越强;
      • 但是随之而来的问题是局部信息丢失,所以这些层越多准确率肯定是下降的,所以主流的CNN分类网络一般都很深,但是池化核都比较小,比如2×2。
    • 缩 小 不 变 性 缩小不变性 主要是通过降采样来实现的。降采样比例要根据数据集调整,找到合适的降采样比例,才能保证准确率的情况下,有较强的空间不变性。
      • 比如ResNet,GoogLeNet,VGG,FCN,这些网络的总降采样比例一般是 16或32,基本没有见过 64倍,128倍或者更高倍数的降采样(会损失局部信息降低准确率),也很少见到 2倍或者4倍的降采样比例(空间不变性太弱,泛化能力不好)。
  2. 空 间 不 变 性 ( s p a t i a l l y    i n v a r i a n c e ) \\colorred空间不变性(spatially\\;invariance) spatiallyinvariance这些不变性的本质就是图像处理的经典手段:空间变换,又服从于同一方法:坐标矩阵的仿射变换。因此DeepMind设计了 S p a t i a l    T r a n s f o r m e r    N e t w o r k s \\colorredSpatial\\;Transformer\\;Networks SpatialTransformerNetworks(简称STN),目的就是显式地赋予网络对于以上各项变换(transformation)的不变性(invariance) .

2. 图像处理技巧

2.1 仿射变化

主要是要处理 ( 2 × 3 ) (2\\times 3) (2×3)的变换矩阵:
T θ = [ θ 11 θ 12 θ 13 θ 21 θ 22 θ 23 ] (2.1) \\mathcalT_\\theta = \\beginbmatrix \\theta _11 & \\theta _12 & \\theta _13 \\\\ \\theta _21 & \\theta _22 & \\theta _23 \\endbmatrix\\tag2.1 Tθ=[θ11θ21θ12θ22θ13θ23](2.1)

  • 平移:
    [ 1 0 θ 13 0 1 θ 23 ] [ x y 1 ] = [ x + θ 13 y + θ 23 ] (2.2) \\left[\\beginarrayccc 1 & 0 & \\theta_13 \\\\0 & 1 & \\theta_23 \\endarray\\right]\\left[\\beginarraylx \\\\y \\\\1 \\endarray\\right]=\\left[\\beginarrayl x+\\theta_13 \\\\y+\\theta_23 \\endarray\\right]\\tag2.2 [1001θ13θ23]xy1=[x+θ13y+θ23](2.2)

  • 缩放:
    [ θ 11 0 0 0 θ 22 0 ] [ x y 1 ] = [ θ 11 x θ 22 y ] (2.3) \\left[\\beginarrayccc \\theta_11 & 0 & 0 \\\\0 & \\theta_22 & 0 \\endarray\\right]\\left[\\beginarraylx \\\\y \\\\1 \\endarray\\right]=\\left[\\beginarrayl \\theta_11 x \\\\\\theta_22 y\\endarray\\right]\\tag2.3 [θ1100θ2200]xy1=[θ11xθ22y](2.3)

  • 旋转:
    对于旋转操作,设绕原点顺时针旋转 α \\alpha α 度,坐标仿射矩阵为:
    [ cos ⁡ ( α ) sin ⁡ ( α ) 0 − sin ⁡ ( α ) cos ⁡ ( α ) 0 ] [ x y 1 ] = [ cos ⁡ ( α ) x + sin ⁡ ( α ) y − sin ⁡ ( α ) x + cos ⁡ ( α ) y ] (2.4) \\left[\\beginarrayccc \\cos (\\alpha) & \\sin (\\alpha) & 0 \\\\ -\\sin (\\alpha) & \\cos (\\alpha) & 0 \\endarray\\right]\\left[\\beginarraylx \\\\y \\\\1 \\endarray\\right]=\\left[\\beginarrayc\\cos (\\alpha) x+\\sin (\\alpha) y \\\\-\\sin (\\alpha) x+\\cos (\\alpha) y \\endarray\\right]\\tag2.4 [cos(α)sin(α)sin(α)cos(α)00]xy1=[cos(α)x+sin(α)ysin(α)x+cos(α)y](2.4)

    由于图像的坐标不是中心坐标系,通常需要做Normalization,把坐标调整到 [ − 1

    以上是关于Spatial Transformer Networks(STN)-论文笔记的主要内容,如果未能解决你的问题,请参考以下文章

    Spatial Transformer Networks(STN)-论文笔记

    stn,spatial transformer network总结

    论文笔记-5Spatial Transformer Networks(STN)

    Spatial Transformer Networks(STN)-代码实现

    Spatial Transformer Networks(STN)-代码实现

    通俗易懂的Spatial Transformer Networks(STN)