新智驾按:本文来自Momenta创始人兼CEO曹旭东的技术解读。Momenta是一家新生的自动驾驶技术公司,公司基于深度学习的环境感知、高精度地图和驾驶决策技术,助力自动驾驶的实现。创始人兼CEO曹旭东,毕业于清华大学,曾任微软亚洲研究院研究员、商汤科技执行研发总监。
无人驾驶最大的难点是什么?
无人驾驶最大的难点,也是最重要的要素,就是安全。
高安全性意味着低事故率。一个系统做到很低的事故率,通常要做两件事情,一个是发现问题,一个是解决问题。
开始时,由于系统的问题非常多,主要精力在解决问题,但是随着事故率逐渐降低,发现问题变得越来越难。据统计,全球来看,对于人类司机,一亿公里发生致命事故1~3起。对于无人驾驶,我们希望比人更安全,最好致命事故率低一个量级,做到十亿公里一起致命性事故。统计上,要达到足够置信度,需要多次重复实验,最好一百次以上。这意味着一套比人更加安全的无人驾驶的系统需要测试的总里程达到1000亿公里。按照一辆车一年10万公里总里程计算。我们需要100万辆车,一整年的时间,收集无人驾驶数据和测试,才能够保证无人驾驶所需的安全性。现在Google和百度的无人车成本都在百万人民币量级,乘以100万辆车这个巨大的基数,对于任何一家公司而言,都是一个天文数字。
如何克服?
无人车大规模数据收集和测试的巨大成本主要来源于两方面:一方面是需要海量的测试车辆,另一方面是高昂的单车成本。
针对这两方面的成本,我们有两种互补的解决方案:第一种解决方案是无人驾驶模拟;第二种解决方案是众包数据收集和测试。
无人驾驶模拟可以通过算法生成感知和决策数据,减少数据收集和测试车辆数量,降低研发成本。当然,无人驾驶模拟也存在不足:
第一,模拟生成的感知数据和真实的数据存在差异,实际中,还是以真实数据为主,生成数据为辅。
第二,模拟的规则是人制定的。很多失败的场景恰恰是人思考的盲点,单纯通过模拟并不能发现。
总结来说,虽然模拟可以降低数据收集和测试车辆的数量,但是我们仍然需要收集真实数据,用大量的车做真实测试。
单车成本主要由三部分构成:设备成本,造车成本,运营成本。
运营成本就是驾驶员开着车采数据和做测试的成本。设备成本方面,我们可以发挥算法优势,通过多摄像头等廉价设备实现无人驾驶。摄像头是所有感知设备中信息量最大的,需要人脑水平的强人工智能,才能从间接视频数据中提取出无人驾驶所需要的直接数据。激光雷达、高精GPS和IMU长期看都有降价空间,我们的技术方案不排除任何感知设备,价格合理,就会融合进来。
造车成本和运营成本已经优化了上百年,很难降低。一个聪明的想法是让其他人承担这部分成本——这个想法叫做众包,代表性的公司有特斯拉和Mobileye。然而,遗憾的是,他们的众包方案存在两个问题:
第一,需要造车。特斯拉自己造车,Mobileye则通过合作伙伴造车。
第二,需要读取和控制车辆驾驶行为。造车周期三到五年,显著慢于算法研发节奏,成为时间瓶颈。如果为了加快迭代,在算法没成熟的情况下强行上车,是拿人的生命做冒险,也显然不可取。特斯拉的几起致命事故就是血的教训。
因此,我们设想直接利用现有道路上已有的运营车辆,不需要造车、改车、控制车,以一种零负担、零危险的方式实现众包测试和数据收集,这是个非常困难的问题,需要非常深厚的算法积淀和原创能力。
无人驾驶的向导——高精度地图
高精度地图是一个宽泛的概念,需要达到两方面的高精度,分别是地标位置的高精度和本车定位的高精度。
地标位置的高精度。高精地图由很多类地标构成,比如地面各种道路标线,地上各种交通标志等,地标的定义现在还没有明确的标准,不同厂商从自己产品和技术需求出发,有不同的定义方式。
本车定位的高精度。高精定位有三种方式:第一种是卫星定位。多基站+差分GPS在开阔区域可以做到厘米级精度,但是城市中因为多路径效应,精度只有米;第二种是匹配定位,这种方式和人很像,观察周围环境或者地标,在记忆地图中搜索,匹配定位。结合GPS限定搜索范围,可以做到快速准确匹配。第三种是积分定位。IMU或者视觉里程计。短时间内精确,长时间有累积误差。这三种方式各有优缺点,结合起来可以做到低成本、高精度、高可靠性。
高精度地图是视觉的延伸和增强,之于无人驾驶是必须的。一旦有了高精地图的车道级定位和实时路况更新,就能提前减速并变换到到非车祸车道,杜绝事故的发生 。举个例子:通过视觉,我们可以识别当前在第几车道,通过高精度地图定位,我们也可以知道当前在第几车道,两种不同方式互相校验,可以达到更高的安全性。总结来说,高精地图可以使无人车看得更远,看得更准。
高精地图对于自动驾驶整体解决方案研发的价值非常高,这一点却被很多人忽视。分为三个方面:决策,测试,V2E。
第一方面,无人驾驶决策。本质上,驾驶决策学习的是道路环境到驾驶行为的映射。如果获得环境和行为的海量数据,就可以通过数据驱动的方式学习无人驾驶决策。道路环境可以通过视觉感知获得,而司机的驾驶行为如何获得?很多人认为,司机的驾驶行为就是刹车油门方向盘,想要获得,一定要有CAN总线权限,要改车。其实不需要。首先,更新一个概念,司机的驾驶行为还可以用车辆在高精地图中的轨迹表示。通过精确定位,我们可以获得每辆车的驾驶轨迹,以及轨迹上每一点的速度,加速度。驾驶轨迹是驾驶行为更通用的表示,与车型无关。刹车油门方向盘,虽然直观,但不通用。人类司机,换辆车,要调整驾驶习惯,重新适应,是同一道理。依赖高精地图,我们可以获得驾驶轨迹这一驾驶行为数据。通过众包,就可以获得海量环境和行为数据,通过数据驱动的方式学习无人驾驶决策。
第二方面,无人驾驶测试。当无人驾驶算法接近人类驾驶的安全性时,需要一千辆车测试一年的时间才有可能发现问题。如果团队像Google和百度一样靠自己运营测试车辆,显然是不现实的。众包是唯一实现海量测试的方法,但是我们不希望像特斯拉一样,以消费者的生命为代价,测试自己未成熟的算法方案。通过高精度地图,我们不控制车、不带来危险,就可以实现众包测试。具体原理是,我们可以预测驾驶轨迹,也记录了真实驾驶轨迹。预测轨迹和真实轨迹比对,如果一致,说明测试通过,如果不一致,说明测试失败。无人驾驶整体测试还包括无人车身体测试,以及身体和大脑结合的测试,也就是车辆测试和轨迹跟踪测试。相比于无人车大脑,这两部分成熟很多。
第三方面,V2E。V2E是指通过车辆和道路通信实现无人驾驶。概念上,V2E可以大大降低无人驾驶的难度,提高安全性。将V2E的概念真正落地到无人驾驶,其中主要有三方面的问题。第一,道路通信设备要解决供电、应对风吹日晒雨淋等技术可靠性问题,还要承担基础设施重建和复杂维护的高昂成本。第二,环境和车辆通信,需要统一的通信标准。谁来制定标准?众多车企都以自己的利益为考虑,很难协调。第三,通信安全的问题。如果黑客或者恐怖分子利用通信协议漏洞,恶意操纵路面上的车辆,制造恐怖事件,又应如何应对?这些问题都限制了V2E从概念短期内走向现实。相对于电子通信的V2E,我们提出“渐进式的V2E”。无人驾驶的很多问题是因为道路标线、标牌不足或者布置不合理造成的,通过高精地图和基于高精地图的测试,我们可以自动发现哪些路段标线和标识需要改进,并给出改进的具体实施方案。渐进式V2E不需要电子通信设备,没有通信标准和安全问题。在现有道路标线、标牌体系下,就可以大幅改善无人驾驶的可靠性和安全性。
视觉高精度地图的实现
视觉高精度地图的实现技术,不是SLAM也不是SFM,这些方法都不适用。要建真正可用的视觉高精地图,需要从第一原理出发重新设计整个算法。我们构建高精地图的第一原理是:多张图像存在视差,利用点的对应关系,可以从2D点恢复出3D点。人眼双目视觉获得深度也是这一原理。从基本原理出发,建立高精地图,需要创造性地解决三方面的问题:
- 图像部分。检测识别语义点。传统的SLAM或者SFM算法都基于SIFT、ORB等人工设计的特征点。在光照、视角发生变化的情况下,无法准确的检测匹配原有特征点。换句话说,光照视角发生变化后,原来构建的地图就无法使用了。我们的方法是定义道路标线、标牌等地标上的点作为语义点,通过深度学习和数据驱动的监督训练得到模型,可以准确检测和识别语义点,解决检测不到、匹配错误的问题。
- 几何部分。通过众包间接实现海量摄像头测量效果。不同车辆,不同时间,经过同一地标,即使光照视角不同,我们也可以通过语义点模型把所有车辆拍摄到的同一语义点关联起来,这相当于间接实现了多摄像头测距的效果。我们知道,视觉测量中,摄像头越多、视差覆盖越全,测量精度就越高。我们实验验证,随着众包车次的增加,真实3D点位置估计的准确性有量级上的提升。
- GPS部分。给每个语义点精确的GPS坐标。我们有几方面的考虑:(1)让高精地图通用。GPS坐标是地图的通用语言,给每个语义点赋予GPS坐标,便于他人使用;(2)消除累积误差。单纯使用几何方法构建局部地图,会有累积误差。结合GPS,可以解决这个问题;(3)消除局部地图歧义性。当局部地图有重合或者语义点缺失的时候,确定局部地图坐标系很麻烦,但全局GPS坐标系没有这个问题。
无人驾驶端到端的学习靠谱吗?
端到端(end-to-end learning)是深度学习中的一个概念,具体指通过深度学习网络直接学习从输入到输出的映射关系。无人驾驶端到端学习指的是输入视频序列、输出刹车油门方向盘的操作序列。英伟达和comma.ai都使用端到端深度学习,开发出了无人驾驶的demo系统。
简单来说,对于无人驾驶,端到端不适合开发实用无人驾驶系统,可以做demo,然而大规模商用却非常困难,其原因如下:
- 不聪明。我们在做驾驶决策时,只关心高精地图环境、自己当前位置和周围物体的相对位置,并不关心车的颜色或者路边的树叶是绿的还是黄的。端到端学习没有这些先验知识,所以需要大量冗余数据和计算。如果把整个无人驾驶拆解成感知、地图、决策三部分,分别独立学习再融合,可以大大降低需要的数据和计算。
- 不灵活。端到端学习的是摄像头输入到刹车油门方向盘输出的直接映射。如果摄像头设置变化或者增加其他感知设备,就需要重新收集数据学习。如果换辆车,执行机构变化,也需要重新收集数据学习。如果拆解成感知、地图和决策三部分,就可以大大提高灵活性。比如模拟极端情况,我们只需要在高精地图图层中生成车辆3D框,不需要重新渲染真实道路环境和车辆视频,简单很多。
- 难理解。无人驾驶是一个系统工程。遇到问题时,深入系统,诊断出问题模块,有针对性的改进,是解决问题的行之有效的手段。但是,对于整体端到端学习,一旦出现问题,因为无法对症下药,解决问题的难度会增大,需要投入更多的资源和时间。
我并不是完全否定端到端学习,而是无人驾驶端到端学习目前存在以上问题,或许在将来可以得到解决。
考验一个算法团队解决实际问题能力的一个重要的方面就是拆解问题——把一个复杂问题拆解成一系列比较简单的问题,再通过端到端深度学习解决。通常来说,在检测、识别、分割等简单基础的任务上,端到端学习可以获得更好的效果。复杂问题的拆解是一门艺术。