演讲实录丨侯晓迪 机器视觉:从跑分到跑路

  1. 云栖社区>
  2. 博客>
  3. 正文

演讲实录丨侯晓迪 机器视觉:从跑分到跑路

沉默术士 2017-05-23 16:05:00 浏览1100
展开阅读全文

机器视觉:从跑分到跑路

侯晓迪

图森互联CTO、联合创始人


侯晓迪:大家好!今天非常高兴能跟各位在这分享我们公司图森互联,大概成立一年,我在这一年里面有很多想法,今天借此机会讲一讲。我们图森互联在北京有分布,我们在北京主要负责工程和技术,北美纯粹研究院,常年在北美,第一次回国做公开分享。标题是机器视觉、从跑分到跑路,跑分什么意思?因为现在很多公开数据集,很多大公司、小公司说你的算法很厉害,你在什么数据集上?你在分数线上跑了多少分,大概就是123。


3540fe7a2b880a382f86905666672384ad08f890

    我们前一段在有些朋友会了解到,我们拿到各种世界级第一。从跑分真正无人车跑起来还是有很长的距离。2006年我刚入行的时候,我们今天做一个算法,几乎没有网上代码或者是文档能够公开,都是靠自己重新造轮子,当时只是用C++等等。多亏了两个小动物,我们在2016年回头看这个世界时候发现,随着开元运动展开,随着新的形式,有了很多数据、文档以及代码各种共享。


    同时,除了像MST和MCT(音译),在构造上变的非常容易。今天能够看到北美举办各种各样的黑客马拉松,一个周末黑客马拉松他们就能实现产品级的项目。所以回过头来看从2006年到2016年,从自己小作坊生产到现在,软件工程开发体系的工程实践。unit  test,我需要做一些测试,对于各个模块来讲。我们要做的东西会在一个公开公平环境下,这个数据本身我们知道,用户使用情景也是知道,最后把算法扔进去,测试看看能不能达到我们的标准。


    跑分,我们在前一段在数据机上跑分过程,这个数据题2015年奔驰和几个大学一起合办,这个数据集里面有很多标定过的图片,标定者都是人类,自然知道标准答案。这个数据集目的希望能够让摄像机有镜头了解象素代表什么?有的象素行人,有的象素汽车。经过一段时间刷分,我们知道世界第一的好成绩。


    我们总共进行了大量的实验,这只是当时跑分时候,我们有很长的一个EXEL。一大堆我们跑出来的心得,包括我们有很多失败的经验,最后跑成功了。这个过程中有两部分,我们保证我们每一步工作正确的,我们把我们算法分成非常小的步骤,每一步分进去实现一遍,放到系统里面看,看看这个系统跟去年结果一样不一样。真正的实践过程当中发现可能别人有一个地方,有一个小地方没有讲,你这个结果跟别人差很多。第一届刷分连结果做不到的时候,就需要用Benchmarking。


    第二步,首先一开始设计很多新的网络结构,或者新的处理模式,无论设计什么模式,说的天花乱坠。在实践过程当中写代码,跟他们说我有一个好想法,说实现一下,实现以后发现不好,具体来说这个事情大概发生了,我们总共做了80多个实验。Benchmarking是一个非常重要的事情,如果想刷分分布Benchmarking是必不可少的阶段。


    这是美国标准跟国标一样机构,他们去开发这样一个Benchmarking,这个意思说我现在有很多邮件,用人工来分检,希望用计算机系统,让它实现邮编。一共有6万张字符的图片,目的做字符识别。这个在98年的时候,朱珑老师发明一个卷积网络,可以用这个网络做这个事情。就是因为有6万张图片数据库孕育了卷积网络发明。


    还有一个这是加州大学搞了一个数据,叫Berkeley  segmentation,这是2011年一个数据集。2014年最著名的算法之一。这个成就本身到最后应用反倒不仅在这个数据集上。接下来2015年,之前大家看到6万张图片,大家应用领域非常窄,2015年的时候我们有3000张图片大数据数据集,这个名字叫  PASCAL  VOC,识别人,识别杯子,识别汽车等等。


    接下来大家非常熟悉的imagenet,这个一方面算法如何做的更聪明,使得识别效率更高,如果随便猜从1000类猜到正确类几乎不可能。第二个,同时挑战了传统对于计算能力的一个认知,如果用几千张图片一分钟搞一个图片可以忍受,如果用百万张,除非有超级计算机。数据集大家很了解,识别字符都是很自然的过程,还有人脸。不是那么大众的数据集,有一个眼洞数据集,给你一张图片问你比较有意思的是什么?人很难用语言描述数据集标准答案给出来,所以算法没有标准答案,这种情况下研究人员想了新的方法,找了一些人给做背试。右下角给人眼球运动的时候,看人眼睛到底在什么位置看,这个数据集因为采集起来请人到实验室看眼球运动。业外人士不清楚眼动数据,也是微小的工作。


    每个数据集长什么样?每个数据影响到哪个后续工作诞生。数据集越来越多,但是这么多数据集是不是我们只要学术圈盯准了数据集,刷一刷推动整个领域进步呢?我的答案不是。数据集我们就想知道数据集作为一把尺子衡量东西什么?每个数据集都有一些类别,有一类数据集它要衡量东西是一个客观指标。


    比如说,如果我要做深度视觉,用两个摄像头分析我看到的一个点到我的距离,我的距离是物理量可以精确衡量。同时还有像光流算法,人脸识别大不了拿DNA可以验证身份,身份可以可测量的量,带来客观指标。根据眼球运动然后判断出到底哪个区域是一个人都比较感兴趣的区域,这种主观任务。这个眼球运动之外,比如什么样的图片比较容易让人记住,或者说刚才也有其他嘉宾提到,每张照片给你一个图片,写一个文字说明,看图说话的任务,这种任务变成非常主观的任务。我的观点,对于客观任务而言,计算机视觉最终目标是要尽可能还原物理世界。对于主观首先不存在物理世界给你客观还原,我们衡量人与人之间的一致性。对于主观任务计算机面临是一个图林测试,它的输出表现出来的行为和人的行为没有区别,说明这个计算机达到非常好的。


    举个例子,计算机写一篇文章,让你看不出这个文章是计算机写的,这个是主观任务。对于客观任务而言,用一个精准尺子量,这个尺子误差就是我的上限。每个人对于问题有不同的理解,人与人之间的差异上限,这就是主观任务衡量的任务上限。因为Benchmarking很多,每个Benchmarking都是不完美的。讨论择偶问题,高富帅很多,ABC这三个人,哪个更好,大家都不知道情况。计算的时候都有优势和劣势,有一个算法识别车非常准,识别鸟比较准,哪个物体算法识别最准,其实没有标准答案。


    我们在每次做Benchmarking的时候,都是要把非常多个方面的量缩减成一个量,最后有一个分数,做排序一样。举个例子,比如说我现在有两条线,这是一个学术圈里面常用一个图,如果这张图的点越朝右上角方向走越好,或者横轴一定越好,这样问你到底红色算法比较厉害,还是蓝色比较厉害,如果按照面积来算,蓝色算法比较好。如果按照一个特定点,就想关注横轴0.6的时候,那你就很可能选择红色算法。每个Benchmarking都是不完美。


    Benchmarking还有一个问题,每个Benchmarking都有自己的寿命。这么多Benchmarking在每个Benchmarking诞生的时候,Benchmarking发明人逃路都是这样,每年做一个广告,欢迎大家来关注我的Benchmarking,因为比较新,所以你很容易拿到世界第一的好成绩。而这个新的成功Benchmarking都是针对一个新的问题,学术上并不存在一个传统或者大家通用解决方案,才能称之为是新问题,因为没有一个通用解决方案。在每个Benchmarking生命中期大家会看到各种各样的方法,大家会有很大胆的创新,对于Benchmarking不同有非常多的价值理论。


    当然Benchmarking不知道数据在哪?但是Benchmarking到晚年时候体现疲态,这些疲态有一些现象。在2012年的时候Benchmarking主流操作几乎排名靠前的组都是用这个来做,是不是Benchmarking这么大物体识别我们走到了尽头。突然有一天一个小孩说有一个新的东西,用卷积神经网络来做。2015年的谷歌和VGG,GOOGLENET - RESNET。2008年的时候所有公司都使用RES NET(音译),到底08年的时候我们出现一个大家都没有见过的算法,大家谁都不知道。


    第一,它的竞争变的非常饱和,0.1竞争是非常大的竞争。很多做人脸就是LFW一个数据集,现在最好的成果是0.9978加减万分之七。第二个,就是迁移性,这件事情经济学圈子里面谈这个事情,我还少看到跟着Benchmarking一起去谈,光流算法07年有一个学校搞了一个光流数据集,于是开始了热核战争。最后有一个无人驾驶Bility出来了。Benchmarking有两类,一个是客观,一个是主观,对于主观的Benchmarking来讲,如果Benchmarking人与人之间的相关度特别低,14年火了一阵子看图说话,这类工作一个鉴定指标就是说他用几个人写几个答案,然后拿算法结果跟人的结果对比,看看是不是有非常高的相关性。Bleu  scores。


    下面说一说Benchmarking和自动驾驶之间一些关系,现在最著名两个一个KITTI,一个是SCAPES。Netection,第二个tracking,第三,stereo、flow。第四,slam,第五,semantic  sngmnntation,他们都是百分之百传统的任务。我们在传统任务拿到了非常高的分数,我们是不是能从这个分数意味着我们能够自动驾驶了呢?还是还没有那么大的恒心。对于自动驾驶来讲,这种非常罕见情况是一个巨大的挑战。


    举个例子,像特斯拉行驶了一亿公里,出了几起事故。如果我撞车了或者死人了,这些情况非常难得获得的证例。我们汽车保证不死人,并不意味着我们压死几个人来证明。我们一定要使用因变量模型来实行建模。数据集一定存在知道每辆车的车速,以及距离,以及运行轨迹,这些能够做出合理的推测,什么时候情况危险,什么时候撞车。


    讲个故事,Challenge,1:Rare  cases。它是非常罕见的事件,怎么确认发现这个事件,通过一种(嘎玛波音译)的共振,在实验上发现了产嘎玛波生了3000的观测,他们通过这个证明发现这样一个例子。无人驾驶来说,对于我们数据集走了14英里发现了三次加车,而是通过不断的进行更精细的测量,其他车的速度,我再开就危险了。


    Challenge  2:Error  metrics。还有一种情况,30公里时速在开,远远两公里看一个车在开,这个检测非常难的。所以说有些错误比另外一些错误更致命,对于错误衡量不是说每个框算平均,而是有更精细的算。视频是一个连续的过程,第一帧没有检测到,可能第二帧检测到,这样就可以进行操作了。但是我们最重要对于自动驾驶来讲,最终目标是0疏忽。以事件对于Benchmarking进行区分。


    第三个标准,叫structured  prior。端到端学习的好处完全不用去管理中间实现过程,只需要把你需要数据和需要的图象标签打上,输出的时候直接拿结果就可以了。但是端到端学习有很多问题,其中最大问题比如说我遇到红绿灯怎么办?端到端有一个好处,所谓隐性鲜艳,图象上人长这个样子,狗长这个样子,鲜艳知识可以通过图象可以给机器学习出来。另外一类鲜艳,就是汽车肯定不会飞,第二个就是红绿灯,红灯停,绿灯行,这些是显眼的。给你一大堆视频,有的时候司机开车,有的司机不开车,在远处挂着红绿灯,让算法自己发现这个现象,对于今天还是不可能。我们做的系统同时结合隐性鲜艳,图象里面包含的特征,以及语音描述的鲜艳进行融合,今天所有数据集几乎都是说针对都是隐性鲜艳,并没有把交通信息类似于显示鲜艳放到学习系统里面。


    我们需要建立这样一个数据集,使得它有传统图象,基于图象走出去,做显示鲜艳的信息做到学习系统里面。

本文来源于"中国人工智能学会",原文发表时间" 2016-10-26 "

网友评论

登录后评论
0/500
评论
沉默术士
+ 关注