目录
一、SpatialVLM
1、概述
SpatialVLM是最早的依赖传统VLMs实现3D空间推理能力的论文,在24年1月由DeepMind团队提出,当时对比的还是GPT4v,Gemini-pro,qwen-vl-plus这一组大模型,这些大模型在空间推理上能力较差,究其原因是数据集的问题,缺少含有空间数据的图文对信息。
所以SpatialVLM设计了一个新的数据集,然后在VLM上训练获得了强大的空间推理能力。
从图例来看,SpatialVLM也是首次实现在VLM模型上输出准确的3D空间中具体数值信息的模型,其实这也归根于数据集中的深度信息和点云信息。

2、方法
Spatial VQA Dataset
数据集从互联网图像中保留场景级照片,并设定一个自动化过程,无需人工标注。

(1)语义过滤:利用CLIP模型对图像分类,保留室内或室外场景照片,拒绝"单物体""白色背景商品图""GUI"截图等不适合空间推理的图像
(2)物体中心信息提取:整合多个专家模型,用开放词汇检测模型定位物体边界框,再用FlexCap生成该区域1-6词的差异化描述,避免传统检测器粗粒度歧义(很妙啊),之后用ShapeMask模型分割物体像素簇,支持后续3D重建
(3)2D->3D转换:采用ZoeDepth预测metric depth,利用内参转换到3D点云,并检测水平面信息,拟合平面方程,进而将点云转换到世界坐标系。(在appendix中有完整的介绍)
(4)歧义消除:比如同一个蛋糕,指代图像中的若干个蛋糕,所以计算所有物体描述的CLIP,对物体名字相似的物体加以方位词,分别这两个物体,如果没有解决,直接剔除该图像。

(5)QA模版生成:包括38类空间问题,定性问题和定量问题各占一半,每类问题含有20+问题模版和10+的答案模版,避免组合重复。对于答案生成,空间关系计算则基于物体3D bbox中心计算距离和方位,另外引入人类对齐处理,也就是准确数据如何转换为人类的模糊语言,比如数值四舍五入(0.86m->约1m),概率化采样单位(80%采用公制单位,20%采用英制)

Spatial VQA dataset如下:

架构设计
沿用PaLM-E(的更小体量PaLM 2-S)架构实现,数据集混合原有的PaLM数据集(95%)和该论文的Spatial VQA dataset(5%),训练过程完全依赖PaLM的训练方法,PaLM架构如下,这个PaLM模型是一个具身智能领域的多模态大语言模型,主要是通过给定假设,给定图像条件,来实现规划和推理。但是这个模型也是缺乏3D信息的,只是依赖具身智能相关和通用图像信息来硬训练的。

训练过程解冻ViT微调,使得视觉编码器学习几何特征。
链式空间推理
将一个复杂的LLM问题拆解为若干个简单的空间子问题,并利用SpatialVLM发起子问题查询,最终利用LLM汇总子答案,合成结论。
比如下图,询问*"三个可乐罐是否构成等腰三角形?(最长边与最短边差<0.1米)"*
链式推理利用SpatialVLM计算每一个边的距离,最后利用LLM汇总,得到误差内是一个等腰三角形。

VLA结合
利用SpatialVLM生成奖励信号,来指导机器人动作优化。
比如让机器臂去抓一个橘色茶杯,那么手与橘色茶杯的距离将作为机械臂强化学习的奖励,根据实时估计物体距离,生成单调递增的奖励曲线。

3、实验
在数据集中其实引入了一部分的高斯噪声,但是在实验中发现,引入一部分高斯噪声σ=0.2训练,仍能保证模型训练稳定,这也就证明了如果深度相机存在问题的情况下,仍然可以保证一定的准确性。下表为高斯噪声在σ=0.2下鲁棒性最高。答案在真实值的50%-200%范围内更高。

当然当时没有那么多的评测benchmark,只能在正确性和稳定性上进行判断。这里评测的是对于时序问题的情况:

