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

MM-Spatial和Spatial-MLLM论文解读

目录

一、MM-Spatial

1、概述

2、方法

3、架构

4、实验

二、Spatial-MLLM

1、概述

2、方法

3、训练过程

4、实验


一、MM-Spatial

1、概述

        动机:现有多模态大模型在2D视觉任务上表现出色,但在3D空间理解上存在局限,主要对比SpatialRGPT任务中缺乏3D定位能力,所以提出更强的bench。另外MM-Spatial的数据集标注依赖激光扫描深度真值,而SpatialRGPT采用单目深度估计,MM-Spatial有更准确的度量信息。

2、方法

CA-VQA数据集和benchmark

        数据集动机:以往的方法大多缺少3D定位任务,以及深度图信息。

        数据来源:基于CA-1M数据集(使用 ARKitScenes 的高质量激光扫描真值),包含7-DOF 3D边界框(也就是带旋转的OBB),3.3k个开放词汇标签,覆盖350k+物体实例,并且包含材质、颜色、形状等语义标签。数据集分为训练集和测试集,训练集按1FPS采样,覆盖连续视角。测试集按0.1FPS采样,减少冗余,确保场景多样性。

        CA-VQA基于上述数据,采用四类输入信号,单视图RGB,多视图图像,传感器深度(FARO激光真值,ARKit雷达融合深度),单目估计深度

        包含7类空间任务,物体技术,视角相关关系,度量估计,物体距离,2D定位,3D定位,多选题。并且基于规则生成多样化问题,并将答案统一(比如尺寸单位统一到cm,距离单位统一到m,方向类问题离散化到8个方位)

        盲过滤算法:减少语言先验偏差,防止模型不依赖视觉信息直接通过语言能力经验主义猜出答案,先通过7个基线模型(GPT-4o,Phi-3-Vision)等预测大难,若大于等于3个模型仅凭借文本信息就蒙对,则移除这个样本。

        VQA数据如下:

3、架构

        基于MM1.5架构,并利用DFN-CLIP作为图像编码器,语言模块采用Decoder-only LLM主干,连接模块通过C-Abstractor连接视觉与LLM空间。

        对于单一图片,则划分为4个子图+1个概览图,提升高分辨率细节能力。

        对于多视图,则支持拼接多帧图像。

        对于深度信息采用类似SpatialRGPT的方式,或者通过工具直接调用上述的两个激光雷达测出来的深度值,或者完全利用CoT预测深度值。

        训练过程沿用MM1.5通用多模态训练,并在此基础上新增CA-VQA空间数据加以SFT监督微调。

4、实验

        可以看到MM-Spatial本身就具有一定的度量空间的能力,但是不够严谨,经过CoT后数值更加准确。这个GT我没太搞懂,测试集直接把激光雷达的深度信息加进去了?

        用CA-VQAbench对比的以往的方法。

        同样用SpaitalRGPT bench对比了一下:

二、Spatial-MLLM

1、概述

        动机:现有视频多模态大语言模型(MLLM)在2D语义理解任务中表现出色,但在纯2D视频输入下的3D空间推理上仍然存在明显瓶颈。一方面传统3D MLLM需要依赖点云、深度图等进行输入,限制了仅有普通视频的现实场景的应用。另一方面,主流视频MLLM(如Qwen-VL)采用CLIP-based编码器,更加侧重语义信息,缺乏3D几何结构,空间感知能力较弱。

        Spatial-MLLM提出了一个Spatial-MLLM-120k数据集,双编码器架构(引入VGGT作为空间编码器)提取语义信息和3D结构特征,利用SFT+RL的训练策略,强化推理能力。

2、方法

Spatial-MLLM架构

        Spatial-MLLM的核心是双编码器+连接器+LLM骨干,融合语义和3D结构信息。输入视频帧序列\mathcal V=\left \{ f_i \right \}_{i=1}^N,输出空间推理响应。

