Tuesday, August 15, 2017

Drive.ai:从深度学习到自动驾驶

本文由硅谷科技咨询委员会(SVTC)译自IEEE Spectrum杂志介绍Drive.ai的文章

在所有致力于4级自动驾驶技术(大多不需要人为干预的自驾系统)的初创企业中,位于加州山景城的Drive.ai很独特地率先使用了“可扩展的深度学习”方法(Scalable deep-learning)。若想很快造出真正有用的自动驾驶车辆,Drive认为从深度学习技术出发是唯一可行的方法。Drive的共同创始人及兼首席执行官Sameep Tandon说, “如果你从这些深度学习算法的长远可能性,来看人们将来如何建造自动驾驶汽车,那么让车辆拥有一个学习系统才是最有意义的。驾驶那么复杂,有那么多细微和困难的路况,如果你不用学习的方法,那你永远不会造出这些车来。

Drive上市只有大约一年的时间,但是公司已经有四辆车在硅谷地区穿行和(大部分)自动驾驶,甚至在黑暗、下雨、或冰雹等等对自动驾驶特别困难的情况中也可以。上个月,我们到加州去,乘坐和观看他们的自驾车,要了解他们的车辆是如何利用深度学习来掌握自动驾驶的。



正如其名,Drive.ai是为人工智能而诞生的。2015年,Drive由斯坦福大学人工智能实验室出来的深度学习技术的专家们创立。公司从一开始就致力于完全围绕着深度学习技术来建造自动驾驶功能,现已能够快速学习和适应,安全处理无数的自动驾驶所需掌握的状况。

Tandon说:“我想我们是第一个如此坚决要从一个深度学习的角度来发展自动驾驶的公司。共同创始人兼总裁Carol Reiley说, “与经典的机器人方法比起来,很多公司只是在这个或那个组件上采用深度学习技术,而我们比较全面。”

他们所提到的一般的零碎采纳深度学习的方法,是只把深度学习用在车辆的自动感知部件上。深度学习的人工智能对行人的辨识力很好,它善于在任何场景中对事物进行分类。而且它能够学习辨识某个特别的模式,然后扩展性地认出它过去没有实际看过的东西。换句话,你不必训练车子辨认每一种行人,因为它能够认出一个扶着助行器行走的老太太,和一个戴着棒球帽的小孩,都属于同一类物体。

摄像头获取的行人图像是一种感性模型。另一种模型是作决定和规划车辆行动:比如在四路停车的路口,或在红灯右转弯,都可以採用深度学习技术。但很多自动驾驶汽车的制作商都不做,为什么呢?主要是不习惯。Reiley和Tandon告诉我们,这种根据环境变量作决定的深度学习算法,比普通的根据规则作决定的做法好。深度学习能够“好像人一样“辨识模型,比根据规则编程而来的系统更细致。虽然如此,它有时候也会出问题。

黑盒子的问题

深度学习系统的模式识别能力是一个强大的功能,但因为这模式识别是神经网络算法的一部分,所以有“黑盒子”系统的问题:一旦系统被训练,输入黑盒子的是数据,输出的是有用的解释,而输入和输出之间的实际决策过程是人未必能够直观了解的。所以,许多从事自动驾驶车辆研制的公司不喜欢黑盒子,而采用机器人方法。他们把深度学习技术的使用限制在机器感知部件上,因为假如你的系统作出错误判断,你能够准确知道是哪里出错,然后防止同样的错误不会重复。

Tandon说,"黑盒子的确是个大问题。我们希望能够做到训练深度学习系统来帮助我们感知和决定,但同时也包含一些规则和一些人所能够了解的知识,以确保安全。 “全部实现的深入学习系统是一个巨大的黑盒子,把原始的传感器数据转换为方向盘的转动或加速器和刹车的启动运作。但Tandon说,Drive有意避免实现这种完全的端对端系统。“你如果能把系统分解成各个作深入学习的部分,那么你明白不同的部分,可以用不同的方式来进行验证,你对于整个深入学习系统所输出的车辆行为会更有信心。"

Drive的研究人员说,窥探黑盒子,然后验证(或调整)它的内部是有些妙招的。比如你可以给它提供某些数据,比如摄像头图像,遮蔽掉几乎所有的其它东西,只给它你想要查询的内容,然后查看你的算法如何对稍微不同的情景作出反应。在处理某些特别的情形时,模拟可以是非常有用的工具。Tandon解释说:

“我们最初开始研究传感器系统的深入学习技术时,所遇到的一个挑战就是经过立交人行道。我们开车出去,立交人行道的影子会导致系统错误辨认到一个假的障碍物。在深度学习过程中,你可以把算法的注意力集中在一个称为“硬挖掘“的过程上,是很有挑战的情景。然后我们用人造的例子增加数据集,等于对系统说,“嘿,系统,你告诉我你要对这个影子怎么办,我要干预一下,让你再做一次。” 随着时间推移,系统就开始知道怎样处理立交人行道的影子,然后你可以在系统的层面来确认它。”

培训深度学习系统

深度学习的系统需要很多数据。一个算法看到的数据越多,就越能够更好地识别出模式,归纳理解它,以便安全驾驶。自动驾驶需要了解大量不同的路况,大多数研制自驾车辆的公司都会从一开始就尽可能地收集数据。那么问题就在于管理数据了,利用收集到的数据做些有用的事。Drive.ai知道,不是所有数据都同等,所以公司投入大量精力收集高质量的数据,并加以注释,让它对于训练深度学习的算法有帮助。

注释虽然很简单,但也很繁琐:给一个人工注释员一组数据,比如一个很短的视频片段,或只是几帧视频图像或激光雷达图像,让他为每辆车、每个行人、道路标志、交通信号灯,和其它任何与自动驾驶有关的东西,画出框架和加标签。Reiley说,"我们知道有的公司雇用好几千人做这工作。注释员为图中物体周围的框架加标注,每个小时的驾驶大约需要800人工小时的标注,这些团队都会很吃力。而我们公司已经有了更快的速度,并且我们不断地优化。"

这怎么可能做到?因为Drive已经找到解决方案,使用深度学习来增强自动化地注释数据。所以它只使用一小队的人工注释员,这些人都在忙着训练全新的路况,或验证系统作出的注释。Tandon解释说, “有些路况我们的深度学习系统做得很好,我们只需要验证一下。另外一些路况我们需要改进算法,引导系统做出正确的注释,所以我们有一个人工注释团队来做第一次引导性的重复,我们借着重复引导来改进深度学习系统。现在在许多情况下,我们的深度学习系统已经做得比我们的专家人工注释员还好了。想想看,这简直是令人惊讶的事。”

Drive.ai的团队很难不让其它公司也去建造自己的深入学习架构和工具,同样地用深度学习方法来作注释和训练。Tandon说, “我们经常谈论这件事:凭什么不让别人做我们所做的事?说实话,这个问题有很多方面,深入学习是个集成的系统,整个系统有太多的部件都需要搞对,很难说是因为某个特别的原因使这个做法效果这么好。

Reiley同意: “你的设计决定一定要是软件驱动、为优化深度学习而着想,为软件和硬件的整合而着想。人家都把注意力放在算法部分,而我们有其它的应用综合在一起。自动驾驶不仅仅是一个算法--它是很复杂的硬件/软件问题,还没有人解决过。"

(未完待续,后面会继续介绍深度学习在研制自驾车上的重要性,以及这样研制出来的自驾系统是“可扩展的”。)

No comments:

Post a Comment