空间变换网络(STN)原理+2D图像空间变换+齐次坐标系讲解

2018年11月14日 17:05:41 Rosemary_tu 阅读数 1295更多

分类专栏: 计算机视觉
 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

本文是对Google DeepMind 团队2015年发表的空间变换网络STN的详细讲解,笔记在编写的过程中借鉴了网上一些博客,在相应的内容位置有说明。如有侵权,请联系作者删除。

感谢台湾大学李宏毅老师的精彩讲解!

1 观点:CNN 不能学习到图像的不变性

一般来说,图像经过小小的平移和变形之后,人类还是信任CNN 能够把它们泛化,识别出里面的物体。归纳偏差(Inductive Bias) 是CNN 成功的一个关键。卷积和池化的选择,就是为了赋予神经网络一些不变性,避免因为一些小的改变,就丧失了原本的判断。然而,来自耶路撒冷希伯来大学的两位研究人员发现:一幅图像被平移了几个像素之后,现在的CNN 就很容易认不出来。旋转和缩放,也是一样。
       该项研究利用测量习得表征(Learned epresentations) 线性度(Linearity) 的方法,来观察CNN 的不变性。测试了三种经典的CNN结构,VGG-16,ResNet-50 以及Inception
ResNet-V2。

结果——
         只是把狗狗下移了一点点,只是把瓶子放大了一点点,只是把白熊的姿势换一下,系统的识别准确率就发生了猛烈的变化。

参考:http://m.elecfans.com/article/703297.html

2 坐标系与三维空间

2.1 笛卡尔坐标系

笛卡尔坐标系是直角坐标系和斜角坐标系的统称. 对于相交于原点的两条数轴,构成了平面放射坐标系。如果两条数轴上的度量单位相等,则称此放射坐标系为笛卡尔坐标系。若两条数轴互相垂直,则称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系.
         二维平面的直角坐标系是由两条互相垂直、零点重合的数轴构成的.通常被称为x-轴和y-轴,两个坐标轴的交点,称为原点,通常记为O,既有“零”的意思,又是英语“Origin”的首字母. 这两个不同线的坐标轴决定了一个平面,称为xy-平面/笛卡尔平面. 习惯性地将x-轴水平摆放,称为横轴,指向右方;y-轴被竖直放置,称为纵轴,指向上方. 两个坐标轴这样的位置关系,称为二维的右手坐标系,或右手系。如果把这个右手系画在一张透明纸片上,则在平面内无论怎样旋转它,所得到的都叫做右手系;但如果把纸片翻转,其背面看到的坐标系则称为“左手系”。这和照镜子时左右对掉的性质有关。
         直角坐标系也可以推广至三维空间(3 dimension)与高维空间(higher dimension) 。

三维坐标系:

放射坐标系和笛卡尔坐标系平面向空间的推广:相交于原点的三条不共面的数轴构成空间的放射坐标系。三条数轴上度量单位相等的放射坐标系被称为空间笛卡尔坐标系。三条数轴互相垂直的笛卡尔坐标系被称为空间笛卡尔直角坐标系,否则被称为空间笛卡尔斜角坐标系。

2.2 向量和坐标


2.3 3D 空间常用坐标系

  1. 世界坐标系
    世界坐标系是一个特殊的坐标系,它建立了描述其他坐标系所需要的参考框架. 从非技术意义上讲,世界坐标系建立的是整个场景的“最大”坐标系,其他的坐标系都是参考世界坐标系而建立的.世界坐标系也被广泛地称为全局坐标系或者宇宙坐标系。对于整个场景中的每个物体,它的位置和方向一般是指它在世界坐标系中的值,它是一个绝对坐标,不随观察者方向的变化而变化。
  2. 物体坐标系
    物体坐标系是和特定的物体相关联的坐标系,也被称为模型坐标系或局部坐标系。对于场景中的每个物体都可以自己的物体坐标系,而且它和其他物体的物体坐标系是相互独立的.

参考:

  1. http://www.cnblogs.com/ojo-blogs/p/6754664.html
  2. https://blog.csdn.net/liu_yude/article/details/45194813
  3. https://blog.csdn.net/liu_yude/article/details/45195809?utm_source=blogxgwz1

2.4 三维空间中的旋转:旋转矩阵、欧拉角

参考:http://blog.miskcoo.com/2016/12/rotation-in-3d-space

2.5 Homogeneous Transformation (齐次坐标变换)

参考:http://www.doc88.com/p-3592172429143.html



3 透视投影原理

在计算机三维图像中,投影可以看作是一种将三维坐标变换为二维坐标的方法,常用到的有正交投影和透视投影。正交投影多用于三维建模,透视投影则由于和人的视觉系统相似,多用于在二维平面中对三维世界的呈现。

参考:

  1. http://www.cnblogs.com/ojo-blogs/p/6754664.html
  2. https://www.cnblogs.com/hisiqi/p/3155813.html

3.1 仿射变换和透视变换的区别



4 Spatial transformer networks详细介绍

参考:

  1. https://blog.csdn.net/u011961856/article/details/77920970
  2. https://blog.csdn.net/xholes/article/details/80457210
  3. https://blog.csdn.net/qq_14845119/article/details/79510714
  4. https://www.cnblogs.com/liaohuiqiang/p/9226335.html
  5. https://blog.csdn.net/weixin_39912556/article/details/79748671


