最近关于自动驾驶技术上的话题,讨论的非常多,特别是还有两个主要的引导事件,一个是先行举办的毫末智行的 HAOMO AI DAY;另一个是特斯拉 AI Day。
从关注度上来讲,特斯拉 AI DAY 吸引全球目光,HAOMO AI DAY 影响力正在逐步扩大;从内容本身来说,这两家公司都是在分享自家的技术成果和路线,其中所展示出来很多共性的技术思想,值得我们关注。
这也是我们今天要讨论的主要方向:
-
-
-
顶级公司的高级别自动驾驶技术的愈发趋同性在那些点上?
特斯拉这次的AI Day分享了非常多的技术内容,大方向包括机器人和自动驾驶,而自动驾驶里又涵盖了感知和认知算法,数据闭环,芯片设计,超算中心等内容。
前两者是大模型 + 数据驱动路线的核心,而后两者则是这个技术路线的硬件载体。下面将主要从算法和数据这两个方面来进行解析。
算法方面,这次发布会的重点在于从去年的 BEV 感知升级而来的占据栅格网络(Occupancy Network),以及在此基础上改进的车道线和目标检测网络。
数据方面,这次发布会介绍了特斯拉在自动标注,系统仿真和数据引擎方面的一些进展。
图1 特斯拉AI Day自动驾驶部分分享的内容
算法部分:Occupancy Network
BEV 感知回顾
特斯拉在去年的 AI Day 上提出了多摄像头融合感知的概念,也在学术界和工业界掀起了一波BEV(Bird’s Eye View)感知研究的热潮。
BEV 感知属于多传感器融合中的特征层融合策略,其核心思路是将多个传感器所生成的特征转换到统一的坐标系下,再将其合并到一起,用来完成后续的感知任务。
这里统一的坐标系就是指 BEV,也就是俯视视图下的世界坐标系。
图 2 BEV 感知示意图
如图 2 所示,在 BEV 坐标下,车身周边的空间被表示为二维网格,每个网格对应了输入图像上的一个区域。在特斯拉的 FSD 纯视觉系统中,
车身四周安放了多个相机,相机的视野之间也有重叠区域,因此,每个 BEV 网格可能在多幅图像上都有对应的区域。
BEV 感知的核心任务就是,如何将来自多幅图像的特征融合到对应的 BEV 网格里。
这里采用的是一种称之为交叉注意力(Cross Attention)的方法。Transformer 网络中常用的是自注意力机制,也就是通过输入数据自身之间的相关性来完成特征编码。
而交叉注意力描述的的是两种不同数据之间的相关性,
这里的两种数据分别是指图像坐标下的数据和 BEV 坐标下的数据。
升级版的占据栅格网
在今年的 AI Day 上,特斯拉展示了 BEV 感知的改进版本,也就是:「
占据栅格网络。」
这个网络结构其实是与 BEV 感知网络一脉相承的,只不过 BEV 感知描述的是二
维网格
,而占据栅格网络描述的是
三维网格。
显然,通过增加高度方向上的信息,占据栅格网络可以更好的描述车身周围的三维场景。
BEV 感知的任务通常是识别场景中的各种目标,检测路面上的车道线。占据栅格网络生成了场景的三维描述特征,除了可以更好的完成上述任务以外,一个更重要的改进就是,可以给出
三维网格的语义信息
。
相对于目标和车道线检测这种稀疏的输出,三维网格的语义信息是一种稠密的输出,这与视觉感知中语义分割的结果比较类似。
图 3 Occupancy Network 输出的三维网格
如图 3 所示,三维空间被划分成网格结构,占据栅格网络会给出每个网格是否被障碍物占据的信息,如果被占据的话,网络也会给出相应的语义信息,比如车辆、行人、建筑物。对于车辆和行人这类可运动的目标,网络也会给出其运动状态。
与 BEV 感知一样,来自多帧的时序信息对于占据栅格网络的生成也非常重要。
根据发布会上的介绍,时序融合首先根据车辆自身的运动信息将三维网格在空间上进行对齐,也就是说来自多帧的三维网格需要采用统一的空间坐标系。
统一了坐标系后,来自多帧的网格特征就可以堆叠到一起,再采用 Transformer 中的自注意力机制来提取特征。
从结构上来说,
占据栅格网络一方面采用交叉注意力来提取空间信息,融合多个摄像头的图像数据;另一方面采用自注意力机制提取时序信息,融合多帧图像数据。
这两个部分都用到了注意力机制,其参数量和计算量都是非常大的,这也就是我们前面所说的
「大模型」
。
为什么要用占据栅格网络?
传统的物体检测网络输出的是场景中各种目标的边框信息(BoundingBox),而这种输出有两个主要的局限性。
首先,目标的类别必须是已知的,也就是说目标类别必须出现在训练数据的标注中。
现实世界中的目标多种多样,构建一个完备的训练数据集是基本不可能实现的。比如在欧美国家采集的道路数据集,就很少会包含电动自行车、三轮车,那么以此为基础训练的目标检测网络在国内的道路上就会丢掉这些目标。
即使是在国内道路上采集了数据,包含了这些目标类别,同一个目标类别内的形态差异也是很大的。比如说三轮车可能有各种不同的造型,也可能运输不同的货物,这都会造成目标外形上的巨大差异,从而使网络无法稳定的识别这些目标。
显然,如果无法稳定的检测道路上的这些重要目标,自动驾驶系统的可靠性将会受到非常致命的影响。
特斯拉之前被广泛诟病的白色大货车事故,就是由于系统没有检测到横在道路中央的大货车目标,而这个场景在一般的道路数据集中确实是没有见到的。
其次,有些目标很难用矩形边框来表示。比如铰接式的公交车,当其转弯时,其形状近似一个弧形,一个矩形边框就无法很好的描述它的轮廓。
此外,一些异形的工程车辆,比如带有机械臂的车辆,当其作业时,其形状也是非常不规则的。这时如果强行采用矩形边框来描述,就会导致距离测量的误差,从而引发碰撞事故。
占据栅格这种网格级别的稠密输出可以避免由未知物体类别和矩形边框带来的问题。
首先,占据栅格输出的是每个网格是否被障碍物占据,那么即使障碍物的类别未知,自动驾驶系统也至少知道该位置是被占据的,不可以行驶通过。
其次,如果网格的分辨率足够,占据栅格就可以精确的描述物体的三维形状,这就避免了矩形边框这种粗略描述带来的问题。
占据栅格这个概念以前经常出现在毫米波雷达和激光雷达的感知任务中。这两种传感器都可以直接的获取场景的三维信息。因此,非常适合用来构建占据栅格,以此描述哪些区域是障碍物,哪些区域是可行驶的。
视觉感知因为在深度信息的获取方面相对比较困难,所以很少被用于生成占据栅格。基于多摄像机融合的 BEV 感知,以及升级版的占据栅格网络,
通过深度神经网络和注意力机制,直接从多个视角的图像中获取三维信息,所以可以得到媲美激光雷达的占据栅格表示。
此外,由于图像中包含了丰富的颜色和纹理特征,由此得到的占据栅格相比于激光雷达来说包含了更多有用的语义信息。
不过,在发布会的视频中,并没有看到类似白色大货车这类缺乏纹理的目标,目前并不是很清楚占据栅格网络在这类目标上的效果,所以也期待后续特斯拉会有更多的路测展示。
算法部分:车道线和目标感知
前面提到,三维的场景特征除了可以用来生成三维占据栅格,同样也可以用来增强车道线和目标的感知。有了可靠的三维特征,三维目标的检测当然会更加准确,这个自然不用多说。
下面主要来介绍一下车道线感知部分的提升。
在去年的发布会中,特斯拉就展示了如何采用 BEV 感知来增强车道线的检测,其效果的提升可以说是令人印象非常深刻的,这也是工业界和学术界纷纷转向 BEV 感知研究的重要原因之一。
从今年的发布会中可以看到,FSD 的车道线感知已经采用了三维的场景特征,可以描述地面的起伏变化。
图 4 基于语言模型的车道线感知
此外,
特斯拉还采用了低精度地图中的车道线信息,比如拓扑关系、数量、宽度等
。有意思的是,关于「低精地图」我之前采访毫末 CEO 顾维灏以及毫末技术副总裁艾锐时他们均有提及,并表达了特斯拉和毫末的算法在底层上的一些相似性。
下面我们会展开讲。
这些信息进行编码以后,与三维视觉特征进行融合,再输入给后端的 Vector Lane 模型进行处理,这里的亮点是借鉴了语言模型的 Vector Lane 模块。
与一般的物体不同,车道线是可以在空间上延伸的,车辆在行进的过程中,车道线的不同部分/节点也按照时间的顺序进入到相机的视野中。
这种数据排列的方式非常类似于自然语言中的句子结构,而 Transformer 中的编码-解码结构本身就是用来处理句子结构的。
因此,很自然的,当然也是很巧妙的,这种编解码框架也被用来处理车道线的感知。
基于向量空间(Vector Space)的路径规划
相对于感知模块,AI DAY 对认知模块的细节介绍比较少,综合两次 AI Day 的发布会来看,特斯拉在路径规划上的主要思路是,
首先得到可行的轨迹空间,再采用各种优化的方法来确定最优的轨迹,这里优化的方法主要是增量决策树搜索的方式。
根据感知模块得到的车道线、目标运动、占据栅格等信息,规划系统可以生成一个行驶轨迹决策树。
采用传统的基于条件约束的方法,即使用增量的方式来控制约束的数量,在复杂的道路交通环境下依然会有较高的时间延迟。
因此,特斯拉另外采用了一种基于数据驱动的方式,利用神经网络和人类驾驶员的训练数据来辅助生成最优的路径。
图 5 基于决策树搜索的路径规划模块
此外,特斯拉的路径规划系统还考虑了在不可见(遮挡)区域内感知结果的不确定性。
这里的不可见区域是由占据栅格给出的,也就是说在占据区域的后面,感知结果是不确定的,可能有物体,也可能没有物体。
简单来说,就是需要规划系统考虑被遮挡区域的不确定情况。
比如说一个行人突然从一个车辆后面走出,而行走的轨迹又刚好与自动驾驶车辆自身运动轨迹重叠,如果规划系统没有考虑到这种情况的话,就很容易发生碰撞事故。
为了解决这个问题,特斯拉在不可见区域内引入了假象的动态物体(Ghost),规划系统需要根据这些假想的物体规划最安全的行驶轨迹。
在图中蓝色区域表示可见区域,其中的感知结果是确定的,而灰色区域则表示不可见区域,这个区域内的感知结果是不确定,因此需要引入假象的动态物体。
图 6 在不可见区域内引入假象的动态物体
数据部分
从以上的介绍可以看出,无论是感知还是认知模块,机器学习方法都起到了重要的作用。很早之前,在机器学习领域就有一句名言:Data is the King。
意思就是:数据为王。
我采访毫末技术副总裁艾锐博士时,
他也说过:用数据去做神经网络的训练,来迭代自动驾驶能力,从实践性和可行性上来说可能是目前比较适合自动驾驶的,特斯拉从 2015 年转向自研的时候就确定了基于「数据」迭代的算法架构,而毫末在成立的时候,同样也确定了基于数据迭代的模型
。
在深度学习的时代,这个观点得到了进一步的加强,没有大规模高质量的数据,神经网络就无法发挥其应有的能力。
前面我们也提到了,基于 Transformer 和注意力机制的大网络模型更加依赖于海量数据,而解决自动驾驶的「长尾问题」也需要高质量的 corner case 数据。
所有这些观点其实都说明了基于深度学习的自动驾驶系统应该是一个数据驱动的系统。
特斯拉的数据驱动系统里包含三个主要模块:
数据引擎用来高效的采集有价值的数据,也就是有挑战性场景的数据,或者说 corner case 数据。采集的数据被送到自动标注系统快速的生成
真值
,用来迭代神经网络模型。仿真系统用来测试网络模型,
发现其失效的场景,并以此更新数据引擎的采集策略。
这样三个模块就形成了一个数据闭环,可以非常快速的迭代和测试神经网络模型。其实不仅仅是特斯拉,很多自动驾驶公司都把打造高质量高效率的数据闭环作为其核心竞争力之一。
再聊完特斯拉后,就要聊聊毫末智行。因为毫末的高管不止一次在公开场合表达过,对特斯拉在自动驾驶技术上的肯定,同时更是直言在特斯拉身上学习到很多思路。
因此,来聊聊 2022 年毫末 AI DAY 上的一些技术信息。
毫末智行依托长城汽车,同样在获得海量数据方面有着先天的优势。
因此也不难理解,两家公司在实现自动驾驶的策略上非常的相似,也就是采用渐进式策略,相信辅助驾驶是通向自动驾驶的必由之路。
同时,在量产车队可以提供海量数据的背景下,毫末和特斯拉也都采用了大模型 + 数据驱动的技术路线。
虽然技术路线是类似的,但是两家公司在这个方向分别做出的探索却是各有特色的。
众所周知,特斯拉 FSD 目前采用的是纯视觉模式,其核心在于,将多个相机的数据融合到一个统一的 BEV 坐标下。当然,BEV 感知今年又升级到了三维的占据栅格网络。
该网络一方面可以提供场景的三维描述;另一方面也可以增强车道线检测、目标检测以及后续的路径规划
。
特斯拉之前提出了软件 2.0 的概念,把自动驾驶系统的架构变成数据驱动的模式,让系统能够依靠数据规模不断地提升自身的能力。
毫末在今年的 AI DAY 上进一步提出了自动驾驶 3.0 的概念。
除了大模型和数据驱动以外,自动驾驶 3.0 还包括了多模态的传感器感知和可解释的场景化驾驶常识。
图 7 毫末提出的自动驾驶 3.0 的概念
为了应对自动驾驶 3.0 的种种挑战,毫末也在其 MANA 数据智能体系下对算法和数据两个方面进行了有针对性的研究。
感知算法方面与特斯拉类似,毫末同样采用带有时序融合BEV感知框架,但是加入了激光雷达来进行多模态的传感器融合,并且利用人类世界的交互接口来增强感知能力。
认知算法方面,毫末提出让系统学习场景化的驾驶常识,以使路径的规划更加类似于人类驾驶员。
数据方面,毫末采用自监督学习和增量学习来提高训练数据的利用效率。
下面我们从感知算法、认知算法和数据驱动三部分来详解介绍:
感知算法
多模态感知
在目前的辅助驾驶领域,「重感知,轻地图」的策略可以说逐渐被业内接受,毕竟高精度地图的构建成本太高,更新的频率又无法满足实际应用的要求。
但区别在于,一部分公司是刚开始设计技术架构时,并没有针对所谓「重感知,轻地图」去设计,而是后期感受到了高精地图的使用难度后,再去改变,这就带来了很多问题;另一部分是从设计之初就确定了重感知的架构。
显然,特斯拉、毫末是有先见之明的后者。
「重感知」的核心就是要提升感知系统的能力,那么毫末这里采取的方案就是基于 Transformer 大模型的多模态融合感知。
这里的融合感知其实包含三个不同的维度:
空间、时间和传感器
。
图 8 毫末的多模态融合感知系统
空间融合主要是将来自多个相机的图像转换到统一的 BEV 坐标,再进行特征层融合。这一点与业界目前重点研究的 BEV 感知基本一致,可以参考前文对特斯拉 BEV 感知部分的介绍。
单帧的信息会有很大的随机性,因此,时序信息对于自动驾驶环境感知来说是非常重要的。在 BEV 感知以及特斯拉最新提出的占据栅格网络中,时序融合都是重要的环节。
从毫末发布会的介绍来看,
其时序融合也是采用了车辆自身的运动信息来统一多帧数据的空间坐标系,从而在一个统一的空间坐标系下融合来自不同时间的数据。
这一点其实也是目前业界经常采用的思路。
再有一点是,利用人类世界的交互接口。
我们都知道,在感知系统中,车辆检测是很重要的一部分。但是一般的车辆检测系统只会给出目标车辆的位置、大小、速度等信息。
除此以外,目标车辆其实还可以提供更为丰富的信息,我们自己在开车时,前车的转向和刹车信息可以通过信号灯来判断的。
因此,除了多模态的融合感知,毫末在发布会上还提出采用利用人类世界的交互接口来增强感知系统的能力。
对于感知系统来说,自然也可以利用这种人类世界的交互接口来增加获取的信息量,而这些额外信息对于城市复杂环境下的辅助驾驶系统是非常有帮助的。
图 9 利用前车的刹车灯和转向灯来增强感知系统
为了达到这个目的,最重要就是稳定的检测前车的转向灯和刹车灯,并判断其工作状态。说起来简单,但是在实际情况中,这个任务也是非常复杂的,因为不同车型的信号灯其形状和位置差别很大,另外外界的天气和光照条件也会对信号灯的检测带来干扰。
认知算法
自动驾驶系统除了安全性以外,舒适性也是一个非常重要的指标。为了使车辆的自主运动看起来更像人类在操控,认知算法需要学习常识和将车辆动作拟人化。
认知算法的输入是感知系统得到的结果,而输出则是油门、刹车、转向等一系列动作。其实,我们在收集感知系统数据的同时,人类司机的驾驶动作也给出了认知系统所需要的标注。
因此,我们可以按照人类司机的驾驶习惯来训练认知系统,使其输出的动作系列更加拟人化,从而提高系统的舒适度。
油门、刹车、转向这些动作的序列非常类似于自然语言中一个句子中的多个单词,因此毫末也提出采用目前自然语言处理领域比较流行的 Prompt 模型来处理这些动作序列。与感知模型不同,基于 Prompt 的认知模型其输出是可以解释的。
比如说模型会给出一个明确的语义输出,表示需要超车,然后才有了后续的油门和转向的动作。这对于系统调试来说也是非常方便的。
图 10 基于常识学习和动作拟人化的认识系统
数据驱动
大模型需要大数据的支持,尤其是包含各种复杂场景的数据。如何有效的利用这些数据则是数据驱动模块的重要工作。
在这部分,毫末主要介绍了两个方面的工作:
一,采用自监督学习来有效利用海量数据;二,采用增量学习来有效利用新采集的数据。
自监督学习
基于 Transfomer 的大模型的训练,不仅需要海量数据,更重要的是这些数据需要标注。量产车队使得海量数据的获取变得没那么困难,但是在有了海量数据以后,如何快速的高质量的标注这些数据则是更为困难的步骤。
自动标注当然是一个解决方案,特斯拉在发布会上介绍数据驱动部分时也对如何实现自动标注进行了讲解。除了自动标注,
毫末进一步提出采用自监督学习来有效的利用未标注的数据。
我们以视觉感知系统为例来解释自监督系统的工作原理。
感知系统通常都是需要完成一个或者多个具体的任务,比如说检测障碍物、车道线、红绿灯等。
为了更好的完成这些任务,神经网络需要学习如何从图像中提取相应的视觉特征,与人类的视觉系统类似,神经网络的特征提取也是一个层次化过程。
底层特征描述视觉数据的基本属性,比如形状、颜色、纹理等。
而高层特征则对应于不同的任务,比如说车道线检测需要提取白色条状特征,而红绿灯检测需要提取彩色圆形的特征。
当然这里只是一个直观的解释,实际的特征提取过程会更加复杂。
在深度神经网络中,底层特征其实与后端任务的相关性比较弱,我们也可以粗略认为它们是独立于具体任务的。
因此,
我们可以采用一个辅助任务来从未标注的数据中学习如何提取这些底层特征
。辅助任务一般来说都是一些重构的任务,也就是说,
通过提取的底层特征可以近似的重构原始图像
。
毫末采用的是将 3D 场景重建作为辅助任务,在十亿级别的大规模未标注数据上学习通用的底层特征,而这些特征可以很好的描述 3D 场景的基本信息。
有了这些底层特征以后,
我们就可以在千万级别的小规模标注数据上来进行监督学习
。
监督学习一方面需要对提取底层特征的主干网络进行微调(Fine Tuning),另一方面也用来学习完成具体的感知任务的头部网络(Head)。