空间变换网络(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. python网络爬虫(一):网络爬虫的定义

    网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开 ...

  2. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写

    测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...

  3. Django中的 返回json对象的方式

    在返回json对象的几种方式: 1 from django.shortcuts import render, HttpResponse # Create your views here. from d ...

  4. shell cat 用法

    cat命令的用途是连接文件或标准输入并打印. 1.命令格式:cat [选项] [文件]... 2.命令功能:cat主要有三大功能:1.一次显示整个文件:cat filename   --常用来显示文件 ...

  5. linux下如何设置日志级别?

    答: echo $level > /proc/sys/kernel/printk 如: echo 8 4 1 7 > /proc/sys/kernel/printk

  6. 阶段5 3.微服务项目【学成在线】_day03 CMS页面管理开发_03-自定义查询页面-前端

    下拉选择框 <!--查询表单--> <el-form :model="params"> <el-select v-model="params ...

  7. jmeter测试报告套路

    各位: 以下是本周第一次双师压测结果,后续优化后会更新优化结果.   配置: 压测环境:   staging压测服务器配置4核16G,数据库4核8G 线上环境:   服务器配置16核24G,数据库主库 ...

  8. 用VLC读取摄像头产生RTSP流,DSS侦听并转发(二)

    用VLC读取摄像头产生RTSP流,DSS侦听并转发(二) 之前介绍过<用VLC读取摄像头产生RTSP流,DSS主动取流转发(一)>本文介绍另一种方法. 摄像机地址是192.1.101.51 ...

  9. 敏捷管理的大概背景和Scrum的特性

    我们在转型Scrum敏捷开发时,一直会有一个很大的困惑问题,那就是我的团队适不适合使用敏捷项目管理工具和开发方式.我大概总结了下Scrum的大概样子可以参考下.总之敏捷管理不是口号,他只是一种工具,只 ...

  10. 前端面试经典题之ES6新特性

    ES6 主要是为了解决 ES5 的先天不足,在原先ES5的基础上新增了许多内容,本篇文章将列举出ES6中新增的10大特性. 一. let 和 const 与var不同,let和const都是用于命名局 ...