STN:Spatial Transformer Networks 空间变换网络

STN(Spatial Transformer Networks)是Google DeepMind在2015年提出的一种可学习的空间变换模块,允许卷积神经网络学习数据的几何变换,如平移、旋转和缩放。通过Localisation Network学习变换矩阵,Parameterised Sampling Grid确定位置映射,Differentiable Image Sampling进行插值计算输出像素值。STN作为独立模块可在任意网络位置插入,提供空间不变性,且计算效率高。
摘要由CSDN通过智能技术生成

在这里插入图片描述
文章是Google DeepMind在2015年提出的Spatial Transformer Networks(STN),该模型能够让卷积网络学会数据的形状变换,能够对经过平移、旋转、缩放及裁剪等操作的图片得到与未经变换前相同的检测结果。STN作为一种独立的模块可以在网络的任意位置插入使得网络具有空间不变性

文章链接:Spatial Transformer Networks
参考目录:
仿射变换和双线性插值:Spatial Transformer Networks
pytorch源码:SPATIAL TRANSFORMER NETWORKS TUTORIAL
完整且详细的STN讲解:
论文笔记之STN
Spatial Transformer Networks
理解Spatial Transformer Networks
论文笔记:空间变换网络

Abstract

卷积神经网络缺乏对输入数据保持空间不变的能力,导致模型性能下降。虽然CNN中引入池化层有助于满足这一特性,但这种空间不变性仅能在池化矩阵的范围内才具有平移不变性或者在卷积的深层层次上实现。在这篇文章中,作者提出了一种新的可学习模块,STN。这个可微模块可以插入现有的卷积结构中,使神经网络能够根据特征图像本身,主动地对特征图像进行空间变换,而不需要任何额外的训练监督或优化过程。

1 Introduction

  1. STN作为一种独立的模块可以在不同网络结构的任意节点插入任意个数
  2. STN具有运算速度快的特点,它几乎没有增加原网络的运算负担,甚至在一些attentive model中实现了一定程度上的加速。
  3. 同一个网络层中也可以插入多个STN来对于多个物体进行不同的空间变换。往往同一个STN模块仅用于检测单个物体并会对其他信息进行剔除。同一个网络层中的STN模块个数在一定程度上影响了网络可以处理的最大物体数量。

2 Method

网络总体结构可以分为三步走:学习一个变换矩阵 - 找到位置映射关系 - 计算输出像素值

  1. 学习变换矩阵。输入特征图像U,经过FCN或者CNN输出一个变换矩阵θ 。
  2. 根据变换矩阵θ ,找到映射位置关系,注意这里是位置的对应关系,与像素值无关。就是说我们遍历输出图像的所有位置,要找到每个位置的值是由输入图像的哪个位置的值映射过来的,找出输入图像中的这个位置。找出所有的位置对应关系。output feature position -> input feature position
  3. 利用插值算法根据位置映射计算像素值。第二步找到了输出图像在输入图像中的位置对应关系,但是可能有小数,所以使用插值算法算出这个插值点的像素值,赋给输出图像。position->score

总结一下:学变换,往前推找到输入图像中的位置,得到像素值再传回输出图像。

2.1 Localisation Network

  1. Localisation网络是将输入图像(feature map) U ∈ R H × W × C U∈R^{H×W×C} URH×W×C 经过若干卷积或全连接操作后接一个回归层输出一个变换矩阵 θ θ θ
  2. θ的尺寸可以根据参数的类型而变化。变换矩阵θ可以表征任何现存的一种变换,比如仿射变换 θ ∈
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值