文章目录

  • 1 概述
  • 2 模型说明
    • 2.1 Localisation Network
    • 2.2 Parameterised Sampling Grid
  • 3 模型效果
  • 参考资料

1 概述

CNN的机理使得CNN在处理图像时可以做到transition invariant,却没法做到scaling invariant和rotation invariant。即使是现在火热的transformer搭建的图像模型(swin transformer, vision transformer),也没办法做到这两点。因为他们在处理时都会参考图像中物体的相对大小和位置方向。不同大小和不同方向的物体,对网络来说是不同的东西。这个问题在这篇文章统称为spatially invariant问题。甚至不同方向的物体,本身就真的是不同的东西,比如文字。

其实pooling layer有一定程度上解决了这个问题,因为在做max pooling或者average pooling的时候,只要这个特征在,就可以提取出来,在什么位置,pooling layer是不关心的。但是pooling的kernel size通常都比较小,需要做到大物体的spatially invariant是很难的,除非网络特别深。

STN(spatial transformer network)的提出,就是为了解决spatially invariant问题这个问题。它的主要思想很简单,就是训练一个可以把物体线性变换到模型正常的大小和方向的前置网络。这个网络可以前置于任何的图像网络中,即插即用。同时也可以和整个网络一起训练。

再说的直白一点,就是一个可以根据输入图片输出仿射变换参数的网络。

图1-1 STN结果示例

图1-1是STN网络的一个结果示意图,图1-1(a)是输入图片,图1-1(b)是STN中的localisation网络检测到的物体区域,图1-1©是STN对检测到的区域进行线性变换后输出,图1-1(d)是有STN的分类网络的最终输出。

2 模型说明

STN(spatial transformer network)更准确地说应该是STL(spatial transformer layer),它就是网络中的一层,并且可以在任何两层之间添加一个或者多个。如下图2-1所示,spatial transformer主要由两部分组成,分别是localisation net和grid generator。

图2-1 stn模型结构示意图

2.1 Localisation Network

我们的目的是把第l−1l-1l−1层的第nnn行,第mmm列的特征移动到第lll层的某行某列。如下图2-2所示,一个3×33 \times 33×3的特征要变换的话,第lll层的每个位置都可以表示为l−1l-1l−1层的特征的加权和。通过控制权重wnm,ijlw_{nm,ij}^lwnm,ijl​就可以实现任何仿射变换。

图2-2 通过全连接进行仿射变换示例

但如果直接加一层全连接让模型学的话,模型可能学出来的就不是仿射变换了,参数量也很大,很难学,很难控制。所有就设计了一个localisation net,直接让模型学仿射变换的参数,这相当于是一个inductive bias。

localisation net的输入是前一层的特征,输出是仿射变换的参数,如果是平面的放射变换就是6个参数,通过这六个参数可以控制整个图像的平移,旋转,缩放。

图2-3 通过参数进行仿射变换示例

图2-3中的[a,b,c,d,e,f][a,b,c,d,e,f][a,b,c,d,e,f]参数就是localisation net的输出。核心公式就是

[x′y′]=[abecdf][xy1](2-1)\left [ \begin{matrix} x' \\ y' \end{matrix} \right ] = \left [ \begin{matrix} a & b & e \\ c & d & f \end{matrix} \right ] \left [ \begin{matrix} x \\ y \\ 1\end{matrix} \right ] \tag{2-1} [x′y′​]=[ac​bd​ef​]⎣⎡​xy1​⎦⎤​(2-1)

其中,xxx和yyy是当前层的坐标,x′x'x′和y′y'y′是前一层的坐标,aaa和ddd主要控制缩放,bbb和ccc主要控制旋转,eee和fff主要控制平移。

2.2 Parameterised Sampling Grid

