在现代数字世界中,图形用户界面(GUI)是人机交互的核心。然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社区中,越来越多的研究者和开发者们开始关注VLM-based GUI Agent。2023年12月,智谱发布了CogAgent,第一个基于视觉语言模型(Visual Language Model, VLM)的开源 GUI agent 模型,而在最近,最新的CogAgent模型 CogAgent-9B-20241220发布,让LLM操作GUI在技术上更进了一步。

1. CogAgent的诞生与发展

CogAgent是基于视觉语言模型的开源GUI代理模型。它的独特之处在于仅依赖于屏幕截图作为输入,不需要HTML等文本表征。这使得CogAgent能够在各种基于GUI交互的场景中应用,如个人电脑、手机、车机设备等。随着CogAgent的发布,越来越多的研究者和开发者开始关注VLM-based GUI Agent的研究。

1.1 CogAgent-9B-20241220的发布

CogAgent-9B-20241220是CogAgent团队经过一年迭代优化后的最新版本。该版本基于GLM-4V-9B双语开源VLM基座模型,通过数据采集与优化、多阶段训练与策略改进等方法,使其在GUI感知、推理预测准确性、动作空间完善性、任务的普适和泛化性上得到了大幅提升。

1.2 CogAgent 执行过程

下图展示了CogAgent-9B-20241220执行用户指令的过程。

  • 以 GUI 截图为唯一的环境输入,结合已经完成的动作历史,计算当前 GUI 截图中最合适的动作。
  • 根据更新后的历史动作和截图,计算后续的操作
  • 重复上述过程,直到CogAgent认为指令执行完毕

2. CogAgent-9B的技术架构与优化

CogAgent-9B-20241220在模型基座、视觉处理模块、数据集丰富与完善、预训练策略优化、后训练策略改进等方面进行了全面的升级。

2.1 模型基座和结构升级

CogAgent使用更强大的视觉语言模型GLM-4V-9B作为基座模型,大幅提升了模型的基座图像理解性能。在视觉处理模块上,CogAgent实现了更高效统一的视觉处理模块,支持1120*1120原生高分辨率图像输入。

2.2 数据集丰富与完善

CogAgent团队广泛收集并整合了多种数据集,包括无监督数据和GUI指令微调数据集。这些数据集的丰富性和多样性为CogAgent提供了更广泛的训练和测试基础,使其能够更好地适应实际应用场景。

2.3 预训练与后训练策略优化

在预训练阶段,CogAgent引入了GUI Grounding预训练方法,通过屏幕截图和layout对,构造界面子区域和layout表征的对应关系。在后训练阶段,CogAgent采用了更科学的GUI agent后训练策略,使模型具备了更强的分析、推理、预测能力。

3. CogAgent-9B的应用与性能评估

CogAgent-9B-20241220在多个数据集上的测试结果显示了其卓越的性能。尤其是在Screenspot、OmniAct、CogAgentBench-basic-cn、OSworld等数据集上,CogAgent均取得了领先的成绩。

CogAgent-9B-20241220模型在多平台、多类别的 GUI agent 及 GUI grounding benchmarks 上取得了当前最优的结果。

4. GUI Agent的未来展望

