GUI-Actor:基于视觉语言模型的GUI自动化控制系统
GUI-Actor:基于视觉语言模型的GUI自动化控制系统
最近在研究分布式 GUI 自动化控制系统,写一篇博客记录一下 GUI-Actor 这个项目的核心架构和实现原理。
项目背景
GUI-Actor 是微软研究院开源的一个基于视觉语言模型的 GUI 操作定位模型。与传统的基于坐标输出的方法不同,GUI-Actor 采用了**无坐标(Coordinate-Free)**的方式来实现 GUI 元素定位,更加接近人类与数字界面交互的行为模式。
现有方法的局限性
传统基于坐标生成的 GUI 定位方法存在以下问题:
- 空间语义对齐弱 - 直接输出屏幕坐标与视觉特征之间的对齐不够紧密
- 监督信号模糊 - 坐标作为文本 token 输出的监督信号不够清晰
- 粒度不匹配 - 视觉空间与操作空间的粒度存在不匹配
核心架构
整个系统采用分布式架构设计,包含以下主要组件:
1 | ┌─────────────────────────────────────────────────────────────────────────────┐ |
服务端模块 (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 | # 模型推理示例 |
Grounding Verifier
系统还集成了定位验证器(Grounding Verifier),用于评估和选择最可能的操作区域:
1 | GUI-Actor-7B (Qwen2-VL) → 40.7 (without 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 | conda activate gui_actor |
部署客户端(Windows 执行终端)
1 | conda activate gui_actor |
API 调用
1 | curl -X POST http://localhost:8080/ferment/control \ |
总结
GUI-Actor 提供了一个完整的分布式 GUI 自动化解决方案,通过视觉语言模型实现智能化的界面元素定位和操作。相比传统坐标输出方法,其 Action Head 机制更加符合人类的交互直觉,在 ScreenSpot-Pro 等基准测试上取得了优秀的性能表现。
参考链接:
评论
评论插件加载失败
正在加载评论插件