
惊人的YOLO——最前沿图像识别技术
东大机器人亮相TED
舞台上,一位留着漂亮的络腮胡子、身穿黑色T恤和牛仔裤、剃着光头的年轻人动作敏捷地走来走去。他不断做出各种动作,忽而抬起两臂,忽而又蹲下抱住膝盖,随即又站起身来。大屏幕上实时显示出他的各种动作,画面上的年轻人处于一个红框之内,边框随着他的动作变得忽左忽右、忽大忽小。这是TED演讲上的一幕。
2017年4月,我站在舞台的一侧看到这一切,不禁脱口而出:“这不可能!”
TED大会以“传播一切值得传播的创意”为宗旨,每年都会在温哥华召开。过去受邀来此的演讲者中不乏赫赫有名的人物,如谷歌创始人拉里·佩奇和谢尔盖·布林、诺贝尔奖得主詹姆斯·沃森、比尔·克林顿等。TED官网上公开的演讲视频播放数从几百万到上千万不等,志愿者会将演讲内容译成各种语言的字幕。若想在为期五天的大会现场听到最前沿、最高水平的演讲, TED门票最低价格也要150万日元,而且每年都是在开始销售的瞬间就被一抢而光。在会场上,你能看到穿着随意的史蒂芬·斯皮尔伯格和比尔·盖茨等人谈笑风生。
2017年TED大会的主题是“未来的你”(The Future You),第二天上午的讨论焦点是人工技能和机器人技术。我有幸作为演讲者之一受邀来到会场,加州大学伯克利分校的斯图尔特·拉塞尔教授和波士顿动力公司的马克·雷伯特等人也参加了这次会议。
我演讲的题目是“机器人能考上大学吗?”(Can a robot pass a university entrance exam),介绍了东大机器人的挑战,也就是简明扼要地介绍了本书的内容。
请结合东亚及东南亚各国的贸易方针和欧洲各势力在该地区的动向,围绕17世纪东亚和东南亚地区海上贸易从繁荣到衰落的变化过程及其主要原因,写一篇600字左右的论文。
这道世界史论述题体现了东京大学二次考试的难度。东大机器人在答题纸上作答的样子、它出人意料的运行原理以及教育大国日本的初中生及高中生阅读理解能力的真实情况引发了观众的阵阵惊叹。
“你的演讲很成功,太棒了!”负责策划的亚历克斯给了我一个大大的拥抱,我用干姜水润了润嗓子,在舞台旁边的等候区把目光投向显示屏。显示屏上,满脸络腮胡子的年轻人正在舞台上来回走动。
实时物体识别系统
在我之后登上演讲台的年轻人叫约瑟夫·雷德蒙,他是华盛顿大学的研究生。他演讲的题目是“计算机如何快速识别物体”(How computers learn to recognize objects instantly),介绍了他发明的YOLO(You Only Look Once)。让我惊呼“不可能”的正是这项技术。
正像前面提到的,人工智能包含多个不同领域。例如尝试让机器“理解”语言(自然语言)的自然语言处理技术、让机器听到声音的声音处理技术、合成出人类声音的语音合成技术和让机器“理解”照片或视频等图像信息的图像处理技术等。其中尤其是图像处理技术从深度学习的发展中受益最多。
20世纪90年代,就连分辨猫和狗这种最基本的物体识别也被认为是永远不可能实现的,至于找到什么东西、在哪里、有几个等信息的物体检测就更是痴人说梦了。随着21世纪前十年期间机器学习乃至近几年深度学习的发展,物体检测的精度得到了难以置信的迅速提高。不过尽管如此,要在看到的瞬间立刻判断出视野中有何种物体出现在哪个位置、正在向哪个方向移动,即实时、准确地识别物体仍然困难重重。因为要判断一幅图像中包含什么物体需要很长的处理时间。笔记本电脑处理一幅图像需要10秒以上,这个速度只能勉强跟得上人在研究室里的缓慢移动。
实时物体识别技术对自动驾驶的实用化来说必不可少,突然闯到道路中间的是塑料袋、猫还是小孩,要10秒钟才能判断出来的话恐怕什么都晚了。
雷德蒙开发的YOLO系统只要0.02秒就能识别一幅图像,比之前快了将近500倍。这样一来,自动驾驶就又朝着实用化迈出了一大步。现场的很多观众应该也是同样的感受,他们的大声喝彩,淹没了我的惊叹。
那么,这种惊人的高速处理是如何实现的呢?
物体识别系统的工作原理
在揭开YOLO高速处理图像的秘密之前,我想再对物体检测系统做一些说明。
一般来说,每张照片都会包含多个物体。例如一张生日聚会的照片上,可能有围在桌边的人们、摆在桌上的蛋糕和蜡烛、盘子、叉子和咖啡杯等。此外,照片上还可能会有鲜花,背景中也可能会看到茶几和电话、沙发上的宠物猫,甚至还有墙上的挂历。我们在看到照片的一瞬间,马上就能判断出谁是主角,哪些要素是重要的,哪些无关紧要。
但计算机做不到这一点。首先,计算机必须找到图像的哪个位置包含需要检测的物体。过去的图像识别技术从图像左上角开始,缓缓移动边框,把整个画面毫无遗漏地都检查一遍。这个过程长得让人想放弃。
后来,有人想出了首先从可能包含检测对象的区域着手的方法。例如墙面没有什么变化的地方都可以略过,只看挂历附近,再把沙发上面都忽略,只看猫的附近等。假设一幅图像上最多只有2000来个物体,就可以首先选出可能包含检测对象的区域作为候补,接下来再去识别具体是什么物体。
不过假设一张图像上有2000个物体,这种方法检测物体的计算量仍旧多得超乎想象,非常耗时。这与只要看到图像就能在瞬间读取各种信息的人类认知方式截然不同。
计算机要识别图像,必须对矩阵进行运算,就是我们在高中学过的矩阵。例如下面的运算:

