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

Spatial Transformer Network的更多相关文章

  1. stn,spatial transformer network总结

    对整篇paper的一个总结:https://blog.csdn.net/xbinworld/article/details/69049680 github:1.https://github.com/D ...

  2. Spatial Transformer Networks(空间变换神经网络)

    Reference:Spatial Transformer Networks [Google.DeepMind]Reference:[Theano源码,基于Lasagne] 闲扯:大数据不如小数据 这 ...

  3. spatial transformer networks 这篇论文

    大致看了看这个paper, 很novel. 我的观点: 在traditional convolutional neural netwoks 中,我们通常会depend 于 extracting fea ...

  4. 深度学习方法(十二):卷积神经网络结构变化——Spatial Transformer Networks

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.机器学习技术感兴趣的同学加入. 今天具体介绍一个Google ...

  5. STN(Spatial Transformer Networks)

    url: https://arxiv.org/abs/1506.02025 year:2015 blog: https://kevinzakka.github.io/2017/01/10/stn-pa ...

  6. [论文理解] Spatial Transformer Networks

    Spatial Transformer Networks 简介 本文提出了能够学习feature仿射变换的一种结构,并且该结构不需要给其他额外的监督信息,网络自己就能学习到对预测结果有用的仿射变换.因 ...

  7. 论文笔记之:Optical Flow Estimation using a Spatial Pyramid Network

    Optical Flow Estimation using a Spatial Pyramid Network   spynet  本文将经典的 spatial-pyramid formulation ...

  8. 论文笔记:空间变换网络(Spatial Transformer Networks)

    2015, NIPS Max Jaderberg, Karen Simonyan, Andrew Zisserman, Koray Kavukcuoglu Google DeepMind 为什么提出( ...

  9. (转载)理解Spatial Transformer Networks

    理解Spatial Transformer Networks 转载于:知乎-SIGAI 书的购买链接 书的勘误,优化,源代码资源 获取全文PDF请查看:理解Spatial Transformer Ne ...

随机推荐

  1. android 高清壁纸设置慢

    由于项目的需要最近在解决一个 bug  在1080p 的手机上面设置壁纸会很慢慢,慢的原因是和壁纸 的大小 有关,壁纸越大,时间直越长,一般1080 p 的壁纸大概有10M左右, 所以通过文件流 来保 ...

  2. cocos3.0使用cocostudio动画帧结合地图对象键值创建精灵动画

    内容例如以下: #include "cocos2d.h" #include "cocostudio/CocoStudio.h" //精灵猫和其它精灵的tag t ...

  3. 使MySQL对表名不区分大小写

    今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区 ...

  4. pm2-web

    A web based monitor for PM2. Multiple hosts With the release of 0.11 pm2 no longer uses TCP sockets ...

  5. iOS 改动toolbar里面文字的字体和大小

    使用NSDictionaty来设置文本的属性: NSDictionary * attributes = @{NSFontAttributeName: [UIFont fontWithName:@&qu ...

  6. Android Binder总结

    1. MediapplayerService 的启动,怎样在ServiceManager注冊的,不解说详细的细节 ServiceManager 是整个系统的Service总管,其余的系统服务都是通过d ...

  7. There is no Action mapped for namespace [/] and action name [Login] associated with context path [/e

    近期学习web开发时,就遇到这个令人头疼的问题. 百度谷歌了N遍,最终在博客http://blog.csdn.net/liu578182160/article/details/17266879中找到了 ...

  8. Ext 的Ajax 请求,添加mask 等待效果

    { text: "删除", iconCls: "btn-del", scope: this, handler: function() { var f = thi ...

  9. Junit Hamcrest Mockito单元测试

    pom.xml配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  10. JS实现的MAP结构数据

    Array.prototype.remove = function(s) { for (var i = 0; i < this.length; i++) { if (s == this[i]) ...