本文章翻译自:Breakdown: How Tesla will transition from Modular to End-To-End Deep Learning (thinkautonomous.ai)
2022年12月,特斯拉董事会,Palo Alto…
在会议中,一个叫Dhaval Shroff的自动驾驶工程师给马斯克提了一个新想法:
“就像是Chat-GPT,但针对汽车!!!”“不再是根据规则来决定车辆的正确路径,而是使用从数百万个人类驾驶样本中学习来的神经网络确定车辆的正确路径。”
埃隆·马斯克被说服了,整个Autopilot团队迅速将这一新算法应用到了下一个FSD版本(从FSD v11到FSD v12)。
这就是特斯拉端到端学习的开端...
在这篇文章中,我们将分析特斯拉计划如何从当前架构过渡到完全端到端架构的过程。为此,我将涵盖三个关键点:
- 2021年:引入HydraNets
- 2022年:增加占用网络(Occupancy Network)
- 2023年后:转向端到端学习
这三个要点非常重要,尤其是因为你会注意到他们实际上早就为端到端做好了准备。
让我们从第一点开始:
特斯拉在2021年:引入HydraNets
起初,特斯拉的自动驾驶系统依赖于Mobileye系统的感知模块。很快,它转向了自建系统,从图像栅格化到鸟瞰视图网络,最终引入了一种名为HydraNet的多任务学习算法。
HydraNet的目标是拥有一个具有多个头部的网络。这样,我们不再需要堆叠20多个网络,而是只需要一个网络,避免了许多编码操作的重复。
图1-Tesla’s HydraNet
特斯拉的HydraNet(来源) 这个模型是特斯拉架构的关键组成部分,因为使用单一神经网络就可以执行多项任务。
然而,值得注意的是这只是整个模块化架构的一个组成部分(感知组件)的一部分,该架构由几个块组成。当时他们解释时提到了两个主要块:
- 感知,用于使用HydraNet检测物体和环境
- 规划与控制,用于规划路线和驾驶
感知与HydraNet
HydraNet的工作原理类似于我刚才展示的。我在我的专门文章中有一整篇文章关于它,甚至有一门完整的课程专门讲解多任务学习以及如何在计算机视觉中构建这些模型。
让我们快速进入下一部分:
规划与控制:特斯拉Autopilot如何规划路线
在2021年的AI Day上,特斯拉介绍了三种规划系统,并展示了它们在自主泊车示例中的应用:
- 传统的A*算法——每个机器人工程师都知道的搜索“关键”算法。这个示例展示了在找到正确路径前进行了近40万次“扩展”。
图2- video of A*
-
增强A*算法,结合导航路线——这种方法与前面相同,但不是给定“启发式”,而是提供更多信息(地图?路线?目的地?)。这导致只有22,000次扩展。
图3-video of 增强A*
- 结合神经网络的蒙特卡罗树搜索算法——这是特斯拉在2021年使用的方法。通过将神经网络与传统搜索树相结合,它可以以少于300个节点达到目标。
图4-video of 蒙特卡罗树搜索算法
最后一种方法就是他们用于规划的方法。
2021年特斯拉总结
让我们快速回顾一下2021年的情况:
图5-特斯拉2021年的架构(来源:2021年AI Day视频)
我们有两个主要块:使用HydraNet处理视觉任务,以及使用与蒙特卡罗算法结合的神经网络进行规划任务。
现在让我们看看2022年,看看感知和规划是如何发展的...
特斯拉在2022年:引入占用(Occupancy)网络
2022年,特斯拉引入了一种称为占用网络的新算法。借助占用网络,他们不仅改进了感知,还大大改进了规划。
当我首次讨论这个想法时,许多人告诉我:“所以他们不再使用HydraNets了!”
其实,他们还在使用!
2022年特斯拉所做的就是在感知模块中“增加”了一个占用块,将感知模块分为两部分:
- HydraNet,用于识别物体、标志、车道线等...
- 占用网络,用于识别三维空间中的占用情况
让我们来看看这两部分
占用网络
让我们从占用网络开始。
在我的关于占用网络的文章中,我谈到了特斯拉如何能够创建一个网络,将图像空间转换为体素(Voxels),然后为每一个体素分配一个自由/占用的值。
这增强了感知模块,帮助他们发现了更多相关特征。这对他们的堆栈来说是一个非常重要的改进,因为它允许他们增加了很好的上下文理解,特别是在三维空间中。
图6-Occupancy Network(2022)
占用网络预测“占用体积”和“占用流”——这两个重要的组成部分帮助我们理解三维空间中哪些是空闲的,哪些是被占用的。如果你想更好地理解这一点,你可以阅读文章(超链接)。
但这并不是唯一使用的部分,它是额外的一环,以更好地理解三维空间,物体和车道线也是通过HydraNet检测出来的。
HydraNet 2.0:车道与物体
HydraNet与去年相比并没有太大变化,除了它增加了一个“头部”,并不真的是一个头,实际上是一个完整的神经网络,用于执行车道线检测任务。
总体架构如下(头部以红色表示):
图7-2022年的HydraNet(来源:2022年AI Day视频)
现在,架构的一部分(绿色部分)实际上是另一个堆叠在此处用于寻找车道线的神经网络。当我们观察它时,它看起来像这样:
图8-车道检测“头部”(来源:2022年AI Day视频)
我想保持文章的高水平,所以我不会深入研究他们如何借鉴自然语言处理并使用语义等来确定车道,但你能看到左侧部分与上面的图像相同吗?它们都是HydraNet,右侧的部分只是车道线检测的额外部分。
对于感知,我们有:
- 占用网络,用于三维理解
- HydraNet,用于车道和物体的理解
现在让我们看看规划:
特斯拉新的规划系统
原来的神经网络规划很棒,但现在我们获得了三维占用信息,我们应该利用它!因此,新的规划模块集成了占用信息以及车道信息,仍然是由蒙特卡罗树搜索和神经网络组成的架构。
为了理解树的逻辑,让我们来看特斯拉在2022年AI Day上给出的例子:
图9-交叉口示例(来源:2022年AI Day视频)
在这个例子中,车辆需要:
- 避让非法穿越的人行横道行人
- 避让从右边驶来的车辆 因此,它构建了一个树状结构,将这些选择确切地生成和评估出来。
图10-2022年的蒙特卡罗树规划器
从顶部到底部:
step 1:我们从视觉测量(车道、物体和占用)开始
step2-3:然后我们生成目标候选和轨迹
step 4:我们评估第一个选择:避让行人或主动前进
step 5:我们评估第二个选择:避让右边的车辆或主动前进
我们如何评估这些选择?我们有手动规则和标准来评估这些。在生成轨迹之后,每个轨迹都有一个成本函数,它取决于四个因素:碰撞概率、舒适度水平、干预可能性和人类相似度。
图11-特斯拉轨迹评分与选择标准
因此,如果你有20条生成的轨迹,每条轨迹都有一个成本函数,最终会选择成本最低的轨迹。
再次强调,这些都是“手动”完成的。据我所知,没有机器学习模型或深度神经网络被使用,也没有训练数据——我们真正编写的是规则和算法。
让我们看一下快速总结:
特斯拉在2022年:总结
图12-2022年的特斯拉FSD
我们有两个关键组成部分:
- 感知通过占用网络和车道检测得到了增强
- 规划已被重写以使用占用网络的输出 你可以看到输入数据(8张图像)如何从感知流向规划,再到输出。
现在,让我们看看他们在2023/2024年想要做什么:
过渡到FSD v12和端到端架构
端到端深度学习意味着什么?它将对这个架构产生什么样的变化?
如果我们搜索“端到端学习定义”,这是得到的结果:
“端到端学习指的是通过将基于梯度的学习应用于整个系统,来训练可能复杂的系统。端到端学习系统是特别设计的,使得所有模块都是可微分的。”
简而言之,特斯拉需要做两件事:
- 每个块都使用深度神经网络
- 一个端到端模型,将这些神经网络组合在一起
目前,对于特斯拉来说:
- 感知使用深度学习 ✅
- 规划使用深度学习模型与传统树搜索的组合 ❌
规划部分是他们需要转变为深度学习的部分。他们需要摆脱轨迹评分、手动规则、“如果你在停车标志处,等待3秒”的代码,以及“如果你看到红灯,减速并刹车”的代码。这一切都将消失! 这就是它将看起来的样子:
图13-第一部分需要规划系统完全使用深度学习
然而,这还不够,因为我们可能拥有两个深度学习块,但仍需要端到端操作。因此,存在全深度学习,也有端到端。
在非端到端但完全深度学习的设置中:
- 你可以在数据集上独立训练 Block A 以识别物体。
- 然后你独立训练 Block B,使用来自 Block A 的输出来预测轨迹。
关键点:在训练过程中,Block A 不了解 Block B 的目标。而 Block B 也不了解 Block A 的目标。它们是两个独立的实体,独立训练,并且它们的训练损失不是联合优化的。
现在考虑一个端到端设置,包含相同的 Block A 和 Block B。
- 你有一个单一的目标函数,既考虑了识别图像中的物体(Block A 的任务)又考虑了预测轨迹(Block B 的任务)。
- 你一起训练 Block A 和 Block B 来最小化这个联合损失。
关键点:信息(以及反向传播期间的梯度)从最终输出一直流回初始输入。Block A 的学习直接受到 Block B 完成任务的好坏的影响,反之亦然。它们是为了一个单一、统一的目标而共同优化的。
图14-从完全深度学习到端到端的过渡
因此,主要的区别不在于块本身,而在于它们如何被训练和优化。在端到端系统中,这些块被共同优化以实现一个单一的总体目标。而在非端到端系统中,每个块被独立优化,而不考虑更大系统的目标。
等等:这不更像是一个黑盒了吗?我们怎么验证它并把它放到路上呢? 嘿,我只是个传递信息的人。
但是,确实看起来更像是一个黑盒,但你也可以看到我们仍然在使用占用网络、HydraNets 等等,我们只是把这些元素组装在一起。所以,它是一个黑盒,但在任何时刻,我们都可以可视化占用的输出、可视化物体检测的输出、可视化规划的输出等等……
我们还可以分别训练这些元素,然后再以端到端的方式进行微调。所以,它是一个黑盒,但并不一定比之前更黑盒。只是多了一层复杂性:整体训练。
对于验证和其他类似的事情,我不是合适的人选来询问。特斯拉并不是唯一一家做端到端的公司,还有 Comma.ai 的 OpenPilot 和 Wayve.ai。
现在 — 埃隆·马斯克提到的一个重要点是,在使用端到端方法时,我们不再“告诉”车辆在红灯或停车标志处停车,或者在变道前验证 xyz……
车辆自己“模仿”驾驶员的行为,从他们使用的 1000 万个视频中。这意味着他们已经使用了一个包含 1000 万个视频的数据集,对每个视频中的驾驶员进行了评级,并训练机器模仿“优秀驾驶员”的行为。
理论上这可能是巨大的进步,因为这意味着模型在面对未知情景时可以更好地泛化 —— 它会仅仅找到最接近的行为来采纳,而不是停滞不前。
埃隆·马斯克直播视频 你可以在下面的链接中观看他们第一次演示的直播视频。是的,在大约 20 分钟的时候有一次脱离。
现在是时候做个总结了……
总结
- 到目前为止,特斯拉使用的是模块化的自动驾驶方法,有两个主要块相互通信:感知与规划。
- 2021 年,他们引入了 HydraNet,这是一种多任务学习架构,能够在同一时间解决许多感知任务。
- 他们还宣布他们的规划器是由蒙特卡罗搜索树和神经网络组成的。
- 2022 年,他们增加了一个占用网络,有助于更好地理解三维空间。HydraNet 也增加了一个车道线检测的扩展。
- 要从当前系统过渡到端到端,他们需要(1)将规划器转变为深度学习系统,以及(2)使用联合损失函数训练这些系统。
- 该系统可能看起来像是一个更黑的盒子,但实际上它是现有块的组合 —— 他们不会抛弃之前建立的一切,仅仅是将它们粘合在一起。