localisation net输出了仿射变换参数之后,式(2−1)(2-1)(2−1)告诉了我们当前层(x,y)(x,y)(x,y)这个位置的特征是前一层的(x′,y′)(x', y')(x′,y′)位置的特征拿过来的。但是,如图2-4中的例子所示,(x′,y′)(x', y')(x′,y′)可能是小数,位置需要是正整数,如果采用取整的操作的话,网络就会变得不可梯度下降,没法更新参数了。

我们想要的是,当[a,b,c,d,e,f][a,b,c,d,e,f][a,b,c,d,e,f]发生微小的变化之后,下一层的特征也发生变化,这样才可以保证可以梯度下降。

图2-4 带插值的仿射变换示意图

于是,作者就采用了插值的方法来进行采样。比如当坐标为[1.6,2.4][1.6, 2.4][1.6,2.4]时,就用[a12l−1,a13l−1,a22l−1,a23l−1][a_{12}^{l-1}, a_{13}^{l-1}, a_{22}^{l-1}, a_{23}^{l-1}][a12l−1​,a13l−1​,a22l−1​,a23l−1​]这几个值进行插值。这样一来[a,b,c,d,e,f][a,b,c,d,e,f][a,b,c,d,e,f]发生微小的变化之后,[x,y][x,y][x,y]位置采样得到的值也会有变化了。这也使得spatial transformer可以放到任何层,跟整个网络一起训练。

3 模型效果

(1)文字识别任务
图3-1表示了STN加入到文字识别任务时带来的效果提升,图3-1左侧是不同模型在SVHN数据集上的错误率。这相当于是一个只有数字的文字识别任务。

图3-1 数字识别的效果示意图

不过用在OCR任务中,STN其实有点鸡肋。OCR有文字检测和文字识别两个部分,一般文字检测部分会带有检测框四个顶点的坐标,我们直接把文字检测的结果进行仿射变换再去文字识别就可以了,不需要在文字识别时再加一个STN。一个是难训练,再就是推理性能下降。

(2)图像分类任务
图3-2表示了STN在图像识别任务的效果,图3-2左侧表示了不同模型在Caltech-UCSD Birds-200-2011数据集上的准确率。

图3-2 数字识别的效果示意图

2×ST−CNN2 \times ST-CNN2×ST−CNN表示在同一层是用了两个不同的STL,4×ST−CNN4 \times ST-CNN4×ST−CNN表示在同一层是用了四个不同的STL。图3-2右侧中的方框表示了不同STL要进行放射变换的位置。

图3-3 鸟类识别中的STN示意图

可以看到不同的STL关注的鸟的部位也是不一样的,一个一直关注头部,一个一直关注身子。这就相当于是一个attention,把感兴趣的区域提取出来了。

还有一个地方是,这里的方框都是正的,这其实是因为作者把仿射变换中的参数[b,c][b, c][b,c]人为置0了,变成了

[x′y′]=[a0e0df][xy1](3-1)\left [ \begin{matrix} x' \\ y' \end{matrix} \right ] = \left [ \begin{matrix} a & 0 & e \\ 0 & d & f \end{matrix} \right ] \left [ \begin{matrix} x \\ y \\ 1\end{matrix} \right ] \tag{3-1} [x′y′​]=[a0​0d​ef​]⎣⎡​xy1​⎦⎤​(3-1)

可见STN是一个可以融入到很多图像模型,且可拓展性高的模块。

参考资料

[1] Spatial Transformer Networks
[2] 李宏毅-Spatial Transformer Layer

