【本文来自雷锋网约稿】
2016年是人工智能发展的第60周年,人工智能已经走了很长一段路,随着AlphaGo的辉煌战绩的出现,又再次引爆了人工智能在各个领域的发展。回顾计算机视觉发展之路,才能让我们踩着历史的积淀,顺应发展的大潮,去探索未来。
一、计算机视觉的认知依据
人类对世界的认知非常简单,我们可以一眼看出一个水果是苹果还是橘子。但是对于机器来说,我们怎么写个程序让机器来分辨苹果和橘子呢。
(人类的识别)
如果让大家思考,我们会给出各种答案,比如是不是可以让机器通过水果的颜色来区分,或者通过形状和纹理来区分等等。
(基于颜色、形状、纹理的识别)
在深度学习出现之前,这种基于寻找合适的特征去让机器辨识物品的状态,基本上代表了计算机视觉的全部。以颜色特征为例,它是一种在现在依然被广泛应用的特征,我们称之为颜色直方图特征。它是一种最简单、最直观,对实际图片的颜色进行数字化表达的方式。机器识别图片只能用二维的向量来表示。我们都知道颜色的值可以用RGB三原色来表示,颜色直方图的横轴代表颜色的RGB数值,表示一个物品所有颜色的可能性,纵轴则代表了整个图像具有某个颜色值的像素数量,其实,通过这样一种非常直观的方法,机器就可以对看到的图片进行颜色表征。在过去的二三十年里,关于颜色特征的表示有很多探索和研究,比如:各种各样颜色直方图的变种,使得计算机能够通过二维数字串的形式,更好地表示图像的颜色特征,使得其能够区分看到的不同物品。
左:(颜色直方图striker 1995) 右:(颜色距 )
以纹理特征为例,桔子会有坑坑洼洼的纹理,而苹果的纹理则非常光滑。这种局部的纹理刻画,如何通过数字串的形式抽象表示出来,和颜色特征一样,这是过去很多年计算机视觉一直在探求和优化的问题。下图是计算机视觉中在各个领域使用较多的纹理特征表示方法示例。
(纹理直方图)
(SDM)
形状特征也是一样,以下两图可以直观的示例计算机视觉通过形状特征来进行识别。
(Shape Context: Belongie,2001)
(Hog:Dalal,2005)
通过这些例子可以看出,计算机视觉在过去很多年,处理问题的方法很简单,就是找到一种合适的特征抽象方法,对一个待识别或者待分类问题进行特征表达,然后进行计算的过程。如果要做人脸识别,需要寻找到底是颜色特征还是纹理特征或者形状特征更适于表达,怎么样能把目标问题区分开来。对人脸来说,颜色的作用不会很大,因为人脸的颜色长得都差不多。但是人脸的褶皱、纹理,两眼之间的距离等可能代表了不同人之间的区别,可能纹理和结构特征相比更加有效。而如果我们要检测识别人体,可能纹理特征就不是那么重要,因为人会穿各种各样的衣服,但形状特征就会很重要。所以,过去的计算机视觉是针对不同的问题,选择不同的特征表征方法。
二、计算机视觉的发展过程
从2006年开始,在将近10年的时间里,计算机视觉的方法发生了一个比较本质的变化,就是深度学习的出现,在某种程度上改变了我们前面对计算机视觉的定义。我们先了解一下计算机视觉发展的历程,看看是基于什么契机和积累,让计算机视觉发生了这样的变化。计算机视觉的发展史可以追溯到1966年,著名的人工智能学家马文·明斯基给他的本科学生布置了一道非常有趣的暑假作业,就是让学生在电脑前面连一个摄像头,然后写一个程序,让计算机告诉我们摄像头看到了什么。大师就是大师,这道题实在是太有挑战了,在某种意义上它代表了全部计算机视觉要做的事情,因此我们认为这是一个起点。上世纪70年代,研究者开始去试图解决让计算机告知他到底看到了什么东西这个问题。研究者认为要让计算机认知到底看到了什么,可能首先要了解人是怎样去理解这个世界的。因为那时有一种普遍的认知,认为人之所以理解这个世界,是因为人是有两只眼睛,他看到的世界是立体的,他能够从这个立体的形状里面理解这个世界。在这种认知情况下,研究者希望先把三维结构从图像里面恢复出来,在此基础上再去做理解和判断。
(David Marr,1970s)
上世纪80年代,是人工智能发展的一个非常重要的阶段。人工智能界的逻辑学和知识库推理大行其道,研究者开始做很多专家推理系统,计算机视觉的方法论也开始在这个阶段产生一些改变。人们发现要让计算机理解图像,不一定先要恢复物体的三维结构。例如:让计算机识别一个苹果,假设计算机事先知道苹果的形状或其他特征,并且建立了这样一个先验知识库,那么计算机就可以将这样的先验知识和看到物体表征进行匹配。如果能够匹配,计算机就算识别或者理解了看到的物体。所以,80年代出现了很多方法,包括几何以及代数的方法,将我们已知的物品转化成一些先验表征,然后和计算机看到的物品图像进行匹配。
(David Lowe, 1987)
上世纪90年代,人工智能界又出现了一次比较大的变革,也就是统计方法的出现和流行。在这个阶段,经历了一些比较大的发展点,比如现在还广泛使用的局部特征。前面介绍的形状、颜色、纹理这些表征,其实会受到视角的影响,一个人从不同的角度去看物品,它的形状、颜色、纹理可能都不太一样。随着90年代统计方法的流行,研究者找到了一种统计手段,能够刻画物品最本质的一些局部特征,比如:要识别一辆卡车,通过形状、颜色、纹理,可能并不稳定,如果通过局部特征,即使视角变化了,也会准确对其进行辨识。局部特征的发展,其实也导致了后来很多应用的出现。比如:图像搜索技术真正的实用,也是由于局部特征的出现。研究者可以对物品建立一个局部特征索引,通过局部特征可以找到相似的物品。其实,通过这样一些局部点,可以让匹配更加精准。
(David Lowe, 1999)
到2000年左右,机器学习方法开始盛行。以前需要通过一些规则、知识或者统计模型去识别图像所代表的物品是什么,但是机器学习的方法和以前完全不一样。机器学习能够从海量数据里面去自动归纳物品的特征,然后去识别它。在这样一个时间点,计算机视觉界有几个非常有代表性的工作,比如:人脸识别。要识别一个人脸,第一步需要从图片里面把待识别的人脸区域给提取出来,这叫人脸检测。像在拍照的时候,会看到相机上有个小方框在闪,那其实是人脸识别必要的第一步工作,也就是人脸框的检测。在以前,这是非常困难的工作,但是在2000年左右,出现了一种非常好的算法,它能够基于机器学习,非常快速的去检测人脸,称之为Viola&Jones人脸检测器,这奠定了当代计算机视觉的一个基础。
(Viola&Jones, 2001)
机器学习的盛行其实是伴随着一个必要条件出现的,就是在2000年左右,整个互联网的出现和爆发,产生了海量的数据,大规模数据集也相伴而生,这为通过机器学习的方法来做计算机视觉提供了很好的土壤。在这期间,出现了大量学术官方的,针对不同领域评测的数据集。人脸检测最具有代表性是一个叫FDDB的数据集。这个数据集包含了超过5000多张人脸数据,每一张人脸,都人为的用框给框出来,机器就可以从这些框好的数据里面,通过一些机器学习的手段去学习从任何一张图片中找到人脸区域。
(FDDB,5171 faces, 2845 images)
另外,我们耳熟能详的一个数据集是人脸识别数据集LFW。提到人脸识别,可能我们听过“计算机做人脸识别比人更准”。其实这句话是有一定问题,在很多实际场景里,计算机做人脸识别连人的70%可能都达不到。那么在什么情况下,它比人准呢。有一种情况就是在LFW上。LFW数据集里面有1万多张人脸和5000多个人的数据,每个人都有在不同情况下拍摄的真实场景的多张人脸。基于这样的一个数据集,研究者可以在上面评估人脸识别的精度。人脸识别领域发展非常快,尤其是最近几年深度学习的兴起后,这个数据集变得非常火爆。人在LFW上面的识别正确率大概是97.75%,而机器已经在LFW上可以做到99.75%甚至更要高。
(13233 faces, 5749 people)
在这期间,还出现了其他非常有影响力的数据集,其中比较有代表性的就是由李飞飞教授发起的一个项目IMAGEMET。他通过众包的方式,标注1400万张图片,分了大概2万多个类别,这些类别包罗万物,比如像动物,里边可能分为鸟类、鱼类等;植物,里面可能会分为树和花。她的理想很宏大,就是希望提供这样一个数据集,为计算机视觉算法提供一个数据土壤,让未来的机器能够认识世界上的一切物品。
在2000年代,人工智能经历了一个快速发展期以后,整个人工智能在很多行业取得了非常好的应用,比如:视觉之外有搜索引擎排序和计算广告等等,视觉领域人脸检测器也被用在了各种各样的相机里面。到2010年代,人工智能进入了一个最激动人心的年代,它就是深度学习的年代。深度学习从本质上给整个人工智能带来了一次革命。在上世纪,有人做了一个猫的实验。在猫脑袋上开了一个洞,然后在猫的前面放各种各样的物品,观察猫在不同物品下的反应。通过实验发现,当我们放一些形状非常类似的物品时,猫的后脑皮层的相同区域会表现出同样的刺激反应,这一实验了说明人的视觉系统认知是分层的。在早期模拟人脑认知的多层神经网络模型经历2000年左右的一个低谷后,2006年Hinton教授在《科学》发表了对于深层神经网络的训练方法,带来了深度学习的蓬勃发展。
(LeNet-5, 1998)
上图左侧是一个普通的三层神经网络算法,是一种浅层的学习方法。在这种浅层神经网络中,输入的数据依然是人工抽象出来的特征表达,比如颜色、形状、纹理或者局部特征等。而右边的则是现在最常使用的一种深度学习方法,卷积神经网络。从外面来看,最大的改变是其输入是原始图像的像素,不再用人工进行特征表达和抽象,而改用神经网络本身在浅层自动进行特征抽象。这是浅层机器学习模型和深度学习模型的根本区别之一。
(Hinton, 2006)
(Li, Tang etl, 2014-2015)
自2006年开始,在接近10年的时间里,整个计算机视觉界产生了质的变化,深度学习的出现真正改变了计算机视觉之前的定义。
三、计算机视觉的应用领域
深度学习出现以后,对各种各样的视觉识别任务的精度都进行了大幅度的提升,拿人脸来说,在深度学习出现之前,一个普通的识别算法,比如使用颜色、纹理、形状或者局部特征,可以将各种特征糅合在一起,人脸识别率一般只能做到94%~95%。在很多的实际系统,比如以前用的人脸考勤,可能当时的系统只能做到90%~92%的识别率。深度学习出现以后,直接将这个精度提高到了99.5%以上,将错误率降低了10倍。这种量级的错误率降低意义非凡。比如:把人体识别的精度用到汽车的辅助驾驶系统里边,如果出现了漏报或错包,这是非常头大的事。如果是95%的精度,有100个人经过,在一定距离范围内,他可能就有五次错报或者漏报,这肯定是无法接受的。但如果精度再提升10倍或者100倍,比如1万个人只有5次漏报的话,那这件事可能就是可行了。所以,深度学习的出现使得以前视觉方法不太实用的一些应用领域,基本上都可以通过深度学习的方法来获得一个良好的应用。目前计算机视觉的热点应用在目标检测、目标识别、目标跟踪、场景理解、立体视觉等一些领域,人脸识别用的比较多的领域是金融行业,像人脸识别身份验证等;图像搜索比较直观的应用,如拍一张鞋的照片,在淘宝进行搜索,就可以找到类似的鞋。再比如像安防,也是计算机视觉的一个典型应用领域;还有一个非常大的应用,就是在机器人领域,包括整个的智能设备领域,深度学习的出现,使得机器人在视觉能力或者语音能力上,去模仿人的能力成为可能。随着深度学习的发展,国内也出现了一些专注于深度学习的视觉企业,比如专注于金融和安防监控的Face++、SenseTime,专注于图片审核的图普科技、专注于图像搜索的衣+,而我们阅面科技则专注于嵌入式视觉和机器视觉领域。
四、阅面科技的探索
回顾了计算机视觉的发展之路,阅面科技在深度学习的大潮中顺势而生。深度学习的出现使得人工智能的应用上产生很多创业和创新机会。比如在和垂直行业结合方面,像金融、医疗行业,这方面应用的特点是计算发生在服务器端或者云端。另外一方面的机会来自于各种各样的硬件设备的智能化升级,这方面应用的特点是计算的前端化和实时化。我们都知道以前的智能硬件都很不智能,用户体验不好。人工智能算法的发展,会把一系列的硬件设备变得智能起来,成为真正的智能机器。阅面科技在做的嵌入式视觉,就是帮助各种各样的智能机器,通过嵌入视觉算法,让它拥有一双像人类一样的眼睛,能够去认知周边的人或者场景。我们的研究应用于包括机器人、智能家居、车载设备等领域。我们主要解决人机交互及场景的感知两大问题,这两方面的能力是未来的智能机器必须具备的核心能力。以智能机器来举例,它需要理解人,知道这个人是谁,并且理解人的表情变化以及交互的手势和人体动作,这其实就是人机交互层。智能机器的场景感知层,就是将智能机器放在一个陌生环境里,能够让它知道处于什么样的环境,能够让它识别物品和场景,能够进行自主导航定位,自由行走。计算机视觉是整个人机交互和场景感知的未来。阅面科技为智能机器提供软硬件一体的视觉认知解决方案。首先在底层构建了核心的算法引擎,如人脸识别、手势识别、人体识别和场景识别等,然后在算法层上面,我们做了两件事,一方面做硬件模组,另一方面做芯片。所有硬件层的努力,都是为了让底层的神经网络深度学习算法能够非常流畅的在嵌入式设备上以非常快的速度、非常低的功耗跑起来。通过软硬件一体化的解决方案,可以真正帮助未来的智能机器非常方便的接入视觉认知服务,去认知这个世界。
五、由深度学习的发展看未来的挑战
计算机视觉的发展当然不可能一帆风顺。对任何一个视觉识别任务而言,它的自然条件的变化,比如像姿态、遮挡,包括光照等各种条件的变化,都会极大的影响它的识别精度和正确率。怎样去解决这个问题,其实是整个计算机视觉面临的最大挑战。深度学习擅长的是分类问题,而对于上下文语义的理解,它是非常不擅长的。比如让它理解人类说的话,在这方面的应用这几年并没有太多实质性进展,这也是阅面专注做计算机视觉这件事的原因之一,如果去做自然语言理解,深度学习目前的帮助不大,但连续语义以及上下文的理解是近年深度学习模型研究的重点,相信未来会有所突破。深度学习确实带来了实质性的一个突破,但是针对很多任务,离我们真正想达到的精度还有不小差距,比如:人体检测、物品识别的的精度,在真实场景中比起我们人类,还远远不够。整个学术界对于新一代深度学习模式的研究还一直在继续。比如:人在认识世界的时候,它不仅仅把信息从大脑的初级皮层向深处的神经元传递。人在理解的时候,心理学家发现人脑深层的神经元可以反过来指导最开始输入层的认知。所以,我相信深度学习,在这些年还会从理论模型上带来比较大的突破,这种突破可能会使得这种模型越来越逼近我们人对信息的处理。计算机视觉之路,路漫漫,其修远,吾将上下而求索。
标签: 世界上有尸别吗
还木有评论哦,快来抢沙发吧~