【论文通读】GUICourse: From General Vision Language Model to Versatile GUI Agent
GUICourse: From General Vision Language Model to Versatile GUI Agent
- 前言
- Abstract
- Motivation
- Solution
- GUICourse
- GUIEnv
- GUIEnv-global
- GUIEnv-local
- GUIAct
- GUIAct (web-single)
- GUIAct (web-multi)
- GUIAct (smartphone)
- GUIChat
- Experiments
- Main Result
- Ablation Study
- Conclusion
前言
一篇关于构建提升GUI智能体能力的数据集的文章,文章提到的关于提升GUI能力的三个点听起来还是比较合理的,此外,数据集的数量非常丰富,比起一些benchmark只提供几百条数据显得很有诚意。总的来说是关于提升GUI智能体能力的一个比较有想法的工作。
| Paper | https://arxiv.org/pdf/2406.11317 |
|---|---|
| Github | https://github.com/yiye3/GUICourse |
Abstract
VLMs的进步得以帮助人类完成GUI任务,然而,现有的VLMs受到基础能力(OCR & grounding)以及GUI知识方面的挑战,这阻碍了它们成为实用的GUI智能体。为此,本文提出GUICourse,用于训练基于VLMs的GUI智能体的数据集。首先,作者提出GUIEnv数据集来增强VLMs的OCR和grounding能力。接着,作者提出GUIAct和GUIChat数据集用于增强GUI组件和交互的知识。实验证明基于本数据集的GUI智能体在通用的GUI任务上有更好的表现。最后作者通过消融实验分析了不同的变体。
Motivation
现有关于GUI智能体的工作可以分为基于文本和基于视觉的。基于视觉的智能体有两点优势:
- 容易获取(直接截图)。
- 具有可迁移性(GUI视觉元素相似)。
然而基于视觉的智能体严重依赖VLMs的基础能力和内部知识,但是当前VLMs有如下问题:
- grounding能力不足以定位GUI元素。
- 对GUI图标的理解不够。
Solution

因此,为了提高当前VLMs的基础能力和GUI知识,本文提出GUICourse,包含了三个数据集:
- GUIEnv: 10M website page annotation pairs作为预训练数据,0.7M region-text QA pairs作为SFT数据。目的是增强VLMs的grounding能力。
- GUIAct: 67K单步和15K多步动作指令,增强VLMs的GUI知识。
- GUIChat: 44Ksingle-turn QA pairs和6k multi-turn dialogues with text-rich images and bounding boxes,提升GUI智能体的交互能力。
基于上述数据,作者对一些VLMs进行训练,在多个数据集上都取得了明显提升。消融实验也证明GUIEnv数据集对提升VLMs的grounding能力是有帮助的。
GUICourse
GUIEnv

OCR和grounding是GUI 智能体的基础能力,本数据集是为了增强VLMs的这两方面能力。
GUIEnv-global
- 描述:每个样本是一个长文本,包含一张页面上所有可描述的内容。
- 收集方式:从C4收集4M URLs,部署Playwright得到10M标注后的网页截图。
GUIEnv-local
- 描述:每个样本是一个region的QA对,text2bbox或者bbox2text。
- 收集方式:
- 裁剪成小于1920×1080的分区。
- 删除元素少于10个的截图。
- 随机选取10个带有文本和位置的元素作为text2bbox和bbox2text的任务数据。
GUIAct
GUI元素的功能和控制方法对于GUI智能体来说非常重要,为此需要一个数据集来增强VLMs的GUI知识。GUIAct涉及网页和手机两个场景,分为三个不同partition:web-single,web-multi 以及 smartphone。

GUIAct (web-single)
- 描述:每个样本由一个任务的自然语言描述,页面截图以及对应操作元素的bbox。
- 收集方式:
- GPT-4汇总不同场景的网址,利用超链接进行扩展,获得50个域名和13k个网站。
- 使用网页快照工具获取HTML、交互元素以及截图。
- 使用GPT-4V获取每个网页的单步指令动作对,得到70K个数据。
- 人工检查GPT-4V的标注结果,将准确率从55%提升到92%。最后得到76K数据。
GUIAct (web-multi)
- 描述:每个高级指令对应多跳操作,每一跳操作对应一个网页截图和对应的操作指令。
- 收集方式:
- 收集八个场景的121个网页。
- 使用GPT-3.5和Claude2为每个网页生成指令,得到8K条high-level指令,每条指令都需要与网页进行多步交互。
- 开发了一个在线标注插件工具,雇佣标注人员执行操作完成相应指令。最终得到5696条多跳指令,相当于44K个训练样本。
GUIAct (smartphone)
- 描述:样本样例如下:

