获“艾美奖”的计算机视觉专家Andrew Fitzgibbo:不断为自己创造谜题

2019-09-05 | 作者:微软亚洲研究院

编者按:你可能不知道 Andrew Fitzgibbon 博士是谁,但你在过去20年里看到的很多电视剧或电影,都使用了他获得“艾美奖”的摄像机跟踪器 Boujou。他是 3D 计算机视觉方面的专家,同时负责领导微软剑桥研究院新设立的“全数据人工智能”(All Data AI)团队。

本期播客中 Andrew 将为我们介绍 ADA 团队构建全数据人工智能的理念,讲述他如何为 Boujou 试遍所有的算法来找到最漂亮的那一个,并回顾微软研究院和 Kinect、HoloLens 产品开发团队如何合作架起通往虚拟世界的桥梁,将未来送到你眼前。本文编译自微软研究院播客“All Data AI with Dr. Andrew Fitzgibbon”


微软剑桥研究院 All Data AI 团队负责人 Andrew Fitzgibbon 博士

采访音频:

构建全数据人工智能

主持人:最近您被任命领导剑桥研究院一个名为“All Data AI”的团队,它的首字母缩写 ADA 让人想起 Ada Lovelace,是特意这样命名的吗?

Andrew Fitzgibbon:对。Ada Lovelace 被认为是世界上第一个计算机程序员。无论她是否编写了计算机程序,她是第一个观察到分析机的计算能力可以应用于非数字的量的人。自从计算机出现以来,我们已经能在计算机中用字符串、单词等表示数量,使用这个名字并不在于强调计算机能理解一系列的数字,而是它能理解这些数字间的相互联系。ADA 组致力于研究适用于复杂现实数据的人工智能模型和技术:大数据、小数据、具有复杂结构(如树和图)的数据,概括起来就是“全数据人工智能”。因此这个名字和我们的目标是很契合的。

主持人:谈谈你想在 ADA 解决的具体问题,以及你希望突破哪些技术领域?

Andrew Fitzgibbon:ADA 希望让人工智能渗透到更多地方。现在我们还不能在互联网上问一个类似“帮我找到所有离山坡100米以内的滑雪小屋”的问题。因为滑雪小屋都有自己的小网站,它们不一定是聚合的。解决方法很简单:遍历世界上所有的网页。但一台真正能够阅读和理解所有网页的电脑显然是非常遥远的。我们想将人工智能和机器学习渗透到一些领域提供更有效率的工作,通过推进基础研究,让人工智能更好地服务于现实世界。

主持人:为什么要新设立这个团队呢?设立后产生了哪些新的火花?

Andrew Fitzgibbon:大家肯定都观察到了机器学习、深度学习给人工智能带来的进步,我认为现在是将其应用到更广泛的领域的黄金机会,同时也是思考新一代 AI 编程的绝佳时机。直到今天,AI 编程一直是譬如机器学习博士或理解线性代数的专家的专业领域,但实际上许多 AI 编程可以更加简单。所以,我们正在研究第三代 AI 编程。第一代 AI 编程是 Hinton 和 LeCun 他们费尽心血写下的原始代码。第二代编程围绕着一系列工具展开,比如 TensorFlow 和 PyTorch,这些工具让 AI 更大众化,但 AI 对许多人来说依然很难理解。在我看来,这些编程在一定程度上隐藏了 AI 模型的美丽。神经网络模型其实是可以相对简单,又能给出复杂结果的,我们希望能看到更多精心设计的简单干净的代码和模型。

主持人:在您早期的研究中有一项伟大的发明 Boujou,它是一个获得了“艾美奖”的摄像机跟踪器,被广泛地用于计算机图形学和电影实景拍摄中。请为我们介绍更多关于 Boujou 的情况?

