基于视觉语言模型(VLM)的CogAgent

前言

CogAgent 是由清华大学与智谱AI联合推出的一个多模态大模型,专注于图形用户界面(GUI)的理解和导航。它代表了在视觉语言模型(VLM)领域的一项重要进展,特别是在GUI Agent能力方面。相较于传统的基于文本的Agent,CogAgent的独特之处在于其使用视觉模态而非文本对GUI界面进行感知。这种方法更符合人类的直觉交互方式,即通过视觉与GUI交互,从而做出规划和决策。

CogAgent的主要特点

视觉GUI Agent能力

CogAgent能够接受高达1120×1120像素的高分辨率图像输入,并且具备视觉问答、视觉定位(Grounding)、GUI Agent等多种能力。这意味着它可以处理复杂的GUI界面,如网页、移动应用和个人电脑应用程序。例如,在给定一个操作目标时,CogAgent会先观察GUI界面,然后决定下一步做什么;与此同时,GUI天然是为了人机交互设计的,相比于HTML等文本模态的表征,GUI更为直接简洁,易于获取有效信息。

模型结构和技术原理

CogAgent的模型结构基于CogVLM。为了使模型能够理解高分辨率图片,团队将图像输入的分辨率大幅提升至1120×1120(以往的模型通常小于500*500),并为此设计了轻量级的“高分辨率交叉注意力模块”。该模块在原有低分辨率大图像编码器的基础上增加了高分辨率的小图像编码器,并使用交叉注意力机制与原有的VLM交互,以降低显存与计算开销。整体结构如下:
在这里插入图片描述
下图展示了CogAgent-9B-20241220执行用户指令的过程。CogAgent-9B-20241220以 GUI 截图为唯一的环境输入,结合已经完成的动作历史,计算当前 GUI 截图中最合适的动作。这一动作通过 CogAgent 端侧应用(例如,GLM-PC 和 CogAgent Demo App)注入 GUI,GUI 响应动作内容并更新图像内容;同时,该动作会被添加到动作历史中。CogAgent-9B-20241220根据更新后的历史动作和截图,计算后续的操作。上述过程重复,直到CogAgent-9B-20241220认为指令执行完毕。
在这里插入图片描述
CogAgent-9B-20241220 的输入仅由用户的自然语言指令、已执行历史动作的记录、GUI 截图三部分组成,无需任何文本形式表征的布局信息,也不依赖于任何附加的元素标签(set of marks)信息。它的输出包含以下四个方面的内容:

  • 思考过程(Status & Plan)。CogAgent-9B-20241220显式输出理解 GUI 截图、决定下一步操作的思考过程。思考过程包含状态(Status)和计划(Plan)两个部分,可以通过参数控制实际的输出内容;
  • 对下一步动作的自然语言描述(Action)。自然语言形式的动作描述会被加入到历史操作记录中,方便模型理解已经执行的动作步骤;
  • 对下一步动作的结构化描述(Grounded Operation)。CogAgent-9B-20241220以类似于函数调用的形式,结构化地描述下一步操作及其参数。结构化的动作描述方便 CogAgent 端侧应用解析并执行模型的输出。CogAgent-9B-20241220的动作空间包含GUI 操作(基础动作)和拟人行为(高级动作)两类,前者包括左键单击、文本输入等,后者包括应用启动、调用语言模型等。请参考这里来查看动作空间的详细说明。
  • 对下一步动作的敏感性判断,包括“一般操作”和“敏感操作”两类。敏感操作是指可能会带来难以挽回后果的动作,例如在“发送邮件”任务中的动作“点击发送按钮”。

性能评测

