(作者:孙健,微软亚洲研究院首席研究员)
从疯狂的吃血喝血到钢筋水泥的城市,人类逐渐将自己的能力投射到电脑上。无论是计算能力还是记忆能力,如今的电脑性能都是优秀的。但光有这些是不够的。我们期望计算机能做得更多。一个举世闻名的《星际穿越》,激起了无数人探索浩瀚宇宙奥秘的欲望,也让很多人记住了聪明可爱幽默的智能机器人Tars。以人工智能为主题的好莱坞电影受到了影迷的广泛喜爱。人类用无尽的想象力和炫目的特技,建造了一个又一个精彩的未来世界,令人神往。然而回到现实,电脑科学家的动作似乎远远落后于电影艺术家的想象,电影终究是电影。要开发出像Tars这样能够理解周围世界、理解人类语言、与人类进行顺畅对话的智能机器人,我们还有很长的路要走。
Tars/《星际穿越》(星际)
很长一段时间以来,让电脑看、听、说一直是我和电脑界同行的目标。在计算机视觉领域打拼了十几年,给计算机一双雪亮的眼睛,让它也能看懂这个五彩缤纷的世界,一直是激励我在这条充满挑战的道路上前行的重要力量。虽然电脑暂时没有电影中表现的那么智能,但已经取得了许多惊人的成就。在这篇文章中,我将介绍计算机视觉的基本概念,该领域面临的挑战,带来重要突破的一些技术,并展望未来的进化趋势。
我们眼中的世界是如何形成的?
对于人类来说,“认人”似乎是一种与生俱来的本能,刚出生没几天的宝宝就能模仿父母的表情。它让我们有能力用很少的细节来区分彼此,在昏暗的灯光下,我们仍然可以认出走廊尽头的朋友。然而,这种对人类来说很容易的能力,对计算机来说却很难。过去很长一段时间,计算机视觉技术停滞不前。在进一步探索之前,最好谈谈我们是如何用眼睛观察世界的。
相信大家都在中学物理课上尝到了针孔成像的原理。然而,人眼比针孔成像复杂得多。当我们观察物体时,我们每秒扫描大约3次,停留一次。当视网膜的感光细胞感受到蜡烛的轮廓时,一个叫做中央凹的区域实际上以扭曲的形式记录了蜡烛的形状。
那么问题来了,为什么我们看到的世界既不扭曲也不畸形?很简单,因为人类有大脑皮层这个万能的“转换器”,把我们视觉神经捕捉到的信号转换成真实的图像。这个“转换器”可以简化为四个区域,生物学家分别称之为V1、V2、V4和IT区域。V1区域的神经元只对整个视觉区域的一小部分做出反应。例如,当一些神经元找到一条直线时,它们变得异常活跃。这条直线可以是任何东西的一部分,也许是桌子,也许是地板,也许是这篇文章中某个人物的笔画。每次眼睛扫描时,这些神经元的活动可能会迅速变化。
这个谜出现在大脑皮层顶部的信息技术区域。生物学家发现,物体出现在视野的任何地方(比如一张脸),有些神经元会一直处于固定的活跃状态。也就是说,人类的视觉识别是从视网膜到IT区域,神经系统从能够识别细微特征逐渐转变为能够识别目标。如果计算机视觉也能有一个“转换器”,计算机识别的效率将大大提高,人类视觉神经的运行为计算机视觉技术的突破提供了启示。
为什么电脑总是雾里看花?
虽然人眼识别的奥秘已经逐渐被揭开,但是直接应用到计算机上并不容易。我们会发现,电脑识别永远是“雾里看花”。一旦光线和角度发生变化,电脑就很难跟上环境的节奏,所以就会出错。对于计算机来说,在不同的环境中识别一个人不如在同一环境中识别两个人容易。这是因为起初研究人员试图把人脸想象成一个模板,并通过机开发者_StackOverflow中文版器学习掌握了模板的规则。但是,虽然脸看起来是固定的,但是角度、光线、穿着和外观都不一样,这使得简单的模板很难匹配所有的脸。
因此,人脸识别的核心问题在于如何让计算机忽略同一个人的内在差异,发现两个人的差异,即让同一个人相似,不同的人不同。
人工神经网络的引入是在计算机视觉中超越模板识别的关键。但是,当人类还没有完全掌握神经的运行机制时,如何引导计算机进步呢?人工神经网络从20世纪60年代开始萌芽,最初的理论只是固定在一个简单的模型上,即生物课中的“输入-隐藏层-输出”模型。教师在介绍神经的工作原理时,通常简单地讲,外部刺激与输入神经元接触,输入神经元与其他部分链接形成隐藏层,最后通过输出神经元表现出来。这些神经元的链接强度不一样,就像不同乐谱的强度不一样。人工神经网络依赖于这些神经元之间不同的链接强度,并学习将输入模式映射到输出。
但“乐谱”只是静态的,只能从“输入”走向“输出”,没有反向呈现。也就是说,如果人是静止的,计算机也许可以通过这个原理来读取,但这在现实生活中是不可能的。20世纪80年代末,人工神经网络的“反向传播算法”被发明出来,它可以将输出单元的误差传输回输入单元并记忆。该方法使人工神经网络能够从大量训练样本中学习统计规律,预测未知事件。然而,与大脑复杂而有层次的结构相比,这种只有一个隐藏层的神经网络结构就显得微不足道了。
计算机的深度神经网络“拨云见日”。
2006年,多伦多大学教授杰弗里辛顿在深度神经网络的训练上取得了突破。他一方面证明了多隐藏层的人工神经网络具有更好的特征学习能力,另一方面通过逐层初始化可以克服之前困扰研究者的问题。
训练难题——基本原理是先通过大量无监督数据保证网络初始化,再用有监督数据在初始化好的或者是预训练的网络上优化调整。受到这些因素的启发,如今的人脸或图像识别研究,大多基于CNN(Convolution Neural Networks)原理。CNN可以被视为一种逐层扫描的“机器”。第一层检测边缘、角点、平坦或不平坦的区域,这一层几乎不包含语义信息;第二层基于第一层检测的结果进行组合,并将组合传递给下一层,以此类推。多层扫描之下,累加准确率,计算机就在向前文提及的“让同一个人相似,不同的人有别”这一目标迈进。
CNN的学名为带有卷积结构的深度神经网络,这一网络识别物体还可分为两个步骤:图像分类和物体检测。在第一个阶段,计算机首先识别出物体的种类,例如人、动物或其他物品;第二个阶段,计算机获取物品在图像中的精确位置——这两个阶段分别回答了“是什么”和“在哪里”两个问题。微软的智能聊天机器人“小冰”具有辨识狗的品种的能力即是CNN的典型示例。首先,需要搭建一个好几层深度卷积网络。第一层跟人类视觉系统的定义很像,用来对一些小的边缘或者小的色块做一些检测;第二层会把这些小的结构组成大的结构,如狗腿和狗的眼睛;依次向上进行组织,最后就能鉴别出狗的种类来。其次,需要往这个带有卷积结构的深度神经网络里投入很多的图,训练系统识狗的准确度。
2013年,加州大学伯克利分校的研究者们提出了一种称为叫R-CNN方式(Region-based CNN)的物体检测方法,具有很高的识别准确度,它将每张图像分为多个窗口或个子区,在每个子区域应用神经网络进行分类。但其主要缺陷在于,对于实时检测,算法过慢。为了在一张图片上检测几个物体,整个神经网络可能需要运算上千次。
在微软亚洲研究院,视觉计算组的研究员们实现了一种称为空间金字塔聚合(Spatial Pyramid Pooling,SPP)的新算法,通过在内部特征识别,而不是每个区域从头检测,对整个图片只做一次计算。利用这种新算法,在不损失准确度的前提下,物体检测速度有了上百倍的提升。在2014年ImageNet大规模视觉识别挑战赛中,微软亚洲研究院采用SPP算法的系统取得了分类第三名和检测第二名的成绩。目前,这项技术已经成功转化进入OneDrive中。采用了这项技术后,OneDrive可以自动为上传的图片添加标签。同时,用户输入关键词,就可以搜索与之相对应的图片。
展望未来 计算机视觉和人类共舞
如果单纯识别面部,而不考虑发型和身体的其他部分,人类的正确率约为97.5%,而计算机目前则能达到99%以上。这是否意味着计算机已经胜过了人类?不是,因为我们不只观察面部,身材和体态都有助于我们认出对方。在复杂光照的真实环境下,人能够更智能地选择这些分支帮助自己决策,而计算机在这方面则要逊色许多。不过,如果数据量庞大,或者面对陌生的脸孔,计算机又更强大些。如果能够各扬其长,歌词中所唱的“借我一双慧眼吧”或许将会实现。
人类通过不断发明的新技术来替代旧技术去更高效和经济地完成任务。在计算机视觉领域亦是如此,我们开发更便捷人脸识别用于门禁系统,以替代手动的输入用户名和密码——Xbox One利用红外相机设计的人脸识别系统就颇受用户好评。
除上述人类自身也能做到的识别功能外,计算机视觉还可应用在那些人类能力所限,感觉器官不能及的领域和单调乏味的工作上——在微笑瞬间自动按下快门,帮助汽车驾驶员泊车入位,捕捉身体的姿态与电脑游戏互动,工厂中准确地焊接部件并检查缺陷,忙碌的购物季节帮助仓库分拣商品,离开家时扫地机器人清洁房间,自动将数码照片进行识别分类……或许在不久的将来,超市电子秤就能辨别出蔬菜的种类;门禁系统能分辨出带着礼物的朋友,抑或手持撬棒的即将行窃的歹徒;可穿戴设备和手机帮助我们识别出镜头中的任何物体并搜索出相关信息。更奇妙的是,它还能超越人类双眼的感官,用声波、红外线来感知这个世界,观察云层的汹涌起伏预测天气,监测车辆的运行调度交通,甚至突破我们的想象,帮助理论物理学家分析超过三维的空间中物体运动。
曾经,人类用眼睛记录了波澜壮阔的历史。未来,我们希望逐步开启计算机的眼,让它在看懂这个多彩的世界的同时,也能帮助人类更高效和智能地完成工作和生活。期待在计算机视觉和人类的共舞下,世界不仅有多彩,更有智慧。
精彩评论