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. [c#基础]使用抽象工厂实现三层

    引言 昨天加了一天班,今天闲来无事,就在想如何将之前的三层和最近一直在学的设计模式给联系在一起,然后就动手弄了个下面的小demo. 项目结构 项目各个层实现 Wolfy.Model层中有一个抽象类Ba ...

  2. 【转载】Java并发编程:volatile关键字解析 by 海子

    volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...

  3. 《实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)》

    <实战突击:PHP项目开发案例整合(第2版)(含DVD光盘1张)> 基本信息 作者: 徐康明    辛洪郁 出版社:电子工业出版社 ISBN:9787121221378 上架时间:2014 ...

  4. Visual Studio 2012连接TFS2010登录不了

    一直用VS2012+TFS2010开发项目, 最近几天忽然很不正常, 在VS中会频繁要求输入TFS的账号密码, 经常要输入很多遍才可以正常连接签入签出. 这几天更甚, 基本上直接连接不了了. 网上找到 ...

  5. cocos2d-x v3.0新特性及使用

    八月份cocos2d-x官网发布了v3.0版本,这次更新的内容特别多,包括2dx的架构以及使用 总得来说,给开发者带来了很大的便利: 运行环境需求: Android 2.3 or newer iOS ...

  6. ContextLoaderListener 与 ServletDispatcher

    网上找了一下关于ContextLoaderListener和ServletDispatcher的解释,这是原文 http://simone-folino.blogspot.com/2012/05/di ...

  7. PostgreSql 合并多行记录

    需求描述: A表有如下数据 id 1 2 3 4 B表有如下数据 id name 1 aaa 1 bbb 1 ccc 2 aa 2 bb 3 c A表和B表通过id关联,需要查询结果如下: id na ...

  8. Vue组件开发实践之scopedSlot的传递

    收录待用,修改转载已取得腾讯云授权 导语 现今的前端开发都讲究模块化组件化,即把公共的交互和功能封装到一个个的组件之中,在开发整体界面的时候就能像搭积木一样快速清晰高效.在使用Vue开发我们的vhtm ...

  9. js看起来比较怪异的写法 (综合)

    1.$(function() {}中$是什么意思? <script type="text/javascript"> $(function(){ $("#tre ...

  10. Unable to create requested service org.hibernate.cache.spi.RegionFactory

    hibernate 4.3.11+struts2.3.28.1+spring 4.2.5,在搭框架的时候,报的这个错误: Unable to create requested service org. ...