【大模型系列】Mobile-Agent(2024.04)

image.png

  • Paper: https://arxiv.org/pdf/2401.16158
  • Github: https://github.com/X-PLUG/MobileAgent
  • Author: Junyang Wang et al. 北交、阿里巴巴

Mobile-agent核心工作:

  • 首先使用视觉感知工具(检测和OCR模型)识别前端界面中文本和图像元素的精确位置
    • 检测图标:groundingdino,AI-ModelScope/GroundingDINO
    • OCR检测:damo/cv_resnet18_ocr-detection-line-level_damo
    • OCR识别:damo/cv_convnextTiny_ocr-recognition-document_damo
    • CLIP:ViT-B/32
  • 然后基于这些视觉元素,进行自动规划、任务分解和一步一步的任务执行
  • 提出了一个评测数据集Mobile-Eval,评估操作的准确性

文章目录

  • 1 Mobile-Agent框架介绍
    • 1.1 视觉感知部分
    • 1.2 指令执行
      • 1.2.1 操作定义
      • 1.2.2 自我规划(Self-Planning)
      • 1.2.3 自我反省(Self-Reflection)
      • 1.2.4 Prompt设计(启发自ReAct)
  • 2 Mobile-Eval
    • 2.1 Metrics
  • 3 操作示例
  • 4 操作工具
  • 5 程序运行流程

1 Mobile-Agent框架介绍

image.png

1.1 视觉感知部分

  • MLLM:GPT-4V
  • 文本检测模型:文本定位,OCR tools
    • OCR没有检测到指定文本:agent重新选择文本或者选择替代操作
    • OCR检测到一个包含指定文本的实例:直接点击文本框的中心
    • OCR检测到多个包含指定文本的实例:如果检测到的实例特别多,则需要重新选择文本实例;如果实例数量比较少,根据检测据区域外扩后截图,再将检测框画在截图上,最后让agent决策点击哪一个
  • 图标检测模型:图标定位,icon检测工具+CLIP;
    • 首先让agent提供需要点击的icon的属性(颜色和形状),
    • 然后使用Grounding DINO通过prompt “icon”从屏幕截图中识别所有的图标;
    • 最后使用CLIP根据第一步产生的图标的描述来检索需要点击的图标

1.2 指令执行

1.2.1 操作定义

定义了8种操作:

  • Open APP(App): 打开桌面上的指定APP
  • Click the text(Text): 点击指定区域内的文本
  • Click the icon(Icon, Position): 根据图标的描述和位置的坐标信息
  • Type(Text): 在指定的文本输入框内输入文本
  • Page up & down: 向上或者向下滑动页面
  • Back: 退回上一个页面
  • Exit: 回到主页面
  • Stop: 任务完成的标志,结束整个进程

1.2.2 自我规划(Self-Planning)

Mobile-agent通过迭代的方式完成任务:

  • 首先用户输入任务
  • agent基于system prompt+历史操作记录+当前屏幕截图输出下一步的操作
  • 直到输出stop,就结束迭代

1.2.3 自我反省(Self-Reflection)

当agent遇到错误导致无法完成任务时,该文章引入了一个自我反省self-reflection的机制,这个机制在以下两种情况生效:

(1)当agent生成无效或者错误操作,导致进程阻塞,具体地

  • 当agent注意到在特定操作后,屏幕截图没有发生改变
  • 屏幕节目展示出一个错误的页面

解决方案: 指导agent尝试其他可代替的操作或者改变当前操作的参数

(2)忽略某些复杂指令的某些要求

解决方案: 在每轮迭代结束后,使用agent去分析当前的屏幕截图、操作历史和用户指令,去判断任务有没有完成,没有完成则继续产生操作。

1.2.4 Prompt设计(启发自ReAct)

Output格式:

Observation: 对当前屏幕截图+历史操作的描述,帮助agent去发现屏幕截图是否有更新,并基于历史记录及时发现问题;
Thought: 基于Observation和用于指令去产生下一步的操作;
Action: 基于Thought从8个操作指令集中选择操作和参数;

image.png

