EMMA-X:新加坡科技设计大学推出具身多模态动作模型,使夹爪机器人具备空间推理和任务规划能力

128 阅读4分钟

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


🚀 快速阅读

  1. 模型介绍:EMMA-X是新加坡科技设计大学推出的具身多模态动作模型,具备70亿参数,结合层次化的具身数据集。
  2. 主要功能:增强空间推理、具体化任务规划、轨迹分割、减少幻觉问题、层次化规划数据生成。
  3. 技术原理:基于BridgeV2数据集,采用前瞻性空间推理、轨迹分割策略和Gemini生成任务推理。

正文(附运行示例)

EMMA-X 是什么

公众号: 蚝油菜花 - Emma-X

EMMA-X是由新加坡科技设计大学推出的具身多模态动作模型,具备70亿参数,通过在链式思维推理数据上微调OpenVLA创建。该模型结合层次化的具身数据集,包含3D空间运动、2D夹爪位置和有根据的推理,推出一种新颖的轨迹分割策略,用夹爪的开合状态和机器人手臂的运动轨迹,增强有根据的任务推理和前瞻性空间推理。

在真实世界的机器人任务中,尤其是在需要空间推理的任务上,EMMA-X取得了显著的性能提升。

EMMA-X 的主要功能

  • 增强空间推理:基于预测夹爪的未来2D位置和3D运动计划,优化机器人的长期任务规划能力。
  • 具体化任务规划:模型结合视觉和任务推理,生成适应环境的行动策略,提高机器人执行复杂任务的能力。
  • 轨迹分割:用夹爪状态和机械臂运动轨迹,将操作序列分割成语义上相似的动作段,增强任务理解和运动规划。
  • 减少幻觉问题:结合视觉图像和任务推理,减少任务推理过程中的误差和幻觉。
  • 层次化规划数据生成:为每个操作段生成2D夹爪位置和3D空间运动,及具体化推理,支持机器人的决策过程。

EMMA-X 的技术原理

  • 层次化具身数据集:基于BridgeV2数据集构建,包含60,000条机器人操作轨迹,每条轨迹都附有详细的空间推理和任务推理信息。
  • 前瞻性空间推理:模型预测夹爪的未来位置和运动计划,指导机器人的即时动作与长期目标对齐。
  • 轨迹分割策略:用HDBSCAN算法和自定义的距离度量方法,结合末端执行器的运动轨迹和夹爪状态,动态分割操作序列。
  • Gemini生成任务推理:用Gemini模型为每个分段生成子任务和具体化推理,提高任务理解的准确性。

如何运行 EMMA-X

安装依赖

# 创建并激活conda环境
conda create -n openvla python=3.10 -y
conda activate openvla

# 安装PyTorch
conda install pytorch torchvision torchaudio pytorch-cuda=12.4 -c pytorch -c nvidia -y

# 安装其他依赖
pip install -r requirements-min.txt

# 安装Flash Attention 2
pip install packaging ninja
ninja --version; echo $?  # 验证Ninja是否安装成功
pip install "flash-attn==2.5.5" --no-build-isolation

运行示例

from transformers import AutoModelForVision2Seq, AutoProcessor
from PIL import Image
import torch

# 加载EMMA-X模型
vla = AutoModelForVision2Seq.from_pretrained(
    "declare-lab/Emma-X",
    attn_implementation="flash_attention_2",
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    trust_remote_code=True
).to("cuda:0")

# 获取图像输入并格式化提示
image: Image.Image = get_from_camera(...)
prompt = "In: What action should the robot take to achieve the instruction\nINSTRUCTION: \n{<Instruction here>}\n\nOut: "

# 预测动作
action, grounded_reasoning = vla.generate_actions(
    image=image, prompt_text=prompt, type="act", do_sample=False,
    max_new_tokens=512, do_sample=False
)

print("Grounded Reasoning:", grounded_reasoning)

# 执行动作
robot.act(action, ...)

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发非常感兴趣,我会每日跟你分享最新的 AI 资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!

🥦 微信公众号|搜一搜:蚝油菜花 🥦