Dual Encoder 

        双编码器包括2D视觉编码器和空间编码器,其中2D编码器沿用Qwen2.5-VL-3B的视觉编码器,也就是基于预训练SigLIP2的ViT架构编码器。空间编码器采用VGGT初始化的编码器。

        2D视觉编码器\varepsilon _{2D},用于提取高层语义特征,专注场景语义理解和物体识别,对于输入帧序列,每隔一帧作为2D Encoder的输入,并进行patchify,作为ViT的输入。ViT输出为        

                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        e_{2D}=\varepsilon_{2D}(\left \{ f_i \right \}_{i=1}^{N_k})

        其中e_{2D} \in \mathbb R^{N'_k \times \left \lfloor H/p_{2D} \right \rfloor \times \left \lfloor W/p_{2D} \right \rfloor\times d_{2D}}p_{2D}为patch大小,d_{2D}为特征维度,帧处理取每隔一帧,N_k'=[N_k/2]

        空间编码器\varepsilon _{spatial},用于从2D视频中恢复隐式3D结构信息,这里视频帧不做切片处理所以帧数仍然是N_k,基于VGGT模型骨干,生成密集3D特征:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        e_{3D},e_c,e_{register}=\varepsilon_{spatial}(\left \{ f_i \right \}_{i=1}^{N_k})

        其中e_{3D} \in \mathbb R^{N_k \times \left \lfloor H/p_{3D} \right \rfloor \times \left \lfloor W/p_{3D} \right \rfloor \times d_{3D}},相机特征(相机内外参数)e_c,区分首帧与其他帧的辅助tokense_{register},但仅e_{3D}用于融合3D信息。

        连接器,负责整合双编码器输出,首先将空间编码器的输出重组到匹配2D特征的维度,对齐时间维度和空间维度,e'_{3D} =Rearrage(e_{3D}) \in \mathbb R^{N_k' \times \left \lfloor H/p_{2D} \right \rfloor \times \left \lfloor W/p_{2D}\right \rfloor \times d_{3D}'},之后经过两个轻量级的MLP后拼接这两个特征,e=MLP_{2D}(e_{2D})+MLP_{3D}(e_{3D}'),此时输出e \in S \times d_{llm}S=N_k' \times \left \lfloor H/p_{2D} \right \rfloor \times \left \lfloor W/p_{2D} \right \rfloor为序列长度。

空间感知帧采样

        首先因为推理过程中,如果输入一整个视频帧来进行编码是很耗费存储的,显存也会发生爆炸,同时我们也知道视频中包含大量的冗余帧,然而以往的均匀采样方式可能会忽略短暂出现的关键视角信息。

        所以这里提出利用VGGT的空间编码特征,建模一个最大覆盖问题,找到最适合的帧数。目的是找到最优的,最大覆盖的N_k帧,保证N_k帧下能覆盖最大的区域。

        目标:定义N_k=16,最优帧的集合也就是\left \{ f_i^k \right \}_{i=1}^{N_k}。同样均匀采样128帧作为候选集合,N_m=128,候选集\left \{ f_i^m \right \}_{i=1}^{N_m},目的是从128帧中选出最优的16帧来最大覆盖这128帧的信息。

        具体来说,

        提取3D几何特征,利用VGGT的预训练空间编码器机器预训练头(深度头f_d和相机参数头f_c),对每一帧候选帧,生成相机参数和深度图信息。其中e_ce_{3D}为空间编码器输出的中间特征。

        ​​​​​​​        ​​​​​​​        ​​​​​​​              \left \{ E_i^m,K_i^m \right \}=f_c(e_c),\left \{ D_i^m \right \}=f_d(e_{3D})

        点云重建与体素化,将深度图反投影到点云,每个像素对应一个3D点,其中(u,v)代表像素坐标。

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        \mathcal P_i^m=\bold D_i^m \cdot K_i^{-1}[u|v|1]^T \cdot E_i^{-1}

        当然从深度头中,对于每个值都可以获得一个置信度,对应到点云的点上就是c(p),之后采用有效点过滤,保留置信度大于0.1的点,组成有效点集\mathcal P_{valid}

        自适应体素划分,根据场景尺度动态设置体素大小\Delta,将场景包围盒的最小维度划分为20份,\Delta =\frac{1}{20} \cdot min(bbox(\mathcal P_{valid}))

        帧覆盖计算,利用规定好的体素大小,将点云P_i^m离散化为体素集合V(f_i^m)

        贪心最大覆盖,选择16帧\left \{ f_i^k \right \}_{i=1}^{N_k},最大化总覆盖体素,输出S作为关键帧索引。

