对话百度IDL院长林元庆:击败最强大脑王昱珩背后的技术是什么?

本周五《最强大脑》最后一场人机大战——视频捕捉影像的人脸识别完美谢幕。最后一场比赛中,小度战平人类顶级微观辨识高手王昱珩。至此小度以两胜一平的好成绩进入年后的脑王大战。我们专访了百度深度学习研究院院长林元庆,请其解读视频识别的关键技术点及整个小度团队的幕后工作。


作为机器之心新栏目 AI Talk 的一部分,我们对这次视频专访的内容进行了剪辑,完整采访可见下面文字整理版本。


机器之心:这次视频识别主要使用了哪些技术方法?识别过程的实现路径是怎样的?


林元庆:我们的系统首先对视频里出现的人脸进行检测和跟踪。直观的来讲检测和跟踪,就是系统去看视频里有几个人的人脸各自在哪里,是怎么移动的。系统在这个检测跟踪过程完成之后,在每个人的人脸图片里挑选几张质量比较好的去做下一步的人脸识别。通过随后的识别过程识别出这些照片中的人具体都是谁。


机器之心:对视频内容进行结构化分析时,如何用有效的特征对内容进行表达?


林元庆:其实我们这个系统主要由两部分组成,一部分是实现检测和跟踪,另外一部分就是人脸识别识别。我们都是通过深度学习的方法学习出有用的特征。目前在特征提取上,我们很少运用人为设计的特征去对内容进行表达,大部分的特征都是运用深度学习,从海量数据里,通过机器学习去学到这些有效的特征。


机器之心:与静态识别相比,动态人脸识别有哪些区别?主要挑战是什么?


林元庆:动态人脸识别比静态更为困难,动态的人脸识别里需要能检测出不同角度的人脸,而且动态的人脸整体质量偏低,有些帧的图片甚至会是模糊的,因为动态的情况下人是有移动的。那么在这些挑战下,我们需要有比较好的检测算法,在很多单帧的静态图片里检测出人脸图片质量比较好的图片,然后用这些质量比较好的图片去做下一步的人脸识别。主要的挑战也在这里,怎么更好的检测出人脸以及怎么判断出质量比较好的可以用于识别的人脸图片。另外,动态识别的视频每一秒有 30 帧,这里的又一个挑战是如何做到人脸实时检测。在静态人脸识别里,你需要做的只是处理一张图片;而动态的情况下你有很多图片,那么怎么快速计算,怎么选择出质量最好的图片甚至多帧的学习融合都是需要仔细考虑的。


机器之心:这一技术训练时对硬件、数据要求高吗?所使用的样本量规模和训练时间的情况是怎样的?


林元庆:我们现在开发出的这套人脸识别系统,在设计时特别考虑弱光条件下和有遮挡条件下人脸识别的实现。这次比赛里所用的人脸识别系统,是通过两个步骤来实现的。第一步是通用人脸识别模型的训练,我们花了很大力气来做。比赛系统里的模型,我们是用大概 200 万个人,总共 2 亿张的照片来训练的。2 亿张照片本身是一个非常大的数据,需要非常大的计算量和非常好的算法,能做到这一点借助了百度的 PaddlePaddle 平台,通过 PaddlePaddle,我们可以在多台机器上实现高效的并行计算。在这一步我们得到一个人脸识别基础能力非常好的通用模型。有了通用模型,下一步就是实现在不同的场景下的人脸识别。第一期的人机大战,比的是跨年龄的人脸识别,这一期比的场景是有暗光和遮挡的场景。我们在通用模型之上会特别去准备一些跟这个环境相近的数据集来进一步训练通用模型,最后得到弱光和遮挡环境下较好的人脸识别系统。后面的这个数据集相比之前的通用模型的数据集就小很多了,这样的数据本身也比较难收集,我们最后的数据集大概是 1 万人的量级。


机器之心:王昱珩在答题过程中其实改过答案但最终改错了,机器会出现类似的问题吗?


林元庆:机器可能不太会出现(这种情况),因为唯一输入给机器的就是图像或视频信息,机器通过算法将要考虑到的因素已经都考虑了,最后是得到一个置信度也就是 Confidence Score,分数比较高的会被机器认为就是正确答案。虽然分数也是综合了非常多因素,但机器没办法再回去想出另外一个分数来。就像我们第一期里双胞胎的情况,机器最后决定什么分数就是什么分数,没办法再改。人不一样,除了看图像还会联想到一些信息,最终进行综合考量,但这会带来好结果也会有不好的结果。