据说,官方团队在四个数据集中测试了CogAgent-9B-20241220和类似模型的性能:

  • Screenspot。Screenspot 衡量模型进行 GUI 元素定位的能力。
  • OmniAct。我们衡量下表中所有模型在 OmniAct 任务中第一步操作的准确率,即使OmniAct 任务可能需要多步操作才能完成。这是因为 OmniAct 没有提供每一步操作之后的屏幕截图。
  • CogAgentBench-basic-cn。CogAgentBench-basic-cn是我们自行收集并内部使用的中文测试集,每个测试样本是完成一条指令过程中的一个步骤,测试样本的输入与 CogAgent 所接收的输入相同。值得注意的是,在给定相同的截图、用户指令、历史操作的情况下,可能会有多个正确的输入,例如点击“发送”按钮和按下回车键都可以发送消息。我们人工为每一条测试样本标记出所有可能的正确输出。CogAgentBench-basic-cn包含了 147 个任务对应的 1100 个步骤,涉及微信、淘宝、小红书、12306、携程等常见中文应用和网站。表格中的数字为单步操作的正确率。
  • OSworld。表格中的数字为多步任务的完成率。
    在这里插入图片描述
    CogAgent-9B-20241220模型在多平台、多类别的 GUI agent 及 GUI grounding benchmarks 上取得了当前最优的结果。我们对比了基于API的商业模型(GPT-4o-20240806、Claude-3.5-Sonnet)、商业API + GUI grounding 模型(GPT-4o + UGround、GPT-4o + OS-ATLAS)、开源 GUI agent 模型(Qwen2-VL、ShowUI、SeeClick)。结果表明,CogAgent在GUI定位(Screenspot)、单步操作(OmniAct)、中文step-wise榜单(CogAgentBench-basic-cn)、多步操作(OSWorld)都取得了领先的结果,仅在OSworld上略逊于针对Computer Use特化的Claude-3.5-Sonnet和结合外接 GUI grounding 模型的 GPT-4o。

应用场景及性能评估

CogAgent在多个经典的图像理解榜单上取得了领先成绩,涵盖VQAv2、STVQA、DocVQA、TextVQA等多个任务,并在GUI Agent数据集上大幅超越了现有的模型。此外,CogAgent还展示了其在不同场景下的应用潜力,比如社交软件、游戏、PPT制作等。以下是部分应用样例:
在这里插入图片描述
在这里插入图片描述

具体可自行搭建环境,或者在huggingface、modelscope自行体验。

开源与社区贡献

为了促进多模态大模型、Agent社区的发展,CogAgent(最新版本-CogAgent-9B-20241220)已经被开源至GitHub仓库,并提供了一个网页版Demo供开发者体验。同时,为了支持更广泛的商业应用,CogAgent也开放了商用许可申请。这不仅有助于加速Agent技术的研发进程,也为研究人员和从业者提供了一个强大的工具来探索更多可能性。

模型相关文献

论文:Hong et al. “Cogagent: A visual language model for gui agents.” (CVPR 2024 Highlight 🏆)
中文博客
Blog (in English)
Huggingface
GitHub
modelscope

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win10、win11-鼠标右键还原、暂停更新

系统优化 win 10jihuo win 11jihuo鼠标右键还原暂停更新 update 2024.12.28win 10 jihuo winx,打开powershell管理员,输入以下命令,选择1并等待 irm https://get.activated.win | iex参考:https://www.bilibili.com/video/BV1TN411M72J/?sp…

C# 找出给定三角形的所有角度(Find all angles of a given triangle)

给定三角形在二维平面上所有三个顶点的坐标,任务是找到所有三个角度。 示例: 输入:A (0, 0), B (0, 1), C (1, 0) 输出:90, 45, 45 为了解决这个问题,我们使用下面的余弦定律。 c^2 a^2 …

【数据结构】(Python)差分数组。差分数组与树状数组结合

差分数组: 基于原数组构造的辅助数组。用于区间修改、单点查询。区间修改的时间复杂度O(1)。单点查询的时间复杂度O(n)。差分数组的元素:第一个元素等于原数组第一个元素,从第二个元素开始是原数组对应下标的元素与前一个元素的差&#xff0…

HTML 元素:网页构建的基础

HTML 元素:网页构建的基础 HTML(HyperText Markup Language,超文本标记语言)是构建网页的基石。它定义了网页的结构和内容,而HTML元素则是构成HTML文档的基石。在本篇文章中,我们将深入探讨HTML元素的概念、类型、用法,以及如何在网页设计中有效地使用它们。 什么是HT…

前端往后端传递参数的方式有哪些?

文章目录 1. URL 参数1.1. 查询参数(Query Parameters)1.2. 路径参数(Path Parameters) 2. 请求体(Request Body)2.1. JSON 数据2.2. 表单数据2.3. 文件上传 3. 请求头(Headers)3.1. 自定义请求…

记录媒体查询@media的用法

