转载自从特征描述符到深度学习:计算机视觉发展20年
===================================================================================================================================
从特征描述符到深度学习:计算机视觉发展20年
Author: Tomasz Malisiewicz
翻译:赵毅力(panovr at gmail dot com)
我们都知道在过去两年(2012-2014年)深度卷积神经网络在目标检测与识别的基准测试中有过辉煌的成绩,所以你可能会问:在此之前的物体识别技术是什么样子?早期识别系统的设计和现代以多层卷积为基础的框架之间的关系是什么?
让我们先来回顾一下过去20年里计算机视觉研究中的一些重要理论和方法。
1995年至2000年:局部特征描述符的崛起
1999年当英属哥伦比亚大学教授大卫·罗伊(David Lowe)提出SIFT(尺度不变特征变换的缩写,Scale Invariant Feature Transform)算法后,计算机视觉研究的世界几乎在一夜之间发生了改变。SIFT是一种对图像块进行比较和匹配的鲁邦解决方案。在大卫·罗伊没有提出SIFT算法之前,人们通常只使用SSD(平方距离的总和)作为图像块比较的距离度量标准,对此并没有太多的考虑。
SIFT描述符计算方法:梯度方向和规范化技巧
SIFT又被称为局部特征描述符 – 这是一个雄心勃勃的研究人员在图像方面超过十年研究的成果之一。 大卫·罗伊和英属哥伦比亚大学为SIFT算法申请了专利,并且大卫·罗伊还在自己的主页上公布了SIFT实现的一条经过编译后的二进制程序,供研究人员在他们的工作中使用。 SIFT允许一幅彩色图像中的点由一个低维向量进行鲁棒表示。当你通过旋转照相机对同一物理拍摄不同角度的多幅图像,这些对应点的SIFT描述符在其128维空间中非常相似。初看之下在进行图像匹配之前需要进行如SIFT这么复杂的处理似乎有点愚蠢,但是请相信我:那是因为你,作为一个人类,可以用肉眼观看两个图像块并迅速“理解”它们属于同一个物体上的相同点,而这对于计算机来说是不同的。 SIFT对计算机视觉(包括立体视觉、从运动结恢复构等)的几何方面的研究都有着重要的影响,后来还成为用于对象识别的流行的词袋模型的基础。
看到SIFT这样的技术在图像块匹配上大大超过像平方距离求和(SSD)方法在每一个有抱负的视觉科学家的职业生涯的重要一步。SIFT不只是滤波器响应的一个载体,其中的直方图分级和规范化的步骤也是非常重要的。值得指出的是,虽然最初SIFT(在其论文中公布的形式)主要作为兴趣点检测器的输出,但是后来发现兴趣点检测步骤在对象分类问题中并不重要。对于分类问题,研究人员对图像应用的是SIFT描述符的向量量化。
我还要提到的是其它的描述符方法,如旋转图像方法提出的时间早于SIFT,但由于旋转图像方法只适用于2.5维的数据,所以这一方法的影响力没有SIFT方法那样大。
2000年至2005年:现代数据集(又名强化视觉科学)
单应估计、地平面估计、机器视觉,从运动恢复结构以及其它计算机视觉几何问题极大地受益于鲁邦的图像特征,如SIFT。但对20世纪90年代末来说,很明显,互联网是下一件大事。在线图像,还有跟多正在创建的数据集。结构恢复(即几何视觉)问题不再是这一代研究人员主要感兴趣的主题。这是一个大数据集的时代,以此同时加州理工学院的Caltech-101数据集逐渐得到普及,分类研究在不断上升。研究人员不再仅仅是对自己内部的数据集评估他们自己的算法,现在大家都有一个更加客观的标准方法来进行方法之间的比较。尽管用2015年的标准来看Caltech-101数据集被认为是过时的,但是可以把它认为是更现代的ImageNet数据集的鼻祖。
基于类别的数据集:著名的Caltech-101图像数据集
2000年至2005年:箱、网格和视觉单词(即面向描述符的机器学习)
研究人员逐步从视觉几何恢复问题转向更为雄心勃勃的目标识别问题,涌现了词袋(BoW,Bag of Words)、空间金字塔(Spatial Pyramids)、矢量量化(Vector Quantization),以及在计算机视觉的各个阶段使用的各种机器学习工具。原生的SIFT对于宽基线立体匹配来说很棒,但它不是强大到足以从相同的视觉对象类别提供两种不同的对象实例之间的匹配。我们需要的是一种对以下思路进行编码的方法:相对于彼此对象部件可以变形,一些图像块可能会确实。总体而言,需要更多基于统计的方法来对物体进行表征。
由Josef Sivic和Andrew Zisserman于2003年提出视觉单词(Visual Words),这是一种从大规模的文本匹配中借鉴的方法。Josef和Andrew把它们应用到视频内容中。视觉字典可以通过执行对SIFT描述符进行无监督学习(例如通过K-均值聚类),将128维的SIFT描述映射为整数获得。可以使用这些视觉单词的直方图来表示图像,这种表示是一种相当可靠的方。至今词袋模型的变种仍被大量使用在视觉研究中。
基于内容的视频匹配与检索
另一个关于对象识别的想法是使用某种形式的分级结构进行对象匹配的方法。Caltech-101图像数据主要包含对象,所以这些网格最初被放置在整个图像,后来他们被放置在对象包围盒上。Kristen Grauman发表的著名的金字塔匹配核(Pyramid Match Kernel)论文介绍了一个用于在图像匹配过程中整合空间信息的强大的和分层的方法。下图是其中的一幅示意图:
格劳曼提出的基于金字塔匹配核的改进图像匹配
在那个时候研究人员还不清楚是否应该专注于更好的特征、更好的比较标准或更好的学习方法。在2000年中期对于年轻的博士生是否应该花更多的时间来设计新的描述符或新的支持向量机核函数也并不是十分清楚。
2005年至2010年:对象模板(即方向梯度直方图和DPM)
在2005,一个名叫Navneet Dalal的年轻研究人员向世界展示了用他自己设计的HOG特征描述符能够完成的功能。
HOG描述符是当每个人通过使用多层学习对词袋应用运用空间分级,使得他们的系统过于复杂的时候出现的。Dalal巧妙设计的描述符其实本质上是比较简单的。HOG的论文是由Navneet和他的博士生导师Bill Triggs在2005年发表的。Bill Triggs因为早期在几何视觉方面的研究而出名,Dalal博士则是由于他新发现的描述符而出名。HOG描述符最初应用于行人检测问题,之所以HOG描述如此受欢迎的原因是用在HOG上层使用机器学习工具非常简单和容易理解,这种机器学习工具正是线性支持向量机。
我要指出的是在2008年在一篇关于对象检测的后续文章中介绍了一种技术叫做以变形部件为基础的模型(做计算机视觉研究的人一般把这个方法称为DPM),有助于加强HOG技术的普及和功能。在2008年我也开始使用HOG方法。作为一个研究生的最初几年(2005-2008年)我一直使用自己设计的滤波器组,并且也积累了一些特征描述符的经验。最后,我意识到,我自己设计的特征描述符方法只是“好”,因为我是把它们应用到的图像分割算法的输出,因此速度都非常缓慢。当我开始使用HOG方法时,没有多久我就意识到我不会再走回头路去使用那些自己定制的、速度慢的特征描述符了。当我开始使用一个多尺度金字塔,再搭配上如Ramanan和Felzenszwalb改进的HOG方法,我就能够以100倍的速度处理图像。
DPM为什么变得如此受欢迎的原因之一是它是PASCAL VOC挑战赛的卫冕冠军,以及Ramanan和Felzenszwalb公布了优秀的MATLAB/ C++实现代码。我知道很多研究者从来没有完全承认释放如此巨大的代码真对刚入学的博士生的意义,但在某些时候,就好像每个人都在修改DPM的代码库以便为自己尝试CVPR的比赛。大部分的新生都缺乏坚实的软件工程技能,给予他们DPM的代码来获得一些一些实验和运行结果是一个正确的方式。就我个人而言,我从来没有去深入研究以DPM为基础的方法,但我确实有几次对DPM代码库进行了拆分。
2010至2015年:大数据,卷积神经网络和深度学习
到2008年的某个时候,科学家们越来越适应大型数据集的处理。这是不是“云计算”和“大数据”的兴起,这是数据科学家的兴起。早晨设计一个公式,午饭期间开发一个原型,在晚上部署大规模的计算,在日落的时候并整合结果到生产系统。我花了两个夏天在谷歌的做实习研究,我看到了很多以视觉黑客成名的研究人员和工程师。但在谷歌他们不只是写“学院派”的论文,而是实实在地进行大数据的处理。将来的视觉研究者将会非常熟悉大型数据集的处理。不在需要一个人有数学学位的博士、一位软件工程师、一位经理和一个测试人员。很多人都可以完成所有这些工作。
1980年至2015年:深度学习
2014年绝对是深度学习丰收的一年。关于深度学习有趣的是它是一种非常古老的技术。我们现在看到的深度学习本质上是神经网络2.0的版本。但这一次,我们的计算机和研究以及开发的速度要比原来快好几个数量级。好笑的是现在倡导深度学习的人和90年代初倡导这种技术的同样的一批研究人员。我猜他们真的笑到了最后,因为最终这些神经网络大师成为研究深度学习追随的人。Geoffrey Hinton,Yann LeCun,Andrew Ng和Yeshua Bengio是深度学习的四位巨人。现在,几乎每个做机器学习的人都在研究深度学习。
但随着谷歌、Facebook、百度以及众多小创业公司乘着深学习浪潮,谁将会上升到顶部成为人工智能的主人?
那么今天的深层学习系统和昔日的识别系统有什么相似性?
和以往的基于特征的系统相比,多尺度卷积神经网络并没有太大的不同。在深度学习系统的第一级的神经元学习利用梯度的方式是类似于手工设计的特征的,例如SIFT和HOG。在过去使用滑动窗口发现对象,但现在它更容易和更感性的认为这种操作可以作为图像与滤波器进行过滤。有些最佳监测系统习惯使用多元线性支持向量机,结合一些特设的方式,现在我们基本上更多在使用这种线性决策边界。深度学习系统可以被认为是应用线性算子的多阶段过程,并通过非线性激活函数放到一个管道中进行处理。和以核函数为基础的学习系统相比,深度学习更类似于一种将多个线性支持向量机进行巧妙组合的系统。
现在不再手工设计特征描述。然而,深度学习系统的架构仍然需要手工设计 – 看起来专家们最擅长此任务。在古典和现代的识别系统内部的操作仍然是大同小异。除了聪明以外,现在你还需要一个大型计算机。关于这方面的研究还有很大的提升空间,所以我鼓励大家在自己的研究中要更具创新性。
作为一位明智的研究人员,了解研究领域以前的历史可以使我们可以更好地规划我们的未来。我希望你喜欢这个简短的计算机视觉历史介绍,下一次在你寻找研究灵感的时候,不要害怕回顾过去的研究历史。
英文原文地址:From feature descriptors to deep learning: 20 years of computer vision