来源:ADS智库 | 首图图源:网络 | 文编:ADS智库
上一篇(端到端自动驾驶的秘密(一)导读篇)我们做了一个端到端学习内容的规划,本篇正式介绍端到端,包含:端到端概念、端到端发展历程、端到端原理、端到端特点、端到端与传统架构的对比分析以及端到端面临的挑战。作为一个初学者,文章难免出错,如有问题欢迎各位大佬们在文末留言“大刀砍改”,希望可以给相关从业人员一个参考。如果喜欢本系列,欢迎持续关注~后续计划梳理内容可以查看文章:端到端自动驾驶的秘密(一)导读篇
端到端自动驾驶是指使用一种集成化的技术,一种直接从传感器输入数据到车辆控制输出的自动化驾驶系统,它旨在通过单一的深度学习模型处理所有的感知、预测和规划任务,从而实现从原始传感器数据到车辆控制指令的端到端处理。当前已量产自动驾驶解决方案主要仍以模块化架构为主,主要将自动驾驶任务拆解成多个模块交给专门的模块处理。完整的模块化架构包括感知、定位、决策、路径规划和控制等模块。而端到端架构减少中间环节,将自动驾驶多个模块整合成一个模块,进入数据驱动阶段。与传统的软硬件分离的设计方式不同,端到端架构更注重系统连接的紧密度,即结构的完整性。
端到端自动驾驶的概念最早在 2016 年被提出,并迅速成为自动驾驶领域的研究热点。第一家提出端到端自动驾驶技术的不是特斯拉,而是英伟达,早在 2016 年英伟达就发表了研究论文,不过这项技术始终停留在实验阶段,最后还是由特斯拉在 2024 年开始正式向用户推送。 早期的端到端自动驾驶系统主要基于深度学习模型:深度卷积神经网络(CNN),用于直接从图像数据中学习驾驶策略。随着时间的推移,研究人员开始探索不同的深度强化学习算法,如 DQN(Deep Q-Network)、DDPG(Deep Deterministic Policy Gradient)等,以提高自动驾驶系统的决策能力和适应复杂环境的能力。
//深度卷积神经网络(CNN):一种深度学习模型,由一系列的卷积层、池化层、全连接层以及归一化层构成。卷积层主要用于提取特征,线性整流层用于调整输入信号,池化层则用于减少特征维数,全连接层用于做分类。CNN的主要运算过程包括数据规则化、卷积运算、补零、卷积核和全连接层等。CNN 的应用非常广泛,包括图像分类、检索、目标定位检测、目标分割、人脸识别和骨骼识别等领域。2012 年,由 AlexKrizhevsky 赢得了 ImageNet 大赛后,许多公司开始将其作为核心技术发展。LeNet-5 和 AlexNet 是两个具有重要影响力的卷积神经网络,分别用于手写数字识别和图像分类应用。前者包含 7 层,其中第二层具有特殊的池化层行为,而后者则深度更深。
// Deep Q-Network(DQN):是一种深度学习的强化学习算法。它将强化学习和深度学习的优势结合起来,从而提供了更有效的解决方案。它的基本原理是使用深度神经网络来近似 Q 值函数,学习最优的动作策略。在解决具有离散动作空间的马尔可夫决策过程(MDP)问题时,它表现出色。//深度确定性策略梯度算法(Deep Deterministic Policy Gradient,DDPG)是一种深度强化学习算法,它利用深度神经网络和经验回放机制,解决连续动作空间控制任务。DDPG 的核心思想是在连续动作空间中使用深度神经网络学习到高质量的策略,同时引入了双重神经网络架构以达到更好的性能。DDPG 的优点是优化策略效率更高、求解速度更快,但不适用于随机环境的场景。
自动驾驶功能架构演进:分布式 ADAS 架构→域控式 ADAS 架构→跨域式 ADAS 架构→跨域冗余式 ADS 架构→中央式架构。Tips:上述的“分布式架构”、“域控式架构”等都是整车功能层级的架构,体现了功能实现所需要的完整的电器要素和逻辑关系(传感器-控制器-执行器),主要工作输出物是功能定义规范以及故障后处理策略,这里的架构虽然是一个个硬件实体,但不能体现出物理布置关系,也有公司把它称为逻辑架构。自动驾驶架构演进:感知“端到端”→决策规划模型化→模块化端到端→One Model/ 单一模型端到端。
图1 自动驾驶架构演进示意图
图2 自动驾驶架构演进梳理
目前,国内多家头部汽车主机厂和智能驾驶技术公司已纷纷投入研发端到端系统,并在近期陆续披露上车量产规划。预计将于 2025 年开始上车,端到端自动驾驶有望实现更加智能、安全和高效的驾驶体验。端到端自动驾驶系统的工作原理是通过各种传感器(如激光雷达、摄像头、雷达等)感知周围的环境,从而获得汽车自身及周围环境的信息,这些信息将通过计算机视觉算法进行处理和分析,包括定位、障碍物检测、车道检测等。然后,这些信息将被传输到自动驾驶系统的决策模块,该模块将根据这些信息进行决策,包括路径规划、速度控制、转向控制等。决策模块将生成相应的控制信号,并将其发送到自动驾驶系统的执行模块,该模块将根据控制信号进行相应的操作,如加速、减速、转向等。
在这个过程中,自动驾驶系统还需要与其他车辆、道路设施、交通信号灯等进行交互,以确保安全行驶。此外,自动驾驶系统还需要通过深度学习算法进行训练,以提高其决策和控制的准确性和可靠性。简单来说,端到端自动驾驶系统通过传感器感知环境处理分析后传输给决策模块,决策模块进行决策并生成控制信号传递给执行模块,执行模块根据信号进行相应的操作。端到端自动驾驶,一定是基于 3D 感知的,激光雷达天然是 3D 位置的数据,而摄像头的数据需要通过坐标系投影的方式,转到 3D 空间中,这也是最近一两年受人关注的 Camera BEV 讨论的问题。一个能给出足够精准结果的端到端自动驾驶神经网络,一定是具备以下几个特点:
信息整合:端到端系统能够整合来自不同传感器(如摄像头、雷达、激光雷达等)的信息,避免了传统系统中因信息分割而导致的决策不准确或延迟。直接映射:该系统可以直接从感知数据映射到控制动作,省略了复杂的预处理和特征工程。自适应性:通过学习大量的驾驶场景,端到端自动驾驶能够自适应不同的道路条件和交通情况。实时决策:由于其决策过程是基于实时数据的,因此能够快速响应突发状况。端到端自动驾驶的主要优势在于它的简洁性和高效性。端到端的本质是感知信息的无损传递,这意味着在从感知输入到控制输出的过程中,所有的有用信息都被保留下来,没有任何信息的丢失。这与传统的自动驾驶系统设计方法形成对比,后者通常会将感知信息分解成不同的部分,然后在不同的模块中处理,比如先进行物体检测,然后进行路径规划,最后执行控制。此外,端到端系统还可以通过大量的数据进行闭环迭代,不断优化其驾驶策略。简单来说,相同的输入条件和输出内容,传统自动驾驶包含多个任务,而端到端只有一个任务。二者之间的一些差异简单介绍如下:
| | |
驱动类型 | 规则驱动(Rule-based) 编写代码制定规则 | 数据驱动(Date-driven) 用海量数据去训练系统 |
任务方式 | 多任务学习 | 单任务学习 |
模型 | 分为多个模块,每个模块采用独立模型 | 采用端到端一体化大模型 |
代码量 | 代码量更大 | 代码量相对较少。与传统架构相比可以减少 30 多万行代码(马斯克曾说) |
泛化性 | 较差 | 良好 |
| 模块化的设计方法无法让各个模块充分发挥自身的长处,反而可能会限制整体性能提升。 | 端到端架构可以让各个模块充分发挥自身的特点和优势,从而提高车辆的整体性能。 |
| 传统的模块化架构缺乏全面的感知、预测、决策的信息交换和协调机制,使得车辆在行驶过程中可能面临困境或者决策的困难。 | 端到端架构可以将感知、预测、决策等功能进行一体化处理,从而实现更高效的信息交换和协调,提高车辆的行驶效率和安全性。 |
| 不同模块之间的数据不一致或者误差累积的情况,从而产生误差和不确定性。 | 通过一体化的处理方式消除不同模块之间的误差,从而减少误差累积,提高车辆的行驶性能和安全性。 |
在传统的模块化系统中,信息在不同模块间传递时可能会有损失,因为每个模块只关注特定类型的信息,忽视了其他信息。例如,物体检测模块可能只关心物体的位置和类型,而路径规划模块则需要更多关于环境和车辆意图的信息。这种分割可能导致信息的不完整,从而影响系统的性能。相比之下,端到端系统试图直接从感知输入(如摄像头和雷达信号)传递到控制输出(如转向和油门指令),而不通过显式的信息抽取和决策步骤。这样做可以保留所有感知信息,使得系统能够利用所有可用数据进行决策,从而可能获得更高的效率和性能。
端到端模型通过学习大量的数据,能够捕捉到复杂的模式和关系,这在传统的基于规则或模块化的方法中是难以实现的。这种方法有望处理更加复杂的场景,并且能够更好地应对异常情况和不确定性。
端到端系统往往被视为“黑盒”,因为它们通过大量的数据学习得到行为模式,而不是通过明确的规则和逻辑。因此,评价端到端系统时,很难理解模型做出特定决策的具体原因。
在自动驾驶端到端架构中,各个系统和设备之间需要实时交互和协同工作,因此系统的实时性和可靠性就显得尤为重要。如果系统出现故障或异常情况,可能会影响整个系统的稳定性和可用性,因此需要建立完善的监控和维护机制以确保自动驾驶系统的稳定性和可靠性。
自动驾驶端到端架构需要采集和处理大量数据,企业需要对部分数据进行脱敏及加密保护,以确保数据的安全性和隐私性。同时,企业也需要建立完善的数据管理和安全保障体系,以应对数据泄露和数据篡改等风险。
端到端架构需要使用一些高级的技术和工具,如大数据、人工智能、物联网等,因此企业需要具备较高的技术实力和资金实力。此外,系统的维护和升级也需要投入较多的人力和物力资源,因此企业需要进行充分的成本估算和风险评估。
端到端模型需要大量的高质量数据来进行训练,以捕捉到真实的驾驶逻辑。马斯克抓住团队发现的一个关键事实:神经网络在接受了至少 100 万个视频片段的训练之后才能正常工作。系统想要达到一定准确度以保障行车安全,又需要多少数据来训练呢呢?这种体量的数据并不是很多公司可以支撑的,那么如何通过有限的数据来覆盖所有可能出现的场景是一个挑战。
端到端架构涉及到多个系统和设备之间的集成和协同工作,可能会因为各个系统之间的标准不统一或技术不兼容而导致集成困难,甚至出现集成失败的情况。
端到端模型通常规模较大,训练和推理过程需要较高的计算资源,如何将模型部署到实际的硬件平台上,并且确保其在各种复杂的现实环境中都能稳定工作,是一个挑战。
端到端系统评价的困难源于其内在的复杂性、数据的多样性以及真实环境下的性能评估挑战。与传统模块化自动驾驶系统不同,端到端模型需要一个完整的闭环测试环境,这不仅需要大量的测试数据,还需要复杂的测试平台和评估体系。
那么,初创公司在数据有限的情况下如何应对端到端实施的挑战?这里搜集到一些建议,仅供参考~
数据增强:通过各种数据增强技术来扩充有限的数据集,例如:变化图像颜色,以增加数据多样性。
合成数据:使用仿真软件生成合成数据,例如使用 3D 建模软件创建虚拟环境,并模拟传感器数据。虽然合成数据与真实数据之间存在差距,但它们可以提供大量的训练样本,并有助于覆盖多种驾驶场景。
车队学习:如果可能的话,与其他公司合作共享数据,或者建立一个小规模的测试车队来收集数据。随着车辆在真实世界中的行驶,数据会不断累积,从而提高模型的性能。
重点标注:针对模型表现不佳的区域进行特定标注,集中精力在那些对模型性能至关重要的数据上。
轻量化模型:设计和选择更小的网络结构,减少对数据量的需求和计算资源的消耗,通过迁移学习和微调来优化模型。
有效的评估:在有限的数据上,建立有效的评估体系来监测模型的性能,及时发现问题并进行调整。
逐步迭代:不要期望一开始就得到完美的端到端系统。初创公司可以先从小规模的实验开始,逐步扩大数据集,根据实验结果不断调整和优化模型。
- 创新算法:探索新的算法和技术,例如自监督学习、半监督学习或强化学习,这些方法可能对数据量的要求较低,能更有效地利用有限的数据。
通过上述这些策略,给初创公司一个参考,在数据有限的情况下逐步建立起自己的端到端系统,并随着公司的发展不断优化和完善。本篇内容就到这里,下篇我们开始介绍现有芯片如何高效部署端到端模型、芯片架构需要哪些创新以及可支持/潜在支持端到端架构的芯片企业盘点~
Tips:本文章参考及引用内容均来自公开网络,将在最后的完整版文章内附上公号👇发消息“我来了”,可直接领取“10G+自动驾驶相关资料”
<- 联 系 & 声 明 ->
【声明】除文内特殊声明外,本公众号内所有文章编写或转载的目的仅用于学习和交流,不予以商用,不代表本号观点及立场。本公众号内资讯及正文引用图片均由个人公众号 ADS 智库六耳基于官网或公开信息梳理或引用。本公众号所引用及转载内容版权均归原作者所有,凡是注明来源 “ XXX ADS 智库 ” 或作者为 “ XXX 六耳、XXX ADS 智库 ” 的文章转载或引用时请注明来源 ADS 智库。若有版权或其他任何问题请联系六耳( 微信号:adas_miao ),本号将及时处理。