如果矩阵的行和列都很少,运算可以很快完成。但如果矩阵非常大,运算量也会变得十分庞大。就算使用超级计算机,或者到了量子计算机时代,计算机基本上也只能进行四则运算。图像的哪个像素中哪种颜色的辉度是多少等信息,以及通过深度学习计算“草莓相似度”“蜡烛相似度”等所需的权重信息等都包含在矩阵中。
要实时检测物体,或者说要缩短计算时间,只能大幅缩小矩阵大小,或者提高加法和乘法的运算效率。当然,一直有人在研究如何同时实现这两个目标。例如在不丢失信息的情况下,将较大矩阵转换为较小矩阵的数学方法已经成为炙手可热的研究领域,但这种方法的效果也是有限的。
为了提高运算效率,研究者们开始关注如何充分发挥GPU(图形处理器)的作用。普通的计算机都是通用的,可以用于任何运算。限定用途则可以提高芯片的效率。游戏机就是一个典型实例。游戏机离不开实时图像处理,因此会使用结构不同于通用电脑CPU的GPU来专门处理图像。研究者们将GPU用于深度学习和实时图像处理,以便提高运算效率。深度学习对物体检测的需求使GPU厂商的股价在2016年以后呈现出直线上升的态势。
不过, YOLO系统好像并不是依靠上述方法实现的。我一边看着雷德蒙的演示一边想, GPU厂商的前景今后可能就完全不同了。
人工智能长眼睛了吗
过去的人工智能要对可能包含物体的区域进行2000次识别才能检测出2000个物体,而YOLO实现高速化的关键是它只需要识别一次。这个系统叫作YOLO(You Only Look Once),就是只需要看一次的含义。从这个意义来看,可以说YOLO系统距离人类或其他动物用眼睛“看”的行为又近了一步。
现在,雷德蒙的网站上有免费公布的第2版YOLO,还可以看到演示视频。这个视频更加令人惊叹。画面从中东某个国家的市场开始,接下来是混入人群中逃窜的恐怖分子和握着手枪在后面追赶的主角,两辆摩托车朝着各个方向疾速行驶。令人眼花缭乱的背景不断变换, YOLO则接连不断地从中识别出各种目标:人、人、人、人、手机、领带、汽车、摩托车、摩托车、人、人、领带……
参加TED演讲的三个月后,雷德蒙在由亚马逊、谷歌、微软、优步等顶级IT企业赞助、代表图像识别领域最高水平的国际会议CVPR上获得了优秀论文奖。如今,在所有IT企业之间,无疑正在展开一场争夺雷德蒙的激烈竞争。