随着CogAgent-9B-20241220的发布,GUI Agent的研究和工程热又迈入一个新的台阶,智谱表示此版CogAgent模型已被应用于智谱AI的GLM-PC产品 (https://cogagent.aminer.cn/home 申请内测),预计25年Q1会开展公测。

在之前,智谱发布了AutoGLM,通过CogAgent控制手机实现点餐、买票等操作,节省用户时间。我的理解这些场景还不是刚需,但是非常有潜力变成一个更通用的入口,不过手机终归还不是生产力平台,GLM-PC产品则更让人值得期待,杀死RPA的最后一根稻草。

现在豆包在强化浏览器的功能,就是要将豆包app打造为一个高生产力的入口平台,或许不远的将来,就能看到豆包支持操作PC各类应用的功能。

未来,GUI Agent产品有望在更多的应用领域中得到应用,如智能家居、智能座舱等,为用户提供更智能、更便捷的交互体验。

智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型的更多相关文章

  1. [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush

    [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 目录 [源码解析] 模型并行分布式训练Megatron (5) --Pipedream Flush 0x0 ...

  2. [源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现

    [源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现 目录 [源码解析] 模型并行分布式训练 Megatron (3) ---模型并行实现 0x00 摘要 0x01 并行Tr ...

  3. [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构

    [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要 0x01 启动 1.1 分 ...

  4. Python的开源人脸识别库:离线识别率高达99.38%(附源码)

    Python的开源人脸识别库:离线识别率高达99.38%(附源码) 转https://cloud.tencent.com/developer/article/1359073   11.11 智慧上云 ...

  5. Linux开源系统对比Windows闭源系统的优势解析

    当我们听到linux的时候是不是觉得高大上的感觉呢?在我刚上大学的时候,听着学长们给我讲他们的大学的学习经历,先学习C语言.单片机.然后做一些项目,现在正学习linux操作系统,当我听到linux操作 ...

  6. DL4NLP——词表示模型(一)表示学习;syntagmatic与paradigmatic两类模型;基于矩阵的LSA和GloVe

    本文简述了以下内容: 什么是词表示,什么是表示学习,什么是分布式表示 one-hot representation与distributed representation(分布式表示) 基于distri ...

  7. 第一次作业:基于Linux操作系统深入源码进程模型分析

    1.Linux操作系统的简易介绍 Linux系统一般有4个主要部分:内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使 ...

  8. 自动化运维工具之Puppet master/agent模型、站点清单和puppet多环境设定

    前文我们了解了puppe中模块的使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14086315.html:今天我来了解下puppet的master/age ...

  9. [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行

    [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 目录 [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行 0x00 摘要 0x0 ...

  10. 使用睿云智合开源 Breeze 工具部署 Kubernetes v1.12.3 高可用集群

    一.Breeze简介 Breeze 项目是深圳睿云智合所开源的Kubernetes 图形化部署工具,大大简化了Kubernetes 部署的步骤,其最大亮点在于支持全离线环境的部署,且不需要FQ获取 G ...

随机推荐

  1. 怎么封装一个vue的自定义指令

    自定义指令分为 全局和局部的指令 : 1. 自定义全局指令: 在 mian.js 中 ,使用 Vue.directive('指令名' ,  配置对象 ) 2. 局部自定义指令 在组件中使用 direc ...

  2. Python之py9-py9作业检查

    目录结构 代码 import os import datetime name_list = [ '赵嘉豪', '巩景云', '李琦', '潘立府', '胡凯琴', '雷俊', '刘闯', '毛毅智', ...

  3. 工作中的技术总结 _Thymeleaf限制字符串的展示长度 _20210910

    工作中的技术总结 _Thymeleaf限制字符串的展示长度 _20210910 比较简单就这一行代码 #strings.abbreviate 应该是调用了 thymeleaf 的内置函数 这一个方法的 ...

  4. 使用wxpython开发跨平台桌面应用,对常用消息对话框的封装处理

    在很多程序中,封装常用消息对话框有很多好处,尤其是在 GUI 应用程序中,本篇随笔结合.net 开发Winform界面的经验,对使用wxpython开发中 wx.MessageDialog 和 wx. ...

  5. C++中的各种锁

    在多线程开发中,经常会遇到数据同步,很多情况下用锁都是一个很好的选择.C++中常用的锁主要有下面几种: 互斥锁(std::mutex) 这是最基本的一种锁.它用于保护共享资源,在任意时刻,最多只有一个 ...

  6. 如何在cnblogs的发文中使用自定义地址作为发文链接

    要知道在cnblogs中发表内容后其默认的链接地址都是一串数字的形式,比如本篇的默认地址:https://www.cnblogs.com/xyz/p/18461898 但是为了让发表的内容更有个性化, ...

  7. 大厂SSP的Java学习路线

    现在互联网环境这么差,Java还能学吗? 学Java还能找到工作吗? 大家好呀, 我是程序员回家养猪, 一个专升本, 三段实习经历拿下大厂SSP offer的程序员博主. 关于我的个人经历, 之前文章 ...

  8. JDBC中数据库的连接与查询

    让我们仔细看看是怎么访问数据库的 package sql; import java.sql.Connection; import java.sql.DriverManager; import java ...

  9. JAVA并发编程学习笔记之synchronized

    监视器 java中同步是通过监视器模型来实现的,JAVA中的监视器实际是一个代码块,这段代码块同一时刻只允许被一个线程执行.线程要想执行这段代码块的唯一方式是获得监视器. 监视器有两种同步方式:互斥与 ...

  10. 曾经做的一个JS小游戏——《Battle City》

    今天改网盘密码时,找到了个很久前的东西:JavaScript版的坦克大战.07年的夏天制作花了好多个夜晚制作,那段着迷JS游戏的疯狂时光.但因为后来众多浏览器的出现,导致了游戏兼容性大大的下降,最终放 ...