城市NOA,自动驾驶进化之路上的关键节点,也被视为智能汽车下半场的开端。
自2023年上海车展以来,有关城市NOA的路线之争逐渐明晰,“重感知+轻地图”、借助纯感知和融合感知路线、以及BEV+Transformer模型的智能驾驶解决方案,成为业界共识。
如今,城市NOA迈向商业化落地竞争,如何利用高效的算力支撑、完善的算法模型、大量有效的数据形成闭环,是大规模量产的关键。
数据成为高阶智驾“稀缺品”
在智能驾驶领域里,数据就是生命之源。没有数据,那些复杂的算法和模型就如同干涸的河流,无法滋养出智能的果实。
端到端时代让数据的重要性空前提升。在传统基于规则的算法时代,工程师将如何执行驾驶行为凝练成为规则写入自动驾驶算法,当模型出现问题时,修改或添加新的规则即可完成对问题的修复。
而对端到端自动驾驶算法而言,模型只会通过驾驶的视频片段学习驾驶行为和对环境的理解,因此如何将人类想要让模型学习到的内容赋予到数据中,并让模型在训练中能够学习这些先验知识难度较高。因为每个人类驾驶的视频片段其实都包含丰富的驾驶行为,让模型理解到这些视频片段中的某一种抽象化的先验知识(如左转让直行)并不容易。
端到端技术的核心在于通过大量数据训练模型,使其能够识别和预测各种驾驶场景。高质量数据的输入,直接决定了模型输出的准确性和可靠性。这些数据不仅需要涵盖各种道路条件、天气变化和交通情况,还要确保其标注的准确性和多样性。
传统模块化算法需要改变控制策略时,可以找到代码中具体的几行参数修改,之后测试1%的案例即可,而端到端的算法中,小的改动需要重新对自动驾驶算法进行训练,难度可想而知。因此,海量的、多样化的、优质的数据不可或缺,同时自动化、高水平的数据处理体系亦至关重要。毫不夸张地说,数据会占据端到端自动驾驶开发中80%以上的研发成本。
从数据维度看,海量且优质的数据正成为自动驾驶行业的“稀缺品”。通常,激光雷达的算法要满足自动驾驶的性能要求,需要至少几十万帧的数据训练。单目摄像头要求更高,需要百万帧的训练数据。不过这两者和BEV方案比起来,差距仍然十分巨大。
自动驾驶采用的BEV感知方案,需要达到1亿帧以上的训练数据才能满足车规要求,否则泛化性、准确率和召回率就难以保障。
对于端到端算法而言,数据的需求激增,并且伴随模型体量的增加而扩大;对质量的要求也显著提高,多样性和丰富度不可或缺。
以特斯拉为例,马斯克曾表示,特斯拉FSD测试里程需要达到60亿英里,才能满足全球监管机构的要求,这也是自动驾驶系统实现质变的一个重要节点。
据《马斯克传》中描述,神经网络至少得进过100万个视频片段的训练才能达到良好的工作状态,而特斯拉到2023年初已经分析了从特斯拉客户车辆上收集的1000万帧视频画面,这其中,特斯拉还会挑选出人类优质司机所采取的行为来给模型进行训练。
2024年5月,在解决了算力瓶颈之后,马斯克表示更大的难点在于对长尾数据的收集。目前,特斯拉通过不断扩大FSD功能覆盖更大规模的用户数量。2024年第一季度,特斯拉FSD真实路况总里程已达12.5亿英里(约20亿公里),这一数字远超其他公司总和。特斯拉方面预计,按照目前的速度,FSD累计行驶里程有望在一年之内达到60亿英里总量。
由此可以看出,要想达到特斯拉的自动驾驶水准,海量、多样化、高质量的数据是首要前提。
“数据闭环”关键点
如何获取大规模数据,获取之后如何有效回传、标注以及训练,并最终OTA反馈到车端,是数据闭环的核心任务,也是大多数车企迫切想要拥有的能力。
数据闭环并非新概念,互联网时代早期即有广泛应用。一个比较典型的例子即是各类软件、App的“用户体验改进计划”。
用户在初次打开一款软件时,往往会弹出选项“是否加入用户体验改进计划”。点击确定后,软件就会收集用户的使用信息。在出现崩溃、Bug等场景下,软件还会弹出信息,询问“是否允许上传本次崩溃信息以帮助改进”,比如Windows出现的各种错误报告。
点击提交后,软件开发商的工程师们会分析错误报告,以找出出现崩溃、Bug的原因,进而修改代码并在下次更新后予以解决。
用户在使用过程中遇到的所有问题均可以通过此种方式解决,周而复始,不断优化软件性能与使用体验,这就是一种传统的数据闭环。
自动驾驶系统的研发与优化,与传统软件开发存在很多不同。
传统软件更多是在代码端解决各类问题,但自动驾驶系统除代码以外,还有更为关键的AI模型。代码端的问题可以通过传统的数据闭环方式予以解决,但模型端的调整则需要重新训练或优化AI算法模型。
因此,自动驾驶数据闭环需要在传统数据闭环方式上,引入一些新东西,比如数据标注、模型训练、算法调试等。
在数据采集环节,收集足够多的交通数据并非易事。采集数据分为两种,一种是靠研发采集车。小鹏、华为在起步阶段,均是靠这种方式获取数据。另一种是通过量产车获取数据,这是在数据规模上来后的主流方式。
早年自动驾驶企业大多依赖采集车采集数据,这种数据是不真实的、分布有偏的、低质量的,只能做个Demo,难以进行大规模端到端训练。最近几年,随着量产车的规模化落地,业界很多公司都开始转向采用量产车通过影子模式采集数据,但这种模式依然面临艰巨的挑战。
这里面包含采集策略的问题,即如何平衡数据的长尾问题(有效性)和数据的规模问题(成本)。如果采集策略比较宽松,往往采集的数据大部分是无价值数据;如果采集策略过于严格,又会丢失大量有价值的数据。
其次是数据的质量问题,如何定义数据质量是个艰巨的产品问题,如何精准地挑选出覆盖足够多极端情况的高质量数据又是一个复杂的技术问题。
之后是数据分布问题,如何从海量的数据片段中提取有效的特征、如何统计数据的分布、应该考虑哪些维度,都需要大量的工作。
在数据回传环节,在数据量特别大的时候,数据回传的成本会非常高。
单车每日回传的数据量大概为百兆级。在研发阶段,车辆总数可能只有几十辆或者几百辆,但是到了量产阶段,车辆数目的量级可以达到上万、几十万甚至更多。那么,量产阶段,整个车队日产生的数据量就是很大的数字。某造车新势力每个月仅用来做数据回传的流量费就高达“大几千万”。
另一方面,急剧增加的数据量还给存储空间以及数据处理的速度都带来了挑战。
量产之后,数据处理的延迟需要和研发阶段保持在同一个量级。但如果底层的基础设施跟不上,数据处理的延迟就会随着数据量的增长而相应地增加,这样会极大地拖慢研发流程的进度。对于系统迭代来讲,这种效率的降低是不可接受的。
在数据标注环节,虽然大模型的应用可以让高达80%的数据标注可以通过自动化的方式来完成,但还有至少20%涉及复杂场景、多目标、语义复杂的数据需要由人工来完成“精标”。
以往需要标注的数据主要是前视摄像头数据,2D标注框+3D位置就已经是标注的全部内容了;如今在BEV+Transformer方案下,所有相关的摄像头看到的所有障碍物、车道线、车辆的运动状态都需要对应的标注,并且还要统一在同一坐标系下,还有大量的语义信息也需要标注。
多数公司在数据标注环节都会依靠“人海战术”,依靠人工一个个地对采集回来的数据做场景分类,工作量远超想象。一般的检测框,一分钟的内容,标注需要一小时左右;点云分割,一分钟的内容,标注需要几个小时;但对更复杂的任务做4D标注,可能一分钟的任务需要花超过一天时间才能完成。
后面如果要做端到端的算法训练,在给这一帧的内容打标签时,还得考虑该标签如何跟其他帧的内容做关联。
总体趋势是,自动驾驶行业对标注的要求越来越高了,这意味着,投入到一分钟视频上的标注成本也随之水涨船高。如果标注的结果不准确、不完整,那基于这些数据训练出来的模型的性能就会受到影响。
此外,在数据收集和处理的过程中,隐私保护是一个不容忽视的问题。自动驾驶车辆在运行过程中,可能会捕捉到行人的面貌、车牌号码等敏感信息。如何保护这些个人隐私,避免数据泄露和滥用,是每个自动驾驶企业都必须严肃对待的问题。
对大部分自动驾驶企业,还会面临严重的数据泛化问题,因为不同的车型传感器配置差异巨大,采集的数据往往难以复用,而国内车企普遍车型众多,最后很可能是采了一堆数据放在那没法使用,看起来是数据资产,其实都是存储成本。
“华山一条路”的技术新路径
在数据闭环体系中,仿真技术无疑是非常关键的一环。仿真的起点是数据,而数据又分为真实数据与合成数据。随着真实数据“规模小、质量低、使用难度大”等问题日渐暴露,合成数据越来越受重视。
在国内,虽然各家主机厂已经不缺真实数据,但这些数据的利用率究竟有多高,仍然存在很大疑问。同时,如果用真实数据用来做仿真,有个很严重的痛点——复用性差。
比如,在做路采的时候,车辆的芯片平台、传感器架构及制动系统是怎样的,在仿真系统里做测试时,车辆的这些硬件配置也必须跟路采时所用的车辆配置一致。一旦传感器的位置或者型号有变更,这一组数据的价值就降低,甚至会作废。
事实上,真实数据的最主要问题并不是“太少”,而是质量低,使用难度大、复用性差,而这恰合也就是合成数据的用武之地。
合成数据(Synthetic Data)就是通过计算机技术生成的数据,而不是由真实事件产生的数据。但合成数据又具备“可用性”,能够在数学上或统计学上反映原始数据的属性,因此也可以用来训练、测试并验证模型。OpenAI的GPT-4,就采用了大量前一代模型GPT-3.5生产的数据来进行训练。
Gartner 预测,到2024年用于训练Al的数据中有60%将是合成数据,到2030年AI模型使用的绝大部分数据将由人工智能合成。
合成数据最早于1993年由统计学家唐纳德·B·鲁宾(Donald B. Rubin)提出,目前被广泛引用,并在金融保险、医疗制药、汽车制造、零售、自动驾驶等领域都有或深或浅的应用。
合成数据的产生原理,很大程度上在于模拟真实数据的分布特征和统计特性,再通过生成模型创建新的数据集,用来辅助真实训练数据样本不足或使用受限情况下(如数据敏感或隐私保护)的模型训练、测试和开发。
广义上,因为合成数据保留了和真实世界数据相同的结构或分布,却不包含原始信息,所以主要被用来代替原始数据用于模型训练和下游任务。
不过在实际应用中,出于数据可用性或真实场景数据对强化模型泛化能力的考虑,也有人基于原始数据样本,通过部分合成的方式(比如利用数据填补的方法替换原本的敏感和关键字段,进行局部数据的合成),生成相应的合成数据。所以,在有些分类中,合成数据又包含全部合成、部分合成、混用多种形态。
目前,合成数据在模型训练和数据集增强等场景,尤其在对齐阶段深度的模型训练中发挥着重要作用。
随着合成数据越发受到重视,技术人员也在持续创新数据合成的方法。从实际使用看,目前主要通过以下方式进行合成数据。
随机采样生成。根据现实世界数据中观察到的统计特性(如均值、方差、相关性等),随机生成数据。这种合成方法比较基础直接,适合简单的数据集生成,但面对高维复杂的数据,则存在一定的局限性。
基于特定领域规则生成。基于数据集预定义的规则和约束,手动或半自动生成合成数据。这种方式生成的数据,能保持与现实世界复杂场景的一致性,使得生成的合成数据具有一定可解释性,但这种方法在具有明显规律或规则时才较为有效。
利用深度学习方法生成。主要表现在利用生成对抗网络(GAN)、变分自动编码器(VAE)等生成合成数据。比如视频生成模型Sora就采用了生成对抗网络(GAN)来生成合成数据。在这过程中,生成器负责基于原始数据合成图像,鉴别器负责将原始图像和合成图像分离,当对抗机制达到平衡,就能生成与真实世界图像特征非常相似但又有所区别的合成图像数据。
变分自动编码器(VAE)则是利用无监督算法,通过编码器(数据降维)和解码器(数据重构)的协作,在原始数据基础上生成新的数据。两者都是合成多模态数据的有效方式。
利用合成数据工具生成。比如利用Python、Scikit-learn、Datagen、Mostly AI等数据合成工具软件、机器学习库,针对性生成相应的合成数据。目前也可以直接利用GPT等大语言模型,通过提示词引导,进行数据增强和虚拟数据的合成。
除此之外,通过对现有数据样本进行变换、扩充、匿名等生成更多的训练数据样本,即采用增强数据、匿名数据等方式合成数据也比较常见。只是这种更多属于部分合成数据,真实数据特性保留度高,多样性、丰富性方面也会有一定影响。
合成数据在自动驾驶领域的一大应用是对于极端情况的模拟。大量的极端情况在真正发生前没有人能预知,属于“预期功能安全”第三象限里面的“Unknown,Unsafe”一类,所以无法在真实道路上进行模拟。这类情况,无法通过基于人工规则的合成数据(WorldSim)来生成,也没法通过对真实世界做3D重建的技术(NeRF)来生成,但有望通过基于AIGC的合成数据来获取。
有些极端情况尽管人们能想象得到“大概会怎样”,但毕竟太危险,所以也不适合在真实道路上做模拟。这种极端情况无法通过NeRF技术来生成,但可以通过合成数据来生成。有些极端情况,算不上有多么不安全,但也会影响到交通安全,比如雨、雾、雪和极端光线等极端天气跟某种极端交通流的组合,这些也需要通过合成数据技术来生成。还有许多极端情况,在真实数据中的密度太低,挖掘成本太高,这个时候选择合成数据便是最佳策略。
有了合成数据,主机厂或自动驾驶公司便可在几小时内模拟数百万个极端情况,这些模拟可能涵盖不同照明条件、目标位置和恶劣环境下的示例,或者可以插入随机噪声来模拟脏污的摄像头、雾水和其他视觉障碍物。
此外,真实数据由于高度受制于采集场景的限制,所以极端情况在样本的分布上也很难有效满足算法的需求。而合成数据,可以有针对性地生成分布状况更满足训练需求的极端情况,这更有助于提升算法的性能。
如今,数据对自动驾驶产业的驱动力已经成为每一位玩家绕不开的关键。完备的闭环模型需要大规模、高质量、多场景的数据,高算力、高效率、相对低成本的算法模型,趋向自动化的数据标注与处理,高速率、低成本的传输速率与存储模式,再加上安全合规的保驾护航,在数据的喂养下飞轮不断循环向前,实现自动驾驶的持续进化。
数据闭环的每一步推进都是成本和效率的博弈,每一次博弈都是科技理性与价值理性的融合,每一场融合也将必然需要上下游企业数据共享、技术开源、生态共建。而数据闭环也是实现城市NOA和更高级别智驾的“华山一条路”,在这条路上,可以慢、可以错,但唯独不能不上山,否则就会被遗忘在山脚下。