机器之心:听说因为和王昱珩比赛而加班加点升级了算法,具体是做了哪些升级呢?


林元庆:我们做系统升级不是因为要和王昱珩比赛,是我们原本就计划要做。所做的升级其实是针对这次比赛的内容—有遮挡的人脸识别。在这次比赛中,要识别的人脸可能戴口罩、戴墨镜甚至戴帽子,如何处理这些有遮挡的人脸图片,在人脸识别领域里还是悬而未决的问题。针对遮挡情况,我们也特地设计了一些比较新的算法。比如我们将人脸分为 7 个部分,每个部分的遮挡情况都是根据那个部位在深度学习的输出特征来描述这个部位被遮挡的程度,根据不同部位遮挡程度的不同决策出哪些部位是可以有效提供人脸信息的,进而可以用于人脸识别。简单来讲,就是让模型了解不同部位被遮挡的情况,然后根据情况来使用这个部位的信息。我们训练的是一个端到端的模型,输入照片后系统自动得到不同部位的遮挡信息,最后做综合决策。


机器之心:在这一过程中,小度如何用到推理能力?目前具备的推理能力水平如何?


林元庆:小度在别的方面可能会用到更多的推理能力,比如说自动驾驶。但在人脸识别方面,它的推理能力还是比较初级,比如我们会去分析哪一些部位可能被遮挡,这些部位需要怎样根据这些信息作出最后的判断。从不同方面得到的信息进行相互作用也是需要通过数据和模型去学习出来,因此,在模型设计时就会涉及一些比较基本的推理能力,让小度通过数据去学习。


机器之心:要获得理想的识别结果,对人脸角度和像素分辨率都有什么样的要求?


林元庆:其实我们在左右转向 45 度之内都能做到非常高精度的识别,但如果角度太大,比如说半脸就会很难了,精度会下降。从上往下看或从下往上看,也属于比较难的,上下 15 度左右还比较好处理,但如果角度太大,难度就会比较大。当然,我们也有计划再扩展算法。相比像素分辨率,其实更重要的是图片质量,如果图形都糊了,人都很难分辨出五官,(对机器来说)就更难了。但只要有足够的分辨率,放大之后你还能看到五官,比如说眼睛能看到瞳孔,基本上还是能够识别的比较好,质量越高肯定识别越好。当我们做系统(整体设计)的时候,其实可以想办法提高画面捕捉的水平,比如摄像头可以装得低一些,从一体化的角度来考虑怎么才能取得比较高的分辨率。比如说在一些机场,为了能在人路过时捕捉人脸进行识别,他们把摄像头放在一个大屏幕上,人走过的时候常常会看一下屏幕,这样就有可能捕捉到一个人脸稍正的画面。


机器之心:节目中第一题和第三题,小度都答对了,但第二题被形容错得很离谱,是什么原因造成的?


林元庆:错的很离谱可能指的是,正确答案是一个相对比较胖一点的人,但是小度给的答案是一个胖瘦正常的。这是因为小度可能看的不单单是脸型,看到更多是比如鼻子的形状、嘴角的形状,对小度来说,它根本没有信息来判断人的脸型是不会变的,举个例子来讲,像我们在第一期跨年龄识别里看到,人的脸型完全是会变化的,小度无法得知它看到的这个照片跟库里的照片相比,只是几天或几个礼拜、几个月之前拍摄到的,它只能从原来学习出来的信息里进行判断。其实我们 IDL 工程师们后来仔细去看了结果,除了脸型(胖瘦)因素之外,其实也挺难确定那个人是不是就是最后的人,通过电视仔细看照片也很不容易,反倒是小度的答案的嘴型更接近真实答案。

WX20170122-184255@2x.jpg


机器之心:在百度,这项技术目前仍然停留在技术研究阶段还是即将成为一个产品化的系统?


