端到端自动驾驶的数据规模化定律

25年4月来自Nvidia、多伦多大学、NYU和斯坦福大学的论文“Data Scaling Laws for End-to-End Autonomous Driving”。

自动驾驶汽车 (AV) 栈传统上依赖于分解方法,使用单独的模块处理感知、预测和规划。然而,这种设计在模块间通信期间会引入信息丢失,增加计算开销,并可能导致复合错误。为了应对这些挑战,最近的研究提出将所有组件集成到端到端可微分模型中的架构,从而实现整体系统优化。这种转变强调数据工程而不是软件集成,只需扩大训练资源规模即可提供提高系统性能的潜力。这项工作评估一种简单的端到端驾驶架构在内部驾驶数据集上的性能,该数据集的大小从 16 到 8192 小时,包括开环指标和闭环模拟。具体来说,其研究需要多少额外的训练数据才能实现目标性能提升,例如,将运动预测准确度提高 5%。通过了解模型性能和训练数据集大小之间的关系,旨在为自动驾驶开发中的数据驱动决策提供见解。

传统上,自动驾驶系统采用模块化方法,将感知、预测和规划分成不同的组件,每个组件都根据各自的目标进行独立优化 [14, 43–45, 53, 61]。虽然这种模块化设计将自动驾驶汽车开发的工作分散到各个专业团队,但在集成过程中也带来了巨大的挑战,例如模块间信息丢失、误差叠加以及资源利用效率低下。为了突破这些限制,最近提出了端到端架构。这些模型接收传感器输入,例如激光雷达和摄像头图像,并直接输出规划的驾驶路径,将多个模块集成到一个框架中,所有组件都朝着一个统一的目标进行联合优化:运动规划。这种统一的优化方法有可能通过扩展训练资源来提升系统性能。然而,一个关键问题依然存在:在端到端自动驾驶系统中,需要多少训练数据才能实现有意义的性能提升?在自然语言处理 (NLP) 领域,大量研究已经从训练数据大小和模型性能的角度探讨了规模化规律 [1, 39, 77]。然而,在自动驾驶领域,公共数据集的规模相对有限,阻碍了类似的大规模分析。这一差距使得我们无法确定缩放如何影响基于学习的自动驾驶系统的开环性能,更重要的是,如何影响闭环性能。此外,目前尚不清楚规模化端到端驾驶架构的特定组件(例如感知或预测)是否能显著提高性能。这种缺乏明确性带来了挑战,因为收集和注释自动驾驶数据的成本很高。建立可靠的规模化规律可以让自动驾驶开发人员更好地将数据和训练投资与性能提升相结合,从而节省大量资源。

为此,本文使用一个具有代表性的端到端驾驶栈(类似于 [5] 和 [11] 等早期研究中使用的栈)来检验自动驾驶汽车模型的数据规模化规律,该栈采用模仿学习将视觉输入(即 RGB 摄像头图像)直接映射到轨迹。具体而言,使用标准开环指标,在 16 到 8192 小时驾驶数据的内部数据集上训练和评估该模型。然后,在闭环模拟器中评估其性能,其中基于规则的控制器将预测的轨迹转换为控制命令。

如图所示:在不同动作类型体现的规模化定律

请添加图片描述

