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

【论文通读】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智能体能力的一个比较有想法的工作。

Paperhttps://arxiv.org/pdf/2406.11317
Githubhttps://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智能体的工作可以分为基于文本和基于视觉的。基于视觉的智能体有两点优势:

  1. 容易获取(直接截图)。
  2. 具有可迁移性(GUI视觉元素相似)。

然而基于视觉的智能体严重依赖VLMs的基础能力和内部知识,但是当前VLMs有如下问题:

  1. grounding能力不足以定位GUI元素。
  2. 对GUI图标的理解不够。

Solution

image.png
因此,为了提高当前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

image.png
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。
image.png

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)

  • 描述:样本样例如下:
    image.png
  • 收集方式:AITW的子集,选取“General”标签数据并筛选掉没有底部导航栏的截图,得到9157个多步操作,对应67K个训练样本。

GUIChat

自然语言交互对更好使用智能体很重要,因此在智能体训练阶段有必要融合对话数据。GUIChat数据集包含大量富文本的网页截图,包括44K个单轮QA对和6K个多轮对话。
image.png

  • 描述:每个样本包括截图,人类对话,以及GPT生成的关于截图上对应对话内容的描述。如果是多轮对话,就是一张截图,然后多轮的人类对话和GPT生成的截图上对应对话的内容。
  • 收集方式:
    • 使用Playerwright得到网址截图。
    • 从DOM tree中抽取必要的结构化和文本信息。
    • 利用GPT-4根据抽取的文本信息构建问答对。

Experiments

Main Result

对多个GUI智能体在GUICourse上进行训练,在常规GUI任务包括Mind2Web,AITW上进行评估。结果如下:
image.png
image.png
结果表明,GUICourse可以帮助GUI智能体得到比baseline更好的性能。

Ablation Study

本小节涉及两个消融实验,第一个消融实验通过调节GUIEnv-global数据的数量,来分析MiniCPM-GUI的性能。第二个实验以通用的VLM MiniCPM-V为基线,依次添加GUIAct、提高分辨率、混合GUIChat数据集。结果如下表所示:
image.png
image.png

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

之后作者又做了一些case study如下:
image.png

image.png

Conclusion

本文构建了GUICourse数据集,帮助提升GUI智能体的grounding能力,GUI知识以及GUI的交互能力。实验结果表明了数据集的有效性,消融实验也证明了数据集有助于提高GUI导航能力。
这篇工作思路非常清晰,故事浅显易懂,直接点明当前GUI在grounding、GUI知识以及交互能力上的不足。但是这篇工作我读下来还是有一些问题:

  1. 虽然这些点看起来合理且显而易见,但是作者并没有实验去说明这些问题,也就是说,这几个问题的论据不足,只是读起来合理。
  2. 实验部分的提点不高,让我对数据集的可靠性产生了怀疑,GUIEnv数据集没什么问题,提高grounding能力在很多文章都证明是有效的,但是GUIAct和GUIChat数据集到底有没有作用文中并没能够证明,估计是缺少相应的数据集来验证吧。
  3. 大量的QA任务作为预训练数据,可能并不是特别适合GUI智能体学习新知识,个人拙见。
  4. 文章中错字,数据错误较多,可能因为工作比较赶吧。

相关文章:

【论文通读】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的跨越之旅

在人工智能的浩瀚宇宙中&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是一个充满挑战和机遇的领域。随着技术的发展&#xff0c;我们见证了从传统规则到统计机器学习&#xff0c;再到深度学习和预训练模型的演进。如今&#xff0c;我们站在了大型语言模型&#xff…...

应急响应--网站(web)入侵篡改指南

免责声明:本文... 目录 被入侵常见现象: 首要任务&#xff1a; 分析思路&#xff1a; 演示案例: IIS&.NET-注入-基于时间配合日志分析 Apache&PHP-漏洞-基于漏洞配合日志分析 Tomcat&JSP-弱口令-基于后门配合日志分析 (推荐) Webshell 查杀-常规后门&…...

vue3+vue-router+vite 实现动态路由

文章中出现的代码是演示版本&#xff0c;仅供参考&#xff0c;实际的业务需求会更加复杂 什么是动态路由 什么场景会用到动态路由 举一个最常见的例子&#xff0c;比如说我们要开发一个后台管理系统&#xff0c;一般来说后台管理系统都会分角色登录&#xff0c;这个时候也就涉…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端

&#x1f31f; 什么是 MCP&#xff1f; 模型控制协议 (MCP) 是一种创新的协议&#xff0c;旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议&#xff0c;它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系&#xff0c;以下是深入解析&#xff1a; 门铃FIFO溢出的本质 在RapidIO系统中&#xff0c;门铃消息FIFO是硬件控制器内部的缓冲区&#xff0c;用于临时存储接收到的门铃消息&#xff08;Doorbell Message&#xff09;。…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...