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

【多模态】Magma多模态AI Agent

1. 前言

        微软杨建伟团队,最近在AI Agent方面动作连连,前两天开源了OmniParser V2,2月26日又开源了Magma,OmniParser专注在对GUI的识别解析,而Magma则是基于多模态技术,能够同时应对GUI和物理世界的交互,两者有一定的差异。后续也会带来OmniParser的实战分享,目前还在实测中。

        话不多说,先看下Magma能做什么?                主要是两类任务:

  • 多模态理解(Multimodal Understanding):能够理解来自不同领域(包括数字世界和物理世界)的多模态输入,不仅在语义层面,还具备空间和时间上的理解能力。
  • 多模态动作预测(Multimodal Action Prediction):能够将长时序任务分解为精准的动作序列,使 AI  Agent系统能够有效执行。

2. Magma是什么

        Magma 是一个多模态 AI  Agent的基础模型。具备感知多模态世界的能力,并能够执行目标驱动的行动。也就是说,Magma主要是实现以下目标:

  • 语言和时空智能:具备语言理解能力和时空智能,以理解图像和视频,将自身行动建立在观察的基础上,并进一步将外部目标转化为行动计划和执行方案。
  • 数字与物理世界:不局限于数字世界(如网页导航)或物理世界(如机器人操作),能够跨越这两个世界,就像人类一样自由切换和适应。

        基于上述理念,Magma构建了一个新的预训练数据集,其中主要包含来自真实世界的无标签视频,以及现有的带注释的智能体数据。同时,设计一种新的预训练框架,统一训练三种模态(文本、图像和动作),以训练一个全新的多模态 AI  Agent基础模型——Magma。

        可以看到,Magma是直接训练一个通用的基础模型,使其能够以零样本(zero-shot)方式适应不同的下游任务。但是简单地组合这些数据集并不能直接提升模型能力,因为多模态理解主要依赖文本(例如图像和视频的文本描述),而执行动作任务主要依赖空间信息(如 UI 的 2D 坐标或机器人手臂的 7-DoF 运动)。为了解决该问题,需要具备两种任务的能力:

  • 动作对齐(Action Grounding):模型需在给定视觉-空间观察的情况下预测下一步可能的可执行动作。
  • 动作规划(Action Planning):基于视觉观察生成合理的未来动作序列。

3. 怎么预训练Magma

        训练Magma,需要大规模异构训练数据,包括现有的多模态理解数据、UI 导航数据、机器人操作数据,以及无标签的真实世界视频。此外,也提出了一种新的数据采集流程,以可扩展且低成本的方式收集无标签视频。为了从原始视频和机器人轨迹中提取有用的动作监督信号,需要精确去除视频中的摄像机运动,然后将物体的运动转换为“动作”监督信号,用于模型训练。这些数据为模型提供独特的学习信号,帮助它理解跨模态关联,并提升其长时序动作预测与规划能力。

        此外,由于文本和动作在本质上存在巨大差异(文本是离散的,而视觉 token 是连续的),这导致了跨模态学习的鸿沟。为了解决这一问题,提出一种通用预训练框架,统一训练文本、图像和动作三种模态。更具体地说,提出了Set-of-Mark(SoM)和 Trace-of-Mark(ToM)作为辅助任务,使不同输出模态之间建立桥梁。不仅增强文本与动作模态之间的对齐,还促进了图像与动作模态的结合,从而实现更好的多模态协同理解和决策能力。

4. 安装Magma以及测试

clone项目到本地:

git clone https://github.com/microsoft/Magma

cd Magma

创建并激活conda环境

conda create -n magma python=3.10 -y

conda activate magma

升级 pip 并安装基础依赖

pip install --upgrade pip

pip install -e .

安装训练所需的依赖

pip install -e ".[train]"

安装agent相关的依赖

pip install -e ".[agent]"

使用 Huggingface Transformers 进行推理

加载模型和处理器:

