CogAgent:带 Agent 能力的视觉模型来了

图片

之前我们分享过智谱AI新一代多模态大模型 CogVLM,该模型在不牺牲任何 NLP 任务性能的情况下,实现视觉语言特征的深度融合,其中 CogVLM-17B 在 14 个多模态数据集上取得最好或者第二名的成绩。

12月15日,基于 CogVLM,提出了视觉 GUI Agent,并研发了多模态大模型CogAgent。

其中,视觉 GUI Agent 能够使用视觉模态(而非文本)对 GUI 界面进行更全面直接的感知, 从而做出规划和决策。

图片

而多模态模型 CogAgent,可接受1120×1120的高分辨率图像输入,具备视觉问答、视觉定位(Grounding)、GUI Agent等多种能力,在9个经典的图像理解榜单上(含VQAv2,STVQA, DocVQA,TextVQA,MM-VET,POPE等)取得了通用能力第一的成绩,并在涵盖电脑、手机的GUI Agent数据集上(含Mind2Web,AITW等),大幅超过基于LLM的Agent,取得第一。

GitHub仓库:

论文:https://arxiv.org/abs/2312.08914
Demo:http://36.103.203.44:7861/
代码:https://github.com/THUDM/CogVLM
模型:
* Huggingface:https://huggingface.co/THUDM/cogagent-chat-hf
* 魔搭社区:https://modelscope.cn/models/ZhipuAI/cogagent-chat

技术交流群

前沿技术资讯、算法交流、求职内推、算法竞赛、面试交流(校招、社招、实习)等、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企开发者互动交流~

建了技术交流群&星球!想要资料、进交流群的同学,可以直接加微信号:mlc2060。加的时候备注一下:研究方向 +学校/公司,即可。然后就可以拉你进群了。

方式①、添加微信号:mlc2060,备注:大模型资料 or 技术交流
方式②、微信搜索公众号:机器学习社区,后台回复:大模型资料 or 技术交流

在这里插入图片描述

在这里插入图片描述

一、视觉 GUI Agent

基于语言预训练模型(LLM)的Agent是当下热门的研究话题,具备良好的应用前景。但是,一个严重的问题是,受限于LLM的模态,它只能接受语言形式的输入。

以网页agent为例,WebAgent [3] 等工作将网页HTML连同用户目标(例如“Can you search for CogAgent on google”)作为LLM的输入,从而获得LLM对下一步动作的预测(例如点击按钮,输入文本)。

然而,一个有趣的观察是,人类是通过视觉与GUI交互的。

比如,面对一个网页,当给定一个操作目标时,人类会先观察他的GUI界面,然后决定下一步做什么;与此同时,GUI天然是为了人机交互设计的,相比于HTML等文本模态的表征,GUI更为直接简洁,易于获取有效信息。

也就是说,在GUI场景下,视觉是一种更为直接、本质的交互模态,能更高效完整提供环境信息;更进一步地,很多GUI界面并没有对应的源码,也难以用语言表示。因此,若能将大模型改进为视觉Agent,将GUI界面以视觉的形式直接输入大模型中用于理解、规划和决策,将是一个更为直接有效、具备极大提升空间的方法。

对此,我们提出了多模态大模型CogAgent,可以实现基于视觉的GUI Agent。下图展现了其工作路径与能力。

图片

CogAgent模型同时接受当前GUI截图(图像形式)和用户操作目标(文本形式,例如“search for the best paper in CVPR 2023”)作为输入,就能预测详细的动作,和对应操作元素的位置坐标。

二、模型结构

CogAgent的模型结构基于CogVLM [2]。

图片

为了使模型具备对高分辨率图片的理解能力,可以看清~720p的GUI屏幕输入,我们将图像输入的分辨率大幅提升至1120×1120(以往的模型通常小于500*500)。

然而,分辨率的提升会导致图像序列急剧增长,带来难以承受的计算和显存开销——这也是现有多模态预训练模型通常采用较小分辨率图像输入的原因之一。