2 Mobile-Eval

  • 包含10个常用Apps
  • 引入同时使用2种App的instruction,去验证agent多app调用的能力
  • 每个App使用3种instruction:简单、复杂、包含抽象指示

image.png

2.1 Metrics

  • Su(Success): Agent完成用户指令,被认为是成功
  • PS(Process Score): 衡量agent在执行任务过程种,每一步的准确性,正确的步数除以总步数
  • RE(Relative Efficiency): 手动执行指令,并记录人类所采取的步骤,认为人类的操作是最优的操作,然后比较agent执行的步数和人类执行的步数,来评估agent是否更有效率
  • CR(Completion Rate): 计算agent采用跟人类相同操作的步数除以人类操作的总步数,表示agent在指定instruction下的完成率;
    image.png

3 操作示例

image.png

4 操作工具

通过ADB来实现对手机的操控:

  1. 下载Android Debug Bridge。
  2. 在你的移动设备上开启`USB调试`或`ADB调试`,它通常需要打开开发者选项并在其中开启。
  3. 通过数据线连接移动设备和电脑,在手机的连接选项中选择`传输文件`。
  4. 用下面的命令来测试你的连接是否成功: ``/path/to/adb devices`。如果输出的结果显示你的设备列表不为空,则说明连接成功。
  5. 如果你是用的是MacOS或者Linux,请先为 ADB 开启权限: `sudo chmod +x /path/to/adb`。
  6. `/path/to/adb`在Windows电脑上将是`xx/xx/adb.exe`的文件格式,而在MacOS或者Linux则是`xx/xx/adb`的文件格式。

5 程序运行流程

image

  • GDINO:AI-ModelScope/GroundingDINO
  • CLIP:ViT-B/32
  • ocr_detection:damo/cv_resnet18_ocr-detection-line-level_damo
  • ocr_recognition:damo/cv_convnextTiny_ocr-recognition-document_damo
  • LLM:ChatGPT-4V

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

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

相关文章

Android Studio学习笔记

01-课程前面的话 02-Android 发展历程 03-Android 开发机器配置要求 04-Android Studio与SDK下载安装 05-创建工程与创建模拟器

【数据库系列】Spring Boot 中整合 MyBatis-Plus详细步骤

在 Spring Boot 中整合 MyBatis-Plus 可以按照以下步骤进行: 一、整合步骤 1. 创建 Spring Boot 项目 首先,使用 Spring Initializr(https://start.spring.io/)创建一个新的 Spring Boot 项目。在创建过程中,选择以…

CVSS漏洞评分系统曝出严重缺陷

在网络安全领域,漏洞的管理和评估是企业防御的重要一环。然而,随着技术的快速发展和攻击手段的不断演变,传统的漏洞评分系统显露出了不可忽视的弊端。在近期的Black Hat欧洲大会上,摩根大通的网络安全专家警告称,通用漏…

深入剖析MySQL数据库架构:核心组件、存储引擎与优化策略(一)

sql语句分为两大类:查询(select)、增删改----修改(update) select语句的执行流程 执行sql语句的流程:连接数据库、缓存查询、解析器、优化器、执行器、存储引擎操作数据 客户端:图形界面工具…

电子病历四级视角下SQL语句的优化策略与实践用例研究

一、引言 1.1 研究背景与意义 在当今数智化医疗时代,电子病历(Electronic Medical Record,EMR)系统已成为医疗机构信息化建设的核心组成部分。电子病历不仅承载着患者的诊疗信息,更是医疗决策、质量控制、科研分析以及医疗管理的重要依据。根据国家卫生健康委发布的《电…

C++简明教程(14)动态库和静态库的内存共享机制

总结,动态库共享内存,静态库独占一份内存。

Elasticsearch向量检索需要的数据集以及768维向量生成

Elasticsearch8.17.0在mac上的安装 Kibana8.17.0在mac上的安装 Elasticsearch检索方案之一:使用fromsize实现分页 快速掌握Elasticsearch检索之二:滚动查询(scrool)获取全量数据(golang) Elasticsearch检索之三:官方推荐方案search_after…

CSS2笔记

一、CSS基础 1.CSS简介 2.CSS的编写位置 2.1 行内样式 2.2 内部样式 2.3 外部样式 3.样式表的优先级 4.CSS语法规范 5.CSS代码风格 二、CSS选择器 1.CSS基本选择器 通配选择器元素选择器类选择器id选择器 1.1 通配选择器 1.2 元素选择器 1.3 类选择器 1.4 ID选择器 1.5 基…

基于AT89C51单片机的可暂停八路抢答器设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90196607?spm1001.2014.3001.5503 C15 部分参考设计如下: 摘要 随着社会进步和科技发展,电子设备在各类活动中的应用日益普遍&#xff0c…

【python】unittest单元测试

文章目录 基本使用不同启动方式的区别 基本使用 下面是根据文档写的一个demo,主要的内容基本都包含了,使用时导入自己的业务类测试类中的方法就行。 import unittest# 测试类不强制test开头,仅作为规范。但必须继承unittest.TestCase class…

从0入门自主空中机器人-4-【PX4与Gazebo入门】

前言: 从上一篇的文章 从0入门自主空中机器人-3-【环境与常用软件安装】 | MGodmonkeyの世界 中我们的机载电脑已经安装了系统和常用的软件,这一篇文章中我们入门一下无人机常用的开源飞控PX4,以及ROS中无人机的仿真 1. PX4的安装 1.1 PX4固件代码的下载…

SqlSession的线程安全问题源码分析

🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 SqlSession 是线程安全的吗?为什么说是线程不安全的?事务管理问题 数据库连接的共享问题 一级缓存线程安全问题…

Unity Mesh生成Cube

1. 配置一个Cube的每个面的数据 一共是6个面,每个面包含的数据包括4个顶点的相对顶点坐标(Cube的中心为原点),法线方向,UV坐标,顶点渲染顺序,以及这个面用到的材质,因为这里是Top&am…

小程序组件 —— 22 组件案例 - 轮播区域绘制

这一节我们实现轮播图最外层的盒子,也就是把轮播图的最外层搭好,先不给轮播图添加图片,因为图片属于新的组件,组件里面有一些知识点,需要单独分开讲; 回顾一下,在进行传统网页开发时&#xff0…

【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(二)

****非斜体正文为原文献内容(也包含笔者的补充),灰色块中是对文章细节的进一步详细解释! 3.1.2 基于注意力的解释(Attention-Based Explanation) 注意力机制可以揭示输入数据中各个部分之间的关系&#…

git reset --hard(重置到当前提交,所有未提交的更改都会被永久丢弃)

git reset --hard 是一个强大的命令,它会将你的工作目录、暂存区和当前分支的 HEAD 指针重置到指定的提交状态,所有未提交的更改都会被永久丢弃。因此,使用这个命令时需要非常小心。 基本用法 重置到当前提交(丢弃所有未提交的更…

单元测试入门和mockup

Java 新手入门:Java单元测试利器,Mock详解_java mock-CSDN博客 这个是典型的before when assert三段式,学一下单测思路 这个没有动态代理,所以是直接class(对比下面) Jmockit使用笔记_增加代码覆盖率_覆盖try catch_使用new Mock…

智能化人才招聘系统是怎样的?

随着企业规模的扩大和业务范围的拓展,人才招聘成为了企业发展的关键环节。然而,市面上的人才招聘系统琳琅满目,质量参差不齐,许多企业发现,并非所有系统都能满足他们的需求,特别是智能化的需求。今天&#…

SpringBoot 实现登录功能

目录 下发JWT 令牌依赖文件令牌生成令牌验证 统一验证技术过滤器 Filter快速使用实现登录校验 拦截器 Interceptor快速使用实现登录校验 下发JWT 令牌 全称: JSON Web Token 官网: https://jwt.io/ 以JSON 的数据格式安全传输信息,利用 base64 进行编…

Disruptor 有哪些典型的使用场景?

大家好,我是君哥。 Disruptor 是一款高性能的内存有界队列,它通过内存预分配、无锁并发、解决伪共享问题、使用 RingBuffer 取代阻塞队列等措施来大幅提升队列性能。 但开发者们往往对它的使用场景不太了解,到底应该在哪些场景使用呢&#…