林元庆:之前,人脸识别主要还是用在百度已有产品覆盖到的场景里,包括全网的人脸搜索、图片的人脸搜索,在百度之外做的非常少。但是从 2017 年开始,我们有计划要把百度人脸识别系统在公司之外用起来,包括我们现在跟景区在做的人脸闸机系统,游客进景区以后就可以刷脸进出,这在乌镇已经落地。在安防领域,水哥曾帮山东省公安厅从监控的视频里找到罪犯,但水哥只有一个,而这个系统其实已经可以做到非常好的识别精度,我们也希望它能够在更多的安防领域用起来。我们希望技术能得到广泛的应用,这也是我们今年需要努力的重要方向,争取把我们的技术落地到更多的实际生活中。


机器之心:能否回顾一下这次小度人机大战的准备过程?比如团队筹备了多长时间?涉及到哪几个部门的配合?中间遇到过什么状况,如何解决的?


林元庆:8 月底,节目组到百度来邀请我们参加,当时他们说希望做跨年龄的人脸识别和声音的识别,还带了一些测试数据,我们在一个会议室里面现场做了识别精度的测试。(当时)在跨年龄人脸识别方面做了 8 组测试,结果是对了 7 组,是节目组当时很震惊,觉得百度的人脸识别技术确实做得很好。事实上,当时我们还没有针对这个产品场景做过优化。这次提前测试之后,节目组在同时接触的国内几家人工智能领域的公司中选择了我们。


关于到底要不要参加,我们考虑了一两个星期,对我们整个团队来说,参加还是有一定风险。一方面,我们对自己的技术很有信心,也想看看百度经过这几年人工智能的积累,跟人类顶级选手比水平如何,即便输掉对技术的人来说也没什么,因为我们做实验也有失败的时候;但另一方面,这些选手很强,现场比拼确实没有十全的把握,我们还是会有压力。


决定参加之后,我们成立了一个二十几个人的课题组。其实这个项目非常复杂,不单单是算法,还包括人脸识别、声音的识别,我们为了节目的趣味性还做了一些技术的展示,比如与主持人、嘉宾的互动,其中用到的是个性化语音合成等等。大家都在一个会议室里面做封闭开发,除了技术开发我们还要跟节目组协调。为了让观众更容易理解,要做很多工作,公司内部涉及到很多跨部门协作,IDL、AI 平台部、语音技术部、系统部、品牌部、众测等。需要百度众测帮我们收集很多数据,需要海量的计算需要 GPU 的调配,包括配合节目播出做的 H5 页面让大家来亲自体验技术...... 总之,一个比分背后有非常多准备工作。


机器之心:在整个三期节目录制过程中,团队的状态是怎样的?接下来对小度的表现有什么预期?


林元庆:重中之重的是算法,也就是系统的精度,我们核心成员一直在加班,经常忙到 3、4 点才回家,有时早上 7、8 点,回去睡一觉就回来再继续。因为最后非常非常紧张,大家承受的压力很大,我们第一期在最强大脑节目录制现场,我站在后台,节目组的人开玩笑说,元庆看着你好紧张,我说是很紧张。小度对错一道题,对于科学家来说跟平常的实验一样,我们做科学研究经常也会给人家做 Demo,一般是面对几十人到几百人做 Demo,压力也会蛮大的,但这次要做的 Demo 是展示我们的技术,面对是几千万上亿人,这个压力可想而知。


我们现在赢了两局平了一局,根据节目规则,我们会进入脑王决战,我们收到的通知是脑王决战会在 3、4 月份举行。我们会再重新开始备战,但具体是什么节目内容,我们现在还不知道,唯一知道的是最后一期可能全部是人机大战,并且可能会安排 3 个选手跟小度 PK,这又给我们带来非常大的压力。节目给出的极端场景,比如跨年龄识别,我们之前其实没有做过,我们对人脸识别理解很深、技术也做的很好,但能在多大程度上把这些基础能力用在极端情况中,我们都是没有十全把握的。不过,相比(几个月之前)接下这个项目的时候,通过两个月准备,我们现在再去测这套人脸识别系统,比如给 10 个测试例子,小度已经做到完全比我们要好很多的程度。因此我们对脑王决赛充满信心,也非常期待。

image.jpg


「AI Talk」 是机器之心最新出品的视频访谈栏目,旨在邀请国内外人工智能顶级专家分享对技术和行业的观点,为大家呈现更为直观、丰富的内容。

理论AI Talk产业人机大战人脸识别百度林元庆