Pointnet[7]: Pointnet: Deep learning on point sets for 3d classification and segmentation[J]. Proc. Computer Vision and Pattern Recognition (CVPR), IEEE, 2017, 1(2): 4.

4.1 背景介绍

4.1.1 CNN中存在的问题




4.1.2 双线性插值

4.2 图像/卷积特征图空间变换的直观解释


4.3 论文介绍



Matlab验证


4.4 空间变换网络的实际应用

4.4.1 空间变换网络作为网络的第一层



4.4.2 空间变换网络插入CNN 的中间层

本人能力有限,上述内容如有理解不当的地方,欢迎与我讨论!

空间变换网络(STN)原理+2D图像空间变换+齐次坐标系讲解的更多相关文章

  1. 论文笔记:空间变换网络(Spatial Transformer Networks)

    2015, NIPS Max Jaderberg, Karen Simonyan, Andrew Zisserman, Koray Kavukcuoglu Google DeepMind 为什么提出( ...

  2. 纯干货:深度学习实现之空间变换网络-part2

    https://www.jianshu.com/p/854d111670b6 纯干货:深度学习实现之空间变换网络-part1 在第一部分中,我们主要介绍了两个非常重要的概念:仿射变换和双线性插值,并了 ...

  3. pytorch空间变换网络

    pytorch空间变换网络 本文将学习如何使用称为空间变换器网络的视觉注意机制来扩充网络.可以在DeepMind paper 阅读更多有关空间变换器网络的内容. 空间变换器网络是对任何空间变换的差异化 ...

  4. PyTorch 系列教程之空间变换器网络

    在本教程中,您将学习如何使用称为空间变换器网络的视觉注意机制来扩充您的网络.你可以在DeepMind paper 阅读更多有关空间变换器网络的内容. 空间变换器网络是对任何空间变换的差异化关注的概括. ...

  5. dennis gabor 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换(转载)

    dennis gabor 题目:从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅 ...

  6. OpenCV计算机视觉学习(3)——图像灰度线性变换与非线性变换(对数变换,伽马变换)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 下面 ...

  7. Atitit smb网络邻居原理与实现查询列表

    Atitit smb网络邻居原理与实现查询列表 1.1. SAMBA的起源1 1.2. Smb是否依赖unpn SSDP  ,还是使用扫描遍历0-255发现原理1 2. SMB共享不成功原因分享(WI ...

  8. 自学Zabbix9.1 Network Discovery 网络发现原理

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix9.1 Network Discovery 网络发现原理 1. 网络发现简介 网络 ...

  9. 指针生成网络(Pointer-Generator-Network)原理与实战

    指针生成网络(Pointer-Generator-Network)原理与实战   阅读目录 0 前言 1 Baseline sequence-to-sequence 2 Pointer-Generat ...

随机推荐

  1. Logback 日志策略配置

    [参考文章]:官方文档:Logback configuration [参考文章]:logback的使用和logback.xml详解 [参考文章]:Logback源码赏析-日志按时间滚动(切割) 1. ...

  2. linux下docker如何指定容器的工作目录?

    答: 启动容器时传入-w <work_dir>参数即可,如: docker run -it -w <work_dir> <container_image_name> ...

  3. <JavaScript> 普通函数与构造函数的区别

    JavaScript中存在构造函数与函数两个概念. 这可能会给初学者造成一定的困扰,难不成存在两种函数. 然而事实这两种函数的构成完全一样,无论从长相还是气质都是一模一样的. 区别点在于,所扮演觉得不 ...

  4. quartz.net 学习

    目录 简介  Quartz是什么?  Quartz的应用场景Quartz的安装  安装  源码Hello World范例API  核心API    Scheduler接口:    Job接口    J ...

  5. linux安装IDEA 2017

    下载 IDEA 2017 链接:http://pan.baidu.com/s/1skTKdFR 密码:yug3 解压 下载的文件    tar zxvf idea-IU-172.4155.36.tar ...

  6. labelme

    项目:https://github.com/wkentaro/labelme?tdsourcetag=s_pcqq_aiomsg 说明:https://www.bilibili.com/video/a ...

  7. NLP之ROUGE[笔记]

    0 前言 [定义]ROUGE:recall-oriented understanding for gisting evaluation,面向召回的要点评估理解 召回率,recall rate;要点,g ...

  8. 使用 mencoder 制作幻灯片

    首先安装相关依赖: sudo apt-get install mencoder sudo apt-get install imagemagick 编辑 test.sh 脚本如下: #!/bin/bas ...

  9. k8s install kubeadm网络原因访问不了谷哥and gpg: no valid OpenPGP data found. 解决办法

    gpg: no valid OpenPGP data found. 解决办法 待做.................................... 卡助在这curl -s https://pa ...

  10. jenkins:集成sonar代码扫描+发送邮件

    前提: Jenkins JDK 目录: 1.安装sonar插件:SonarQube Scanner for Jenkins 2.安装SonarQube 3.安装sonar-scanner ++++++ ...