from PIL import Image
import torch
from transformers import AutoModelForCausalLM
from transformers import AutoProcessor dtype = torch.bfloat16
model = AutoModelForCausalLM.from_pretrained("microsoft/Magma-8B", trust_remote_code=True, torch_dtype=dtype)
processor = AutoProcessor.from_pretrained("microsoft/Magma-8B", trust_remote_code=True)
model.to("cuda")# Inference
image = Image.open("./assets/images/magma_logo.jpg").convert("RGB")convs = [{"role": "system", "content": "You are agent that can see, talk and act."},            {"role": "user", "content": "<image_start><image><image_end>\nWhat is the letter on the robot?"},
]
prompt = processor.tokenizer.apply_chat_template(convs, tokenize=False, add_generation_prompt=True)
inputs = processor(images=[image], texts=prompt, return_tensors="pt")
inputs['pixel_values'] = inputs['pixel_values'].unsqueeze(0)
inputs['image_sizes'] = inputs['image_sizes'].unsqueeze(0)
inputs = inputs.to("cuda").to(dtype)generation_args = { "max_new_tokens": 500, "temperature": 0.0, "do_sample": False, "use_cache": True,"num_beams": 1,
} with torch.inference_mode():generate_ids = model.generate(**inputs, **generation_args)generate_ids = generate_ids[:, inputs["input_ids"].shape[-1] :]
response = processor.decode(generate_ids[0], skip_special_tokens=True).strip()print(response)

5. UI Agent

        构建 UI Agent。由于模型经过 Set-of-Mark 和 Trace-of-Mark 预训练,因此它与 OmniParser 具有天然的协同作用。关于OmniParser,可以参考《OmniParserV2+DeepSeek:基于纯视觉的 GUI Agent解决方案》。将它们结合在一起后,可以获得一个 UI Agent,并运行以下命令:

python agents/ui_agent/app.py

        Magma 模型不仅具备 动作落地(action-grounding) 能力,还具备多模态理解和推理能力。因此,可以用文本让模型预测点击位置,例如:

        指令:跳转到排名最高的帖子        

        还可以自由提问,只需在文本提示的开头添加前缀 "Q:",例如:

        Q: 帖子标题是什么?

6. 参考材料

【1】GitHub - microsoft/Magma: [CVPR 2025] Magma: A Foundation Model for Multimodal AI Agents

【2】Magma: A Foundation Model for Multimodal AI Agents

相关文章:

【多模态】Magma多模态AI Agent

1. 前言 微软杨建伟团队&#xff0c;最近在AI Agent方面动作连连&#xff0c;前两天开源了OmniParser V2&#xff0c;2月26日又开源了Magma&#xff0c;OmniParser专注在对GUI的识别解析&#xff0c;而Magma则是基于多模态技术&#xff0c;能够同时应对GUI和物理世界的交互&…...

DeepSeek掘金——DeepSeek R1驱动的PDF机器人

DeepSeek掘金——DeepSeek R1驱动的PDF机器人 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人。逐步学习如何增强AI检索能力,并创建一个能够高效处理和响应文档查询的智能聊天机器人。 本指南将引导你使用DeepSeek R1 + RAG构建一个功能性的PDF聊天机器人…...

DeepSeek在PiscTrace上完成个性化处理需求案例——光流法将烟雾动态可视化

引言&#xff1a;PiscTrace作为开放式的视图分析平台提供了固定格式的类型参数支持个性化定制处理需求&#xff0c;本文一步步的实现光流分析按照不同需求根据DeepSeek的代码处理视频生成数据。 光流法&#xff08;Optical Flow&#xff09;是一种基于图像序列的计算机视觉技术…...

explore与explode词源故事

英语单词explore来自古法语&#xff0c;源自拉丁语&#xff0c;由前缀ex-&#xff08;出来&#xff09;加词根plor-&#xff08;叫喊&#xff09;以及末尾的小尾巴-e组成&#xff0c;字面意思就是“喊出来&#xff0c;通过叫喊声赶出来”。它为什么能表示“探索”呢&#xff1f…...

LeeCode题库第三十七题

37.解数独 项目场景&#xff1a; 编写一个程序&#xff0c;通过填充空格来解决数独问题。 数独的解法需 遵循如下规则&#xff1a; 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。&#xff08;请…...

【数字信号处理:从原理到应用的深度剖析】

一、数字信号处理的原理 数字信号处理&#xff08;DSP&#xff09;是一种通过数学算法对信号进行分析、处理和转换的技术。其核心在于对离散时间信号的操作&#xff0c;目的是提取有用信息或将信号转换为更易于解释的形式。 &#xff08;一&#xff09;信号的数字化过程 1. …...

MySQL 数据库安全配置最佳实践

文章目录 MySQL 数据库安全配置最佳实践账户与权限管理账户最小化原则权限最小化配置密码策略强化 认证与访问控制禁用匿名账户启用安全认证 网络安全防护访问源限制禁用远程root访问启用SSL加密 日志审计与监控全量审计配置二进制日志管理 服务端安全加固关键参数配置文件权限…...

小红书自动评论