- 收集方式:AITW的子集,选取“General”标签数据并筛选掉没有底部导航栏的截图,得到9157个多步操作,对应67K个训练样本。
GUIChat
自然语言交互对更好使用智能体很重要,因此在智能体训练阶段有必要融合对话数据。GUIChat数据集包含大量富文本的网页截图,包括44K个单轮QA对和6K个多轮对话。

- 描述:每个样本包括截图,人类对话,以及GPT生成的关于截图上对应对话内容的描述。如果是多轮对话,就是一张截图,然后多轮的人类对话和GPT生成的截图上对应对话的内容。
- 收集方式:
- 使用Playerwright得到网址截图。
- 从DOM tree中抽取必要的结构化和文本信息。
- 利用GPT-4根据抽取的文本信息构建问答对。
Experiments
Main Result
对多个GUI智能体在GUICourse上进行训练,在常规GUI任务包括Mind2Web,AITW上进行评估。结果如下:


结果表明,GUICourse可以帮助GUI智能体得到比baseline更好的性能。
Ablation Study
本小节涉及两个消融实验,第一个消融实验通过调节GUIEnv-global数据的数量,来分析MiniCPM-GUI的性能。第二个实验以通用的VLM MiniCPM-V为基线,依次添加GUIAct、提高分辨率、混合GUIChat数据集。结果如下表所示:


- GUIEnv数据集对提高VLM的基本能力和GUI导航能力很有用。其中从没有GUIEnv,到使用2.5M GUIEnv数据,性能提升是显著的,说明GUI grounding是必要的。
- 高分辨率对GUI导航任务非常重要,在 web-single 和 smartphone 任务上有巨大提升,但是 web-manual 上没有提升,可能对于复杂指令和环境来说,只是提升分辨率是不够的。
- GUIChat数据集对于网页场景有效。
之后作者又做了一些case study如下:


