日前,由中国计算机学会(CCF)、雷锋网、香港中文大学(深圳)联合举办的2018 全球人工智能与机器人峰会(CCF-GAIR)在深圳成功举办,来自学术界、工业界及投资界的众多大牛,从产学研多个维度深度分享了AI技术的前沿研究动态和技术落地方向。
商汤科技联合创始人、香港中文大学-商汤科技联合实验室主任林达华教授,在此次活动上发表了题为“计算机视觉研究中的新探索”的演讲,阐述了计算机视觉未来3~5年的研究方向。
林达华教授表示:以前我们要让机器识别动物,需要人工标注很多动物,标注成本非常高。而人类小时候学习动物往往是看《动物世界》去学的,这个方式促使我们想到一个方法,能不能通过看《动物世界》把所有的动物找到。这里面有一个天然的联系,纪录片上有字幕,字幕上有文字,可以把它和视觉上的场景连接在一起,我们设计了框架,把它的信息几何方面的联系,以及视觉跟文本之间的联系建立起来,最后我们得到了一个这样的结果:我们在没有任何人工干预的情况下获得几十种动物非常精确的识别,没有任何标注。
以下为林达华教授演讲实录:
今天非常荣幸能够在这里分享港中文-商汤联合实验室过去几年的工作。今天,我的演讲和前面几位可能会有点不一样,刚才几位演讲者在商业领域做了精彩的分享,相信大家都获益良多。首先说明一下我并没有直接地去参与商汤在商业领域的运作,所以大家如果要关心商汤什么时候上市,这个问题我是回答不了的。但是我能够告诉给大家的是,商汤公司不是一天建成的,它今天的成功也不仅仅是三年半的努力,它是建立在它背后这个实验室18年如一日的原创技术积累。我们今天在这个实验室所做的事情,它影响的不是商汤今天拿什么东西出去赚取利润,而是商汤要做一个伟大的科技公司,在未来的3年、5年、10年要向什么地方走。
准确率不是唯一的方向 目前人工智能还处于粗放型发展阶段
在过去的8年时间中,计算机视觉可以说是取得了一个突破性的进展,最重要的在技术上的进展应该是深度学习的引入。在这个领域有一个非常高级别的比赛叫做ImageNet。在2012年之前,这个错误率都是比较高的,2012年以后由于深度学习的引入,经历了4年的黄金时期。在这4年的黄金期里面,ImageNet的错误率从16%下降到了接近3%。
在这里我想问的一个问题是,深度学习确实在这几年的黄金时期取得了突破性的进展,但是不是说我们到了现在这个水平,计算机视觉的研究已经终结了呢?从现在这个水平再往前看3年、5年、10年的时间,我们未来的研究方向应该做什么?这是我们整个实验室,也包括商汤一直在思考的问题。
事实上如果要回答这个问题,我们可以看到,人工智能在过去几年的成功,它不是偶然的,也并不仅仅只是算法发展的结果,它是很多的因素历史性地交汇在一起,促成了这波人工智能浪潮。
第一个是数据,我们的海量数据、运用场景数据的积累,以及GPU的发展,计算能力大幅度的跃升,在这个基础上,算法的进展才带来了今天人工智能的成功和在众多应用场景的落地。所以我在这里希望向大家传递的信息是,虽然大家看到人工智能的很多成功的故事,看到了算法方面的巨大进展,但是人工智能不是一个魔术,从某种意义上它就是在庞大的数据量、在巨大的计算能力支撑下的性能进步。
这其实从某种意义上是一种非常粗放型的发展,大家都去追逐一个正确率,追求性能的目标。最近几年中国的公司在国际上所有比赛的榜单上都排到了前三名,但是这是以巨大的工程力量和资源投入为代价的,这种发展模式是不是可以持续?这是我们需要思考的问题。回顾深度学习或者人工智能在过去几年的发展,我觉得有很多的事情,我们还有很长的路需要走。
效率、成本、质量 人工智能发展有多方面不同含义
在这里分享几个方向的思考,第一,是学习的效率,是不是充分地把我们的计算资源使用起来。第二,我们面对巨大的数据成本,或者标注成本,如何解决这个困境。最后,就是说我们虽然在榜单上拿到了99.9%的准确率,但是这样训练出来的模型是不是真正满足我们的生活或者社会生产的需要?这些都是我们要把人工智能落地,推向更快、更好发展需要解决的问题。
首先我们讲第一个方面,效率。
我刚才说过,我们现在基本上是用粗放型的方法发展,就靠堆积数据、堆积计算资源,去获得很高的性能,是资源的竞争,而不是效率的竞赛。但是我们未来要怎么发展,就需要进一步回顾我们现在的模型和技术的模式,看看还有没有优化的空间。优化的原理非常简单,就是把好钢用在刀刃上。
举一个具体的例子,我们在几年前就开始进入了视频领域,视频是一个非常需要效率的地方,视频的数据量非常庞大,一秒钟的视频就是24帧,一分钟的视频就差不多是1500帧,基本上相当于一个中型的数据。利用传统的处理图像集的方式去处理视频显然是不合适的。
在2013、2014年的时候大部分的视频分析方法采取的是比较简单的方式,每一帧都拿出来跑一个卷积网络,最后把它集成综合到一起进行判断。虽然说过去几年计算资源发展非常快,但是GPU的显存还是有限的,如果每一层都放到CNN去跑,GPU显存只能容纳10帧到20帧左右,一秒钟的视频就把GPU充满了,是没办法对长时间的视频进行分析的,这是一种非常低效的模式。
我们知道视频相邻帧之间是非常相似的,这一帧跑一次,下一帧再跑一次,大量的计算浪费掉。我们看到了这个重复计算的低效,我们把这个采样方法重新进行了改变,改用了稀疏采样,无论多长的视频进来,我都划分成等长的段落,每一段只取一帧或几帧出来,这样我就能对视频有一个完整的时间范围覆盖,自然分析出来的结果也会有比较高的可靠性和准确性。凭借这个网络,我们拿到2016年ActivityNet的冠军,现在很多实际中使用的长视频分析架构,都已经采用了这种稀疏采样的想法。
在这之后我们进一步拓展我们的研究领域,不仅仅是做这个视频理解,我们还进一步做在视频里面的物体的检测。这也带来一个新的困难,之前做分类识别,我们可以分段,每一段拿出来会获得一个大体上的理解。但是物体检测没办法这么做,每一帧都需要把物体的位置输出出来,在时间上是不能稀疏的。这一页slide显示了我们在2016年ImageNet比赛视频物体检测项目取得冠军的网络,具体细节我不说了,基本上就是把每一帧的特征拿出来,判断它的类型是什么,对物体框的位置做出调整,然后把它串起来。这里面需要每一帧都要处理,当时最厉害的GPU每秒钟只能处理几帧,需要大量的GPU才能把这个网络训练出来。
我们希望把这样一个技术用在实际场景,希望得到一个实时性的物体检测的框架,要是我们每一帧都是按刚才的方法处理,需要140毫秒,是完全没有办法做到实时,但是如果稀疏地去采,比如说每20帧采一次,中间的帧怎么办呢?
大家可能想到用插值的方法把它插出来,但是我们发现这个方法对准确度影响很大,隔10帧采一次,中间的准确度差距很大。在新提出的方法里,我们利用帧与帧之间相互的关系,通过一个代价小得多的网络模块,只需要花5毫秒,在帧与帧之间传递信息,就能很好地保持了检测精度。这样我们重新改变了做视频分析的路径之后,整体的代价就得到了大幅度的下降。这里面没有什么新鲜的东西,网络都是那些网络,只是说我们重新去规划了视频分析的计算路径,重新设计了整个框架。
大家可以看看结果。上面是7毫秒逐帧处理的,我们2016年比赛就是用的这个网络,后面我们经过改进之后,超过62帧每秒,而且它的结果更加可靠、更加平滑,因为它使用了多帧之间的关联。
7fps
62fps + More Reliable
同样我们商汤在做自动驾驶,需要对驾驶过程中的场景自动地进行理解和语义分割,这也是一个非常成熟的领域。但大家的关注点一直没到点子上,大家关注的是分割的准确率,像素级的准确率,这是没有意义的。我们真正在做自动驾驶,关心的是人在你车前的时候,你有多快的速度判断出有个人在那里,然后做出一个非常紧急的处理。所以在自动驾驶的场景,判断的效率、判断的速度是非常重要的。之前的方法处理每一帧要100多毫秒,如果真有一个人出现在车前面,一个紧急情况发生在前面的话,是来不及做出反应的。
利用刚才所说的方法,我们重新改造了一个模型,充分地使用了帧与帧之间的联系,我们可以把每一帧处理的效能从600毫秒降低到60毫秒,大幅度地提高了这个技术对于突发情景响应的速度。这里面其实也是使用了刚才类似的方法,技术细节就不说了。
其次,我们讲第二个方面,成本。
刚才是说效率上我们怎么可以提高,接下来是数据成本。我们经常开玩笑说,人工智能是先有人工再有智能,有多少人工就有多少智能。所以今天我们有人工智能的繁荣,我们不应该忘记在背后有成千上万像这样的人在背后默默地奉献,这就是我们数据的标注员。一些大的公司,有上万人的标注团队,这对人工智能发展来说也是一个巨大的成本。
怎么样把这个成本降低下来?这也是我们每天都在思考的事情。既然有很多东西我们没办法用人去标注的话,我们是不是可以换一个思路,从数据、场景里面去寻求本身就蕴涵的一些标注信息?
这是我们去年的一个工作,也是发表在CVPR上,这里面我们尝试一种全新的方式去学习,我们图片的标注成本非常高,每张图片不仅要标注出来,还要把框框出来,以前我们要识别动物,要人工标很多动物,但是以前我们小时候学习动物,不是说老师给我一个图片,给我一个有框的东西去学的,我们是看《动物世界》去学的,这个方式就促使我们想到一个方法,我们能不能看《动物世界》,把所有的动物找到。这里面有一个天然的联系,纪录片上有字幕,字幕上有文字,可以把它和视觉上的场景连接在一起,是不是可以自动学出来,为了这一点,我们设计了框架,把它的信息几何方面的联系,以及视觉跟文本之间的联系建立起来,最后我们得到了一个这样的结果。
这是我们在没有任何人工干预的情况下获得的几十种动物的非常精确的识别,没有任何的标注,就是看《动物世界》,看《国家地理》杂志。
除此之外,我们现在做人脸识别,有大量的人脸数据要标注,这里面有一些天然的数据就是我们的家庭相册里面有很多人,这些相册虽然没有标注,但是里面蕴涵了很多信息。这是经典电影《泰坦尼克》的一个镜头,如果大家只是看人脸很难看出这上面两个人是谁,但是我们往下走可以看到右边是Rose,但是左边这个穿西装的还是看不清楚是谁,这时候如果我们把这个电影背后的场景识别出来,你会发现Jack和Rose经常出现在同一个场景里,这时候基于这种社交互动的信息,我们可以自动判断这个穿黑衣服的男生可能是Jack。我们通过人脸不经过标注的情况下,就提供了大量的有意义的数据。在这项新工作中,我们还有效地利用了时间上的关联,一个人从街道这边走到那边,人脸的样子会发生很大的变化,我们还是可以判断是同一个人。
最后,是关于质量。
我们说人工智能,它其实最终目的是要为我们的生活带来便利,提高我们生活的质量。但是我们最近几年人工智能的发展好像走入了误区,认为人工智能的质量跟准确率是挂钩的,但其实我们觉得人工智能是有多个方面不同的含义,不仅仅是质量,它的质量其实是多个方面、多个层次的。
给大家看几个例子,这是最近几年特别火的一个研究领域,就是给一张照片看图说话,让计算机自动生成一个描述,这是用我们最新的方法得到的结果,大家可以看一下。
大家可以看到三张不同的图放出来,我们用最好的这种模型,它会说同一句话,而且这句话在标准的测试上分数都非常高,是没有任何问题的,但我们放在一起看的时候发现人不是这样说话的,我们描述一张图片的时候,即使同一张图片,不同的人都会说不同的东西。这就是我们在追求识别的时候忽略掉的另外的品质,包括它的自然性和它的特性。
为了解决这个问题,我们在去年另外一个工作上提出了一个新的方法,它不再把这个内容看成一个翻译问题,它把它看成一个从概率分布中采样的问题,它承认多样性,每个人看到一张图片会说不同的话,我们希望把这个采样过程学习出来。关于这个模型具体的细节,大家可以看相关的论文。这里可以看到这个结果,同样的三张图,我们可以看到它出来了三句更加生动的,能够很好地描述这个图里特征的语句。
最后我们把这个工作再往前推进了一下,我们既然能够生成一句话,我们也就能生成一段动作。这是我们最近做的,我们在想,我们既然能够生成很生动的一句话,我们是不是能生成一个很生动的舞蹈。第一步我们先生成一些简单的动作,大家在这里看到的所有这些都是计算机自己生成出来的,不是我们写个程序把它描述出来的。这个更精彩一点,也是纯计算机自动生成。
对刚才的分享,我再总结一下,在过去几年,我们看到人工智能也好,深度学习也好,有一个非常突飞猛进的发展,这种发展是体现在标准数据集上准确率的提升,体现在很多商用场景的落地。但是我们回过头来看这一段发展的历程,我们可以看到其实我们在朝着GDP、准确率高歌猛进的过程中,其实遗忘了很多东西,我们的效率是不是足够高,我们是不是在透支数据标注的成本,我们训练出来的模型是不是真正能够满足现实生活中对品质的要求,从这些角度来看,我觉得我们也刚刚在起步。虽然我们实验室还有世界上其它很多实验室的探索取得了一些重要的进展,但是我们还仅仅是处在一个起步的阶段,在我们的前面还有很长的路要走,希望跟大家共勉。