移动端MagicGUI开源:会使用手机APP的AI!支持中英双语
00.前言
复旦大学NLP实验室联合荣耀开源MagicGUI!这是一个会“自主使用移动手机APP”的开源移动端 GUI 智能体模型。基于 Qwen2-VL 7B 微调。MagicGUI 能够在移动设备上实现多模态感知、理解与自动化任务执行。在视觉定位、屏幕问答、动作序列规划与执行方面展现出卓越能力。
例如让它将进度条拖到3/4位置:
体验地址:https://modelscope.cn/studios/FudanNLP/MagicGUI
与此同时,MagicGUI项目同步开源了 Magic-RICH 数据集,这是一个中文单步操作测试集,涵盖常见任务中间步骤,少见操作和控件,异常拒识任务 以及指代方位等复杂问题表述场景。
开源链接:
模型地址:https://www.modelscope.cn/organization/FudanNLP
GitHub:https://github.com/MagicAgent-GUI/MagicGUI
01.开源亮点
数据采集框架:提出可扩展、模块化的 GUI 数据采集框架,高效获取移动设备上的高质量数据。
强大的感知与定位能力:通过元素指代、元素定位、屏幕描述等任务,结合大规模知识提升感知与定位能力。
统一动作空间:为不同移动平台设计统一的动作空间,涵盖点击、输入、滑动等基本操作,同时支持等待、拖拽、接管等复杂动作。
面向规划的推理机制:引入规划导向的推理机制,提升任务执行的稳定性与动态环境下动作决策的准确性。
双阶段训练范式:通过继续预训练(CPT)增强核心感知、定位与导航能力,并通过强化微调(RFT)提升模型鲁棒性与泛化能力。
02.模型框架与训练
MagicGUI是一个端到端的GUI智能体模型,输入为当前的GUI界面截图和用户的问题文本,模型输出有效的动作,必要时同时输出定位。整体训练框架分为两个阶段:
阶段 I:继续预训练(Continue Pre-traning, CPT),在大规模多样化数据集上训练基础模型,再通过平衡的高质量数据集进行退火训练。
阶段 II:强化微调(Reinforcement Fine-tuning, RFT),进一步增强模型的鲁棒性与泛化能力。
MagicGUI将继续预训练由基础预训练和退火两步,基础预训练完成大量多样性广域GUI图文知识的注入,设计了多种任务全面提升模型的感知和定位能力,退火阶段采用了更加均衡的采样策略,用高质量的难例进一步提升模型在低频场景和控件的表现。
在强化学习阶段,团队提出了双过滤GRPO(DF-GRPO)方案,在训练前和训练中,选择更适合模型当前能力的数据进行学习,并且从格式正确性、操作正确性、定位误差三方面设计了奖励方案,提升了学习效率和稳定性。
03.动作空间设计
MagicGUI模型支持13类操作,涵盖常见的手机交互行为。相比其他GUI模型,覆盖了更多的操作类型。
基础操作包括点按(tap)、滑动(scroll)、文本输入(text input)、返回(navigate_back)和返回主屏幕(navigate_home);进阶操作支持长按(long_press)、拖拽(drag)、回车(enter)和等待(wait);系统级操作包括调用 API(call_api)、截屏(screen_shot)、长截屏(long_screen_shot)以及任务完成标记(finish)。当无法继续执行时,模型可主动发起接管请求(take_over)。动作空间的设计覆盖多样交互场景,提升模型在真实移动环境中的实用性。
04.数据采集框架
为了构造MagicGUI所需的大量屏幕知识,一方面对开源通用数据和GUI数据进行归一化数据处理和数据筛选;另一方面构建了云真机数据采集平台,设计了数据获取策略向低频场景数据倾斜,并通过判别模块保障了源数据的质量可靠性,还基于高质量的图像-操作跳转数据链,进一步通过自动化合成模块,生成了多样性的任务和问题发问角度。通过这两步操作,确保了模型除了对常见操作和发问可以稳定响应以外,同时具备良好的鲁棒性和拒识功能。
05.评测指标
在感知与定位能力方面,MagicGUI 在多个公开数据集上表现出色,在 ScreenQA-short、ScreenSpot v2(mobile)和 OS-Atlas(mobile)等基准上,屏幕理解能力与 GPT-4o、Gemini 等大模型相当,元素识别和坐标定位能力远超这些闭源模型,验证了其可靠的视觉感知与精准定位能力。
研究团队提出了面向中文环境与真实手机应用的复杂任务数据集 Magic-RICH。如表所示,在常规操作(Routine)、指令理解(Instruction)、复杂任务(Complex)及异常处理(Handling Exception)等各类场景中,MagicGUI 均取得领先性能,展现出对中文应用生态的良好适配能力,具备较强的实用价值与本土化优势。
研究团队还评估了MagicGUI在AndroidControl和GUI-Odyssey等多步任务数据集上的表现。这类任务更贴近真实使用场景,要求模型具备持续推理与逐步执行的能力。实验结果表明,MagicGUI在任务完成率上与当前领先的开源模型相当,且在长任务序列中保持稳定,不易偏离目标,展现出良好的执行连贯性与部署可靠性。
06.模型推理
安装依赖
git clone https://github.com/MagicAgent-GUI
cd MagicGUI
conda create -n gui_agent python=3.11
conda activate gui_agent
pip install -r requirements.txt
下载模型
modelscope download --model FudanNLP/MagicGUI_CPT --local_dir MagicGUI_CPT
modelscope download --model FudanNLP/MagicGUI_RFT --local_dir MagicGUI_RFT
推理脚本
import torch
from utils.model import Qwen2VLChat
# 1. 加载模型和 tokenizer
model_path = "./models/RFT" # 模型路径
model = Qwen2VLChat.from_pretrained(model_path, min_pixels=4*28*28, max_pixels=768*28*28)
model = model.to("cuda:0")
# 2. 构建输入
instruction = """你是一个训练有素的手机智能体,能够帮助用户进行单步导航任务。已知当前智能手机的截图<image>,和用户指令"查看会员信息"请输出正确的函数调用以实现用户指令。除了函数调用之外,你不能输出任何其他内容。你可以调用以下函数来控制智能手机:..."""
image_path = "./assets/test_action.png"
# 3. 构建消息格式
messages = [{"type": "image", "value":f"{image_path}",
{"type": "text", "value":f"{instruction}"]
# 4. 推理
response = model.generate(
message = messages,
)
print(response)
点击链接,即可跳转体验~
更多推荐
所有评论(0)