Conclusion
本文构建了GUICourse数据集,帮助提升GUI智能体的grounding能力,GUI知识以及GUI的交互能力。实验结果表明了数据集的有效性,消融实验也证明了数据集有助于提高GUI导航能力。
这篇工作思路非常清晰,故事浅显易懂,直接点明当前GUI在grounding、GUI知识以及交互能力上的不足。但是这篇工作我读下来还是有一些问题:
- 虽然这些点看起来合理且显而易见,但是作者并没有实验去说明这些问题,也就是说,这几个问题的论据不足,只是读起来合理。
- 实验部分的提点不高,让我对数据集的可靠性产生了怀疑,GUIEnv数据集没什么问题,提高grounding能力在很多文章都证明是有效的,但是GUIAct和GUIChat数据集到底有没有作用文中并没能够证明,估计是缺少相应的数据集来验证吧。
- 大量的QA任务作为预训练数据,可能并不是特别适合GUI智能体学习新知识,个人拙见。
- 文章中错字,数据错误较多,可能因为工作比较赶吧。
相关文章:
【论文通读】GUICourse: From General Vision Language Model to Versatile GUI Agent
GUICourse: From General Vision Language Model to Versatile GUI Agent 前言AbstractMotivationSolutionGUICourseGUIEnvGUIEnv-globalGUIEnv-local GUIActGUIAct (web-single)GUIAct (web-multi)GUIAct (smartphone) GUIChat ExperimentsMain ResultAblation Study Conclusi…...
王道考研数据机构:中缀表达式转为后缀表达式
实现方法: 初始化一个栈,用于保存暂时还不能确定运算顺序的运算符。从左到右处理各个元素,直到末尾。可能遇到三种情况: 遇到操作数。直接加入后缀表达式遇到界限符。遇到“(”直接入栈;遇到“)”则依次弹出栈内运算符并加入后缀表达式&…...
PL/SQL安装+汉化教程
PL/SQL安装教程 一、安装: 登陆官网:PL/SQL Developer - Allround Automations下载 下载PL/SQL稳定版本12.0.7 根据自己计算机版本安装相适配的版本。我这里安装X64-bit版本 进行安装: 根据情况去更改安装,我这里全部下一步…...
Qt | Qt 线程相关类概述和举例
Qt 是一个广泛用于跨平台应用开发的框架。在 Qt 中,多线程支持是其核心特性之一,它允许开发者在不同平台上创建并发应用。以下是 Qt 中与线程相关的类概述及其使用示例。 Qt 中的线程相关类 QThread QThread 是 Qt 中用于创建和管理线程的基类。通过派生并重写 run() 函数…...
Linux 复现Docker NAT网络
Linux 复现Docker NAT网络 docker 网络的构成分为宿主机docker0网桥和为容器创建的veth 对构成。这个默认网络命名空间就是我们登陆后日常使用的命名空间 使用ifconfig命令查看到的就是默认网络命名空间,docker0就是网桥,容器会把docker0当成路由&…...
HBuilder X 小白日记03-用css制作简单的交互动画
:hover选择器,用于选择鼠标指针浮动在上面的元素。 :hover选择器可用于所有元素,不只是链接 :link选择器 设置指向未被访问页面的链接的样式 :visited选择器 用于设置指向已被访问的页面的链接 :active选择器 用于活动链接...
【深度学习练习】心脏病预测
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、什么是RNN RNN与传统神经网络最大的区别在于,每次都会将前一次的输出结果,带到下一隐藏层中一起训练。如下图所示: …...
创建react的脚手架
Create React App 中文文档 (bootcss.com) 网址:creat-react-app.bootcss.com 主流的脚手架:creat-react-app 创建脚手架的方法: 方法一(JS默认): 1. npx create-react-app my-app 2. cd my-app 3. …...
用例导图CMind
突然有一些觉悟,程序猿不能只会吭哧吭哧的低头做事,应该学会怎么去展示自己,怎么去宣传自己,怎么把自己想做的事表述清楚。 于是,这两天一直在整理自己的作品,也为接下来的找工作多做点准备。接下来…...
C++ 仿函数
一、介绍 CSTL中的仿函数,又被称为函数对象,其实就是:重载了()运算符的类。 因为在使用重载的operator()时,类似于函数调用,因此被称为仿函数。 ※注意※:仿函数本质上是一个类,不是函数。 二…...
Redhat 安装 docker 网络连接超时问题
目录 添加阿里云的Docker CE仓库 更新YUM缓存 安装 Docker Engine 启动并设置Docker自启动 验证 Docker 安装 [userlocalhost ~]$ sudo yum-config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo 正在更新 Subscription Management 软件仓库…...
Java面试题:undo log和redo log
undo log和redo log的区别 缓冲池(buffer pool): 主内存中的一个区域,可以缓存磁盘上经常被操作的数据,在执行crud时先操作缓冲池的数据以减少磁盘io 数据页(page): InnoDB存储引擎管理的最小单元,每页大小为16kb,页中存储的是行数据 redo log 重做日志,用来实现任务的持…...
【Scrapy】Scrapy 中间件等级设置规则
准我快乐地重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 再去做没流着情泪的伊人 假装再有从前演过的戏份 重饰演某段美丽故事主人 饰演你旧年共寻梦的恋人 你纵是未明白仍夜深一人 穿起你那无言毛衣当跟你接近 🎵 陈慧娴《傻女》 Scrapy 是…...
SDK环境的安装(测试使用)
1、安装 将文件解压至目录,我的目录为:D:\Program Files\Android 解压后如下: 下载链接如下: sdk下载 提取码见文章最后: 2、配置环境 1、在环境变量中,选择系统变量,点击新建。 变量名:ANDROID_HOME 变量值:“你自己的android-sdk安装路径” (例如我的:D:\Pro…...
【matlab】【python】爬虫实战
目录 引言 具体步骤 1.设置请求选项 2.发送请求并获取响应 3.设置正则表达式 4.执行正则表达式匹配 matlab完整代码 python代码示例 引言 在当今这个信息爆炸的时代,数据已成为推动社会进步和企业发展的核心动力之一。随着互联网的普及和技术的飞速发展&am…...
Android TV跨平台开发心得
这半年来陆陆续续做了一堆poc,刚开始是flutter,结果领导叫停了,说有其他部门做一样的事,真不巧;后来是react native,开发了个demo,上报上去了已经;现在又要做android nativewebview …...
View->裁剪框View的绘制,手势处理
XML文件 <?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android…...
语言模型的进化:从NLP到LLM的跨越之旅
在人工智能的浩瀚宇宙中,自然语言处理(NLP)一直是一个充满挑战和机遇的领域。随着技术的发展,我们见证了从传统规则到统计机器学习,再到深度学习和预训练模型的演进。如今,我们站在了大型语言模型ÿ…...
应急响应--网站(web)入侵篡改指南
免责声明:本文... 目录 被入侵常见现象: 首要任务: 分析思路: 演示案例: IIS&.NET-注入-基于时间配合日志分析 Apache&PHP-漏洞-基于漏洞配合日志分析 Tomcat&JSP-弱口令-基于后门配合日志分析 (推荐) Webshell 查杀-常规后门&…...
vue3+vue-router+vite 实现动态路由
文章中出现的代码是演示版本,仅供参考,实际的业务需求会更加复杂 什么是动态路由 什么场景会用到动态路由 举一个最常见的例子,比如说我们要开发一个后台管理系统,一般来说后台管理系统都会分角色登录,这个时候也就涉…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
(一)单例模式
一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...
TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?
在工业自动化持续演进的今天,通信网络的角色正变得愈发关键。 2025年6月6日,为期三天的华南国际工业博览会在深圳国际会展中心(宝安)圆满落幕。作为国内工业通信领域的技术型企业,光路科技(Fiberroad&…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