二元谓词情况,可以理解为传统问题

相比于backbone(PaLM)的对比,OKVQA和VQAv2都是通用知识的问题,OK-VQA更加依赖非视觉的外部知识,纯推理题,所以有所降低,但是对于VQAv2这种依赖视觉的推理知识可以提升一点。

二、SpatialRGPT
1、概述
SptialRGPT同样是24年的论文(NVIDIA),基于SpatialVLM的问题进一步优化。
动机:同样是VLMs在空间推理任务上深度信息缺失的问题,但是扩展到区域级场景,整体上学习了SpatialVLM的很多操作,比如数据合成,空间推理时的物体歧义,链式推理,人类标注基准等,但SpatialRGPT相比于SpatialVLM提出了一个新的区域级评估,SpatialRGPT-Bench,覆盖更广的环境(包括室内,室外,模拟环境),另外SpatialVLM只是利用深度信息点云信息来构建问答数据集中的文本信息,SpatialRGPT则将深度估计器直接作为一个插件,并列于图像提取器,用于提取不同的数据信息,保证数据与文本之间的高度统一。

2、方法
SpatialRGPT数据集
Open Spatial Dataset数据集分为两步,将单图生成三维场景图,再通过LLM生成复杂的VQA对。
对于数据集的图像来源主要为OpenImages数据集(1.7M图像)。
(1)图像过滤:通过CLIP-based开放词汇分类模型(这里用的EVA-CLIP)进行图像分类,方法与Spatial-VLM相同,并且定义正面标签和负面标签,过滤掉负面的标签信息(700K)。正例更专注于自然场景。

(2)开放词汇检测与分割:优化了SpatialVLM中的专家模型,这里先利用图像标注模型 Recognize Anything识别所有对象类标签,确保泛化性,之后采用GroundingDino来实现开放词汇下检测,获取对象边界框,采用SAM-HQ模型细化边界框为高精度掩码,确保对象轮廓准确。
这一套流程可以理解为,图像标注模型获得整张图片中有哪些物品,开放词汇下检测获取每一个物体的检测框,SAM则根据这个检测框和文字信息,获得他的准确物体掩码。

(3)度量深度估计:从单张图像中预测深度图,使用Metric3Dv2模型预测深度和表面法线,之后将深度图投影到3D点云,感觉以往的单图估计方法应该不太准确。
(4)相机校准:使用WidCamera模型预测4自由度内参,并利用PerspectiveFields 获取每个像素上的向量和纬度值,转换为相机外参,通过旋转矩阵将点云从相机坐标系转换到世界坐标系。这种方法也是后来很常用的方法,没有采用SpatialVLM中依赖地面分割,得到地面坐标系的方法,因为这种方法可能因为地面没有正确分割而失败。
(5)构建3D场景图:3D场景图类似于一个集合,比如Graph=(Nodes,Edges),其中节点表示物体实例(如椅子,苹果),边表示物体间空间关系(如椅子在苹果左侧)。
首先在原有的世界坐标系下的场景点云图中,通过移除离群点,体素下采样,DBSCAN剔除噪声,并通过两个视角下的点云信息,使用轴对齐边界框(AABB)拟合可以获得空间关系,并且提到方向包围盒OBB虽然更准确,但是缺乏物体姿态估计。

对于每个位置的空间关系,定义相对关系和度量关系两种,最终输出场景图。比如下面这种:
python
{
"nodes": [
{"id": 0, "label": "apple", "width": 0.2, "height": 0.3},
{"id": 1, "label": "table", "width": 1.5, "height": 0.8}
],
"edges": [
{"source": 0, "target": 1, "relation": "on_top", "distance": 0.4},
{"source": 0, "target": 1, "relation": "left", "horizontal_dist": 0.3}
]
}
(6)生成模版基础VQA对:提取场景图节点的信息,使用预定义的模版生成问题,比如下图的模板对。