现在越来越多的人做起来小红书&#xff0c;为了保证自己的粉丝和数据好看&#xff0c;需要定期养号。 那么养号除了发视频外&#xff0c;还需要积极在社区互动&#xff0c;比如点赞、评论等等&#xff0c;为了节省时间&#xff0c;我做了一个自动化评论工具。 先看效果 那这个是…...

OpenCV图像认知(一)

OpenCV&#xff1a; 是由Intel公司俄罗斯团队发起并参与和维护的一个计算机视觉处理开源软件库&#xff0c;支持与计算机视觉和机器学习相关的众多算法 OpenCV-Python&#xff1a; OpenCV-Python是一个Python绑定库&#xff0c;旨在解决计算机视觉问题。 Python是一种由Gui…...

自学微信小程序的第六天

DAY6 1、使用录音API首先需要通过wx.getRecorderManager()方法获取到一个RecorderManager实例,该实例是一个全局唯一的录音管理器,用于实现录音功能。 表32:RecorderManager实例的常用方法 方法名称 说明 start() 开始录音 pause() 暂停录音 resume() 继续录音 stop() 停止…...

C++动态与静态转换区别详解

文章目录 前言一、 类型检查的时机二、安全性三、适用场景四、代码示例对比总结 前言 在 C 中&#xff0c;dynamic_cast 和 static_cast 是两种不同的类型转换操作符&#xff0c;主要区别体现在类型检查的时机、安全性和适用场景上。以下是它们的核心区别&#xff1a; 一、 类…...

Qt6.8编译项目找不到文件——6.8.2\msvc2022_64\include\QtWidgets\QMainWindow does not exist.

问题&#xff1a;Error: dependent ‘…\Qt6.8.2\6.8.2\msvc2022_64\include\QtWidgets\QMainWindow’ does not exist. jom: D:\Temp\untitled1\build\Makefile [release] Error 2 20:20:43: 进程"D:\ProgramFiles\Develop\Qt6.8.2\Tools\QtCreator\bin\jom\jom.exe"…...

AI工具导航平台功能模块之混合分类器功能说明文档

AI工具导航平台功能模块之混合分类器功能说明文档 这是我最近正在开发的AI工具信息平台的部门功能模块混合分类器的说明文档&#xff0c;我的AI工具信息平台基于streamlit架构&#xff0c;整理出来与大家分享。 该程序的混合分类器采用规则引擎与深度学习模型协同工作的架构&…...

【时序预测】在线学习:算法选择(从线性模型到深度学习解析)

——如何为动态时序预测匹配最佳增量学习策略&#xff1f; 引言&#xff1a;在线学习的核心价值与挑战 在动态时序预测场景中&#xff08;如实时交通预测、能源消耗监控&#xff09;&#xff0c;数据以流式&#xff08;Streaming&#xff09;形式持续生成&#xff0c;且潜在的…...

某个设备的RJ45网口接头为何不可连接任何POE设备

某个设备的RJ45网口接头不可连接任何POE设备 1.POE设备是什么&#xff1f; POE设备是指支持通过以太网线传输电力和数据的设备&#xff0c;即“Power over Ethernet”&#xff08;PoE&#xff09;技术的设备。这种技术允许网络设备在传输数据的同时&#xff0c;通过标准的RJ4…...

发展中的脑机接口:SSVEP特征提取技术

一、简介 脑机接口&#xff08;BCI&#xff09;是先进的系统&#xff0c;能够通过分析大脑信号与外部设备之间建立通信&#xff0c;帮助有障碍的人与环境互动。BCI通过分析大脑信号&#xff0c;提供了一种非侵入式、高效的方式&#xff0c;让人们与外部设备进行交流。BCI技术越…...

绕过密码卸载360终端安全管理系统

一不小心在电脑上安装了360终端安全管理系统&#xff0c;就会发现没有密码&#xff0c;就无法退出无法卸载360&#xff0c;很容易成为一个心病&#xff0c;360终端安全管理系统&#xff0c;没有密码&#xff0c;进程无法退出&#xff0c;软件无法卸载&#xff0c;前不久听同事说…...

Java数据结构第十五期:走进二叉树的奇妙世界(四)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、二叉树OJ练习题&#xff08;续&#xff09; 1.1. 二叉树的层序遍历 1.2. 二叉树的最近公共祖先 1.3. 从前序与中序遍历序列构造二叉树 1.4. 从中序与后序遍历序列构造二叉树 1.5. 根据二叉树创建…...

Transformer 代码剖析9 - 解码器模块Decoder (pytorch实现)

