
如何做量产BEV?小鹏XPILOT总监Patrick Liu在CVPR 2023演讲节录
BEV感知可以看作是一个端到端的感知系统,是迈向端到端自动驾驶系统的重要一步。
作者 | Patrick
编辑 | 朱世耘
相比特斯拉的AI DAY,国内自动驾驶玩家们的各类“Day”信息量相比总是太少。好在在国际一线学术会议上开始有了中国企业的身影,也让我们有机会进一步了解中国自动驾驶企业的底层技术理念、内核逻辑。
北京时间6月19日,在计算机视觉顶级会议CVPR 2023的端到端自动驾驶研讨会上,小鹏汽车自动驾驶中心感知首席工程师Patrick Liu发表了题为“中国量产自动驾驶的实践”的主题演讲。
就小鹏汽车选择做端到端感知系统的底层技术理念,以及小鹏BEV架构工作原理、XNet的工作、标注、训练、部署方面更为具体的信息进行了沟通。
以下为《赛博汽车》依照Patrick Liu的博文整理改变而成。
由于无处不在的动态物体、复杂的道路拓扑,以及交通信号灯的极端长尾角情况(例如多类型交通灯导致‘驾驶者’)需要将多个交通信号灯一起推理,还需要与附近的倒计时计时器或交通标志一起推理,所以在中国驾驶具有挑战性。
尽管面临这些挑战,截至2023年,我们已成功在中国提供一流的自动驾驶解决方案:开发、部署了小鹏的BEV感知架构XNet,直接感知自动驾驶车辆周围的环境,(以应对挑战)。
BEV感知可以看作是一个端到端的感知系统,是迈向端到端自动驾驶系统的重要一步。在这里,我们将端到端自动驾驶系统定义为完全可微分的管道,它将原始传感器数据作为输入,并生成高级驾驶计划或低级控制动作作为输出。
端到端系统的必要性
在解决任何工程问题时,通常需要使用分而治之的方法来快速找到实际的解决方案。该策略涉及将大问题分解为更小的、定义相对明确的、可以独立解决的组件。虽然这种方法有助于快速交付完整的产品,但也增加了陷入局部最优的风险。
为了达到全局最优解决方案,所有组件必须以端到端的方式一起优化。
Δ 分而治之与端到端的性能增长曲线
80-20规则强化了这样一个概念:只需总努力的20%即可实现80%的预期绩效。
使用分而治之方法的优点是它允许开发人员以最少的努力快速工作。然而,缺点是这种方法通常会导致性能上限为80%。
为了克服性能限制并摆脱局部最优,开发人员必须将某些组件一起优化,这是开发端到端解决方案的第一步。这个过程必须重复多次,不断突破性能天花板,直到实现完全的端到端解决方案。
所得曲线可以采用一系列S形曲线的形式,直到近似全局最优解。
感知2.0:端到端感知
在传统的自动驾驶堆栈中,2D图像被输入感知模块以生成2D结果。然后利用传感器融合对多个摄像机的2D结果进行推理,并将其提升为3D。
生成的3D对象随后被发送到下游组件,例如预测和规划。
Δ BEV感知本质上是端到端感知
然而,传感器融合步骤需要大量手写规则来融合多个摄像机流的感知结果。每个相机仅感知要观察的物体的一部分,因此结合获得的信息需要仔细调整融合逻辑。我们本质上是通过工程师的头脑进行反向传播。此外,制定和维护这些规则会带来一系列复杂性,导致复杂的城市环境中出现许多问题。
为了克服这一挑战,我们可以应用鸟瞰图 (BEV) 感知模型,它使我们能够直接在 BEV 空间中感知环境。BEV 感知堆栈将两个独立的组件组合成一个解决方案,从而消除了脆弱的人为逻辑。BEV感知本质上是一种端到端的感知解决方案。这标志着迈向端到端自动驾驶系统的关键一步。
XNet:小鹏汽车的 BEV 感知堆栈
Xpeng 的 BEV 感知架构代号为 XNet。
下面的可视化描述了正在运行的车端XNet 感知架构。中间的红色车辆代表自动驾驶车辆在环形交叉路口行驶。周边静态环境完全靠车端感知,不使用高精地图。我们可以观察到 XNet 准确地检测了车辆周围的各种动态和静态物体。
小鹏AI 团队在两年多前(2021年初)开始试验 XNet 架构,此后经历了多次迭代才达到目前的形式。我们利用卷积神经网络(CNN)主干来生成图像特征,同时通过交叉注意模块(变压器)将多摄像头特征转置到BEV空间中。
然后,过去几帧的BEV特征与自我姿势(在空间和时间上)融合,以从融合特征中解码动态和静态元素。
Δ XNet结果和架构
以视觉为中心的BEV感知架构提高了大规模部署自动驾驶解决方案的成本效益,减少了对更昂贵的硬件组件的需求。准确的3D检测和速度展现了冗余的新维度,并减少了对LiDAR和雷达的依赖。此外,实时3D感性环境感知减少了对高清地图的依赖。这两种功能都有助于打造更可靠、更具成本效益的自动驾驶解决方案。
将这样的神经网络部署到生产车辆上会带来一些挑战。
首先,训练 XNet 需要数百万个多摄像头视频剪辑。这些剪辑涉及大约10亿个需要注释的对象。按照目前的标注效率,标注大约需要2000人年。从模型训练的角度来看,使用一台机器训练这样的网络需要将近一年的时间。此外,在 NVIDIA Orin 平台上部署这样一个没有任何优化的网络将占用一个芯片 122% 的计算能力。
所有这些问题都提出了我们必须解决的挑战,才能成功训练和部署如此复杂的大型模型。
自动标注
为了提高标注效率,我们开发了一个高效的自动标注系统。这种离线传感器融合堆栈将效率提高了高达4.5万倍,使我们能够在短短17天内完成需要200个人年才能完成的注释任务。
Δ Autolabel 系统显着提高标注效率
以上是基于激光雷达的自动标签系统,我们还开发了一个完全依赖视觉传感器的系统。这使我们能够注释从没有激光雷达的客户车队获得的剪辑。这是数据闭环的关键一环,促进了自我进化的感知系统的发展。
大规模培训
我们从两个角度优化了 XNet 的训练流程。
首先,我们应用混合精度训练和算子优化技术,简化了单节点的训练过程,将训练时间缩短了10倍。
然后,我们与阿里云合作,构建了一个算力为600 PFLOPS的GPU集群,使我们能够将训练从一台机器扩展到多台机器。这进一步减少了训练时间,尽管这个过程并不简单,因为我们需要仔细调整训练过程以实现近线性的性能扩展。
Δ XNet大规模并行训练流水线优化
总体而言,我们将XNet的训练时间从276天减少到仅仅11小时。请注意,当我们在训练过程中添加更多数据时,训练时间自然会增加,所以需要额外的优化。
Orin上的高效部署
我们注意到,如果没有任何优化,在 Nvidia Orin 芯片上运行 XNet 将需要该芯片 122% 的计算能力。在分析开始时显示的分析图时,我们观察到变压器模块消耗了大部分运行时间。
这是可以理解的,因为变压器模块在 Orin 芯片的初始设计阶段并未受到太多关注。因此,我们需要重新设计Transformer模块和注意力机制以支持Orin平台,从而实现3倍的加速。
Δ 基于Transformer的XNet在Orin平台上的极致优化
为了进一步优化,我们通过修剪进一步优化了网络,从而使速度提高了2.6倍。最后,在GPU和DLA之间采用工作负载平衡,我们进一步实现了1.7倍的加速。
通过这些不同的优化技术,我们将XNet 的GPU利用率从122%降低到仅9%。这使我们能够在Orin平台上探索架构的新可能性。
自我进化的数据引擎
随着XNet架构的实施,我们现在可以启动数据驱动的迭代来提升模型的性能。
为实现这一目标,我们首先识别汽车上的极端情况,然后向客户车队部署可配置触发器以收集相关图像。
随后,我们根据自然语言的简短描述或图像本身,从收集到的数据中检索图像。为此,我们利用大型语言模型的最新进展来提高数据集管理和注释的效率。
Δ 数据引擎帮助提升XNet性能
借助XNet架构和数据引擎,我们创建了一个可扩展且自我进化的感知系统。
最新发布的小鹏公路NGP2.0统一了公路和城市技术堆栈,让用户在不同的城市落脚点,从头到尾都有流畅的体验。XNet 使这种统一成为可能,它为跨所有场景的统一堆栈提供了坚实的基础。最终目标是通过端到端的自动驾驶实现点对点的用户体验。
文章转载自公众号:赛博汽车