3、训练过程

数据集

        全部基于ScanNet训练集的室内场景,问答数据来自ScanQA,SQA3D,以及新增70KQA对的自建数据,覆盖7类空间任务。总共QA120K样本,每个样本为四元组<Q_i,A_i,V_i,M_i>,为问题,答案,视频ID,任务类型。

        由于ScanNet原始场景为RGB-D数据,所以转换为24FPS连续视频,并丢弃低质量帧,排除评估集场景(312个VSI-Bench测试场景)。

        7类空间推理问题包括,物体计数,物体尺寸,房间尺寸,绝对距离,相对距离,相对方向,出现顺序。这个与VSI-Bench的空间问题十分相近

训练细节

        训练过程分为SFT和GRPO两个阶段,均冻结空间编码器部分,监督训练SFT,采用标准交叉熵损失,训练1个epochs (7500steps),之后强化学习训练,先冷启动,用Qwen2.5-VL-72B生成CoT数据,筛选高奖励样本,之后利用GRPO训练每组采样8条推理路径,奖励函数包括数值型,多选型,文本型三种。

        训练过程中限制视频640x480,16frames。训练过程不用空间帧采样啊,注意!

        推理过程中采用内空间帧采样策略。

4、实验

        在ScanQA和SQA中对于仅视频输入的模型达到SOTA。基于ScanNet的任务,这相当于保留了原有的ScanQA和SQA数据特性。

        VSI-Bench上评估多模态大模型的空间理解能力上达到SOTA,这也与数据集中添加了7类任务密切相关。相当于按着这几个任务做的类似数据集。

参考论文:

[2503.13111] MM-Spatial: Exploring 3D Spatial Understanding in Multimodal LLMs

[2505.23747] Spatial-MLLM: Boosting MLLM Capabilities in Visual-based Spatial Intelligence

http://www.dtcms.com/a/335291.html

相关文章:

  • 【力扣-多数元素 JAVA/Python】
  • CD4+ T细胞激活区分抗PD-L1联合抗CTLA4疗法与单药抗PD-L1治疗的响应差异-空间最近邻分析
  • 民法学学习笔记(个人向) Part.5
  • 【最后203篇系列】032 OpenAI格式调用多模型实验
  • 39.离散化与哈希
  • 数据结构:二叉树的遍历 (Binary Tree Traversals)
  • 杂记 03
  • v-scale-scree: 根据屏幕尺寸缩放内容
  • 基于Python的电影评论数据分析系统 Python+Django+Vue.js
  • 防御保护12-14
  • tmux常用命令
  • Flamingo
  • KingbaseES主备读写分离集群安装教程
  • 字节数据流
  • 北汽新能源半年报:双品牌战略拉动销量增长,多元布局促进转化
  • PIDGen!DecodeProdKey函数分析之四个断点
  • 【大模型应用开发 3.RAG技术应用与Faiss向量数据库】
  • 【leetcode】12. 整数转罗马数字
  • 关于“双指针法“的总结
  • 【Python】Python爬虫学习路线
  • “openfeign“调用接口上传文件报错:Failed to deleted temporary file used for part [file]
  • c++11扩展(c++11并发库)
  • 在职老D渗透日记day18:sqli-labs靶场通关(第26关)get报错注入 过滤or和and基础上又过滤了空格和注释符 ‘闭合 手动注入
  • echarts 画一个饼图,并且外围有一个旋转动画
  • linux下程序运行一段时间无端崩溃/被杀死,或者内存占用一直增大。linux的坑
  • 11.web api 2
  • 模式匹配自动机全面理论分析
  • AI短视频爆火?记录AIGC在影视制作场景的实践教程
  • 大模拟 Major
  • 随机整数列表处理:偶数索引降序排序