【论文笔记】Spatial Transformer Networks

文章来源:https://blog.csdn.net/shaoxiaohu1/article/details/51809605

参考文献:**Jaderberg M, Simonyan K, Zisserman A. Spatial transformer networks[C]//Advances in Neural Information Processing Systems. 2015: 2017-2025.

摘要

卷积神经网络(CNN)已经被证明能够训练一个能力强大的分类模型,但与传统的模式识别方法类似,它也会受到数据在空间上多样性的影响。这篇Paper提出了一种叫做空间变换网络(Spatial Transform Networks, STN),该网络不需要关键点的标定,能够根据分类或者其它任务自适应地将数据进行空间变换和对齐(包括平移、缩放、旋转以及其它几何变换等)。在输入数据在空间差异较大的情况下,这个网络可以加在现有的卷积网络中,提高分类的准确性。

—————— 
由于我之前的工作部分涉及到人脸对齐,所以看到这篇Paper异常激动。总觉得能用它做点什么。

算法介绍

1. 算法总流程

STN 主要可以分为三个部分:1)localisation network. 2) grid generator. 3) sampler. (中文我翻译不准确,大家意会下)。localisation network用来计算空间变换的参数 θθ,grid generator则是得到input map URH×W×CU∈RH×W×C到 output map 各位置的VRH×W×CV∈RH′×W′×C对应关系 Tθ, sampler根据input map UU 和 对应关系 Tθ,生成最终的output map. 流程图如图所示:

这里写图片描述

1.1 Localisation Network

它的作用就是通过一个子网络(全连接或者卷积网,再加一个回归层),生成空间变换的参数θθθθ 的形式可以多样,如需实现2D仿射变换,θθ 就是一个6维(2x3)向量的输出。

1.2 Parameterised Sampling Grid

假设UU (不局限于输入图片,也可以是其它层输出的feature map)每个像素的坐标为(xsi,ysi)(xis,yis), VV 的每个像素坐标为(xti,yti)(xit,yit), 空间变换函数 Tθ 为仿射变换函数,那么 (xsi,ysi)(xis,yis) 和 (xti,yti)(xit,yit) 的对应关系可以写为: 

(xsiysi)=Tθ(Gi)=Aθ(xtiyti)(xisyis)=Tθ(Gi)=Aθ(xityit)

当然,Aθ也可以有其它形式,如3D仿射变换,透射变换等。

1.3 Differentiable Image Sampling

在计算得到 Tθ 后,就可以由以下公式 UU 得到 VV 了(省略推导公式若干,只放上最终形式): 

Vci=nHmWUcnmmax(0,1|xsim)|max(0,1|ysin|)Vic=∑nH∑mWUnmcmax(0,1−|xis−m)|max(0,1−|yis−n|)

在求得 VV 后,当然少不了上述公式对 UUxsxs , ysys的求导,以便根据loss进行网络的后向传播:

VciUcnm=nHmWmax(0,1|xsim)|max(0,1|ysin|)∂Vic∂Unmc=∑nH∑mWmax(0,1−|xis−m)|max(0,1−|yis−n|)

Vcixsi=nHmWUcnmmax(0,1|xsim)|max(0,1|ysin|)0,1,1if |mxsi|1if mxsiif m<xsi∂Vic∂xis=∑nH∑mWUnmcmax(0,1−|xis−m)|max(0,1−|yis−n|){0,if |m−xis|≥11,if m≥xis−1if m<xis

Vciysi∂Vic∂yis 与 Vcixsi∂Vic∂xis 类似。对 θθ 的求导为:

Vciθ=VcixsixsiθVciysiysiθ∂Vic∂θ=(∂Vic∂xis⋅∂xis∂θ∂Vic∂yis⋅∂yis∂θ)

而 xsiθ∂xis∂θysiθ∂yis∂θ 根据具体的变换函数便可得到。

通过以上3个部分的结合,便形成了完整的 STN。

2. 算法分析

STN 计算较快,几乎没有增加原有网络模型的训练时间。由于它能够在训练过程中,学习到与任务相关的空间变换参数,因此能够进一步最小化网络的损失函数。STN 不只可以用在输入的图像层,也可以加入卷积层或者其它层之后。

3. 实验结果

这篇文章分别在手写文字识别、街景数字识别、鸟类分类以及共定位等方面做了实验, 这里我只列出比较有代表性的手写文字实验部分。

实验数据为MNIST,分别在经过不同处理(包括 旋转(R)、旋转、缩放、平移(RTS),透射变换(P)),弹性变形(E))的数据上进行字符识别的实验。Baseline分别使用了两种网络结构FCN , CNN, 加入了 STN 的网络为 ST-FCN, ST-CNN。其中,STN 采用了以下几种变换方法:仿射变换(Aff )、透射变换(Proj )、以及薄板样条变换(TPS )。下表列出了 STN 与 baseline 在MNIST上的比较结果,表中数据为识别错误率: 
这里写图片描述

可以看出,对不同的形式的数据,加入了STN 的网络均优于 baseline 的结果。以下为 STN 对数字图像进行变换后的结果,其中a列为原始数据,b列为变换参数的示意图,c列为最终变换后的结果: 
这里写图片描述

总结

STN 能够在没有标注关键点的情况下,根据任务自己学习图片或特征的空间变换参数,将输入图片或者学习的特征在空间上进行对齐,从而减少物体由于空间中的旋转、平移、尺度、扭曲等几何变换对分类、定位等任务的影响。加入到已有的CNN或者FCN网络,能够提升网络的学习能力。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
空间变换网络(Spatial Transformer Networks,STN)是一种神经网络结构,用于改善卷积神经网络(CNN)的空间不变性。STN可以对经过平移、旋转、缩放和裁剪等操作的图像进行变换,使得网络在变换后的图像上得到与原始图像相同的检测结果,从而提高分类的准确性。STN由三个主要部分组成:局部化网络(Localisation Network)、参数化采样网格(Parameterised Sampling Grid)和可微分图像采样(Differentiable Image Sampling)。 局部化网络是STN的关键组件,它负责从输入图像中学习如何进行变换。局部化网络通常由卷积和全连接层组成,用于估计变换参数。参数化采样网格是一个由坐标映射函数生成的二维网格,它用于定义变换后每个像素在原始图像中的位置。可微分图像采样则是通过应用参数化采样网格来执行图像的变换,并在变换后的图像上进行采样。 使用STN的主要优点是它能够在不改变网络结构的情况下增加空间不变性。这使得网络能够处理更广泛的变换,包括平移、旋转、缩放和裁剪等。通过引入STN层,CNN可以学习到更鲁棒的特征表示,从而提高分类准确性。 关于STN的代码实现,您可以在GitHub上找到一个示例实现。这个实现使用TensorFlow框架,提供了STN网络的完整代码和示例。您可以通过查看该代码来了解如何在您的项目中使用STN。 综上所述,spatial transformer networks(空间变换网络)是一种神经网络结构,用于增加CNN的空间不变性。它包括局部化网络、参数化采样网格和可微分图像采样三个部分。通过引入STN层,CNN可以学习到更鲁棒的特征表示,从而提高分类准确性。在GitHub上有一个使用TensorFlow实现的STN示例代码供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值