Spatial Transformer Network

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

原文地址:https://www.cnblogs.com/Allen-rg/p/9728998.html

时间: 2024-10-30 06:05:01

Spatial Transformer Network的相关文章

spatial transformer networks 这篇论文

大致看了看这个paper, 很novel. 我的观点: 在traditional convolutional neural netwoks 中,我们通常会depend 于 extracting features.       而本paper把 hand-crafted 和 feature extraction 结合在了一起,用于处理 invariance of various inputs. spatial transformer 可以包括:平移.旋转.放缩等操作.      在数学上的名称有:

【论文笔记】Spatial Transformer Networks

参考文献:**Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[C]//Advances in Neural Information Processing Systems. 2015: 2017-2025. 摘要 卷积神经网络(CNN)已经被证明能够训练一个能力强大的分类模型,但与传统的模式识别方法类似,它也会受到数据在空间上多样性的影响.这篇Paper提出了一种叫做空间变换网络(Spatial Transfor

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

Reference:Spatial Transformer Networks [Google.DeepMind]Reference:[Theano源码,基于Lasagne] 闲扯:大数据不如小数据 这是一份很新的Paper(2015.6),来自于Google旗下的新锐AI公司DeepMind的三位剑桥Phd研究员. 他们针对CNN的特点,构建了一个新的局部网络层,称为空间变换层,如其名,它能将输入图像做任意空间变换. 在我的论文[深度神经网络在面部情感分析系统中的应用与改良]中,提出了一个有趣观

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

Optical Flow Estimation using a Spatial Pyramid Network spynet 本文将经典的 spatial-pyramid formulation 和 deep learning 的方法相结合,以一种 coarse to fine approach,进行光流的计算.This estiamates large motions in a coarse to fine approach by warping one image of a pair at

Spatial Transformer Networks

参考:http://blog.csdn.net/xbinworld/article/details/69049680 论文的关键在理解这句话: 先通过V中坐标(xtarget,ytarget)以此找到它在U中的坐标,然后再通过双线性插值采样出真实的像素值,放到(xtarget,ytarget).

【论文笔记】Text-Recognition_简略版_201606

[1]Shi B, Wang X, Lv P, et al. Robust Scene Text Recognition with Automatic Rectification[J]. arXiv preprint arXiv:1603.03915, 2016. 上图即为本篇论文的系统框架:包括 Spatial Transformer Network (STN ) 以及 Sequence Recognition Network (SRN ) 两个网络结构.其中, STN 通过 Thin-Pla

human pose estimation

2D Pose estimation主要面临的困难:遮挡.复杂背景.光照.真实世界的复杂姿态.人的尺度不一.拍摄角度不固定等. 单人姿态估计 传统方法:基于Pictorial Structures, DPM ? 基于深度学习的算法包括直接回归坐标(Deep Pose)和通过热力图回归坐标(CPM, Hourlgass) 目前单人姿态估计,主流算法是基于Hourlgass各种更改结构的算法. 多人姿态估计 二维图像姿态估计基于CNN的多人姿态估计方法,通常有2个思路(Bottom-Up Appro

pointnet

无序性:虽然输入的点云是有顺序的,但是显然这个顺序不应当影响结果.点之间的交互:每个点不是独立的,而是与其周围的一些点共同蕴含了一些信息,因而模型应当能够抓住局部的结构和局部之间的交互.变换不变性:比如点云整体的旋转和平移不应该影响它的分类或者分割 图片中"mlp"代表"multi-layer perceptron"(多层感知机).其中,mlp是通过共享权重的卷积实现的,第一层卷积核大小是1x3(因为每个点的维度是xyz),之后的每一层卷积核大小都是1x1.即特征提

可变形的卷积网络

机器学习_深度学习_入门经典(博主免费教学视频系列) https://study.163.com/course/courseMain.htm?courseId=1006390023&share=2&shareId=400000000398149 本文链接:https://blog.csdn.net/yeler082/article/details/78370795原文链接:Deformable Convolutional Networks 代码链接:https://github.com/m