Andrew Fitzgibbon:Boujou 是一个非常有趣的项目。90年代中期,我在牛津大学和一些很棒的人共事,他们对机器人如何在环境中行走很感兴趣,于是我们开始研究机器人如何导航的问题。我们发现机器人要想知道自己在三维空间中的位置,首先要做的就是建立一个三维的世界模型。我们先制作了一个漂亮的 3D 模型,我们认为它会很有用,因为在那个年代,如果要在电影里看到外星人,制作人员会先用粘土做出外星人的样子,然后把它扫描到电脑里。Boujou 就是用机器人导航仪把摄像机旋转到外星人模型周围,将数据扫进电脑,把这个 3D 物体的电脑模型呈现给大家。

当时最难的一件事,就是弄清楚摄像机的路径。比如,我在一艘船上安装了摄像头,这艘船上有一些霍比特人,他们沿着一条河向一座山驶去,山上应该有两个巨大的雕像。但在拍摄中不会实体建造这么大的雕像,所以我们要在工作室做一些小的模型。只要知道摄像机在水面上的移动情况,就可以让机器人做同样的轨迹,然后将图片叠加起来。而在那个年代,唯一能知道相机在哪里的方法就是手动为每一个镜头定位,因此成本非常高。所以后期人员意识到我们的算法非常有用。于是我们就创办了一家创业公司 Boujou。当时有一些产品可以做字符识别、车牌识别,但 Boujou 是第一个实现 3D 视觉的产品之一,这让我非常自豪。为了实现这个目标,我们必须超越当时最先进的学术水平。

人们会问我,Boujou 的秘诀是什么?我认为秘诀就是读完所有关于 3D 结构和运动的论文。这种专注的态度直到今天依然适用。有时大家会将漂亮和简洁作为算法的评价指标,但在现实世界中,你可能要在尝试过所有的算法后,才能找到最漂亮的。

将现实传递给虚拟世界

主持人:微软的 Kinect 传感器最初不被人看好,上市后却取得了巨大的成功。Kinect 是如何产生、如何发展的,它对你所从事的其他研究领域有什么影响?

Andrew Fitzgibbon:Kinect 是学术研究人员与工程师共同合作的典型案例。当时微软研究院正在研究跟踪人体运动的计算机视觉算法,我们做得很好,取得了一些成果。所以 Xbox 团队的 Alex Kipman 找到我们说要制作一个能识别人体运动并由此控制游戏的产品。我们回复说,这个设想不可能实现。然后 Xbox 团队请我们先看看他们写的程序,结果发现,他们使用了一个来自学术界的想法,但把它设计得更好更有效,使他们的版本比任何学术论文中的都好。

Kinect 的想法不被学界看好的原因是,当时很难将视频中的某一帧提取出来识别其中的人物,并标记出手掌和手肘的位置。假设你有一张30毫秒前的图像,它和现在的图像的各个位置没有太大差异,然后就能通过连续性定位物体。这是早就存在于学界的想法,但是没有人真正将其落地。他们的贡献是观察到这样的现象:假设这个系统在99%的时间都正常工作,而且30毫秒前的系统是正确的,同时我们算出系统在五分钟后肯定会故障。所以我们可以设计出一个运行三分钟然后重置自己的系统,这样系统就不会犯错。所以我们的第一个贡献是让系统每隔几秒钟,就自我重置一次。这是机器学习真正应用于计算机视觉难题的早期实例。

看过程序后,我们告诉 Xbox 团队可以尝试,但是我们需要 Kinect 在世界上十个不同客厅里运行的数据,这样才能训练机器学习算法,同时检验我们是否做得很好。两周后我们接到电话,他们说已经搞定十份实测数据了,他们刚测试完日本的情况,明天就要前往中国……当时我们被吓坏了,突然意识到这群人是认真的。后来当我们说想借一个好莱坞工作室来生成训练数据时,他们就真的租了一间。