论文阅读:Spatial Transformer Networks相关推荐

  1. 论文阅读: Spatial transformer networks

    文章目录 CNN存在的问题 Spatial Transformer 方法 Localisation Network Parameterised Sampling Grid Differentiable ...

  2. Google DeepMind的新论文: Spatial Transformer Networks

    @金连文: 在CNN中引入Spatial Transformation 模块,自动学习变换参数,例如仿射变换的6个参数,从而能进行达到Rotation/translation invariant等识别 ...

  3. CalibNet:Geometrically Supervised Extrinsic Calibration using 3D Spatial Transformer Networks阅读理解

    CalibNet:Geometrically Supervised Extrinsic Calibration using 3D Spatial Transformer Networks 无目标标定的 ...

  4. Spatial Transformer Networks 论文解读

    paper title:Spatial Transformer Networks paper link: https://arxiv.org/pdf/1506.02025.pdf oral or de ...

  5. 【论文学习】STN —— Spatial Transformer Networks

    Paper:Spatial Transformer Networks 这是Google旗下 DeepMind 大作,最近学习人脸识别,这篇paper提出的STN网络可以代替align的操作,端到端的训 ...

  6. Spatial Transformer Networks(STN)详解

    目录 1.STN的作用 1.1 灵感来源 1.2 什么是STN? 2.STN网络架构![在这里插入图片描述](https://img-blog.csdnimg.cn/20190908104416274 ...

  7. 详细解读Spatial Transformer Networks(STN)-一篇文章让你完全理解STN了

    Spatial Transformer Networks https://blog.jiangzhenyu.xyz/2018/10/06/Spatial-Transformer-Networks/ 2 ...

  8. 论文阅读:Spectral Networks and Deep Locally Connected Networks on Graphs

    论文阅读:Spectral Networks and Deep Locally Connected Networks on Graphs 目录 Abstract 1 Introduction 1.1 ...

  9. Paper:《Spatial Transformer Networks空间变换网络》的翻译与解读

    Paper:<Spatial Transformer Networks空间变换网络>的翻译与解读 导读:该论文提出了空间变换网络的概念.主要贡献是提出了空间变换单元(Spatial Tra ...

最新文章

  1. 2. 抓ARP包, 抓PPPoE包
  2. 指针与数组的关系---初始化
  3. sev2008安装mysql_数据库教程
  4. 自动化检测工具助力GJB 8114-2013 C/C++语言编程安全子集标准落地应用
  5. mount挂载不上,不提示任何信息
  6. HTML+CSS奥运五环
  7. 数据库是根和数据仓库是魂
  8. Linux的strings命令_拔剑-浆糊的传说_新浪博客
  9. (四)git储藏与清理
  10. AARRR模型——激活:获客红海背后的蓝海(上)
  11. 骁龙870相当于什么处理器 骁龙870什么水平
  12. 美团活动又来了|0.98充10元话费,秒到账,不实名不绑卡,超简单!
  13. python dataframe根据多列排名并生成序号_将rank字段添加到pandas dataframe,按唯一组和多列排序...
  14. 《浅谈条形码技术在连锁超市中的应用》论文笔记(二)
  15. python中pip安装、升级包用法详解
  16. Python学习记录(4)元组:戴了紧箍咒的列表
  17. Java虚拟机规范 Java SE 8版 - class文件格式(二)
  18. 一曲相思用计算机弹,弹一曲离殇,奏一曲相思
  19. 远心F-theta镜ZEMAX设计
  20. 职场切记:没有苦劳,只有功劳!

热门文章

  1. web服务器文件管理,web文件管理服务器
  2. 深度学习之 hard negative mining (难例挖掘)
  3. python 人脸关键点检测_opencv+python+dlib人脸关键点检测、实时检测
  4. [译] Bounds Check Elimination 边界检查消除
  5. #Pragma Pack(n)与内存分配 pragma pack(push,1)与#pragma pack(1)的区别
  6. c语言结构体中整形数组初始化,c – 将{0,0}在结构体中初始化数组?
  7. mysql接口可以重载吗_php 到底可不可以重载
  8. python读取多个sheet文件_PythonPandas excel文件如何一次读取所有工作表,并再次写入多个工作表?,pythonpandasexcel,一次性,全部,sheet,重新...
  9. 第一季2:视频设备开发的技术流
  10. 字符设备驱动高级篇5——静态映射表、动态映射结构体方式操作寄存器