让机器人真正“读懂”人类意图,实现自然、流畅的交互,始终是具身智能的核心挑战。尽管语言模型已能理解复杂语义,视觉模型也可精准识别万物,但机器人的指令接收方式仍停留在“文字对话”的单一维度。
——开眼“看”世界,动手“懂”人心
为此,西湖大学&浙江大学最新研究进展,提出了开放式多模态指令的视觉-语言-动作模型(OE-VLA)。
从技术角度来看,该研究工作的本质是将 VLA 模型从单一的语言输入扩展到多模态输入(图像、视频、手写文字等)。
这种扩展不是简单的功能叠加,而是需要模型具备更强的多模态理解和融合能力。
带着这个疑问,本文将从模型的核心架构、处理流程等多个维度解析其背后的设计逻辑,并配合代码深入解读这一研究。看看这个问题是否真的完美解决!
我们开设此账号,想要向各位对【具身智能】感兴趣的人传递最前沿最权威的知识讯息外,也想和大家一起见证它到底是泡沫还是又一场热浪?
欢迎关注【深蓝具身智能】👇
具体介绍 OE-VLA 模型原理之前,我们先来看看传统 VLA 模型在人机交互方面存在的技术难点,进一步了解本研究的提出契机。
技术现状
视觉-语言-动作模型(VLA)从技术发展脉络来看,经历了几个重要阶段:
首先是大语言模型(如ChatGPT、LLaMA、Gemini)在各个领域取得显著成功;
然后是多模态大语言模型(MLLMs)的出现,特别是视觉-语言模型(VLMs)的发展,使得模型能够同时理解语言和视觉信息。
目前的VLA模型已经在多个方面取得了重要进展。
在动作空间建模方面,从最初的将机器人动作离散化为语言标记,到后来使用连续动作作为预测目标,采用RNN、Transformer、扩散网络或流匹配技术来增强模型性能。
在观察增强方面,研究者们致力于改进表示学习、利用历史信息或在世界模型中建立机器人动作的基础。
但不乏存在一些技术难点,例如:
-
交互模式单一:现有VLA模型主要依赖纯语言指令,无法有效处理手势、图像、视频演示等多模态输入,难以适应人类多样化的交流方式。
-
多模态融合复杂:不同模态(语言、图像、视频)信息的表示形式和语义结构差异大,如何在统一架构下高效融合这些异构信息是重大挑战。
-
指令理解开放性:指令形式、内容和复杂度不可预测,模型需具备强泛化能力,理解未见过的指令组合和表达方式。
已有方案分析
针对当前VLA技术方案分析发现:
-
现有视觉-语言模型通过大规模互联网数据训练,具备视觉-语言理解能力,但主要针对网络内容,缺乏物理世界交互优化。
-
传统模仿学习和强化学习在特定任务上有效,但泛化能力有限,难以处理开放式指令。通过增加数据多样性提升泛化能力的方法成本高、效果有限。
存在以下不足:
(1)输入模态单一,仅能处理文本指令;
(2)缺乏系统性开放式指令处理框架;
(3)评估基准不完善,难以全面评估多模态指令下的性能。
▲图1 | 本文提出在四个开放式的机器人操作任务上的OE-VLA模型©️【深蓝具身智能】编译
为解决上述问题,OE-VLA随之提出。其核心创新就是通过统一的神经网络架构,让机器人能够理解和执行这些开放式的多模态指令。
接下来我们将逐步拆解OE-VLA模型,看看是如何设计出能够理解"文字+图片"混合指令的机器人大脑的。
核心架构:三个关键组件的完美配合
▲图2 | OE-VLE模型架构©️【深蓝具身智能】编译
这篇论文提出的OE-VLA模型如图2所示(开放式视觉语言动作模型)就像一个精密的“三层蛋糕”,每一层都有自己的独特功能。
第一层:视觉编码器
使用SigLIP-400M作为"眼睛",负责理解机器人看到的所有图像。无论是工作台上的静态视图,还是机器人手腕相机的动态画面,均由该层处理:
第二层:MLP投影器
这是一个"翻译官",将视觉特征翻译成语言模型能理解的"话语",确保图像信息和文字信息能在同一个"频道"上对话。
第三层:LLM主干网络
选用Qwen-1.5作为"大脑",拥有32k的超长记忆,能够同时处理大量的文字和图像信息。
信息处理流程:从感知到行动
整个模型的工作流程就像一条精密的生产线:
输入端:机器人同时接收观察图像和多模态指令(文字+图片的混合指令)
处理过程:
Step1:视觉编码器处理所有图像,提取视觉特征;
Step2:Qwen分词器处理文本部分,获得语言特征;
Step3:MLP将视觉特征映射到语言空间;
Step4:所有特征按原始位置顺序连接。
输出端:生成离散化的机器人动作令牌(将连续动作空间划分为256个精确档位)
OE-VLA模型主要处理流程(伪代码)
def OE_VLA_pipeline(robot_observations, multimodal_instruction):
"""
输入:
- robot_observations: 机器人观察图像(静态视图 + 手腕相机视图)
- multimodal_instruction: 多模态指令(文本 + 图像混合)
输出:
- robot_actions: 离散化机器人动作序列
"""
# ========== 第一步:视觉编码 ==========
# 处理机器人观察图像
obs_features = SigLIP_encoder(robot_observations)
# 处理指令中的图像
instruction_img_features = []
for img in multimodal_instruction.images:
img_feat = SigLIP_encoder(img)
instruction_img_features.append(img_feat)
# ========== 第二步:文本编码 ==========
# 处理指令中的文本片段
text_features = []
for text in multimodal_instruction.texts:
text_feat = Qwen_tokenizer(text)
text_features.append(text_feat)
# ========== 第三步:特征映射 ==========
# 将视觉特征映射到语言空间
mapped_obs_features = MLP_projector(obs_features)
mapped_img_features = []
for img_feat in instruction_img_features:
mapped_feat = MLP_projector(img_feat)
mapped_img_features.append(mapped_feat)
# ========== 第四步:特征融合 ==========
# 按原始位置顺序连接所有特征
final_sequence = [mapped_obs_features] # 机器人观察放在开头
for i in range(len(text_features)):
final_sequence.append(text_features[i]) # 文本片段
if i < len(mapped_img_features):
final_sequence.append(mapped_img_features[i]) # 对应图像
# 连接成最终输入序列
input_sequence = concatenate(final_sequence)
# ========== 第五步:动作预测 ==========
# 通过LLM生成动作概率分布
action_logits = Qwen_LLM(input_sequence)
# 解码为5步动作块
robot_actions = []
for step in range(5):
# 从256个离散动作bin中选择
action_token = sample_from_distribution(action_logits[step])
continuous_action = discretized_to_continuous(action_token)
robot_actions.append(continuous_action)
return robot_actions
两阶段:循序渐进的学习方式
研究采用了类似人类学习的"由浅入深"策略:
阶段1:多图像定位训练
先让模型学会"看图识物",增强对空间关系的理解能力。例如教小孩先认识"这是苹果,那是香蕉"。
阶段2:开放式指令微调
在掌握基础感知能力后,再训练模型理解复杂的多模态指令。例如"把红色的苹果放到蓝色盒子里"这样的复合指令。
训练阶段的两步流程(伪代码)
# ========== 训练阶段的两步流程 ==========
def train_OE_VLA():
"""两阶段课程学习训练流程"""
# 阶段1:多图像定位预训练
print("阶段1:增强空间关系理解...")
for batch in MGrounding_dataset:
loss = train_multi_image_grounding(batch)
optimize(loss)
# 阶段2:开放式指令微调
print("阶段2:多模态指令学习...")
for batch in multimodal_instruction_dataset:
predicted_actions = OE_VLA_pipeline(batch.observations, batch.instructions)
loss = compute_action_loss(predicted_actions, batch.ground_truth_actions)
optimize(loss)
背后选择的深层逻辑
为什么选择LLaVA-Next-Interleave?
这个基础模型就像一位"多面手",天生具备处理自由形式多图像输入的能力,在相关测试中表现优异。
为什么用离散化动作而非扩散策略?
该研究有个清晰的目标:专注于让机器人理解多样化的开放式任务,而不是追求动作控制的极致精确。离散化动作可以直接由语言模型生成,大大简化了模型设计。
动作概率分布可以表示为:
实验框架:CALVIN基准
该研究选择了CALVIN作为主要的实验平台
包含1,000个评估序列,覆盖34个不同任务,每个评估样本都是一个包含五个连续子任务的长期任务序列。
但仅仅测试传统的语言指令是不够的。为了真正验证OE-VLA模型处理多模态指令的能力,研究者创造性地构建了两个全新的基准测试:
-
OE-CALVINbase:基础难度的多模态指令测试
-
OE-CALVINhard:高难度的多模态指令测试
▲图3 | 两个具有不同开放任务指令的新基准©️【深蓝具身智能】编译
多模态指令的来源解析
这里是(小编认为)整个研究最精彩的部分——如何"制造"出各种多模态指令的?
-
OE-CALVINbase:在基础版本中,多模态指令的构建相对"友好":
(1)物体图像来源:直接从机器人的环境观察中裁剪物体图像,使图像与实际操作环境完全一致(视角、光照、背景都与机器人"眼中所见"相同)。
(2)光学指令特征:采用简洁的纯色背景、使用标准的规整字体、确保文字信息清晰易读;
(3)目标图像和视频演示:从同一环境中直接捕获;保持视角保持,没有视觉"跳跃"(给机器人看"标准教学视频")。
-
OE-CALVINhard:高难度版本则模拟了真实世界的复杂性:
(1)物体图像来源:从网络获取的物体图像,图像风格、背景、光照条件完全不同,模拟用户可能提供的各种"参考图片"(用手机拍的照片或网上找的图片来指导机器人)。
(2)光学指令特征:复杂的特殊背景、手写字体或不规则字体、模拟真实场景中可能遇到的各种文字形式;
(3)目标图像和视频演示:通过不同环境和视角捕获;有视角转换和环境差异(模拟用户在不同场景下提供的演示)。
图4 | 将传统数据集转换为具有开放式指令的目标数据集的数据构建方法©️【深蓝具身智能】编译
多模态指令构建的四大策略
研究设计了四种方法,将现有的语言指令数据"升级"为多模态指令:
(1)视觉对象说明(VOS):用开源模型识别指令中提到的物体,然后用真实图片替换文字描述。
基础版:
原始指令:"拿起红色的杯子"
多模态指令:[机器人环境中裁剪的红色杯子图片]
困难版:
原始指令:"拿起红色的杯子"
多模态指令:[从网络获取的各种风格的红色杯子图片]
(2)光学指令跟随(OIF):在图像上直接渲染文字指令,通过变换字体、颜色、位置增加多样性。
基础版:在简洁背景上用标准字体显示"向左移动"
困难版:在复杂背景上用手写字体显示"向左移动"
(3)视频演示学习(VDL):用连续的图像帧序列替换文字描述,让机器人通过"看视频"学习任务。
基础版:同一视角下的标准演示视频序列
困难版:不同视角、不同环境下的演示视频序列
(4)视觉目标达成(VGR):提取固定长度的图像片段,用最后一帧作为目标图像,训练机器人的目标导向能力。
基础版:同环境下的目标状态图像
困难版:不同环境、不同视角下的目标状态图像
数据构建的流程示例(伪代码)
def build_multimodal_instruction(original_text_instruction):
"""将原始文本指令转换为多模态指令"""
instruction_type = random.choice(['VOS', 'OIF', 'VDL', 'VGR'])
if instruction_type == 'VOS': # 视觉对象说明
# "拿起红色杯子" -> [红色杯子图片]
objects = extract_objects(original_text_instruction)
object_images = get_object_images_from_database(objects)
return replace_text_with_images(original_text_instruction, object_images)
elif instruction_type == 'OIF': # 光学指令跟随
# 在图像上渲染文字指令
rendered_instruction = render_text_on_image(original_text_instruction)
return rendered_instruction
elif instruction_type == 'VDL': # 视频演示学习
# 用视频帧序列替换文字描述
demo_frames = sample_demonstration_frames()
return demo_frames
elif instruction_type == 'VGR': # 视觉目标达成
# 用目标状态图像替换目标描述
goal_image = extract_goal_image()
return goal_image
构建策略的深层考量
(1)设计了两个难度层次:
OE-CALVINbase就像"实验室条件":控制变量,减少干扰因素;专注测试模型的核心多模态理解能力;为模型提供"理想"的学习和测试环境。
OE-CALVINhard则像"野外环境":引入真实世界的各种"噪声";测试模型的泛化和鲁棒性;验证模型在实际应用中的可靠性。
(2)数据来源的策略性选择:
环境内vs环境外:基础版使用环境内数据,确保视觉一致性;困难版使用环境外数据,测试跨域泛化能力。
标准化vs多样化:基础版追求标准化,减少视觉干扰;困难版追求多样化,模拟真实应用场景。
实验设计的科学性
这种分层设计体现了严谨的科学实验思维:
1. 控制变量:通过基础版控制干扰因素,专注测试核心能力;
2. 逐步加压:通过困难版逐步增加真实世界的复杂性;
3. 全面覆盖:四种不同类型的多模态指令确保测试的完整性;
4. 现实导向:困难版的设计直指实际应用场景。
这样的实验设计不仅验证了模型的技术能力,更重要的是测试了其在真实世界中的实用性。
让我们通过三个关键的实验结果来深入理解这项研究的核心发现。
传统语言指令下的性能对比
▲表1 | 不同机器人策略模型在ABC→D分割下的性能。©️【深蓝具身智能】编译
首先看表1的结果,这里回答了一个关键问题:
当OE-VLA模型处理传统的纯语言指令时,性能是否会因为多模态设计而受损?
核心发现:
-
OE-VLA1b在处理纯语言指令时,性能与不使用扩散策略头的KosMos模型相当;
-
OE-VLA7b在CALVIN ABC→D设置下达到了最佳性能,平均成功序列长度为2.99;
关键洞察:
该结果证明了多模态能力的扩展并没有以牺牲传统语言理解能力为代价。(就像一个人学会了手语,但并没有忘记如何说话)。研究者特别提到选择了不带扩散策略头的基线模型进行公平比较。
有趣的是,微调后的OpenVLA表现并不突出,研究者将此归因于其只依赖单视图图像输入的局限性。
这进一步证明了多视角输入(静态视图+手腕相机视图)的重要性。
OE-CALVINbase基准上的多模态表现
表2展示了模型在处理多模态指令时的表现,这是整个研究的核心验证。
▲表2 | 在作者引入的OE-CALVINbase(ABC→D)基准测试中的性能。©️【深蓝具身智能】编译
核心发现:
-
OE-VLA1b的平均成功序列长度达到2.75,甚至略高于语言条件基线;
-
在视觉对象说明(VOS)任务上表现异常出色;
-
OE-VLA7b的表现进一步超越了传统的基于语言的基线。
关键洞察:
这个结果“颠覆”了我们的直觉:通常我们会认为多模态指令比纯文本指令更难处理,但实验结果显示:图像信息实际上可能比文字描述更加直观和准确。
特别值得注意的是,研究者提到"图像指令的数量几乎是纯文本指令的四倍",这种数据配置让大型模型在多模态任务上获得了显著的性能提升。
数据量和模型规模的协同效应在多模态学习中尤为明显。
OE-CALVINhard的挑战性验证
表3的结果回答了最关键的问题:
模型在面对真实世界的复杂多模态指令时表现如何?
▲表3 | 在作者引入的OE-CALVINhard(ABC→D)基准测试中的性能。©️【深蓝具身智能】编译
核心发现:
-
尽管相比OE-CALVINbase有一定性能下降,但模型仍能处理包含网络图像、不同环境视角和手写指令的挑战性任务;
-
在视觉对象说明(VOS)任务上继续保持竞争力;
-
OE-VLA7b进一步缓解了性能下降,表现与传统语言条件VLA相当。
关键洞察:
这个结果证明了模型的泛化能力。从环境内的标准图像到网络上的各种图像,从规整字体到手写文字,从统一视角到多样化视角——这些变化模拟了真实应用场景中的各种"噪声"。
研究特别指出视觉目标达成(VGR)任务仍然困难,"由于单张图像包含的信息有限"。
评估流程(伪代码)
def evaluate_model():
"""在不同基准上评估模型性能"""
# 传统语言指令评估
calvin_score = evaluate_on_CALVIN(text_instructions_only=True)
# 基础多模态指令评估
oe_calvin_base_score = evaluate_on_OE_CALVIN_base(multimodal_instructions=True)
# 困难多模态指令评估
oe_calvin_hard_score = evaluate_on_OE_CALVIN_hard(challenging_multimodal_instructions=True)
print(f"CALVIN语言指令: {calvin_score}")
print(f"OE-CALVIN基础版: {oe_calvin_base_score}")
print(f"OE-CALVIN困难版: {oe_calvin_hard_score}")
小结:3个关键洞察
1. 多模态不是负担,而是助力
传统观念认为增加模态会增加复杂性,但实验证明,恰当设计的多模态指令实际上可以比纯文本指令更有效。图像的直观性补偿了语言的模糊性。
2. 数据规模与模型规模的协同效应
OE-VLA7b在多模态任务上的显著提升表明,大模型+大数据的组合在多模态学习中释放了巨大潜力。
3. 泛化能力的边界与可能
从OE-CALVINbase到OE-CALVINhard的性能变化,清晰地展现了当前方法的泛化边界。虽然存在性能下降,但模型仍能保持相当的竞争力。
这项研究最大的贡献在于,为“多模态机器人控制”提供了一个可行的框架,展示了如何让机器人理解"文字+图片"的混合指令。
未来的改进空间包括:更精细的动作表示方法、更复杂的多模态融合策略,以及增强对现实世界复杂环境的适应能力。
这就像是给机器人装上了一副"智能眼镜",不仅能看懂图片,还能理解文字,更重要的是能将两者结合起来指导自己的行动。虽然还不够完美,但已经迈出了重要的第一步。