作者 | 端端 编辑 | 焉知新能源汽车
点击下方卡片,关注“自动驾驶之心”公众号
戳我-> 领取自动驾驶近15个方向学习路线
本文只做学术分享,如有侵权,联系删文
去年年底马斯克的 FSD V12 全球直播,重新训练的系统完全没有给这位科技顶流一点面子。
在全球观众的见证下,特斯拉试图闯一次阵仗最大的红灯,来告诉所有人:端到端自动驾驶,其实没有那么容易。
「是技术进步,还是一意孤行」,在一个传统分模块的技术栈面前显而易见的 Bug 出现了之后,也就有了讨论的空间。
但是,好在 FSD V12 并没有停滞不前,这些讨论并不会传到技术开拓者的耳朵里。
FSD V12.3 发布,马斯克宣布北美车主可以试用一个月。
事情开始发生变化,由「端到端是一条死路」,变成了「路况还是简单,有本事到国内来试试」。
进入 2024 年,国内厂商突然然开始着手宣传端到端,各大厂商都有意无意地透露,自己正在这个方向上押重注。
3 月 17 日,在汽车百人会上,二线智能驾驶厂商元戎启行突然宣布,元戎启行是国内第一家能够将端到端模型成功上车的人工智能企业;
4 月 24 日 ADS 2.0 升级为乾崑 3.0,技术转向 GOD/PDP 网络全新架构,对外称是端到端架构;
5 月 20 日,小鹏汽车举办了以「开启AI智驾时代」为主题的AI DAY发布会,宣布端到端大模型已经量产上车;
5 月 22 日,传出消息,小米汽车原图森未来首席科学家王乃岩即将带领团队加入小米汽车,负责端到端自动驾驶团队,而王乃岩乐于表达,在知乎上也曾多次抨击端到端自动驾驶;
就像 2021 年 BEV 浪潮一样,各大厂商再次在自动驾驶路线上达成了一致。
那么什么是端到端自动驾驶,先进在何处,真的能帮助我们获得更好的自动驾驶体验吗?
01
什么是端到端自动驾驶
经典的自动驾驶系统有着相对统一的系统架构:
探测(detection);
跟踪(tracking);
静态环境建图(mapping)
高精地图定位;
目标物轨迹预测
本车轨迹规划;
运动控制。
几乎所有的自动驾驶系统都离不开这些子系统,在常规的技术开发中,这些模块分别由不同的团队分担,各自负责自己模块的结果输出。
这样的好处是,每一个子系统都能够有足够好的可解释性,在开发时能够独立优化。
与此同时,为了保证整体自动驾驶的性能,每一个模块都需要保证给出稳定的表现。
如果将这些系统简单分为两部分,可以是感知系统和规划控制系统:
其实最主要的特征是:感知得到结果之后,将结果传递给规划控制系统。
为了让系统表现足够好,其实暗含了两个条件:
感知的结果足够正确
规划控制获得的信息足够丰富
很遗憾,这两条都难以保证,为何?
规划控制所有从感知得到的信息,都是感知工程师基于现有的资源定义好的,这里的资源包括:标注的能力、获取相应数据的能力,甚至工程师们对驾驶的理解。
举一个非常简单的例子,一般来说我们开车时候发现前车打转向灯,我们会相对开始警觉,并且给前车足够的空间进入本车道,但是由于团队限于资源,并没有识别前车转向的信号。
这个「前车打开转向灯」的信息,对于规划控制来说,它就是丢失了。
「因此发现转向灯信号,并且提前做出反应」,这个策略就成了一个不可能完成的任务。
这就引出了模块化自动驾驶的弊端:信息的有损传递。
下游任务得到的信息是不充分的,就相当于有两个驾驶员,其中主驾眼睛被蒙住,只负责操作;另一个坐在副驾驶,由他来告诉主驾驶前方发生了什么。
而信息的传递方式是两个驾驶员都能理解的,我们可以称之为:信息的显式表达。
举个例子,驾驶的语境中前方目标的识别,就是高度抽象的显式表达,一辆车被抽象成、速度、位置、尺寸、加速度等。
这种表达是人为用经验抽象出来并且传递给下游。
但是「被误解是表达者的宿命」,人和人之间的信息传递一定是有损的,所以这种开车方式很难达到非常好的体验。
优秀的分模块系统就相当于两个驾驶员有了足够的驾驶默契,但是绝对不能与一个有足够驾驶经验的司机对比。
既然信息显示表达传递会有损耗,那该怎么做?
这里有个概念是:信息的隐式表达。
我们常常看到一些论文提到 Feature 层,这是一些信息在神经网络中的某一层的特征表达,是在训练过程中,网络自行学到的重要信息。但是这些信息不是靠人为定义确定的,我们的经验并不能完全理解,但是神经网络能够理解,自动选择重要的信息。
回到自动驾驶语境中,那就是如果信息的表达是有损耗的,那么就不表达了,直接将用神经网络里的信号与下游对接起来。
这其实就是 CVPR 2023 年 Best Paper UniAD 的思路:分模块端到端。
分模块端到端
模块与模块之间的信息传递不再是开发工程师能够直接阅读并且理解的内容,而是直接将几个模块连接起来,然后在训练中进行全局优化。
由此产生了区别于传统自动驾驶技术栈最重要的结构特征:全局可导并且可以全局训练。
UniAD
这里我们简单看一下UniAD 的思路,从结构上看,如果不考虑各模块之间的连接,可能会认为这就是一个传统的大力飞砖,所有的模块都用 Transformer 进行改造的系统。因为依然可以很明显的看到 BEV freature 层、MapFormer(建图)、TrackFormer(跟踪)等模块。
但是,其实最重要的改进并不是如此,而是各个模块之间的连接方式,并不是像我们传统技术栈一样,用初级工程师甚至驾驶员完全能够理解的方式进行连接的,而是通过神经网络的方式进行连接。
当然由于开环评测方式(并不是实际运行结果,与环境并没有交互)过于单一。业内也有学者对其提出批评,认为由于 UniAD 主要在 Nuscenes 上进行开环评测,导致大部分的轨迹,模型只要输出合适的直行命令即可获得较好的结果,并且甚至还设计了一个新的模型,将感知结果完全丢失,只留下自车和周围车辆的轨迹,也能获得不错的结果。
VAD
这篇论文发表在 2023 年的 ECCV 上,相较于 UniAD ,摒弃了传统技术栈中的栅格化表征,对整个驾驶场景进行矢量化建模,同样与 UniAD 一致,VAD 基于统一的 Transformer 结构。
动态目标信息由 Vectorized Motion Transformer 提取,实现动态目标检测和矢量化的轨迹预测;
静态地图由 Vectorized Map Transformer 提取;
Planning Transformer 以隐式的动静态场景特征作为输入,并且获得相应的规划信息。
从结构来看,OCC 的模块被完全抛弃了。
对此论文中也有解释,OCC 的模块一定程度上作为后处理兜底的任务,具有较大的算力开销,而 VAD 选择在训练阶段引入更多约束,降低对后处理兜底的需求。
于此同时,VAD 也在 Carla(一种被学界广泛使用的自动驾驶模拟器)中进行了评测,也获得了非常好的结果。
从这两篇论文中我们不难看出,学界对于端到端自动驾驶的态度应该是可连接并且全局可以进行共同优化训练的端到端,而非一个完全的纯黑盒网络,还是从原有的自动驾驶技术栈进行改进而来,这实际上与大模型无关,也与 nWorld Model 也并没有产生实际的联系。
那么既然定义清楚了,业内是否都有必要切换呢?切换的难度在什么地方?
02
端到端自动驾驶会带来什么
全局可导并且全局优化是端到端结构上的特点,这种特点能带来什么呢?
「Scaling Law」
这是一个非常流行的词汇,从 ChatGPT 3.5 横空出世,震惊之余人们总结出来的经验,通俗的说法即:数据驱动,大力出奇迹。
这也是 OpenAI 奉为圭臬的开发准则,事实证明这条路确实能够产生出来目前最优秀的人工智能产品,ChatGPT4、Sora,都遵循这条规则。
而自动驾驶现有的技术栈每个模块之间是不可连接的,每个模块之间是靠人为和规则进行连接的,无法完全靠数据进行全局训练,那么 Scaling Rule 至少在目前在自动驾驶界是无效的。
而端到端自动驾驶在一定程度上就给了 Scaling Law 发挥的余地,这符合目前人工智能的大趋势。
在传统的技术栈解决问题上,不论多么复杂的 Corner Case 都需要工程师们,用非常抽象的方式将场景描述清楚,收集数据然后标注,解决问题,然后验证。
但是实际上场景浩如烟海,很多任务非常琐碎,以单点突破的方式几乎没有可能完全解决。
所以有些公司的场景待解决库里面会将重点的安全问题先处理,而小频率的体验问题会之后处理,而这些小频率的体验问题,可能就决定了,这个场景的处理是否类人。
例如,红绿灯前的减速度是否丝滑,是否是根据当时的车道线和交通参与者做的实时判断?
6 月 7 日,在上海人工智能实验室主办的端到端研讨会上,前段时间离职加入小米的消息引发广泛关注的王乃岩提出:
端到端可以将很琐碎的任务,用人类的驾驶习惯进行统一的监督,降低开发成本,与可解释的传统技术栈结合,可能可以带领我们走向 L4 甚至 L5。
03
端到端自动驾驶的难点
我们都知道神经网络是黑盒系统,目前其实也没有办法去控制神经网络内部发生了什么,而这天然与自动驾驶要求的安全性和可靠性相悖。
在传统的技术栈中,如果遇到了一个问题,是可以通过分模块的方式找到出问题的部分,例如感知层给的目标的位置不对、规划给的轨迹不好。
但是端到端系统这些方式就失效了。
更好的问题归因优化和验证系统迫在眉睫。
如何找到合适的数据
我们可以将同样基本是黑盒的感知系统推广到整个自动驾驶系统上。
以前感知如果出了问题应该怎么做,这里举一个非常典型的 Corner Case, 公交车上广告牌的人形图案,这个问题特斯拉、理想都爆出过误识别新闻。
应该如何解决这个问题?
挖掘足够的的公交车上广告牌的人形图案数据,扔给神经网络进行训练,不断优化感知系统,规划和控制部分可以保持不变。
那么再进一步,已经是端到端系统了,如果现在结果是车辆误刹。
那么问题的归因就成了一个巨大的问题,因为没有办法马上知道,是因为这个人形图案带来的 BUG,也就无法去对应寻找数据。
即使找到了对应的问题,寻找特定的数据也是巨大工程,需要在数据闭环系统中找到相似的人形公交视频和人类驾驶数据,再进入端到端系统进行训练。
那么新的问题又出现了,如何验证问题已经修复并且性能不回退呢?
如何验证端到端自动驾驶系统
我们知道传统的自动驾驶技术栈通过仿真虚拟进行大规模验证得出结论后,可以上车进行实车测试。
而这里最重要的区别是,仿真的验证。
在传统的技术栈中,可以将每个模块分开来验证的,感知和规划可以分别用数据在云上大规模验证,每个团队都会有一个数据库,每次新系统上线会将数据喂到新系统里面进行大规模验证。
这是之前的经验。
但是这里有两个问题:
大部分团队的验证方式是开环验证,也就是并没有与环境产生任何交互,只验证输入和输出链路。
大部分团队对感知的验证还无法用纯虚拟的方式进行,需要实车数据才可以完成。
而这与端到端自动驾驶是相悖的。
端到端驾驶系统在上车跑之前,必须要用虚拟的方式全局验证通过,否则上车跑通无异于天方夜谭。
那么就涉及到一个非常好的可以模拟所有感知输出的自动驾驶模拟器,而且能够在这个模拟器里面模仿所有的交通参与者的交互信息。
即为了保证系统在真实世界的安全性,我们需要在虚拟世界中将系统充分验证。
前文提到的 Carla 在一定程度上可以满足学界的需求,但是场景的单一和渲染的质量,离业界的要求依然想去甚远。
其实不难看到,端到端自动驾驶依然依赖原有的自动驾驶开发工具链,优秀的数据闭环工具用来收集数据,优秀的自动驾驶仿真系统用来验证,而这大部分团队几乎都没有。
从这个角度来看,端到端自动驾驶无法进行弯道超车
写在最后
虽然著名反 OpenAI 人工智能专家杨乐昆认为,現有的 LLM 尽管在自然语言处理、对话交互、文本创作等领域表现出色,但其仍只是一种「统计建模」技术。
通过学习数据中的统计规律来完成相关任务,本质上并非具备真正的「理解」和「推理」能力。
而这个理论似乎放在端到端自动驾驶上也成立,相似的是最近港大的著名学者马毅提出:如果相信只靠 Scaling Laws 能实现 AGI,你该改行了。
那么似乎我们也可以说:如果相信只靠端到端就能实现 L5,那么你该改行了。
不过,我们目前看到最有希望的一条路已经摆在了我们面前,虽然这条路看不到是否能够通向终点,这条路似乎也没有那么简单,路上充满了很多不确定性,抵触的声音不绝于耳。
但是特斯拉已经向我们示范了这条路的巨大潜力。
所以,我们为什么不去尝试呢?
投稿作者为『自动驾驶之心知识星球』特邀嘉宾,欢迎加入交流!
① 全网独家视频课程
BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合、多传感器标定、多传感器融合、多模态3D目标检测、车道线检测、轨迹预测、在线高精地图、世界模型、点云3D目标检测、目标跟踪、Occupancy、cuda与TensorRT模型部署、大模型与自动驾驶、Nerf、语义分割、自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习)
② 国内首个自动驾驶学习社区
国内最大最专业,近3000人的交流社区,已得到大多数自动驾驶公司的认可!涉及30+自动驾驶技术栈学习路线,从0到一带你入门自动驾驶感知(2D/3D检测、语义分割、车道线、BEV感知、Occupancy、多传感器融合、多传感器标定、目标跟踪)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、大模型、端到端等,更有行业动态和岗位发布!欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频
![e4d18f3fd10d7648e9ba63c295d8b851.png](https://img-blog.csdnimg.cn/img_convert/e4d18f3fd10d7648e9ba63c295d8b851.png)
③【自动驾驶之心】技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦感知、定位、融合、规控、标定、端到端、仿真、产品经理、自动驾驶开发、自动标注与数据闭环多个方向,目前近60+技术交流群,欢迎加入!扫码添加汽车人助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)
④【自动驾驶之心】全平台矩阵