自动驾驶的长尾挑战,各种异常情况该如何收集、融合、发布和测试

MIT 的 Deep Learning for Self-driving Car 经典课程,邀请到了 Waymo 首席科学家 Drago Anguelov,分享题为「Taming The Long Tail of Autonomous Driving Challenges(驯服自动驾驶的长尾挑战)」,主要是讲在现实世界中的 Long Tail 现象,各种异常情况该如何收集、融合、发布和测试。

课程的一些新看点

  1. 题目是「长尾」处理;
  2. 可以处理道路维修场景;
  3. 可以识别特殊车辆(警车/救护车/消防车);
  4. 可以预防闯红灯的车辆;
  5. 可以对马路自行车行为轨迹预测;
  6. 通过 NAS 学习模型;
  7. 不完全依赖机器学习,可以利用专家知识(Domain Knowledge);
  8. 不是 E2E 学习驾驶行为,而是 Mid-2-Mid,就是最近的 ChauffeurNet;
  9. 学习的行为预测有自适应性,比如激进的或者温和礼貌的;
  10. 仿真不能解决所有问题,仿真系统需要更多的 Agent Model,要 smart。

课程视频和课件PPT解读

我毕业于斯坦福大学博士学位,曾研究机器人相关领域。现在 Google 带领团队研究 3D 感知,以此来构建一个全新的自动驾驶感知系统。

Waymo 这家公司截止上个月已经成立了十周年了(2009 年成立)它起源于 Google X。

2015 年,我们研发的这款自动驾驶汽车进行公路路测试验,这是世界上第一辆成功实现自动驾驶的汽车。在这个案例中,坐在车里的人是个盲人,我们认为这个项目的意义重大。所以我们不仅仅希望这台车只是一个成功的演示案例,我们更加希望能够实现无人驾驶。

我将给你们展示一个很酷的视频。你们看,这台汽车真的在自己行驶在公路上。 2018 年,自动驾驶商业化,这台车学习了很多司机用户的驾驶习惯,使它自身拥有强大的自动驾驶能力。它也成功的在公路上自主行驶(无人驾驶状态)超过 10,000,000,000 公里。我们的路测实验几乎涵盖了所有的不同城市的驾驶场景,收集了很多驾驶数据。

我想解释一下为什么今天的演讲的题目是「项目的长尾问题」。因为我们在自动驾驶这条路上,我们还有很多问题需要处理和解决,才能使得自动驾驶更加完善。

自动驾驶系统要求有足够的能力,在没有人类司机干预的情况下,安全地处理所有的突发情况。

事实上,突发的异常情况总是发生,而且这些异常情况经常是比较复杂且少见的,而自动驾驶就是要安全地解决这些突发的复杂且少见的情况。这就是我所说的「长尾巴情况」,它不同于在常见的场景中的自动驾驶,而这种复杂且少见的驾驶场景在自动驾驶领域确实非常重要

我们来看这场景,画面中骑自行车的人带着一块「停止」的标志牌。但是我们并不知道他会停在哪里,什么时候停下。

我们再来看这个场景,有东西掉在路上了,周围的建筑也是一个问题。

现实中存在很多不同的场景和不同的问题,像这个视频中,我们的车辆听到了其他车辆的鸣笛声音,那么如何处理这个鸣笛的声音,这些都需要很好的(安全的)解决掉。

那么我们是如何解决这些问题的呢?

首先是,感知。我们利用传感器感知周围环境,并在屏幕上显示(可以显示周围的建筑、环境等等),以此重新构建一个地图。

感知的复杂性包括,在路上,有很多不同的物体,他们有不同的形状、颜色、状态。比如,有不同样式的信号灯,路上有动物和行人,行人还会穿着不同颜色的衣服,有不同的姿势状态。为了清晰的观察到这些,我们装置了很多传感器,来解决这个问题。

感知的复杂性还包括,很多不同的环境。比如,一天当中不同的时间段(白天/黑夜),不同的季节,不同的天气下雨或者下雪。这些都需要识别。

感知的复杂性还包括,不同的场景配置,或者叫物体之间的关系识别。不同的搭配就有不同的物体之间的关系,比如图片中,一个人拿着一块巨大的板子,第二幅图中,玻璃中有反光现象,第三幅图中人骑着马等等不同的场景和关系。

这种映射功能是一个非常复杂的功能,这是由物体、环境、场景配置共同决定的。

所以这需要我们在观察周围环境的基础上做出预判,对周边人和物体的下一个动作做出预判,即我们要对短时间内发生的事情做出一个预测。

那我们如何来预判呢?

预测的影响因素有过去的动作、高度的场景语义、物体属性和出现提示。我们考虑周围的任何事物,比如有一个自行车想要通过,那么我们需要停下或者放慢速度让它通过,这就需要提前计划设计,做出安全的解决方案。同时,我们也要向周围的人和物发出信号。