对此,我们设计了轻量级的“高分辨率交叉注意力模块”,在原有低分辨率大图像编码器(4.4 B)的基础上,增加了高分辨率的小图像编码器(0.3 B),并使用交叉注意力机制与原有的VLM交互。在交叉注意力中,我们也使用了较小的hidden size,从而进一步降低显存与计算开销。

结果表明,该方法可以使模型成功理解高分辨率的图片,并有效降低了显存与计算开销。

图片

在消融实验中,我们比较了该结构与CogVLM原始方法的计算量。结果表明,当分辨率提升时,使用文中提出的方案(with cross-module,橙色)将会带来极少量的计算量增加,并与图像序列的增长成线性关系。

特别的,1120×1120分辨率的CogAgent的计算开销(FLOPs),甚至比490×490分辨率的CogVLM的1/2还要小。在INT4单卡推理测试中,1120×1120分辨率的CogAgent模型占用约12.6GB的显存,相较于224×224分辨率的CogVLM仅高出不到2GB。

三、实验

GUI Agent能力

在电脑、手机等GUI Agent的数据集上,CogAgent具有较大的优势,大幅超过所有基于LLM的Agent。

1、在网页Agent数据集Mind2Web上的性能

图片

2、在手机Agent数据集AITW上的性能

图片

图像理解综合能力

CogAgent在图像理解的综合能力也有相当的提升,在9个经典的图像理解榜单上(含VQAv2,STVQA, DocVQA,TextVQA,MM-VET,POPE等)取得了通用能力第一的成绩。

3、在VQA数据集上的通用性能,涵盖常识、OCR、图表、文档等方面:

图片

4、在多模态大模型通用榜单MM-VET,POPE上的结果:

图片


下面我们展示一个《原神》场景的实例:
图片

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

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

相关文章

AI 绘画StableDiffusionWebui图生图

介绍 stable-diffusion-webui AI绘画工具,本文介绍图生图,以一张图片做底图优化生成。 例如:上传一张真人照片,让AI把他改绘成动漫人物;上传画作线稿,让AI自动上色;上传一张黑白照&#xff0c…

并发踩坑:list共享变量的addAll

背景: 某业务报错了,提示:Caused by: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: java.util.ConcurrentModificationException 分析: 这是执行查询时报的 并发修改异常。大概逻辑…

BigQuery Clustered Table 简介 - 聚簇表

Clustered Table的定义 聚簇可以提高某些类型的查询(例如,使用过滤条件子句的查询和聚合数据的查询)的性能。当通过查询作业或加载作业将数据写入聚簇表时,BigQuery 会使用聚簇列中的值对这些数据进行排序。这些值用于将数据整理…

web3风险投资公司之Electric Capital

文章目录 什么是 Electric CapitalElectric团队 Electric Capital 开发者报告参考 什么是 Electric Capital 官网:https://www.electriccapital.com/ 官方github:https://github.com/electric-capital Electric Capital 是一家投资于加密货币、区块链企…

【VB测绘程序设计】案例11—坐标正算的计算案例(附源码)

