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

news2024/11/24 17:04:25

前言

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

// 待更

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

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

相关文章

【BES2500x系列 -- RTX5操作系统】系统执行流程 -- 应用初始化 -- app_init() --(十二)

💌 所属专栏:【BES2500x系列】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &#x1f49…

Linux:多线程(三.POSIX信号量、生产消费模型、线程池、其他常见的锁)

上次讲解了:Linux:多线程(二.理解pthread_t、线程互斥与同步、基于阻塞队列的生产消费模型) 文章目录 1.POSIX信号量1.1引入1.2回顾加深理解信号量1.3信号量的操作接口 2.基于循环队列的生产消费模型2.1循环队列2.2整个项目 3.线程…

fastadmin自定义弹框,以及回调函数等问题,

效果图 1&#xff0c; 代码 弹框中使用弹框 弹框1代码主要代码 <div class"form-group ccol-xs-12 col-sm-2" style"text-align: right"><a href"#" data-url"{:url(user/add)}" class"btn btn-info" id"a…

Android逆向题解-boomshakalaka-3-难度5

这个app 是一个cocos游戏&#xff0c;没有用脚本实现&#xff0c;纯c实现。 题目描述:play the game, get the highest score 题目要求是玩游戏得到最高分就可以得到flag&#xff0c;是写到配置文件的&#xff0c;初始flag值看着是base编码的。 核心代码在so里面的ControlLay…

GPT-4o:开启多模态AI识别新纪元

GPT-4o功能简介 在人工智能的演变历程中&#xff0c;图像识别技术始终占据着核心地位。技术的发展日新月异&#xff0c;使得AI不仅能够识别图像内容&#xff0c;还能将其转化为文字描述。特别值得一提的是&#xff0c;OpenAI在春季发布的GPT-4o模型&#xff0c;将图像识别技术…

Spring项目:文字花园(一)

前言 实现登录注册功能。 ⽤⼾登录成功后, 可以查看所有⼈的博客. 点击 <<查看全⽂>> 可以查看该博客的正⽂内容. 如果该博客 作者为当前登录⽤⼾, 可以完成博客的修改和删除操作, 以及发表新博客 一.准备工作 1.1注入sql &#xff08;数据准备&#xff09; -- 建…

解决No module named ‘tensorflow‘

import tensorflow as tf ModuleNotFoundError: No module named tensorflow 安装合适的tensorflow版本 先查看自己的python版本 或者输入指令&#xff1b;python --version 安装兼容的tensorflow版本&#xff0c;安装指定版本的tensorflow pip install tensorflow-gpu2.3.0…

MVDream 论文学习

论文链接&#xff1a;https://arxiv.org/abs/2308.16512 代码链接&#xff1a;https://github.com/bytedance/MVDream 解决了什么问题&#xff1f; 3D 内容生成是现代游戏和媒体产业中的关键环节&#xff0c;然而这是一个劳动密集型的任务&#xff0c;创建一个 3D 资产就需要…

后端Web之HTTP协议基础介绍

目录 1.HTTP概念 2.HTTP请求协议 3.HTTP响应协议 4.HTTP协议解析 1.HTTP概念 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议。它是万维网数据通信的基础&#xff0c;允许将超…

JVM由那些部分组成,运行流程是什么?

Java 虚拟机 (JVM) 是 Java 运行环境的核心部分&#xff0c;它负责执行 Java 字节码。JVM 由多个不同的组件组成&#xff0c;每个组件都负责不同的任务。下面我将详细介绍 JVM 的主要组成部分及其运行流程。 JVM 的组成部分 类加载器 (Class Loader)&#xff1a; 类加载器负责读…

数据结构 位运算

基础位运算 按位与&#xff08;AND&#xff09; 操作符&#xff1a;&两个位同时位1时&#xff0c;结果位1&#xff0c;否则为0 按位或&#xff08;OR&#xff09; 操作符&#xff1a;|主要有一位是1&#xff0c;那么结果就是1&#xff0c;只有两位都是0的时候&#xff0c;结…

C++ 115类和对象_this指针的用途

学习内容 类和对象_this指针的用途 1.解决名称冲突 2.返回对象本身用 *this 运行结果 代码 #include<iostream> using namespace std;//cout 在这里&#xff0c;没有它会报错//1.解决名称冲突//2.返回对象本身用 *thisclass Person { public:Person(int age){//形参名称…

【深度学习实践】基于深度学习的图像去雾算法-ChaIR-实践

本文介绍一个去雾算法ChaIR的使用方法&#xff0c;可以完成图像去雾&#xff0c;也可以用于图像去雨、去噪音等任务。本文不涉及论文原理&#xff0c;只包含源代码的跑通和使用。 先展示一下效果&#xff1a; 原图去雾 论文&#xff1a;Exploring the potential of channel …

ZAN与Mysten Labs合作推进Web3基础设施开发

Mysten Labs是一家Web3基础设施公司&#xff0c;也是Sui区块链的开发公司&#xff0c;今天宣布与蚂蚁数字科技的技术品牌ZAN建立合作伙伴关系。 通过整合Sui&#xff0c;ZAN旨在加速其Web3应用程序的开发和采用。该合作将专注于为Mysten Labs在两个关键领域提供技术支持&#…

Redis 缓存预热、雪崩、穿透、击穿

缓存预热 缓存预热是什么 缓存预热就是系统上线后&#xff0c;提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候&#xff0c;先查询数据库&#xff0c;然后再将数据缓存的问题&#xff01;用户直接查询事先被预热的缓存数据&#xff01;解决方案 使用 PostConstr…

day2-网络连接网卡配置原理

1.window网卡 理解&#xff1a; window 有 2 块网卡 本地网卡 192.168.13.253 用于连接外网 vmnet8 10.0.0.1(装虚拟机自动生成的 如果没有自动生成…) 虚拟机添加 2 块网卡&#xff1a; 第一块网卡 NAT 模式 添加网卡的时候设置 NAT 模式 2 个作用&#xff0c;用于连接 wi…

Linux服务管理-Nginx进阶

通常会通过rewrite将用户的80请求转化为443请求&#xff0c;也就意味着Nginx需要去做虚拟主机&#xff0c;一个80端口的虚拟主机和一个443端口的虚拟主机&#xff0c;当访问80端口的虚拟主机时返回一个信息让用户去访问443端口的虚拟主机。

技术证书认证-附考试答案-AIGC与大模型通识-英特尔大湾区科技创新中心证书认证

目录 课程简介 面向人群 考核步骤 试题答案 知孤云出岫主页 课程以及考试链接&#xff1a;AIGC与大模型通识 - 英特尔大湾区科技创新中心 【英特尔大湾区科技创新中心】公益新课《AIGC与大模型通识》上线官网&#xff01;首期结业认证进行中&#xff0c;提升AI应用技能&…

解决Element-ui el-tree数据与显示不对应的问题

如图&#xff1a; 后端返回的权限列表&#xff0c;并没有列表这一项&#xff0c;但是由于父节点 版本打包 为选中状态&#xff0c;导致所有子节点都为选中状态。 实现代码如下&#xff1a; <el-treeref"tree":data"records"show-checkboxnode-key&quo…

RuoYi-Vue新建模块

一、环境准备 附:RuoYi-Vue下载与运行 二、新建模块 在RuoYi-Vue下新建模块ruoyi-test。 三、父pom文件添加子模块 在RuoYi-Vue的pom.xml中,引入子模块。 <dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-test</artifactId>&…