学校周围的场景,这是一个非常复杂的问题。机器学习是一个非常好的工具用以应对复杂的情况。所以我们要学习出一个系统,以此优化现实存在的各种场景问题。

传统的学习模式:用工具构建,改造和进化难以实现。

机器学习:更像是一个工厂,我们仅仅需要把数据输入进去,就能得到正确的模型。

关于如何创建更智能的机器学习模型的周期如图中所示。

因为 Waymo 隶属于 Google,有用强大的数据中心,所以他们用 TensorFlow 和 TPU,做出准确的标注,而且分布均匀。

数据收集:这是一个非常重要的环节,这是解决「长尾巴情况」的重要因素。数据收集是激发主动学习的重要环节,也是是机器学习周期运行良好的重要基础。

Google AI 和 DeepMind 都在关注自动驾驶。机器学习自动化已经部署好,几乎所有的事情都接近自动化。

NAS cell 是一种小网络,反复用作构建神经网络体系结构的高级构件。

首先是用 NAS cell 进行激光雷达分割。在这一过程中,延迟也很重要。

稳定平衡的体系结构本身也可以自动化,这是很灵捷并且很强大的。

这条蓝色的线,延迟最小且分割情况最好。

解决机器学习限制问题。但是在某些情况下还是存在限制,需要我们增强鲁棒性。

这幅图片描述的问题是存在冗余和互补的传感器和传统的逻辑。

混合系统:这是将传统 AI 和机器学习相结合的系统,这样可以保证系统鲁棒性,保证自动驾驶安全性。

随着时间的推移,如上图机器学习的范围可能会扩大,甚至完全掌控。

那么我们如何进行大规模的路测呢?

因为特殊罕见的异常情况很少发生,如果使用真实情况进行路测,我们需要等待很长时间,为了解决这个问题,我们自己构建条道路。

因为我们有 Google 的数据支持所以这个想法是可行的,所以我们按照如下图数据做出仿真模型。仿真出足够多的场景供以测试。而我们为什么要做出如此多的仿真模型呢?因为有时会得出截然相反的结果,所以我们要加强系统的鲁棒性,这就要求我们做出足够多的仿真模型,确保系统的准确性。

这是一种抽样方法。

上图正在模拟真实世界可能会发生的事情。如果想要得到准确的数据,我们需要模仿真实的人类在不同的情形下做出的真实举动。

如何评价这个简单的模型呢?

正面:容易调整关键参数,如反应时间,制动轮廓,横向加速。有效再现避碰场景中的基本人类行为;反面:无法处理更复杂的交互行为。

但是定义它本身是一个复杂的问题,所以我们能做什么呢?那就是从实际演示中学习代理模型。

机器学习仿真的解决办法就是构建另一个机器学习模型。

添加排列可能会出现问题,这是一个众所周知的问题。

我们使用了非常不同的体系结构去避免碰撞,例如 RNN 模型。

在一条陌生的路上开着车,需要看到更多的范围和预判更多的特殊情况,如掉头需要处理好。

上图是人类行为分布,可以看到这是个正态分布,所以这就是导致了「长尾巴情况」的根本原因。即使图像两端的情况很少发生,我们的测试也要涵盖进去所有的人类行为情况。

需要我们拓宽这个分布,或者仿真出更多的例子。

行为轨迹优化模型:反 RL 用于找到创建所需轨迹的变量。

许多不同的方法来克服「长尾」问题。

「智能」模型对于自动化是至关重要的。通过模拟更真实人类行为是非常重要的。

因为还存在很多不同的场景,每天都上演着不同的事情,所以「长尾巴情况」还将会在不同的城市,不同的环境中持续下去的。

在一些好的训练步骤如下:对收集的数据进行培训;能够在不确定或不正确的情况下进行量化;能够采取措施,比如向评分者提问;更好的是,通过因果分析直接自我更新。

总结:Waymo 专家举出的有人带着停车标志是一个有趣例子,而且对机器学习的一个非常基本的介绍,其中提到了 AutoML 模型,可以测试多达 10K 的不同架构。然后采用前 100 个架构,在更大的模型上进行测试。Waymo 是一个混合系统,使用 ML 和混合 ML(传统的 ML 编程)。随着 ML 能力的增长,传统场景越来越少。视频中也提到了 waymo 如何测试,结构化测试,是否有封闭的测试环境。在模拟器方面,他们认为代理能够模拟现实世界中发生的事情。不断扩大复杂模型,来处理长尾问题。或者利用专家领域知识,换句话说混合模型或传统编程。以及逆强化学习,值得深入研究。-END-

付付,现在的自动驾驶还是有问题的,可能需要理论上的再次突破后,才能有所改进,类似从专家系统到深度学习的改变

为您推荐