2022 年 12 月,特斯拉总部……
一次会议上,一位名叫 Dhaval Shroff 的自动驾驶工程师向 Elon Musk 提出了一个新想法:
💡 “这就像 Chat-GPT,但适用于汽车!!”“我们不是根据规则来确定汽车的正确路径,而是通过使用神经网络来确定汽车的正确路径,神经网络从数百万个人类所做的事情的训练示例中学习。”
被说服后,Elon Musk 和整个 Autopilot 团队急于将新算法应用于下一个 FSD 版本(从 FSD v11 到 FSD v12)。
这就是 Tesla 端到端学习的开始......
在这篇文章中,我们(Jeremy团队)将详细介绍特斯拉计划如何从其当前架构迁移到完整的端到端架构。为此,我(Jeremy)将介绍 3 个关键点:
◎2021 年的特斯拉:引入HydraNet
◎2022 年的特斯拉:增加占用网络
◎2023 年后的特斯拉:过渡到端到端学习
这三点很重要,特别是因为它们实际上展示了特斯拉是如何为端到端做长期准备的。
01.
2021 年的特斯拉:引入 HydraNets
一开始,特斯拉的自动驾驶系统依赖于 Mobileye的感知模块。很快,它就进入了一个定制的系统,从图像光栅化到BEV鸟瞰网络,并在某个时候引入了一种称为 HydraNet 的多任务学习算法。
HydraNet 的目标是拥有一个具有多头的主干网络。因此,我们没有堆叠 20+ 个网络,而只有一个网络,并且不会重复许多编码操作。
特斯拉的 HydraNet(来源:Think Autonomous)
该模型一直是特斯拉架构中的关键元素,因为它允许他们使用单个神经网络运行多个任务。
然而,需要注意的是,这只是大型模块化架构的一个模块(感知模块)。当特斯拉解释时,他们提到了 2 个主要组成部分:
◎感知,通过 HydraNet探测物体和环境
◎规划与控制,规划路线和驾驶
上述内容谈了感知与HydraNet,接下来让我们看看规划与控制模块上,特斯拉Autopilot如何规划通往目的地的路线。
在 2021 年 AI Day 上,特斯拉推出了 3 种类型的规划系统,并展示了它们在自动驾驶泊车上的示例:
1) 传统的 A* 算法——每个机器人工程师都知道它是搜索中的“关键”算法。此示例显示了在找到正确路径之前的近 400,000 个“扩展”。
用于搜索的原始 A* 算法的视频大约需要 44,000 个节点来计算(来源:AI Day 2021 视频)
2) A* 算法,通过导航路线增强——方法相似,但我们不是给出“启发式”方法,而是提供更多输入(地图、路线、目的地?)。如此,便只有 22,000 个扩展。
A* 算法,通过导航信息进行增强,只需要 22k 个节点(来源:
AI Day 2021 视频)
3)蒙特卡洛树搜索算法,通过神经网络增强 — 这种方法是特斯拉在 2021 年使用的方法。通过将神经网络与传统的树搜索相结合,它可以在不到 300 个节点的情况下达到目标。
得益于神经网络 + 蒙特卡洛组合,2021 年特斯拉规划算法非常快(来源:2021 年 AI Day 视频)
那么,让我们快速回顾一下 2021 年:
特斯拉 2021 年的架构(来源:2021 年 AI Day 视频)
我们有 2 个主要模型:HydraNet,执行视觉任务;蒙特卡洛与神经网络相结合,完成规划任务。
现在让我们进入 2022 年,看看 Perception 和 Planning 是如何演变的......
02.
2022 年的特斯拉:引入占用网络
2022 年,特斯拉推出了一种他们称之为 Occupancy Network(占用网络)的新算法。多亏了占用网络,他们不仅能够提高感知能力,还大大改善了规划。
当我第一次谈到这个想法时,很多人告诉我“所以他们不再使用 HydraNets!”
特斯拉在 2022 年所做的是向感知模块中“添加”一个占用网络,因此他们将感知模块分为 2块:
◎HydraNet,发现对象、标志、车道线等......
◎Occupancy Network,三维占用感知
在占用网络中,特斯拉创建一个网络,将图像空间转换为体素,然后为每个体素分配一个占用值。
这增强了感知,也帮助他们找到更多相关的特征。这对他们的堆栈来说确实是巨大改进,能够添加出色的上下文理解,尤其是在 3D 中。
引入占用网络(2022)(来源:2022 年 AI Day 视频)
该占用网络预测了 “Occupancy Volume” 和 “Occupancy Flow”,分别解决了3D世界中长宽高以及时间维度。这两个重要的部分,帮助我们了解 3D 空间中哪些是空闲的,哪些是被占用的。
但它并不是唯一被使用的模型,而是作为增强模型。为了更好地理解 3D,物体和车道也使用 HydraNet 进行检测。
2022年的HydraNet 2.0与2021年没有太大区别,只是它多出一个“头”,虽非真正的头,但作为完整的神经网络,用于执行车道线检测任务。
整体架构如下所示(头部为红色):
2022 年的 HydraNet(来源:2022 年 AI Day 视频)
绿色部分,实际上是另一个堆叠在这里的神经网络,用于查找车道线。
车道检测“头”(来源:AI Day 2022 视频)
所以,这是针对感知,我们有:
◎占用网络,进行 3D 理解
◎HydraNet,正在进行车道和物体理解
现在让我们看看规划: 最初的神经网络规划很棒,但现在我们可以访问 3D 占用,我们应该使用它! 所以,新的规划模块将占用网络以及车道融合到一个由蒙特卡洛树搜索和神经网络组成的架构中。
为了理解蒙特卡洛树的逻辑,让我们以特斯拉在 2022 年 AI Day 上的演示为例:
交叉路口示例(来源:
AI Day 2022 视频)
在此示例中,车辆必须:
◎让违规的行人过马路
◎为从右侧驶来的汽车让行
因此,它构建了一个树结构,在此生成和正确评估这些选择。
2022 年的蒙特卡洛树规划
从上到下:
◎步骤1:从视觉测量(车道、物体和占用率)开始
◎步骤2-3:生成目标候选和轨迹
◎步骤4:评估第一个选择:让步给行人vs抢道
◎步骤5:评估第二个选择:让步给右侧车vs抢道
如何评估这些选择?我们有手动规则和标准。在我们生成轨迹后,每个轨迹都将具有一个成本函数,这将取决于 4 个因素:碰撞概率、舒适度、干预可能性和人类相似性。
特斯拉的轨迹评分和选择标准
因此,如果生成了 20 个轨迹,每个轨迹都有一个成本函数,您最终会选择成本最低的函数。
同样,这都是 “手动” 完成的。据我所知,没有使用机器学习模型或深度神经网络,也没有训练数据——真的是编写了规则和算法。
那么让我们看看我们所拥有的快速总结:
2个关键组成部分:
◎感知,已通过占用网络和道路检测得到增强
◎重写规划,以使用占用网络输出
因此,您可以看到输入数据(8 张图像)如何从感知流向规划,再流向输出。
现在,让我们看看他们想在 2023/2024 年做什么:
03.
过渡到 FSD v12 和端到端架构
端到端深度学习是什么意思?它需要对这种架构进行哪些“更改”?
如果我们在谷歌上搜索 “end to end learning definition”,我们得到的是:
"End-to-end learning refers to training a possibly complex learning system by applying gradient-based learning to the system as a whole. End-to-end learning systems are specifically designed so that all modules are differentiable."
“端到端学习是指通过将基于梯度的学习应用于整个系统来训练可能复杂的学习系统。端到端学习系统经过专门设计,因此所有模块都是可区分的。
所以,简而言之,特斯拉有 2 件事要做:
1、适用于每个模型的深度神经网络
2、端到端,将这些神经网络融为一体
目前,对于 Tesla:
◎感知,使用深度学习 ✅
◎规划,使用深度学习模型 + 传统树搜索的组合❌
因此,他们需要将规划转换为深度学习。他们将不得不摆脱轨迹评分、手动规则、“如果您在停车标志处,请等待 3 秒”的代码以及“如果您看到红灯,请减速并刹车”的代码。全都没了!
所以,它看起来是这样的:
转型之一将要求规划系统完全使用深度学习
然而,这还不够,因为如果我们可能有 2 个深度学习模型,但仍然需要运行在一个端到端系统中。
在非端到端、但完整的深度学习中:
1、您可以在数据集上独立训练模型 A 以识别物体。
2、然后,您使用模型A 的输出独立训练模型 B 来预测轨迹。
请注意,在训练期间,模型A对 模型B 的目标一无所知。而 模型B 也不知道模型A 的目标。它们是两个独立训练的实体,而且训练损失没有得到联合优化。
现在考虑具有模型A 和 B 的端到端系统。
1、您有一个目标函数,既考虑识别图像中的对象(模型 A 的任务),又考虑预测轨迹(模型B 的任务)。
2、您将模型 A 和模型 B 一起训练,以最大限度地减少信息损失。
需要注意的是,信息(以及反向传播期间的梯度)从最终输出一直流回初始输入。模型A 的学习直接受到模型B 执行任务的程度的影响,反之亦然。它们针对单个统一的目标进行了联合优化。
从完全深度学习到端到端的过渡
因此,主要区别不在于模型本身,而在于它们的训练和优化方式。在端到端系统中,这些模型被联合优化以实现单个总体目标。在非端到端系统中,每个块都单独优化,而不考虑更大系统的目标。
问题是,现在不是更像一个黑匣子吗?我们怎么验证并把它上路?!
是的,它看起来更像是一个黑匣子。不过,这里面仍然使用占用网络和 Hydranets等等,我们只是将元素组装在一起。所以,它是一个黑匣子,但我们也可以在任何时间点可视化占用网络的输出、可视化物体检测的输出、可视化规划的输出等......
我们还可以单独训练这些元素,然后以端到端的方式进行微调。所以,它是一个黑匣子,但不一定比现在更神秘。只是,增加了一项复杂度:整体训练。
特斯拉并不是唯一一家提供端到端的公司,Comma.ai推出的OpenPilot和 Wayve.ai 同样如此。
Elon Musk强调的重要一点是,使用端到端后,我们不再 “告诉 ”车辆在红灯或停车标志处停车,或在变道前验证 xyz......
车辆通过“模仿”多个10M 视频中的司机行为,自我学习。因此,这意味着他们一直在使用 10M 视频的数据集,对每个视频的驾驶员进行评分,并训练机器模仿“优秀驾驶员”正在做的事情。
这在理论上意义巨大,因为这意味着车辆在面对未知场景时可以更好地泛化——它只会找到最接近的行为来采用并训练,而不是停滞不前。
04.
总结
2021 年,特斯拉推出了 HydraNet,这是一种多任务学习架构,能够同时解决许多感知任务。
他们还宣布他们的规划同时采用了蒙特卡洛树搜索和神经网络。
2022 年,他们增加了占用网络,这有助于更好地理解 3D。HydraNet 还有一个用于车道线检测的扩展。
当过渡到端到端时,他们需要 (1) 将规划转变为深度学习系统,以及 (2)同时训练感知模型和规划模型。
该系统可能看起来像一个更黑的盒子,但它实际上是现有模型的集合——它们不会扔掉已经构建的所有东西,只是将它们粘合在一起。
备注:原文来自Think Autonomous