计算机视觉的发展的历程----李飞飞教授
视觉的历史可以追溯的很久很久以前,实际约5亿4千3百万年前,那时候绝地求生几乎完全被水覆盖,有少量的物种在海洋中游荡,没有什么生机,动物也不怎么活跃,甚至没有眼睛。如果有猎物路过,他们就抓来充饥,如果没有他们就在水里游荡,但是大约在5亿四千年前发生了一件非凡的事。通过对化石的研究,动物学家发现,在短短的一千万年里,动物的物种数量爆炸式增长,从少数几种发展到成百上千,是什么造成了这个奇怪现象呢,尽管有很多相关理论,但这件事多年来仍是未解之谜,进化学家称之为物种大爆炸。几年前,一位名叫安德鲁·帕克的澳大利亚动物学家提出了一种很有说服力的理论,通过对古化石的研究,他发现,距今约5亿4千万年前,第一次有动物进化出了眼睛,而视觉
的出现,促进了物种的爆炸,动物们突然可以看见东西了,一旦有了视力,生物开始变得更积极主动,捕食者追赶猎物,而猎物要逃避捕食者,视力的出现,开启了一场进化的竞赛,物种们为了生存必须尽快的演化,这就是动物拥有视觉的开端,5亿4千万年后的今天,视觉成为了动物,尤其是有智慧的动物,最重要的感知系统,人类的大脑皮层中,有几乎一半的神经元与视觉有关,这项最重要的感知系统,使我们可以生存、工作、运动、操作器物、沟通、娱乐等等。视觉对动物真的至关重要,尤其是有智慧的动物,以上这些讲的是生物视觉。
那么人类让机器获得视觉,或者说照相机的历史又是怎样呢,我们现在已知最早的相机或者说相机的历史又是怎样呢,我们现在已知最早的相机要追溯到17世纪文艺复兴时期的暗箱,这是一种通过小孔成像的相机,这和动物早期的眼睛非常想象,通过小孔接收光线,通过后面的平板收集信息并且投影成像,随着相机的发展,如今已经非常普及了,摄像头可以说是手机或者其他装置上最常用的传感器之一,同时生物学家也开始研究视觉的机理,这是最具有影响力的,它影响了人类视觉、动物视觉,并且启发了计算机视觉的一项研究,
他们提出的问题是,哺乳动物的视觉处理机制是怎样的,于是他们选择了大脑视觉处理机制,与人类相似的猫类来进行研究,他们将电极插进主要控制猫视觉的后脑上的初级视觉皮层,然后观察,何等刺激会引起视觉皮层的激烈反应,他们发现大脑的初级视觉皮层,有各种各样的系统,其中最重要的细胞是,当他们朝着某个特定方向运动时,对面向边远产生回应的细胞,当然,还有更复杂的细胞,但总的来说,他们发现视觉处理是始于视觉世界的简单结构,面向边缘,沿着视觉处理途径的移动,信息也在变化,大脑建立了复杂的视觉信息,直到它可以识别更为复杂的视觉世,所以计算
机视觉的历史也从60年代初开始
Block World是由Larry Roberts出版的一部作品,被广泛地称为第一个,当然也是计算机视觉的第一篇博士论文,其中视觉世界被简化为简单的几何形状,目的是能够识别他们,从建这些形状是什么,在1966年有一个如今已世界著名的MIT暑期项目叫做The Summer Vision Project 它的目标是试图有效地使用我们的暑期工作时间,来构建视觉系统的重要组成部分,所以最终目标是在那个夏天,我们将解决大部分视觉系统中的问题,这是一个雄心勃勃的目标,50多年过去了,全球数千名研究人员的领域,并且仍然处理一些最根本的问题,虽然我们还没有弄清楚人类视力的原理,但这个领域已经长为人工智能最重要和发展最快的领域能力之一
我们应该赞扬的另一个人是David Marr ,他是麻省理工学院视觉科学家,他在70年代后期撰写了一本非常有影响力的书,里边的内容关于是如何理解视觉的,我们应该如何处理计算机视觉、开发,甚至如何可以使计算机识别视觉世界的算法,他在David Mairs一书中指出,为了拍摄一副图像并获得视觉世界的最终全面3D表现,我们必须经历几个过程,第一个过程就是他所说的原始草图,大部分边缘,端点 虚拟线条,曲线,边界等都被用其他元素来表示,这是受到了神经科学家的启发,Hubel和Wiesel告诉我们,视觉处理的早起阶段有很多关于像边缘的简单结构,然后 边缘和曲线之后的下一步是David Marr所说的“2.5 维草图” 我们开始将表面深度信息层或视觉场景的不连续性拼凑在一起的,然后最终将所有内容放在一起,并在表面和体积图等分层组织了一个3d模型,这是一个非常理想化的思想过程,这种思维方式实际上已经在计算机视觉领域影响力几十年,这是一个非常直观的方式,并考虑如何解构视觉信息
七十年代的另一个非常重要的开创性的工作提出了一个问题,我们如何越过简单的块状世界,开始识别或显示世界的对象,想想70年代,这是几乎没有数据可用的时代,计算机速度非常慢,笔记本电脑都还没有出现的时代,但计算机科学家们开始思考如何识别和表示对象,所以在斯坦福大学的帕洛阿尔托以及斯里兰卡提出了类似的想法,一个被称为广义圆柱体,一个被称为圆形结构,他们基本思想是每个对象都由简单的几何图单位构成,例如一个人可以通过广义的援助形形状拼接在一起,或者人也可以由一些关键元素按照不同的间距组合在一起,在这些部分之间的距离的变化拼接在一起,所以任何一种表示方法是将物体的复杂解构简约成一个几何体,然后就有更简单的形状和几何结构,这些研究已经影响了很长很长的一段时间
接下来就是另外一个例子,在80年代David Lowe思考如何重建或识别由简单的物体结构组成的视觉空间,这项研究开始是David Lowe 尝试识别剃须刀,他通过线和边缘进行构建,其中大部分直线以及直线之间的组合,所以说曾经的这些努力都尝试去思考,从60年代到80年代,计算机视觉的任务是什么。要解决物体识别的问题非常难,目前说的这些东西都是非常有脑洞的,也就是说都是一些有野心的尝试,但是他们仅仅停留在简单样本的阶段,或者只有很少的样本,没有很大的发展,不能输出可以在现实世界有用的东西,当人们思考在解决视觉问题过程中出现问题的时候
另一个很重要的问题出现了,如果目标识别太难了,那么我们首先要做的是目标分裂,这个任务就是把一张图片中的像素点归类到有意义的区域,我们可能不知道这些像素点组合到一起是一个人型,但是我们可以把这些属于这人的像素点从背景中扣出来,这个过程就叫做凸显,这里有一个早期非常具有开创性的工作,这项工作是由来自Berkeley 的Jitendra Malik和它的学生Jianbo Shi 所完成的,他们用一个图算法对图像进行分割,还有一个另外的问题,先于其他计算机视觉问题有进展,也就是面部监测,脸部是人类最重要的部位之一,也许是最最重要的部位,大概在1999-2000年机器学习技术,特别是统计机器学习方法,开始加速发展,出现了一些方法,支持向量机模型、boosting方法、图模型。有一种特别工作做出了很多贡献,就是使用AdaBoost算法进行实时面部检测,由Paul Viola和Michael Jones完成,这工作中有大量的值得我们称赞的,这时计算机芯片还是非常非常慢的2001年完成的,但是他们还是能够实现准实时的面部检测,在他们发表论文后的第五年,也就是2006年,富士推出第一个能够在数码相机中实现实时面部检测的数码相机,所以这是从基数科学研究到实际应用的一个快速转化,关于如何才能做到更好的目标识别,这是一个我们可以继续研究的领域,关于如何才能做到更好的目标实现,这是一个我们可以继续研究的领域,
在90年代末到2000年的前十年有一个非常有影响力的思想方法,就是基于特征的目标识别,这是一个影响深远的工作,由David Lowe完成,叫做SIFI特征,思路就是去匹配整个目标,例如这里有一个stop标识去匹配另外一个stop标识是非常困难的,因为有很多变化的因素,比如相机的角度、遮挡、视角以及目标自身内在变化,但是可以得到一些启发,通过观察目标的某些部分和特征,他们往往能够在变化中具有表现性和不变性,所以目标识别的首要任务是在目标上确认这些关键的特征,然后把这些特征与相似的目标进行匹配,它比匹配整个目标要容易的多,这里有一张图显示在这一个stop标识中有少量几个的SIFI特征能够被识别,这些特征与另一个stop标识的SIFI特征相匹配,使用相同的构成要素特征,
图片中的表现特征我们这个领域另一进展是识别整幅的场景,这里有一个算法作为例子,叫空间金字塔,背后的思想使图片里面有各种特征,这些特征可以告诉我们这是哪种场景,到底是风景还是厨房,或者告诉公路等等,这个算法从图片的各部分,各像素抽取特征,并把它们放在一起,作为一个特征描述符,然后再特征描述符上做一个支持向量机,
有个在人类认知方面很类似的工作正处于风头浪尖,有些工作是把这些特征放在一起以后,研究如何再实际图片中比较合理地设计人体姿态和辨别人体姿态,这方面一个工作被称为方向梯度直方图,还有另一个被称为可变部件模型。
从上面说的可以了解到我们从60、70、80年代一步步走到21实际,有一件事一直在变化,就是图片的质量,随着互联网的发展、数码相机的发展,计算机视觉的研究也能拥有更好的数据了,计算机视觉在21世纪早期指出了一个非常重要的基本问题,这个问题就是必须要解决非常重要的识别问题,就是目标识别,我们一直在提目标识别,但是直到21世纪的早期,我们才开始真正拥有标注的数据集,提供我们衡量在目标识别方面取得的成功,其中最有影响力的标注数据集之一叫PASCAL VIsual Object Challenge,这个数据集由20个类别,这里展示了三个火车、飞机、人,我记得还有牛、瓶子、猫等等类别,数据集中的每个种类有成千上万张图片,现场不同的团队开发算法来和数据测试集做对抗训练,来看看有没有优化,这里有一张表列举了从2007到2012年在,在基准数据集上监测图像中的20中目标的监测效果,可以看到在稳步提升,也就是说有了很大的进展
在差不多的时候,普林斯顿和斯坦福中的一批人开始,向我们或者说我们这个领域提出一个更困难的问题,我们是否具备了识别真实世界中的每一个物体的能力,或者说大部分物体,然后这个问题也有机器学习中的一个现象驱动的,是支持向量机,或是AdaBoost都很可能会在训练过程中过拟合,部分原因是可视化的数据非常复杂,而正是因为他们太复杂了,我们的模型往往位数比较高,输入是高维的模型,则还有一对参数要优化,当我们的训练数据量不够的时候,很快就会产生过拟合现象,这样我们就无法很好地泛化,因此就是有两方面的动力,一是我们单纯的就是想识别,自然世界中的万物,二是要回归机器学习,克服机器学习的瓶颈,过拟合问题,
斯坦福大学耗时三年完成了ImageNet的项目,汇集所有能找的图片,包含世界万物,组建一个尽可能大的数据集,按照WordNet的字典来排序,这个字典里有上万个物体类别,这是一个巨大的很有可能是当时AI领域最大的数据集,尤其重要的是如何推动这个基准测试的进展,所以从2009年开始Image团队组织了异常国际比赛,叫做ImageNet大规模视觉识别竞赛,这是一个筛选更严格的测试集,总共140万的目标(图像)有1000种目标类别,分类识别来测试计算机视觉算法,这是示例图片,如果一个算法能输出概率最大的五个类别,其中正确的对象就是识别成功,下面是一个统计,ImageNet挑战赛从2010年到2015年图像分类结果。X轴标识比赛年份,Y轴标识比赛结果的错误率,好消息是错误率正在稳步下降,到2012年错误率已经降低到与人类一样。然后展示一下数据集和算法。