【VB测绘程序设计】案例11—坐标正算的计算案例(附源码) 文章目录 前言一、界面预览二、程序介绍三、程序源代码总结前言 ` VB程序在测绘领域应用广泛,能够解决一些常见的简单的计算问题,提高工作效率,本专栏持续更新常用的测绘计算,感谢关注。 坐标正算是已知边长和方位…

【Linux】进程管理

ps:报告当前进程快照。top:显示任务。kill:给一个进程发送信号。shutdown:关机或重启系统。 一个程序可以发动另一个程序被表述为一个父进程可以产生一个子进程,内核维护每个进程的信息,以此来保持事情有序…

基于YOLOv8深度学习的200种鸟类智能检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

DQL-基本查询

概念: 1,数据库管理系统一个重要功能就是数据查询,数据查询不应只是简单返回数据库中存储的数据,还应该根据需要对数据进行筛选以及确定数据以什么样的格式显示 2,MySQL提供了功能强大、灵活的语句来实现这些操作 3…

Unity手机移动设备重力感应

Unity手机移动设备重力感应 一、引入二、介绍三、测试成果X Y轴Z轴横屏的手机,如下图竖屏的手机,如下图 一、引入 大家对重力感应应该都不陌生,之前玩过的王者荣耀的资源更新界面就是使用了重力感应的概念,根据手机的晃动来给实体…

Jmeter接口程序项目实战教程

1.什么是jmeter? JMeter是100%完全由Java语言编写的,免费的开源软件,是非常优秀的性能测试和接口测试工具,支持主流协议的测试 2.jmeter能做什么? JMeter是100%完全由Java语言编写的软件性能测试的GUI的测试工具&am…

基于协同过滤的电影评论数据分析与推荐系统

温馨提示:文末有 CSDN 平台官方提供的学长 QQ 名片 :) 1. 项目介绍 随着社会的发展,人们生活水平的提高,欣赏电影逐渐成为人们闲暇时的主要娱乐方式之一。本文电影推荐系统是为了给顾客提供方便快捷的热门电影推荐以及查询电影资讯而建立的&…

供应链 | 顶刊MSOM论文精选——关税对全球供应链网络配置的影响:模型、预测和未来研究

编者按 关税对企业全球供应链网络设计决策的影响 本文为 M&SOM期刊20周年特邀论文,原文信息: Lingxiu Dong, Panos Kouvelis (2020) Impact of Tariffs on Global Supply Chain Network Configuration: Models, Predictions, and Future Research…

模式识别与机器学习(八):决策树

1.原理 决策树(Decision Tree),它是一种以树形数据结构来展示决策规则和分类结果的模型,作为一种归纳学习算法,其重点是将看似无序、杂乱的已知数据,通过某种技术手段将它们转化成可以预测未知数据的树状模…

SkinEngine皮肤怎么给项目的所有窗体

C# 给winfrom窗体添加皮肤控件SkinEngine怎么给整个项目换皮怎么给winform的按钮添加统一样式怎么使用样式表给winform所有按钮添加统一样式SkinEngine皮肤怎么给项目的所有窗体 如何快速给C# winform添加好看的皮肤C# Winform中窗体的美化 SkinEngine的应用 皮肤控件换肤素材…

【SpringCloud笔记】(8)服务网关之GateWay

GateWay 概述简介 官网地址: 上一代网关Zuul 1.x:https://github.com/Netflix/zuul/wiki(有兴趣可以了解一下) gateway:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/…

linux运维的面试题一

1.linux启动过程 1加电 2加载主板bios设置 3加载多重操作系统启动管理器grub 4加载内核系统到内存当中 5加载配置文件 6加载内核模块 7完成相应的初始化工作和启动相应的服务 8启动系统进程 9出现登录界面 10开机启动完成 2.安装过操作系统吗?怎么安装? 1.小批量设…

嵌入式硬件电路原理图之跟随电路

描述 电压跟随电路 电压跟随器是共集电极电路,信号从基极输入,射极输出,故又称射极输出器。基极电压与集电极电压相位相同,即输入电压与输出电压同相。这一电路的主要特点是:高输入电阻、低输出电阻、电压增益近似为…

线段树/区间树(java实现版详解附leetcode例题)

目录 什么是线段树 线段树基础表示 创建线段树(Java版详解) 线段树的区间查询 leetcode上的线段树相关问题 leetcode303题.区域和检索-数组不可变 使用线段树解题 不使用线段树解题 leetcode307题.区域和检索-数组可修改 不使用线段树解题 线…

Python----静态Web服务器-返回指定页面数据

1. 静态Web服务器的问题 目前的Web服务器,不管用户访问什么页面,返回的都是固定页面的数据,接下来需要根据用户的请求返回指定页面的数据 返回指定页面数据的实现步骤: 获取用户请求资源的路径根据请求资源的路径,读取指定文件…

VUE element组件生成的全选框如何获取值

//先声明 const Selection ref([]);//获取 const handleSelectCodeForTicket (val) > {console.log(val);// values.value val;Selection.value [];val.forEach((v) > {Selection.value.push(v);});console.log(Selection.value); }; <el-table selection-change…