2420年还在学YOLO和U-Net? 手把手教你如何基于Qwen-VL搭建一个多模态智能体!

标题:《SeeClick: Harnessing GUI Grounding for Advanced Visual GUI Agents》
论文:https://arxiv.org/pdf/2401.10935.pdf
源码:https://github.com/njucckevin/SeeClick

导读

操作手机电脑等图形用户界面(GUI)是人类日常生活的重要部分。

今天,由南京大学和上海AI实验室便基于这个需求提出并构建了一个基于大规模视觉语言模型(LVLM)的视觉 GUI 智能体SeeClick,像人类一样仅仅通过视觉观察屏幕执行点击、输入等操作。

背景

图形用户界面(GUI)Agent的目标是在电脑、手机等图形界面上根据指令一步步完成任务。近期许多工作尝试了基于LLM的GUI Agents,其中一个关键问题是:如何将模型的输出转化为图形界面中可执行的动作(action grounding)?

当前绝大多数方法需要获取图形界面的元数据(例如网页的html)以进行交互;然而,图形界面元数据有时难以获取(例如水果家的手机系统和桌面端应用),而且往往需要繁琐的处理。

说到这,我们先来看下 SeeClick 是怎么执行的:

可以看出,SeeClick 直接借助了视觉-语言大模型的能力并观察 Screenshot 来生成点击位置。

下面我们一起简单的看下它的实现原理。

方法

本文探索了一种全新的基于视觉的交互方式,像人类一样,仅仅通过观察手机或电脑屏幕直接生成下一步动作,例如点击指定位置、输入文本等。

构建此类智能体的一个核心挑战便是 GUI grounding,即根据指令在屏幕上定位元素的能力。

为此,SeeClick 基于大规模视觉-语言模型(LVLM),通过在精心收集的 GUI grounding 数据上训练以增强其 GUI 定位能力,最终能够在 iOS、Android、电脑操作系统和网页等各种 GUI 上准确地根据指令定位操作元素。


那么,GUI Grounding 数据如何构建呢?

GUI Grounding Data

GUI grounding 是构建视觉 agent的核心挑战。尽管最新的LVLM在自然图像上有着不错的grounding能力,由于GUI截图和自然图像的显著差异,它们在GUI场景下的grounding能力并不理想(详情请见后续实验部分说明)。

文本探索如何更好地赋予LVLM GUI grounding的能力以构建视觉agent,为此,作者们收集并开源了一份包含web、mobile环境的GUI grounding预训练数据,欢迎大家在训练中使用以增强视觉-语言模型定位屏幕元素的能力。

对于Web数据,格式各样的网站有着不同的布局和设计风格,非常适合训练LVLM通用GUI能力。此外,我们从Common Crawl中收集了大约300k个网站,对于每个网站,我们从HTML中收集两类元素

  1. 可交互且包含text属性的元素。
  2. 可交互且包含title属性的元素,代表当鼠标悬停在该元素上时会显示一段描述文本。

通过这两种方式,我们收集了screenshot-指令-操作元素样本,且包含了各种各样的文本和图标,如下图所示。

对于Mobile数据,则整理了已有公开数据集以获得mobile上的grounding数据,主要包括Widget-Captioning数据集和自动化收集的RICO数据集。进一步丰富了GUI场景和元素类型。

GUI Grounding Benchmark

ScreenSpot 是本文的另一重大贡献,被设计用于评估视觉-语言模型根据指令定位屏幕元素的能力,这是首个涵盖iOS、Android、macOS、Windows和Web场景的GUI grounding benchmark。与Mind2Web[1]不同的是,ScreenSpot在不同场景下的分辨率不同。数据集包含超过600个Screenshot和超过1200条指令。

从上述结果可以明显的看出,经过设计的GUI Grounding预训练之后,SeeClick相比LVLM基线展现了优越的性能。

实验

除了上面SeeClick在GUI grounding能力上的提升,本文在三个广泛使用的GUI agent benchmarks:MiniWob[2]、AITW[3]和Mind2Web上测试了SeeClick的性能。

实验结果表明,提升GUI grounding能力是提升agent任务性能的关键因素(如下图所示):SeeClick相比基线Qwen-VL[4]取得了显著的性能提升,表明了本文提出的GUI pre-training策略的有效性和纯视觉方案在GUI任务自动化上的潜力。具体而言,在MiniWob上SeeClick只用了千分之三的数据量即超过了之前的视觉SOTA方案Pix2Act。


鉴于本文使用了Qwen-VL作为基座,我们还额外提供了GUI pre-training前后的性能对比。

上述是与更多strong baselines的对比,更多细节请参考原文。

应用

SeeClick 的应用相对也比较简单,大家在安装完环境之后,可以参考下述执行指令:

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.generation import GenerationConfig

tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen-VL-Chat", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("SeeClick-ckpt-dir", device_map="cuda", trust_remote_code=True, bf16=True).eval()
model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-VL-Chat", trust_remote_code=True)

img_path = "assets/test_img.png"
prompt = "In this UI screenshot, what is the position of the element corresponding to the command \"{}\" (with point)?"
# prompt = "In this UI screenshot, what is the position of the element corresponding to the command \"{}\" (with bbox)?"  # Use this prompt for generating bounding box
ref = "add an event"   # response (0.17,0.06)
ref = "switch to Year"   # response (0.59,0.06)
ref = "search for events"   # response (0.82,0.06)
query = tokenizer.from_list_format([
    {'image': img_path}, # Either a local path or an url
    {'text': prompt.format(ref)},
])
response, history = model.chat(tokenizer, query=query, history=None)
print(response)

这里预测输出代表的是(x, y)坐标点或者(左, 上, 右, 下)的边界框,每个值都是[0, 1]范围内的小数,表示对应位置与图像宽度或高度的比例。我们推荐使用点预测,因为SeeClick主要是为了预测图形用户界面(GUI)上的点击点而训练的。

同时,本文也提供了如何微调 SeeClick 的方法,详情请参考仓库主页。

写在最后

SeeClick 将会在今年五月在维也纳召开的 LLMAgents @ ICLR 2024 Workshop 进行展示,欢迎大家前来围观~~~

如果你也对多模态相关技术感兴趣,欢迎扫描屏幕下方二维码添加微信好友,备注“多模态学习”即可。

[1] Mind2Web: Towards a Generalist Agent for the Web https://arxiv.org/abs/2306.06070
[2] World of Bits: An Open-Domain Platform for Web-Based Agents https://proceedings.mlr.press/v70/shi17a.html
[3] Android in the Wild: A Large-Scale Dataset for Android Device Control https://arxiv.org/abs/2307.10088
[4] Qwen-VL: https://github.com/QwenLM/Qwen-VL

  • 30
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CVHub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值