打造全自动驾驶汽车所需要的技术堆栈是什么?企业和研究人员对这个问题的答案有着不同的理解。自动驾驶的实现方法多种多样,从纯摄像头加计算机视觉、再到计算机视觉加先进传感器等各类组合。
特斯拉一直是自动驾驶纯视觉方法的拥护者。在今年的计算机视觉与模式识别大会(CVPR)上,公司首席AI科学家Andrej Karpathy解释了个中原因。
在CVPR 2021自动驾驶研讨会上,过去几年负责特斯拉自动驾驶工作的Karpathy详尽介绍了公司如何开发出仅需视频输入、即可理解汽车周边环境的深度学习系统。此外,他还解释了特斯拉为何在同样使用视觉技术的自动驾驶汽车的一众厂商中处于领先地位。
上周末,我们在CVPR上就近期特斯拉Autopilot项目的工作做出演讲,介绍如何通过视觉神经网络提供高准确度的深度、速度与加速度识别功能。这项工作的实现前提包括:可处理上百万车辆的数据引擎、强大的AI团队以及超级计算机。
— Andrej Karpathy (@karpathy) 2021年6月21日
通用计算机视觉系统
深度神经网络是自动驾驶技术堆栈的主要组成部分之一。这套神经网络负责分析车载摄像头捕捉到的道路、标识、汽车、障碍物以及行人等对象。
但深度学习模型在检测图像中的对象时也往往会出错。也正因为如此,大多数自动驾驶汽车厂商(包括Alphabet旗下Waymo)倾向于使用激光雷达,这是一种通过向各个方向发射激光束来创建汽车周边3D地图的设备。激光雷达的存在,能够提供大量用于填补神经网络空白的附加信息。
然而,将激光雷达添加至自动驾驶堆栈会进一步提升整个体系的复杂性。Karpathy解释道,“首先需要用激光雷达预先绘制环境地图,之后再创建一张高清地图,添加所有车道、道路间连接方式以及交通指示灯。这样在测试期间,只需定位到对应地图即可引导车辆四处行驶。”
但要为自动驾驶汽车创建各个区域的高精度地图无疑相当困难。Karpathy表示,“这些高清激光雷达地图的收购、构建与维护工作成本极高,难以规模化扩展。这意味着我们很难让整体基础设施持续保持最新状态。”
特斯拉的选择,是不在自动驾驶堆栈当中使用激光雷达与高清地图。Karpathy指出,“利用环绕车体的八个摄像头及拍摄的视频,周边一切都将在车内得到体现。”
自动驾驶技术必须弄清楚车道在哪里、交通灯在哪里、当前显示为什么状态、哪些会影响车辆自身。另外,这套技术方案还得有能力在不存在任何预定义道路导航信息的前提下完成定位工作。
Karpathy坦言,基于纯视觉元素实现自动驾驶的技术难度确实更高,因为只有神经网络才能单纯基于视频输入的情况下运行良好。但他也提到,“只要能让这套系统运作起来,它就会成为一种通用式的视觉系统,足以部署在地球上的任何区域。”
凭借通用视觉系统,你的汽车不再需要任何辅助设备。Karpathy表示,特斯拉已经在朝着这个方向前进。此前,该公司一直使用雷达加摄像头的组合引导车辆完成自动驾驶。但近期,特斯拉开始销售不安装任何雷达的车辆。
Karpathy提到,“我们移除了雷达装置,后续车辆只依靠视觉识别引导驾驶。”他还补充道,特斯拉的深度学习系统的自动驾驶效果已经达到雷达的上百倍,到这个阶段雷达本身已经成为一种拖累并“产生噪声”。
监督学习
而反对纯计算机视觉方法的主要论点,在于没有激光雷达纵深图的帮助,神经网络往往很难准确实现测距与纵深估算。
Karpathy指出,“很明显,人类驾驶依靠的就是视觉,所以我们的神经网络能够处理视觉输入,借此理解我们周遭物体的纵深与速度。但最大的问题在于合成神经网络能否达成相同的效果。在我看来,过去几个月来我们一直在努力解决这个问题。现在,我们能够就此给出明确而肯定的答案。”
特斯拉的工程师们希望创建一套深度学习系统,由其实现物体、纵深、速度与加速度检测。他们决定把这项挑战视为监督学习问题,其中神经网络在通过带有注释的数据进行训练之后,即可学会检测对象及其相关属性。
为了训练自己的深度学习架构,特斯拉团队需要一套包含数百万段视频的海量数据集,并保证其中包含关于对象及属性的相关注释。事实上,为自动驾驶汽车创建数据集确实特别棘手,工程师们必须保证其中涵盖种种罕见的道路规划与极端状况。
Karpathy表示,“要在实践层面获得成功保障,我们需要一套庞大、清洁、多样化的数据集,这样才能训练出可靠的大型神经网络。”
自动标记数据集
特斯拉在全球售出数百万辆配备有摄像头的汽车,因此在收集用于汽车视觉深度学习模型训练的数据方面处于优势地位。特斯拉自动驾驶团队已经积累下1.5 PB数据,其中包括100万段10秒视频、60亿个边界框、纵深以及速度标记对象。
但对这样规模的数据集进行标记是个巨大的挑战。其中一种方法,是通过数据标记公司或者Amazon Turk等在线平台对数据内容进行手动注释。但这需要大量手动工作、成本相当可观,而且整个过程极为缓慢。
相反,特斯拉团队决定使用一种自动标记技术,将神经网络、雷达数据与人工审查结合起来。由于数据集采用离线注释机制,神经网络可以往来播放视频、将自己的预测结论与真实情况做出比较,并据此调整模型参数。这与测试时间推理就形成了鲜明对比——在测试时间推理中,一切都将实时发生,导致深度学习模型根本无法追索。
离线标记还能帮助工程师们建立并应用起强大且计算高度密集的对象检测网络。由于规模太过庞大,这些网络无法部署在汽车之上以供实时、低延迟应用。通过离线方式,他们使用雷达传感器数据进一步验证神经网络推理,而这一切都能显著提升标记网络的精度。
Karpathy提到,“在离线状态下,我们可以做做「事后诸葛亮」,更冷静地将来自不同传感器的数据融合起来。此外,我们还可以让人类参与进来,由他们负责清理、验证与编辑等工作。”
根据Karpathy在CVPR上大会上展示的视频,物体检测网络已经能够较为稳定地识别出碎屑、灰尘与雪云。
特斯拉的神经网络能够在不同能见度条件下实现良好的物体检测一致性。
Karpathy并没有介绍自动标记系统的最终修正工作到底需要投入多少人力。但人类在引导自动标记系统朝着正确方向发展上,确实发挥着至关重要的作用。
在数据集的开发过程中,特斯拉团队发现了200多个触发器,表明对象检测还需要调整。其中还包括不同摄像机的检测结果之间或者摄像机与雷达之间存在不一致等问题。另外,他们还确定了可能需要特别注意的场景,例如隧道入口/出口以及顶部捆绑有其他物体的汽车等等。
开发和理解这些触发器花掉了团队四个月的时间。随着标记网络的质量不断提升,他们着手以“影子模式”进行部署,即把系统安装在消费者的汽车中并静默运行,全程不向汽车发出任何指令。之后,他们会将网络的输出结果与传统网络、雷达及驾驶员行为输出进行比较。
特斯拉团队经历了七轮数据工程迭代。他们首先从训练神经网络的初始数据集开始,之后在实际车辆上以影子模式部署深度学习模型,再使用触发器检测其中的不一致、错误与极端场景。之后,工作人员及时修改、纠正错误,并在必要时向数据集内添加新数据。
Karpathy指出,“我们一遍又一遍地推进这个循环,直到网络质量达到令人满意的程度。”
如此一来,这套架构慢慢发展成具有良好分工的半自动标记系统,其中神经网络负责执行重复性工作、而人类操作员则负责处理高级认知问题与极端状况。
有趣的是,当一位与会者询问Karpathy能否自动生成触发器时,他提到“自动化触发器是一类非常棘手的场景,因为既有的通用触发器往往无法正确表现错误模式。例如,他们就很难设计出能够自动触发进入及退出隧道的触发器。这类挑战在人类驾驶者身上往往需要依靠「直觉」来解决……而目前我们还不清楚直觉的实现原理。”
分层深度学习架构
特斯拉的自动驾驶团队需要一套非常高效且设计精良的神经网络,用于充分利用自己收集到的高质量数据集。
该公司创建了一套分层深度学习架构,由不同的神经网络组成,这些神经网络负责处理信息并将输出结果交付至下一组网络。
深度学习模型使用卷积神经网络从安装在汽车车体的八个摄像头处获取视频并提取特征,并使用transformer网络将内容融合在一起。之后,这些内容将跨时间持续整合,借此实现轨迹预测及平滑推理中的不一致问题。
之后,团队将空间与时间特征输入至神经网络的分支结构当中,Karpathy形象地将其描述为头部、躯干与尾端。
Karpathy提到,“之所以采取这种分支结构,理由是我们需要关注大量需要跟进的输出结果,而且不可能为每项输出都配备一套独立的神经网络。”
分层结构能够在不同的任务之间重用组件,并在不同的推理路径之间实现特征共享。
网络模块化架构的另一个优势,在于实现分布式开发的可能性。特斯拉公司目前雇佣了一支庞大的机器学习工程师团队,致力于研究自动驾驶神经网络。他们每个人负责网络中的一个具体组件,并将得出的结果插入到规模更大的网络当中。
Karpathy表示,“我们拥有一支约20人的团队,他们正在全职训练神经网络。他们都在同一神经网络上开展合作。”
垂直整合
在CVPR的演讲中,Karpathy分享了特斯拉用于深度学习模型训练及调优的超级计算机设备的相关细节。
这套计算集群由80个节点组成,每个节点中包含8个具有80 GB显存的英伟达A100 GPU,总计包含5760个GPU与超过450 TB显存。这台超级计算机还拥有10 PB的NVMe超高速存储与640 tbps的网络容量,可用于连接所有节点、并允许对神经网络进行高效分布式训练。
特斯拉还拥有并制造安装在车内的专用AI芯片。Karpathy解释道,“这些芯片是专门为我们实现全自动驾驶所需要的神经网络所设计。”
特斯拉的一大优势,就在于垂直整合。特斯拉拥有完整的自动驾驶汽车堆栈,而且能够制造汽车以及用于自动驾驶功能的硬件。此外,特斯拉还具有独特的优势地位,能够从已经售出的数百万辆汽车中收集各类遥测与视频数据。他们还拥有专有数据集、特殊的内部计算集群并创建/训练神经网络,同时配合影子测试进行网络验证与调优。最后,特斯拉拥有一支由机器学习工程师、研究人员以及硬件设计师组成的才华横溢的开发团队,负责将所有这些元素整合在一起。
Karpathy提到,“我们可以在这套堆栈的各个层级之间实现协同设计与工程研发,没有任何来自第三方的阻力。每位成员完全掌控自己的方向,这样的高效配合简直令人叹为观止。”
正是这种创建数据、调节机器学习模型,并将其部署在大量车辆上的垂直融合与重复循环过程,让特斯拉在纯视觉自动驾驶汽车领域获得了独特的优势。在演讲当中,Karpathy展示了多个案例,单凭新的神经网络也超越了传统机器学习模型加雷达信息的组合。
如果系统继续发展,Karpathy认为特斯拉有望完全走上淘汰激光雷达的道路。而且在我看来,没有其他哪家公司能够复制特斯拉的路线。
余留的开放问题
但目前的问题是,深度学习在现有状况下恐怕还不足以克服自动驾驶领域的一切挑战。物体、速度与范围检测在自动驾驶当中当然非常重要,但人类视觉还能够执行多种其他复杂功能,科学家们将其称为视觉中的“暗物质”。而这一切,都是对不同环境下各类视觉输入与导航决策进行有意识/潜意识分析的重要前提。
深度学习模型也很难做出因果推理;当模型遭遇以往从未见过的新情况时,很可能无法给出正确的结论。因此,虽然特斯拉已经努力创建起一套极为庞大且多样化的数据集,但面对极端复杂的开放道路环境,新的、无法预测的状况随时都可能发生。
AI社区仍在讨论是否有必要将因果关系及推理能力明确整合至深度神经网络当中,或者说可以通过“直接拟合”克服因果关系问题中的分歧。在后一种情况下,通用深度学习必须依赖于规模巨大且分布良好的数据集。特斯拉的视觉自动驾驶团队似乎更支持后者(以全面控制堆栈为前提,他们未来可以不断尝试新的神经网络架构)。我们也期待观察这项技术能否在全球的关注之下,真正经受住时间的考验。
好文章,需要你的鼓励