GUI-Actor:基于视觉语言模型的GUI自动化控制系统
YZDR Lv2

GUI-Actor:基于视觉语言模型的GUI自动化控制系统

最近在研究分布式 GUI 自动化控制系统,写一篇博客记录一下 GUI-Actor 这个项目的核心架构和实现原理。

项目背景

GUI-Actor 是微软研究院开源的一个基于视觉语言模型的 GUI 操作定位模型。与传统的基于坐标输出的方法不同,GUI-Actor 采用了**无坐标(Coordinate-Free)**的方式来实现 GUI 元素定位,更加接近人类与数字界面交互的行为模式。

现有方法的局限性

传统基于坐标生成的 GUI 定位方法存在以下问题:

  1. 空间语义对齐弱 - 直接输出屏幕坐标与视觉特征之间的对齐不够紧密
  2. 监督信号模糊 - 坐标作为文本 token 输出的监督信号不够清晰
  3. 粒度不匹配 - 视觉空间与操作空间的粒度存在不匹配

核心架构

整个系统采用分布式架构设计,包含以下主要组件:

1
2
3
4
5
6
7
8
9
10
11
┌─────────────────────────────────────────────────────────────────────────────┐
│ 通信架构 │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 核心服务器 │ ───▶ │ 服务端模块 │ ◀──▶ │ 客户端模块 │ │
│ │ (外部系统) │ │ (GPU主机) │ │ (执行终端) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ │ HTTP REST API │ WebSocket │ pyautogui │
│ └──────────────────────┴──────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

服务端模块 (server/)

负责处理来自外部系统的 HTTP 请求,并与客户端建立 WebSocket 连接进行截图请求和指令下发。主要包括:

  • core_server_connector.py - 核心服务器连接器 (HTTP API)
  • client_manager.py - 客户端连接管理 (WebSocket)
  • model_service.py - 模型调用服务 (GUI-Actor + OmniParser)
  • command_processor.py - 指令处理器

客户端模块 (client/)

部署在 Windows 执行终端上,负责截图采集和操作执行。主要包括:

  • server_connector.py - 服务端连接器 (WebSocket)
  • screenshot_service.py - 截图服务
  • operation_executor.py - 操作执行器 (pyautogui)
  • window_selector.py - 窗口选择界面

共享模块 (shared/)

提供通信协议定义、加密工具和常量配置:

  • protocol.py - 通信协议定义
  • crypto.py - AES-256-GCM 加密
  • constants.py - 超时配置等常量

技术实现

Action Head 机制

GUI-Actor 的核心创新在于引入了 Action Head 模块,通过注意力机制而非直接坐标回归来实现 GUI 元素定位:

1
2
3
4
# 模型推理示例
pred = inference(conversation, model, tokenizer, data_processor, use_placeholder=True, topk=3)
px, py = pred["topk_points"][0]
print(f"Predicted click point: [{round(px, 4)}, {round(py, 4)}]")

Grounding Verifier

系统还集成了定位验证器(Grounding Verifier),用于评估和选择最可能的操作区域:

1
2
GUI-Actor-7B (Qwen2-VL)     →  40.7  (without Verifier)
GUI-Actor-7B + Verifier → 44.2 (with Verifier)

支持的指令类型

指令 说明 参数
click 点击目标 target, button, clicks
type 输入文本 target, text
move 移动鼠标 target
drag 拖拽操作 startX, startY, endX, endY
scroll 滚动操作 x, y, delta
hotkey 快捷键 keys
sequence 组合操作 steps, delay

性能指标

指标 目标值
坐标误差 ≤ 2 像素
操作响应时间 ≤ 300ms
截图传输时间 ≤ 2s
模型分析时间 ≤ 5s

使用示例

部署服务端(Linux GPU 主机)

1
2
conda activate gui_actor
python -m server.main --host 0.0.0.0 --port 8080

部署客户端(Windows 执行终端)

1
2
conda activate gui_actor
python -m client.main --server-host <Linux服务器IP> --server-port 8081

API 调用

1
2
3
curl -X POST http://localhost:8080/ferment/control \
-H "Content-Type: application/json" \
-d '{"action":"click", "target":"开始按钮"}'

总结

GUI-Actor 提供了一个完整的分布式 GUI 自动化解决方案,通过视觉语言模型实现智能化的界面元素定位和操作。相比传统坐标输出方法,其 Action Head 机制更加符合人类的交互直觉,在 ScreenSpot-Pro 等基准测试上取得了优秀的性能表现。


参考链接:

 评论
评论插件加载失败
正在加载评论插件