一、模块架构全景图 1.1 核心功能定位 Transformer解码器是序列生成任务的核心组件&#xff0c;负责根据编码器输出和已生成序列预测下一个目标符号。其独特的三级注意力机制架构使其在机器翻译、文本生成等任务中表现出色。下面是解码器在Transformer架构中的定位示意图&…...

JAVA八股—计算机网络(自用)

JAVA八股—计算机网络&#xff08;自用&#xff09; 2.7 1.介绍一下TCP/IP模型和OSI模型的区别 OSI模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;将计算机网络通信划分为七个不同的层级&#xff0c;每个层级都负责特定的功能。每个…...

unity和unity hub关系

unity和unity hub关系 Unity和Unity Hub是紧密相关但功能不同的两个软件,以下是它们的关系说明: Unity 定义:是一款专业的实时3D开发平台,广泛用于创建各种类型的3D和2D互动内容,如视频游戏、建筑可视化、汽车设计展示、虚拟现实(VR)和增强现实(AR)应用等。功能:提供…...

Linux的OOM机制

Linux 的 OOM&#xff08;Out of Memory&#xff09;机制是操作系统在内存耗尽时采取的一种保护措施。当系统内存不足&#xff0c;无法继续分配给进程时&#xff0c;Linux 内核会触发 OOM 杀手&#xff08;OOM Killer&#xff09;&#xff0c;选择并终止某些进程&#xff0c;以…...

Typora的Github主题美化

[!note] Typora的Github主题进行一些自己喜欢的修改&#xff0c;主要包括&#xff1a;字体、代码块、表格样式 美化前&#xff1a; 美化后&#xff1a; 一、字体更换 之前便看上了「中文网字计划」的「朱雀仿宋」字体&#xff0c;于是一直想更换字体&#xff0c;奈何自己拖延症…...

Cursor配置MCP Server

一、什么是MCP MCP&#xff08;Model Context Protocol&#xff09;是由 Anthropic&#xff08; Claude 的那个公司&#xff09; 推出的开放标准协议&#xff0c;它为开发者提供了一个强大的工具&#xff0c;能够在数据源和 AI 驱动工具之间建立安全的双向连接。 举个好理解…...

定时器之输入捕获

输入捕获的作用 工作机制​ 输入捕获通过检测外部信号边沿&#xff08;上升沿/下降沿&#xff09;触发计数器&#xff08;CNT&#xff09;值锁存到捕获寄存器&#xff08;CCRx&#xff09;&#xff0c;结合两次捕获值的差值计算信号时间参数。 ​脉冲宽度测量&#x…...

Uniapp开发微信小程序插件的一些心得

一、uniapp 开发微信小程序框架搭建 1. 通过 vue-cli 创建 uni-ap // nodejs使用18以上的版本 nvm use 18.14.1 // 安装vue-cli npm install -g vue/cli4 // 选择默认模版 vue create -p dcloudio/uni-preset-vue plugindemo // 运行 uniapp2wxpack-cli npx uniapp2wxpack --…...

0005__PyTorch 教程

PyTorch 教程 | 菜鸟教程 离线包&#xff1a;torch-1.13.1cpu-cp39-cp39-win_amd64.whl https://download.pytorch.org/whl/torch_stable.html...

Pikachu

一、网站搭建 同样的&#xff0c;先下载安装好phpstudy 然后启动Apache和Mysql 然后下载pikachu&#xff0c;解压到phpstudy文件夹下的www文件 然后用vscode打开pikachu中www文件夹下inc中的config.inc.php 将账户和密码改为和phpstudy中的一致&#xff08;默认都是root&…...

CentOS7 使用 YUM 安装时报错:Cannot find a valid baseurl for repo: base/7/x86_64的解决方法

CentOS7 使用 YUM 安装时报错&#xff1a;Cannot find a valid baseurl for repo: base/7/x86_64的解决方法 报错代码解决方法 报错代码 输入命令yum update -y时报错Cannot find a valid baseurl for repo: base/7/x86_64 解决方法 有 wget 工具 更换YUM源 mv /etc/yum.…...

ChatGPT与DeepSeek:AI语言模型的巅峰对决

目录 引言 一、ChatGPT 与 DeepSeek 简介 &#xff08;一&#xff09;ChatGPT &#xff08;二&#xff09;DeepSeek 二、技术原理剖析 &#xff08;一&#xff09;ChatGPT 技术原理 &#xff08;二&#xff09;DeepSeek 技术原理 &#xff08;三&#xff09;技术原理对比…...