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

自动驾驶之DriveMM: All-in-One Large Multimodal Model for Autonomous Driving

1. 写在前面

工作之后,主要从事于偏工程比较多的内容, 很少有机会读论文了,但2025年,由于之前有些算法的背景, 后面可能会接触一些多模态大模型相关的工作,所以又调头有点往算法的方向偏移, 而算法呢,很重要的一点就是阅读论文。2025年,再拾起论文这块的工作。

今天分享的一篇论文,是24年12月中山大学深圳分校和美团的论文,算是自动驾驶界比较新的文章,叫DriveMM,介绍了一个通用的大型多模态模型, 该模型可以接收单张图片、多张图片、单个视频、多个视频以及lidar等多种格式的输入, 处理AD中的各种驾驶场景和任务(感知,预测,规控等), 还是非常powerful的。我们还是先把论文的每个模块介绍一遍,最后再教大家部署下这个模型, 本地跑下推理, 工作中读论文很重要的一个点是要考虑如何落地,所以读完论文掌握思路之后,我们还要看看代码落地。

  • 论文地址:https://arxiv.org/pdf/2412.07689
  • GitHub代码: https://github.com/zhijian11/DriveMM

在这里插入图片描述

Ok, let’s go!

大纲如下:

  • 1. 写在前面
  • 2. Abstract
  • 3. Introduction
  • 4. Releated Work
    • 4.1 Vison-Language Driving Datasets
    • 4.2 LMMs for Autonomous Driving
  • 5. Methodology
    • 5.1 Model Architecture
    • 5.2 Data
    • 5.3 Training
  • 6. Experiment
  • 7. Apply

2. Abstract

多模态模型(LMM)结合大语言模型(LMM), 在自动驾驶(Autonomous Driving, AD)领域展现出色的理解和解释能力。 但是当前数据驱动的AD方法往往集中在单个数据集和特定任务上, 忽视整体和泛化能力。为了弥补这些差距, 本文提出了提出了一体化LMM,DriveMM, 一个通用的大型多模态模型,该模型接收多样化的数据输入,例如图像和多视角视频,旨在有效处理AD中的各种驾驶场景和任务,比如感知、预测和规划等。

本文主要是3个卖点:
在这里插入图片描述

  1. 提出了一个新颖的通用多模态大模型, 该模型同时具备整体和泛化能力,可以处理多种AD任务,且对于zero-shot的数据集也非常ok
  2. 提出了一个在多模态数据上预训练+ 自动驾驶数据上微调DriveMM的范式(这个很重要)
  3. 介绍了非常全面的评估体系评测自动驾驶的LMMs, 主要包括6个公开数据集,4中输入类型,13中有挑战的任务等。

最后经过各个实验, 证明了自己模型在多个任务上实现了SOTA, 在zero-shot的任务上也达到了最强。

3. Introduction

引言里面首先指出了随着自动驾驶的发展, 最近几年也涌现除了非常多的AD数据集和多模态大模型(Large Multimodal Model, LMM), 旨在理解复杂的自动驾驶的场景任务。 这些LMM先经过预训练过程, 使其理解AD的基本视觉和语言信息,然后再用特定任务的数据进行微调,适应于不同的任务。 但之前的的这些模型和数据都是针对于特定的场景和任务这可能会丢失一些全局和泛化的能力

作者这里列了个图:
在这里插入图片描述
左边是6个AD数据集, 类型有的是单图片,多图片(包括视角),单视频,多视频(包括视角), 不同数据集适用于不同的场景任务,比如感知的场景理解,区域理解,Key理解,道路理解,风险探测, 预测里面的状态预测,Motion预测,规化里面的行为检测,驾驶推理,Motion预测等,这都是自动驾驶领域的经典任务。

有了上面的问题, 作者这里的动机就是 大一统, 搞一个通用的大模型,可以接收多种type的输入, 解决上面的所有任务, 这些数据一块训练, 能够有更强大的通用能力和更好的泛化能力。

在这里插入图片描述
这里的通用能力指的是复杂和多样的任务场景, 而泛化表现是指zero-shot的数据。

首先,是重构了LMM能接收多视角的视觉信号,这个是通过提供了一个带有视角信息和传感器类型的Instruction实现的, 这样能允许模型识别障碍物之间的空间关系,分析动态驾驶环境里面的全部上下文。 在训练阶段的时候, 提出了一个新的范式(4阶段), 完成了DriveMM的预训练和微调。主要包括3个阶段的预训练和最后一个阶段的微调,最后得到了一个很强大的模型。

训练这部分是本篇paper的关键, 后面的内容里面详细介绍吧。

4. Releated Work

相关工作这块,作者主要是介绍了一些数据集和现用的一些AD领域的多模态大模型,这对于像我这样的小白了解背景知识还是很重要的, 也简单整理下。