常见的PC分辨率 1024*500 (8.9寸) 1024*768 (比例4:3 | 10.4寸、12.1寸、14.1寸、15寸; ) 1280*800(16:10 |15.4寸) 1280*1024(比例:5:4 | 14.1寸、15…

修复OpenHarmony系统相机应用横屏拍照按钮点不到的问题

适配OpenHarmony系统相机应用横屏UI, 相关pr: https://gitee.com/openharmony/applications_camera/pulls/233/files 适配效果 如何安装 编译好的hap提供在附件中 1.预置在源码,随固件安装 2.安装hap hdc shell "mount -o remount,rw /"…

debian系linux安装mysql

准备环境 (1) 先查询是否有安装mariadb,如果有,先执行以下命令卸载mariadb sudo apt-get remove --purge mariadb-server mariadb-client(2) 安装libncurses.so.5和libtinfo.so.5库文件 在数据库登录时会用到,执行以下命令查询 find / -type f -name …

10-Gin 文件上传 --[Gin 框架入门精讲与实战案例]

使用 Gin 框架处理文件上传是一个常见的任务,Gin 提供了简单而直观的方法来处理文件上传。下面将介绍如何用 Gin 实现文件上传功能。 1. 安装 Gin 如果你还没有安装 Gin,可以通过 Go 的包管理工具 go get 来安装: go get -u github.com/gi…

【react】常见的性能优化 1

目录 常见的 React 性能优化手段 1. 使用 useMemo 和 useCallback 缓存数据和函数 2. 使用 React.memo 缓存组件 3. 组件懒加载 4. 合理使用 key 5. 在组件销毁时清除定时器/事件 6. 使用 Suspense 和 Lazy 拆分组件 7. 使用 Fragment 避免额外标记 8. 避免使用内联函…

Promise实现原理解析,及实现方法。

Promise原理解析 Promise的介绍原理分析源码实现发布部分全部代码订阅部分基础代码简单发布订阅完整代码测试订阅能力链式调用的实现完整链式调用代码链式调用Promise完整功能代码 Promise的介绍 一,Promise的理解 在JavaScript中,Promise是一种用于处理…

http报头解析

http报文 http报文主要有两类是常见的,第一类是请求报文,第二类是响应报文,每个报头除了第一行,都是采用键值对进行传输数据,请求报文的第一行主要包括http方法(GET,PUT, POST&#…

【日常开发】Git Stash使用技巧

文章目录 引言一、git stash 基础命令(一)存储当前工作区的修改(二)查看存储列表 二、查看存储的内容(一)查看特定存储的详细内容(二)查看特定存储修改的文件列表 三、恢复存储的修改…

微服务保护-sentinel

为什么要有微服务保护? 微服务保护是为了避免微服务雪崩而出现的,每个微服务能处理的请求是有限的,如果一个微服务出现问题导致一个请求进入微服务的时间太久,就会导致大量去请求停滞在微服务内部,这样就会过分占用系统…

【Redis】Redis 典型应用 - 缓存 (cache)

目录 1. 什么是缓存 2. 使用 Redis 作为缓存 3. 缓存的更新策略 3.1 定期生成 3.2 实时生成 4. 缓存的淘汰策略 5. 缓存预热, 缓存穿透, 缓存雪崩 和 缓存击穿 关于缓存预热 (Cache preheating) 关于缓存穿透 (Cache penetration) 关于缓存雪崩 (Cache avalanche) 关…

关于easy-es对时间范围查询遇到的小bug

前言:在使用easy-es之前作为一个小白的我只有es原生查询的基础,在自己通过查看官方文档自学easy-es遇到了一个挫折,其他的还好语法和MybatisPlus差不多,正以为我觉得很快就能入手,在对时间范围的判断就给我当头一棒&am…

Python读取TIF文件

在Python中,逐帧读取TIFF文件(尤其是多页TIFF文件)可以使用tifffile库或Pillow库。以下是两种方法的示例: 方法 1:使用 tifffile 逐帧读取 tifffile 是一个专门用于处理TIFF文件的库,支持多页TIFF文件的逐…

只谈C++11新特性 - 显式转换函数

显式转换函数 背景与问题 在 C11 之前&#xff0c;explicit 关键字只能用于构造函数。其作用是阻止构造函数在需要隐式转换时被调用。例如&#xff1a; 示例问题&#xff08;C11 之前的 explicit 用法&#xff09; #include <iostream>class Example { public:explic…

从0到机器视觉工程师(一):机器视觉工业相机总结

目录 相机的作用 工业相机 工业相机的优点 工业相机的种类 工业相机知名品牌 光源与打光 打光方式 亮暗场照明 亮暗场照明的应用 亮暗场照明的区别 前向光漫射照明 背光照明 背光照明的原理 背光照明的应用 同轴光照明 同轴光照明的应用 总结 相机的作用 相机…

HTML——53. 创建表单

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>创建表单</title></head><body><!--form标签用于创建一个表单&#xff0c;会将里面的内容一起发送服务器&#xff0c;其结构类似于表格--><!--表…