总的来说,Kinect 中涉及的理论学界之前已经提出,但没有人真正去实践,并达到这么高的水平。而这个团队是真正理解了机器学习,并不断去搜集数据,满怀热忱想把事情做好,与他们的合作让我们取得了巨大的进步。

主持人:微软的智能眼镜 HoloLens 是另一项计算机视觉技术。您如何看待 HoloLens 的功能?HoloLens 对计算机视觉研究社区有何贡献?

Andrew Fitzgibbon:HoloLens 是一个神奇的设备。它和 Kinect 都来自 Alex Kipman 的团队。正如 Kipman 在三四年前首次发布 HoloLens 时所说,HoloLens 是个人电脑的未来。在未来,人们不需要在口袋里放一块屏幕,不需要掏出屏幕才能进行工作。未来的办公室也将发生重大改变,不需要任何 LCD 屏,只要在我前面放一个大黑胶板,戴上 HoloLens,所有的文件都会在出现在我眼前。在今天,HoloLens 拥有巨大的价值。HoloLens 的一个功能是计算出人的头部在 3D 世界中的位置,这和我多年前做的 Boujou 相关,但 HoloLens 能以非常低能耗的方式持续地、实时地进行,非常难得。我想除了微软,很少有人能充分运用各种技术实现这一点。

我对 HoloLens 的研究源于十年前的一项研究。当时我和一位叫 Tom Cashman 的朋友想从静止图像中了解运动物体的三维结构,想找一些弯曲度和运动程度都适中的物体,然后我们觉得海豚是最理想的研究对象。于是我们决定写一篇“海豚是什么形状”的论文。我们并不关心海豚本身,我们关心的是弯曲移动的三维物体,给它建立三维数学模型。当人和虚拟世界或者混合现实世界交互时,一个最重要的 3D 物品就是手。如果系统能准确定位手上每一块骨头和关节,用户就能和虚拟世界准确地交互,虚拟物体的行为也能和你在现实世界中期望的一致。所以我们研究海豚,为研究人的手这样稍微弯曲一点的物体做铺垫。后来我们知道这个技术非常有用,我们将现实世界传递给了 HoloLens。我们非常高兴地看到今年2月在巴塞罗那举行的世界移动通信大会上,微软发布了具有非常清晰的手部跟踪功能的 Hololens 2。

不断为自己创造谜题

主持人:你年轻时为何对计算机科学感兴趣?你是如何进入微软研究院的?

Andrew Fitzgibbon:我出生于80年代,喜欢数学和摆弄电子产品,那时只有学校有电脑。我的一个暑期工作是水上出租车司机,这意味着我在特定时间段非常忙,之后就有大量的时间坐在户外晒太阳或淋雨。那时我会手写一些程序,等到第二天去学校的时候,再在电脑中输入。这是一种既随意又很有效的学习计算机编程的方式。我会在纸上写上标注“第10行”“第20行”,用代码实现一些小功能,就像是解数学难题。数学题很有意思,但很难自己去发明,所以你可能需要去买一本习题集,然后在几周内把它们解出来,但在计算机上,你可以不断地为自己创造谜题。

我的大学专业是数学和计算机科学。我本来想选物理,但是物理系告诉我边学计算机边学物理太难了。我从爱丁堡大学博士毕业后来到牛津大学,和英国伟大的计算机视觉研究员 Andrew Zisserman 等人共事,还在那里开发了 Boujou。2000年左右,我转到了微软研究院。

主持人:你想对年轻的研究人员说些什么呢?

Andrew Fitzgibbon:人们有时会问,我应该研究什么问题?有一个简单而普遍适用的答案:解决那些将改变世界的重要问题。但有时这太宽泛了,你并不知道什么是宏大而重要的问题。我发现一个有价值的信号是,当你在听讲座或读报纸时,找出让你烦心的东西,这是真正引发你思考的东西。然后扪心自问,为什么这让我烦恼?由此去突破现存的问题。当然,如果你已经有了一个很好的想法,那就去做吧。

标签