基于视觉语言模型(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…

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

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

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

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

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…

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

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

HTML——53. 创建表单

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

逐行讲解大模型流式输出 streamer 源码

目录 简介TextStreamer 基础流式输出TextIterateStreamer 迭代器流式输出本地代码模型加载并前端展示streamlit 输出显示gradio 输出显示 vllm 部署模型并前端展示streamlit 输出显示gradio 输出显示 备注 简介 本文详细讲解了大模型流式输出的源码实现&#xff0c;包括TextSt…

java_使用阿里云oss服务存储图片

什么情况下可以使用阿里云oss服务存储图片&#xff1f; 对图片的访问速度有高要求时使用&#xff0c;方便用户快速的&#xff08;比如在网页页面中&#xff09;访问到图像 参考&#xff1a;41 尚上优选项目-平台管理端-商品信息管理模块-阿里云OSS介绍_哔哩哔哩_bilibili 1.…

第5章 共享内存范式:C语言层面

5.1OpenMP 5.1.1OpenMP的介绍 OpenMP三个原则 5.2OpenMP的使用 编译制导指令以#pragma omp 开始&#xff0c;后边跟具体的功能指令&#xff0c;格式如:#pragma omp 指令[子句[,子句].]。常用的功能指令如下: 5.2.1编译制导 5.2.2API和环境变量 具体案例-邻接矩阵 // 本代码…

web 开发全局覆盖文件上传身份验证漏洞利用

全局覆盖 首先认识全局变量和局部变量 再一个就是知道全局变量是全局使用的并且有个特点就是可以覆盖 这个就是全局变量我们输出一下发现 z居然等于函数内的计算值 把我们原来定义的全局变量 $z给覆盖了 看一下局部变量 这个时候 z就不会被覆盖 <?php $x1; $y2; …

No.2十六届蓝桥杯备战|练习题4道|数据类型|字符型|整型|浮点型|布尔型|signed|unsigned(C++)

B2002 Hello,World! - 洛谷 #include <iostream> using namespace std; int main() { cout << "Hello,World!" << endl; return 0; }打印飞机 #include <iostream> using namespace std;int main() {cout << " …

46. Three.js案例-创建颜色不断变化的立方体模型

46. Three.js案例-创建颜色不断变化的立方体模型 实现效果 知识点 Three.js基础组件 WebGLRenderer THREE.WebGLRenderer是Three.js提供的用于渲染场景的WebGL渲染器。它支持抗锯齿处理&#xff0c;可以设置渲染器的大小和背景颜色。 构造器 antialias: 是否开启抗锯齿&am…

5.系统学习-PyTorch与多层感知机

PyTorch与多层感知机 前言PyTroch 简介张量&#xff08;Tensor&#xff09;张量创建张量的类型数据类型和 dtype 对应表张量的维度变换&#xff1a;张量的常用操作矩阵或张量计算 Dataset and DataLoaderPyTorch下逻辑回归与反向传播数据表格 DNN&#xff08;全连结网络&#x…