注:最近的一个工作“Preliminary Investigation into Data Scaling Laws for Imitation Learning-Based End-to-End Autonomous Driving”(https://arxiv.org/abs/2412.02689)探索了端到端自动驾驶汽车系统中的数据规模化,但缺乏结构化的框架,忽略了关键分析,例如不同的规模化趋势、不同动作类型的性能差异以及模型容量效应。相比之下,本文工作建立了一种系统的方法来测量规模化行为和数据需求估计。

为了分析端到端自动驾驶的规模化规律,从超过10个国家的内部驾驶数据中整理出一个行业规模的数据集,该数据集时长超过8000小时,行驶里程超过40万公里。该数据集提供3张校正(rectified)图像,这些图像分别来自3个广角摄像头,分别朝向自动驾驶汽车的前方、左侧和右侧,分辨率为734×270,采样率为10Hz,如图所示。

请添加图片描述

车辆自身轨迹以5Hz的采样率均匀重采样,采样范围为未来3秒。为了评估规模化规律,准备不同大小的训练数据集,其大小范围从16小时到8192小时,均为2的幂次方。这种方法使数据集规模与流行的公共基准测试(例如 nuScenes [6] (15h)、WOMD [70] (574h)、Lyft [29] (1001h) 和 nuPlan [23] (1282h))的规模保持一致,从而可以在自动驾驶研究中进行相关的比较。

为了防止跨数据分区的信息泄露,为训练、验证和测试数据集建立互斥的地理区域,主要分布在欧洲和北美,以确保空间数据的完全隔离。通过构建一个全局无向图来实现这一点,其中驾驶会话和访问过的 H3 单元表示为节点,并通过边将会话连接到各自的 H3 节点。通过识别该图中的连接组件,确定会话集群,即适合训练、验证或测试且不存在重叠风险的地理上不相交会话组。

除了确保训练、验证和测试分割在地理上不相交之外,保持所选操作设计域 (ODD) 在这些分割中的分布相似也至关重要。

因为模型只输出一条轨迹,所以需要导航输入命令来消除转弯和变道等驾驶动作的歧义。为了检索这些动作输入,利用每个时间点的矢量化地图标签(即车道折线和多边形),称为地图快照(map snapshot)。由于这些数据会随时间步长而变化,将每个地图快照解析为 trajdata [36] 格式,并估算任何缺失的道路拓扑信息,例如横向车道连通性。由于在使用基于位置和方向的车道匹配 [55] 时存在定位的时间一致性问题,实现一个 trajdata 扩展,它可以按照 [52] 生成不同的基于地图锚路径 (DMAP)。遍历该图以识别自车何时:(1) 转弯(所有具有多个出站纵向边的情况​​)和 (2) 变道(遍历横向边的情况​​)。

模型由两个主要组件组成:一个对摄像机图像进行编码的感知模块和一个生成未来轨迹的预测模块。虽然更先进、最先进的架构有可能提升最终性能,但重点在于对具有代表性的数据驱动模型进行系统性规模化规律分析的方法和程序,而不是实现绝对最高的准确率。具体来说,特意排除过去的历史,因为它可以压倒性地预示未来的状态 [42],以确保模型主要从当前的视觉输入中学习解读环境。这种更简单的设计选择不会改变基本的规模化动力学,使分析更具泛化能力,并能够更有效地进行实验。

感知模块将校正后的多视角摄像头图像作为输入。如果仅提供单个前置摄像头视图,感知模块会直接将提取的特征 转发到预测模块进行轨迹生成。当有多个摄像头视图可用时,用交叉注意机制融合多视角信息,类似于 [57]。这种融合策略确保横向视图(左视图和右视图)的融合不带偏见或不依赖于处理顺序。

预测模块基于感知模块生成的特征,结合额外的动作命令和运动学信息,生成最终的轨迹输出。

在对感知、动作和运动特征进行编码之后,使用交叉注意将其融合,以捕捉这些模态之间的依赖关系。

在训练中,采用余弦退火方案来促进平稳高效的学习 [39]。然而,这需要提前知道总训练时长,因为必须预先定义周期长度。与之前要么固定总计算量,要么固定每个数据集大小的 epoch 数量 [24] 的工作不同,本文提出一种线性递减的计算方案。具体而言,对包含 2^k 小时驾驶数据的数据集进行 m × (1 + l − k) 个 epoch 的训练,其中 m = 2 表示 epoch 的底数,l = 13 是最大数据集分割的指数 k。这种方法在有限的计算资源和有效的训练之间取得了平衡。

如图所示,恒定 epoch 方法 (a) 无论数据集大小如何都应用相同数量的 epoch,这导致较大数据集的计算需求大幅增加。相比之下,恒定计算方法 (b) 在不同的数据集大小上保持固定的计算量,使得较大的数据集能够进行足够的迭代次数,但在较小的分块上计算量过大。

请添加图片描述

冷却阶段的额外要求也使得它比余弦退火 [24] 更复杂。自适应方法 © 会根据数据集大小扩展 epoch 数量,从而在不为较小数据集过度分配资源的情况下提供足够的训练,同时仍确保为较大数据集提供足够的资源。这种逐步规模化的方法可以在不同的数据集大小上实现平滑收敛,并提供一种计算余弦退火使用周期长度的方法 [39]。

规模化规律估计器通常采用 y = f (x; θ) 的形式,其中 y 表示损失、误差或测试集上的某些指标,x 表示训练数据集的大小,θ 表示估计器参数。本研究评估四个候选规模化规律估计器(分别记为 M1、M2、M3 和 M4),每个估计器的复杂度级别均逐级递增,如图所示。

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

021-C语言文件操作

C语言文件操作 文章目录 C语言文件操作1. 文件的概念2. 二进制文件和文本文件3. 文件的打开和关闭3.1 流和标准流3.1.1 流3.1.2 标准流 3.2 文件指针3.3 文件的打开和关闭 4. 文件的顺序读写4.1 顺序读写函数4.2 对比两组函数4.2.1 scanf/fscanf/sscanf4.2.2 printf/fprintf/sp…

如何使用@KafkaListener实现从nacos中动态获取监听的topic

1、简介 对于经常需要变更kafka主题的场景&#xff0c;为了实现动态监听topic的功能&#xff0c;可以使用以下方式。 2、使用步骤 2.1、添加依赖 <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactI…

《TCP/IP详解 卷1:协议》之第七、八章:Ping Traceroute

目录 一、ICMP回显请求和回显应答 1、ICMP回显请求 2、ICMP回显应答 二、ARP高速缓存 三、IP记录路由选项&#xff08;Record Route&#xff0c;RR&#xff09; 1、记录路由选项的工作过程 2、RR 选项的 IP 头部格式 2.1、RR 请求 2.2、RR响应 四、ping 的去返路径 五…

30天通过软考高项-第四天

30天通过软考高项-第四天 任务&#xff1a;项目进度管理 思维导图阅读 知识点集锦阅读 知识点记忆 章节习题练习 知识点练习 手写回忆ITTO 听一遍喜马拉雅关于范围的内容 进度管理-背 1. 过程定义 龟腚排池至控 规划进度管理&#xff1a;为了规划、编制、管理…

根据JSON动态生成表单表格

根据JSON动态生成表单表格 一. 子组件 DynamicFormTable.vue1,根据JSON数据动态生成表单表格,支持表单验证JS部分1.1,props数据1.2,表单数据和数据监听1.3,自动验证1.4,表单验证1.5,获取表单数据1.6,事件处理1.7,暴露方法给父组件2,HTML部分二,父组件1, 模拟数据2,…

【赵渝强老师】快速上手TiDB数据库

从TiDBv4.0起&#xff0c;提供了包管理工具TiUP&#xff0c;负责管理TiDB、PD、TiKV等组件。用户只需通过TiUP命令即可运行这些组件&#xff0c;显著降低了管理难度。TiUP程序只包含少数几个命令&#xff0c;用来下载、更新、卸载组件。TiUP通过各种组件来扩展其功能。组件是一…

springboot入门-DTO数据传输层

在 Spring Boot 应用中&#xff0c;DTO&#xff08;Data Transfer Object&#xff0c;数据传输对象&#xff09; 是专门用于在不同层&#xff08;如 Controller 层、Service 层、外部系统&#xff09;之间传输数据的对象。它的核心目的是解耦数据模型和业务逻辑&#xff0c;避免…

安装docker,在docker上安装mysql,docker上安装nginx

目录 一.安装docker 1.1查看Linux版本的命令这里推荐两种&#xff1a; 1.2查看内核版本有三种方式&#xff1a; 2.安装 2.1 如果之前安装了docker&#xff0c;先删除旧版本的doker 2.2 安装需要的软件包&#xff0c;yum-util提供yum-config-manager功能&#xff0c;另外两…

Android killPackageProcessesLSP 源码分析

该方法用于终止指定包名/用户ID/应用ID下符合条件的应用进程&#xff0c;涉及多进程管理、资源冻结、进程清理及优先级更新等操作。核心流程分为进程筛选、资源冻结、进程终止与资源恢复三个阶段。 /*** 从已排序的进程列表中&#xff0c;提取从指定起始索引 startIdx 开始的连…

openAICEO山姆奥特曼未来预测雄文之三个观察

《三个观察》 山姆奥特曼 这篇文章主要讲的是关于AGI&#xff08;人工通用智能&#xff09;的未来发展及其对社会的影响&#xff0c;用大白话总结如下&#xff1a; 核心观点&#xff1a; AGI是什么&#xff1f; AGI是一种能像人类一样解决各种复杂问题的智能系统&#xff0c;比…

部署yolo到k230教程

训练&#xff1a;K230 借助 AICube部署AI 视觉模型 YOLO等教程_嘉楠 ai cube多标签分类-CSDN博客K230模型训练ai cube报错生成部署文件异常_aicube部署模型显示生成部署文件异常-CSDN博客 部署&#xff1a; # 导入必要的库和模块 import os import ujson # 超快的JS…

Flask 应用封装成 Docker 服务的完整技术指南

一、实现原理 容器化核心逻辑 Docker 通过将应用代码、运行环境和依赖项打包成镜像&#xff0c;实现环境一致性。Flask 应用容器化需包含&#xff1a; Python 基础运行环境项目代码及依赖库&#xff08;requirements.txt&#xff09;WSGI服务器&#xff08;如 Gunicorn&#xf…

windows上的 Vmware Workstation 环境搭建

本文的视频版本&#xff1a;https://www.bilibili.com/video/BV1JhLRzyESh Vmware Workstation 是一款跨平台的桌面级虚拟化软件&#xff0c;可以使用 Vmware 创建虚拟机&#xff0c;我们一般使用 Linux 虚拟机&#xff08;目前主流的 Linux 发行版是 Ubuntu&#xff09;&…

Linux下终端命令行安装常见字体示例

一、准备工作&#xff1a; 准备好要安装的字体文件&#xff0c;如宋体、微软雅黑&#xff08;simsun.ttc、msyh.ttc)。进入字体路径&#xff1a; /usr/share/fonts&#xff0c;使用root权限&#xff0c;新建一个目录shell_fonts。 二、命令行安装字体&#xff1a; 将要安装…

CentOS中在线安装Docker(超详细)

1&#xff09;检查安装docker的基本要求&#xff1a; 64位CPU架构的计算机&#xff0c;目前不支持32为CPU架构的计算机 系统的Linux内核版本为3.10及以上 开启CGroups和namespace功能 2&#xff09;使用命令查看当前系统的内核版本 [rootlocalhost ~]# uname -r 3.10.0-862…

武汉昊衡科技OLI光纤微裂纹检测仪:高密度光器件的精准守护者

随着AI技术应用越来越广&#xff0c;算力需求激增&#xff0c;光通信系统正加速向小型化、高密度、多通道方向演进。硅光芯片、高速光模块等核心器件内部的光纤通道数量成倍增加&#xff0c;波导结构愈发精细&#xff0c;传统检测手段因分辨率不足、效率低下&#xff0c;难以精…

Java数据结构——Stack

Stack 栈的概念和使用栈的概念栈的使用 栈的应用出栈元素序列有效的括号栈的压入、弹出序列逆波兰表达式最小栈 栈的概念和使用 栈的概念 栈(Stack)&#xff1a;一种特殊的线性表&#xff0c;只允许再栈的一端进行插入和删除元素&#xff0c;这一端点被称为栈顶&#xff0c;另…

神经网络与计算机视觉

2016 年,随着 AlphaGo 在围棋比赛中击败李世石,“人工智能”、“神经网络”、“深度 学习”等字眼便越来越多的出现在大众眼前,智能化好像成为一种不可逆转的趋势,带给大家新奇感的同时也带来了一丝忧惧:在不远的未来,机器是否真的拥有思维和情感?《终结者》中天网大战人…

VS2019 与gitcode团队管理

1、安装git 点击下一步安装即可 2、vs2019连接gitcode 然后更改本地的代码添加文件等都可以进行远程同步操作了

Python类和对象四(十三)

魔法方法&#xff1a; 按位运算 按位于运算 只要相同才是1 或运算&#xff1a; 只要某个位是1结果就是1 、 按位非 将结果取反 按位异或&#xff1a; 左移和右移运算符&#xff1a; 右移两位 右移动n位&#xff0c;就是除以2的n次方 左移两位&#xff1a; 左移n位就是乘…