空间转换网络(Spatial Transformer Networks)


普通的CNN能够显示的学习平移不变性,以及隐式的学习旋转不变性,但attention model 告诉我们,与其让网络隐式的学习到某种能力,不如为网络设计一个显式的处理模块,专门处理以上的各种变换。

空间变换网络,允许神经网络学习如何在输入图像上执行空间变换,以增强模型的几何不变性,意思就是在对样本内容作微小的移动之后不会改变其原本的输出。
例如,它可以裁剪感兴趣的区域,缩放并校正图像的方向。
只需要在现有CNN上做微小的调整就能实现空间变换网络。

直观来说就是在CNN网络前添加了一层transform layer,在读取图片之后对其做一个转换,将转换之后的图片作为输入丢入CNN结构。

仿射变换(Affine transformation)

仿射变换的意思就是一张图在原图的基础上经过平移,缩放,旋转,剪切等相关操作。
综合可得公式:

如上图所示,将 a,b,c,d,e,f 代入不同值可以实现不同的仿射变换。

双线性插值(Bilinear Interpolation)

线性插值:在已知两点的情况下(x1, y1), (x2, y2),线性插值的意思就是求某点x (x1<=x<=x2) 在两点连成的直线上的 y 值。
公式如下图所示,即直线两点式方程。

双线性插值:双线性插值的意思就是在已知四点的情况下求中间某点的 y 值。
如下图所示,求未知点p的y值。

先横向做两次线性插值,得出R1,R2,再根据R1,R2两点做纵向线性插值,得到p点的y值。

由于图片中的每个像素点都为整数,为了保证图片的变换后的真实性可以使用双线性插值,双线性插值的作用在于利用公式计算出新图的像素值。

网络结构


由上图所示:STN 由三部分组成

  1. Localisation Network-局部网络,目的在于进行仿射变换
  2. Parameterised Sampling Grid-参数化网格采样,目的在于计算转换后的像素值
  3. Differentiable Image Sampling-差分图像采样,目的在于利用期望的插值方式计算出实际的像素值

1. Localisation Network-局部网络
输入:特征图

输出:变换矩阵 ,用于下一步计算( 输出规模视具体的变换。以仿射变换为例, 是一个[2,3]大小的6维参数)

注: θ 被初始化为恒等变换矩阵,通过损失函数不断更正 θ 的参数,最终得到期望的仿射变换矩阵。得到输出特征图后最重要的是得到输出特征图每个位置的像素值。

2. Parameterised Sampling Grid-参数化网格采样
此部分的目的在于计算出新图中的像素点。

计算公式如下,即仿射变换公式:

由于计算出来的值可能不为整数,所以需要使用双线性插值计算出各个点的像素值。

3.Differentiable Image Sampling-差分图像采样
该部分目的在于利用期望的插值方式计算出真正的像素值。
具体步骤可参见前面提到的双线性插值计算流程。
下图为双线性插值总公式:

该式子等价于:

测试结果图如下所示:

完整源码:
https://github.com/AndyandViky/ML-study/blob/master/pytorch/spatial-transformer-networks.py
Reference:
https://zhuanlan.zhihu.com/p/37110107
https://blog.csdn.net/qq_39422642/article/details/78870629
https://blog.csdn.net/xbinworld/article/details/65660665
https://blog.csdn.net/xiaqunfeng123/article/details/17362881

空间转换网络(Spatial Transformer Networks)相关推荐

  1. 空间映射网络--Spatial Transformer Networks

    Spatial Transformer Networks 主要对目标在特征空间做不变性归一化 解决 角度.尺度等变形引入的影响 Code: https://github.com/skaae/trans ...

  2. 【配准】空间变换网络Spatial Transformer Networks原理分析

    说明:此文只分析STN层的原理. STN由三个部分组成: 1.定位网络 生成空间变换参数,如二维仿射变换参数:a11,a12,a21,a22,t1,t2. 可以是任意的回归网络,如卷积网络,全连接网络 ...

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

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

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

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

  5. Paper:《Spatial Transformer Networks》的翻译与解读

    Paper:<Spatial Transformer Networks>的翻译与解读 目录 <Spatial Transformer Networks>的翻译与解读 Abstr ...

  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)

    Spatial Transformer Networks(STN)是一种空间注意力模型,可以通过学习对输入数据进行空间变换,从而增强网络的对图像变形.旋转等几何变换的鲁棒性.STN 可以在端到端的训练 ...

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

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

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

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

最新文章

  1. 《深入理解计算机系统》读书随笔-位操作
  2. WCF Security基本概念(转载)
  3. 美国波特兰市禁用人脸识别,被违规监控可获赔1000美元
  4. Android安全加密:Https编程
  5. 144hz minidp转dp_毕亚兹miniDP转HDMI转接器,拓展你的Surface Pro 3上4K大屏
  6. Problem Collection II 构造
  7. java怎么将程序保存在桌面_在Java桌面应用程序中保留数据的最佳方法是什么?...
  8. PHP特级课视频教程_第二十七集 Coreseek安装与测试_李强强
  9. “Hello, my first blog”------第一篇博客的仪式感
  10. 多x多y的origin图_孖记士多 X 阿婆牛杂!广州的两大本土老字号,搞在一起了!...
  11. http://www.uupoop.com/ps/
  12. Activity随笔
  13. 省赛来了(组合数)nyoj158
  14. CC攻击原理及防范新思路
  15. BigDecimal除法报错:java.lang.ArithmeticException: Division undefined
  16. 探讨基于球谐函数的全局光照
  17. 网络和IP地址计算器
  18. 计算机技能培训心得,计算机技能培训心得感想.doc
  19. matlab仿真动画,MATLAB图形及三维动画仿真设计.ppt
  20. hdu2907 凸包+简单搜索

热门文章

  1. WebStorm设置手机测试服务器-局域网内其他设备访问
  2. vivo新系统originos和鸿蒙,vivo发布新系统“Origin OS”,这三批机型支持升级,你期待吗?...
  3. dynamo方程怎么写_Dynamo代码怎么写?BIM系列之dynamo代码块快速入门
  4. LabVIEW转子动平衡测控系统
  5. 倚南窗以寄傲-审容膝之易安
  6. [leetcode]41. First Missing Positive
  7. Allegro 17.4打开文件后崩溃闪退的解决
  8. python系列教程83
  9. 攻防世界 进阶 reverse_re1
  10. 一个故事告诉你,学习编程是否需要天赋?