(7)依赖LLM生成复杂的VQA对:依赖于Llama3-70B结合(6)中的基础VQA对,生成更加依赖语言的描述,创建推理性问题。
(8)整合数据集:最终数据集包含8M的模版基础QA和0.7M的LLM-based QA,并利用人类验证过滤错误标注。
Open Spatial Dataset数据集如下:

SpatialRGPT模型架构
SpatialRGPT依赖LLaMA2-7B大语言模型主干,输入部分采用双分支提取器,一个视觉编码器,一个区域特征提取器以及RGB和Depth连接器用于与大语言模型对齐。
视觉编码器采用冻结的CLIP-ViT-L/14提取全局特征信息,分辨率为336x336。
深度编码器权重采用RGB编码器初始化,同样采用CLIP-ViT-L/14提取特征,在Visual Backbone中关闭,不作为LLM的输入,只输入视觉编码器的输出CLIP特征。
区域特征提取器依赖用户给定的框或掩码,作为定向区域的条件,用于提取局部CLIP特征,具体来说,依赖图像和深度的CLIP特征作为输入,经过两层反卷积上采样特征图,在掩码区域执行MaskPooling,边界框区域计算RoIAlign,从而生成区域RGB嵌入和区域深度嵌入。
Connector层通过独立的线性层来对齐CLIP特征与LLM嵌入语言空间。

3、训练方法
采用三阶段训练,完全冻结CLIP主干,减少训练成本。
先单独利用CC3M图像-文本对训练RGB Connector对齐。
在用MMC4+COYO通用VLM数据,进行视觉语言预训练,训练多模态信息,此时训练LLM+Region Feature Extractor。
最后引入OSD数据和区域指令数据,和通用VQA数据,强化空间推理能力,训练深度Connector和Region Feature Extractor。
4、实验
Spatial-RGPT Bench
SpatialRGPT-Bench是论文中提出的首个专为评估视觉语言模型(VLM)3D空间认知能力设计的基准。
解决现有VLM在3D空间理解(如方向、距离、尺寸)上存在显著缺陷,如SpatialVLM模型依赖2D人工标注产生透视歧义,并且缺乏更多场景的需求。
数据来源:包括室内场景SUNRGBD,ARKitScenes,室外场景nuScenes,KITTI,模拟场景Hypersim。
数据标注:来自基于Omni3D预处理的3D立方体标注,并带有语义类别标签,所有物体在同一个相机坐标系下。
问题设计:包括定性问题(方向关系,尺寸关系)与定量问题(距离,尺寸,方向)
指标设计:定性问题--准确率,定量问题--成功率(误差±25%),相对误差,方向误差。并利用GPT-4作为裁判,判断定性问题中是否满足真值,定量问题上单位的标准性和误差计算。
基线模型:实验中对比了三类基线包括盲测LLM(如GPT-4,仅文本输入),普通VLM(如GPT-4V,LLaVA-1.6),区域感知VLM(如KOSMOS-2框输入,RegionVILA掩码输入,GPT-4V+SoM交互标注,这一类都具有支持区域提示输入的特性)
在eval中,定性实验中方向判断近乎完美,并且整体上显著超越基线。定量实验中由于深度信息的引入,显著提升度量精度。

另外提到的一个SpatialRGPT-VILA模型是直接在预训练VILA-1.5上微调得到的,更加节省训练成本,在保留VILA所有语言模型和视觉编码器的情况下,将深度特征集成到统一框架上。在实验中测试通用benchmark,并没有因为微调降低原有的模型学习到的图像和视频理解信息。
其中SpatialRGPT更适合基础空间感知(比如机器人奖励),Spatial-VILA更适合复杂环境实时推理(多跳推理)。

同样的,SpatialRGPT类比SpatialVLM也可以计算奖励用于机器人的路径规划下。

多跳推理。

参考论文:
[2401.12168] SpatialVLM: Endowing Vision-Language Models with Spatial Reasoning Capabilities
[2406.01584] SpatialRGPT: Grounded Spatial Reasoning in Vision Language Models