转载:
http://mp.weixin.qq.com/s/bb9PNsgEqb-xiXPsdtWh6g
深度学习+几何结构:1+1>2?
Have We Forgotten about Geometry in Computer Vision?http://alexgkendall.com/computer_vision/have_we_forgotten_about_geometry_in_computer_vision/
深度学习极大的促进了计算机视觉领域的发展。现在计算机视觉领域的很多问题的最优解决方案都可以用一个端到端的深度学习模型来搞定。一些传统的技术已经研究了几十年,而一个初学者无需了解该领域的基础理论就可以通过一个端到端的深度神经网络来得到一个还不错的benchmark。但是,这些神经网络大部分都只是一个黑盒子,虽然很多人用的很溜,但是还有很多问题并没有完全搞明白。
先抛出结论:深度学习和几何结构的结合,将极大提高现有算法的性能。
几何信息
几何描述了物理世界的结构、形状、体积、深度、姿态、视差、运动、光流等信息。
![](https://i-blog.csdnimg.cn/blog_migrate/1296b46e94c40e60c0c0e7173c779fd8.jpeg)
真实世界的几何信息
语义
这里不得不提到另外一个术语:语义表达。语义表达利用语言来描述现实世界里的关联。比如,猫或者狗都是对某种物体的语言描述。
语义有关的研究在计算机视觉领域广受关注,许多高引用率的突破性的文章都和图像分类和语义分割有关。
![](https://i-blog.csdnimg.cn/blog_migrate/e9cef78c7b9a2dfdbbdef76a4db0b41d.png)
电脑对世界的语义理解。不同的颜色表示不同的语义类,比如道路、行人、车辆、天空、树木等。
语义的一个问题就是它是人类自己定义的,对于需要和人类进行交互的AI系统来说语义信息非常必要。但很可能这样的语义表达并不是最优的,而直接从可观测到的几何信息学习可能更加符合自然规律。
几何vs语义
几何和语义相比,有两个明显的优势:
1、几何信息可以直接观测到。人类或动物都可以利用眼睛来观察世界的几何信息。比如我们可以从连续的视频帧间的对应像素来观察到运动和深度信息。还有一些更有趣的,比如我们可以根据阴影来观察形状,根据立体视差来观察深度。
相比之下,语义表达则专属于人类语言,只有有限的词汇来描述,并且不能直观的观测。
2、几何信息是连续的变量。比如,深度可以用米来表示,视差可以用像素来表示。但是语义表达只能是大量离散的量或者二元标签。
![](https://i-blog.csdnimg.cn/blog_migrate/0b311f55baa444d1363dd27fa8a9a815.jpeg)
运动恢复结构方法重建的几何结构
人类在婴儿时期时是通过低级的几何信息来学习识别物体的。根据美国光学协会的报告,人类婴儿在最初的9个月内主要是学习调整眼睛来聚焦和理解深度,学习不同的颜色和几何。直到12个月后才学会如何识别物体和语义信息。这也说明了几何信息对于人类视觉的基础学习很重要。这个思想可以用到计算机视觉模型中来。
几何信息的作用
几何信息的这两个优势非常重要,尤其是对于无监督学习来说。
无监督学习是人工智能领域非常热的研究方向,主要目的就是在没有数据标签的情况下学习表达和结构信息。这个非常有用,因为想要得到大量带标签的训练数据非常困难且代价非常大。
几何信息的可观测性和连续表达性可以用于构建无监督学习模型。例如:用无监督训练来用几何信息学习深度信息,《Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue》、用无监督训练来用几何信息学习运动《Learning to See by Moving》等。
具体例子
几何信息用于深度学习中的2个具体例子:
1
用PoseNet学习重定位
PoseNet是一个单目6个自由度的重定位算法。
ICCV 2015上,论文《PoseNet: A Convolutional Network for Real-Time 6-DOF Camera Relocalization》使用一个卷积神经网络来学习输入图像到6自由度相机姿态的端到端的映射,这仅仅是简单地将该问题视为一个黑盒问题。CVPR 2017的论文《Geometric loss functions for camera pose regression with deep learning》使用几何重投影误差来同时对相机位置和方向进行学习,利用真实世界几何信息极大地提高了性能。
![](https://i-blog.csdnimg.cn/blog_migrate/e54ff104c6e5c2eb9b6899957af560ea.jpeg)
PoseNet:从单张图片估计相机的6个自由度
项目主页:
http://mi.eng.cam.ac.uk/projects/relocalisation/
开源代码:
https://github.com/alexgkendall/caffe-posenet
2
用双目视觉进行深度估计
双目视觉算法用2个相机拍摄同一物体的视差来估计深度。该问题可以简化为一个匹配问题——也就是寻找同一个物体在左右两个相机拍摄图片里的对应点。
目前该领域最好的算法是基于深度学习的方法来学习用于匹配的特征,而估计深度所必须的匹配和正则化部分大部分仍然是非学习的方法。而CVPR17论文《End-to-End Learning of Geometry and Context for Deep Stereo Regression》 提出了GC-Net (Geometry and Context Network)。
![](https://i-blog.csdnimg.cn/blog_migrate/3c22a354dde6443ac380c26b24ee686f.jpeg)
该文章提出的GC网络结构
此论文将该问题视为基础几何的问题。该论文的创新之处就是用微分方式建立几何代价体用于回归模型。从下图的结果来看,该方法估计的深度已经非常接近groundtruth。
![](https://i-blog.csdnimg.cn/blog_migrate/a7adf643b0709e0986213af63268aa07.jpeg)
从左到右:输入的左双目图,该文章深度估计结果,groundtruth
总结
1、深入理解经典的CV方法对于解决计算机视觉问题非常有价值,尤其是机器学习或者数据科学出身的人。
2、如果网络构建可以结构化,利用问题的几何特性,用深度学习来学习和表达复杂模型将会变得更容易且更高效。