4.1 Vison-Language Driving Datasets

这里主要是介绍一些训练LMM用到的AD场景数据集, 这个其实就是上面图里面的那些数据集。

  • DRAMA, CODA-LM, DriveVLM, single-view data, 聚焦于风险object和corner cases learning
  • NuScenes-QA, multi-view data, 主要是3D obj的关系
  • MAPLM, multi-view data主要分析和识别道路条件等

在这篇paper里面,作者做的一个事情就是:

在这里插入图片描述
增强和标准化了自动驾驶数据集,这个思路也非常牛,后面会看下。

4.2 LMMs for Autonomous Driving

这块主要介绍LLMs在AD领域的一个应用。

早期, 有工作尝试用GPT3.5或者4 作为驾驶planners。后来DriveGpt4和RDA-Driver引进了端到端的LMMs产生控制信号和轨迹。 上面的工作主要是通过语言来处理驾驶行为。 LMDrive和DriveMLM是用了一个decoder直接从embedding预测控制信号。

为了提高感知和推理能力, 下面的几个方法是通过改进了模型的架构。 Reason2Drive 提出了一个先验的tokenizer来提出local image feature, BEV-InMLLM是把BEV的特征集成到了LMM里面。 OmniDrive用了一个Q-Former3D集成2D预训练的知识和3D的空间理解。 ELM组合了一个time-aware token模块来提高查询关于时序特征的准确率。

上面的这些方法可以大概了解, 算作背景知识的学习了。 这些方法还是受限于特定的场景和任务。

5. Methodology

终于到了paper的重点环节了, 这里面作者介绍DriveMM的相关方法。
在这里插入图片描述
这里先用数学语言简洁的表达了下模型, 接收的输入是 X v X_v Xv, 这个表示的多种多样的数据(各种格式的数据,图片,多视角图片,视频,多视角视频 或 lidar点云), X t X_t Xt是有来自于感知,预测,规划的一个提问。 F F F就是DriveMM,输出 Y t Y_t Yt就是模型针对提问作出的回答。

过整合多种数据和任务,DriveMM 能在一个场景广泛的VL数据上训练, 不同数据和任务之间能互补。

5.1 Model Architecture

目标是设计一个高效的模型架构, 同步处理S.I, M.I, S.V, M.V, 遵循LLaVA(Large Language and Vision Assistant)的主流LMM的设计。一个vision encoder, 一个projector 和一个LLM。

在这里插入图片描述
这里先宏观上解释下上面的图, 模型的输入格式是: < i m g s , q , a > <imgs, q, a> <imgs,q,a>, 也就是一张或者多张图片(可以是多视角), 再给定一个Q, 模型输出一个A, 当然这个Q和A要根据不同的任务去设计。感知任务, 预测任务和规划任务想要模型学习的东西不一样,自然就需要不同的Q和A。可以看看上图里面不同任务Q和A的内容。

那有了img, q之后呢, 就可以给到模型, 处理过程大概是这样子(上面图有点稍微简洁):

在这里插入图片描述
宏观上用这个图应该比较清洗了,下面介绍下每一部分。

  1. Vision Encoder: 本文用的是SigLip, 类似于clip的模型,目的是把一个输入为 n ∗ f ∗ c ∗ h ∗ w n*f*c*h*w nfc

http://www.kler.cn/a/512166.html

相关文章:

  • PHP教育系统小程序
  • MySQL 篇 - Java 连接 MySQL 数据库并实现数据交互
  • opencv笔记2
  • 使用ffmpeg提高mp4压缩比,减小文件体积【windows+ffmpeg+batch脚本】
  • 前沿技术趋势洞察与分析:探寻科技变革的多维密码
  • 【统计的思想】假设检验(一)
  • 『 C++ 』深入理解类中的 this 指针在适配器的作用
  • 数据库高可用方案-03-主备等高可用架构
  • Node.js npm 安装过程中 EBUSY 错误的分析与解决方案
  • 如何在 Pytest 中使用命令行界面和标记运行测试
  • python清除空格函数
  • 深入解析浏览器异步任务调度 API:让 Web 开发更高效
  • 通过Ukey或者OTP动态口令实现windows安全登录
  • ent.SetDatabaseDefaults()
  • Windows图形界面(GUI)-QT-C/C++ - Qt QToolBox详解教程
  • JSON全解析:语法、转换与FastJson应用指南
  • Linux(UOS系统:DHCP)
  • 数据库的DML
  • Kafka 日志存储 — 日志索引
  • IO模型与NIO基础二
  • 算法随笔_13: 有效三角形的个数
  • CSS 默认值
  • app测试笔记
  • 【Linux】Linux入门(一) 用户与用户组
  • AI发展困境:技术路径与实践约束的博弈
  • Linux TCP 之 RTT 采集与 RTO 计算