屏幕解析工具——OmniParser

0 引言

OmniParser是微软开源的一种屏幕解析工具,提供了一种将用户界面截图解析为结构化元素的综合方法,通过此方法可以对UI界面进行可交互元素的提取和描述,然后将此结构化信息和任务指令,输入到大模型中,以增强大模型对用户界面的动作预测能力

论文: https://arxiv.org/pdf/2408.00203
项目: https://github.com/microsoft/OmniParser
huggingface: https://huggingface.co/microsoft/OmniParser

1 项目背景

大型视觉模型在理解和操作用户界面方面展现出巨大的潜力,但是现有的模型在实际表现中不尽人意,项目组认为原因是:让GPT-4V这类大模型同时完成屏幕元素解析动作预测两个任务,对模型负担太重。

所以提出一种屏幕解析工具,来单独完成屏幕元素解析任务,只让大模型专注于动作预测任务,以此来增强大模型在各种用户任务中的动作预测能力,再与自动化工具结合形成更加强大的Agent系统

2 项目目标

开发一种通用的、跨平台的屏幕解析工具。

核心思想: 利用纯视觉信息来解析用户界面(UI)截图,将其转换成结构化的元素,而不依赖于任何特定平台的额外信息

3 项目效果

OmniParser显著提高了GPT-4V的动作预测性能,而且性能超过了使用HTML信息的GPT-4V模型,同时在完成移动导航任务时整体得分提高了4.7%

4 框架结构

在这里插入图片描述
当用户的界面UI图输入后:

  1. 经过一个交互图标检测模型(项目中使用的是微调后的YOLO V8),识别出那些地方是可交互的,并为其添加边界框和唯一ID。
  2. 对检测出来的可交互区域,使用一个功能描述模型(项目中使用的是微调后的BLIP-2)去描述该图标的功能
  3. 同时还有一个OCR模型(项目中使用的是Paddle OCR)去识别文字,并为其添加边界框和唯一ID,如果交互图标的边界框和文字边界框重叠度有90%,则共用一个框和ID
  4. 最后输出一个标注好的UI界面图,以及对应的功能描述和文本描述内容

5 微调的YOLO和BLIP

论文中未给出具体的数据集格式,下列左图是推测的微调YOLO的数据集格式,右图是微调BLIP的前后对比
在这里插入图片描述
微调后的BLIP-2由描述图标的形状、颜色,转为描述图标的功能

6 项目本地部署

6.1 创建新的conda环境并激活

conda create -n omni python=3.12
conda activate omni

6.2 git导入项目、下载依赖

git clone https://github.com/microsoft/OmniParser.git

会生成一个文件夹
在这里插入图片描述
里面有个requirements.txt,是我们所需要的依赖,进入该目录中,直接pip安装依赖

cd ./OmniParser
pip install -r requirements.txt

等待依赖安装

6.3 下载模型权重

创建一个新的文件夹用于保存模型权重,使用git和个git lfs拉取

git clone --depth 1 https://huggingface.co/microsoft/OmniParser .
git lfs install
git lfs pull

把下载下来的权重放到项目的weight文件夹中,结构如下:

weights/icon_detect

weights/icon_caption_florence

weights/icon_caption_blip2

然后在omni环境中,运行文件夹中的python程序:

python convert_safetensor_to_pt.py

出现下列结果则运行成功:
在这里插入图片描述

7 使用方法

7.1 界面解析

我这里使用的是文件夹里面的demo
在这里插入图片描述
可以在这个地方修改你要输入的图片:
在这里插入图片描述
最后输出标注好的UI界面图,和对应的功能描述与文字描述
在这里插入图片描述

7.2 大模型动作预测

下面是标注好的UI界面图
在这里插入图片描述
然后下面是我的提示词(功能描述太长,这里只展示局部)

this is my ui,i want to search for paper with lstm as the title,how should i operate?
there are the contents of the ui interface:['Text Box ID 0: | 8demo',
 'Text Box ID 1: x|A #t',
 'Text Box ID 2: xX arXiv.org e-Print archive',
 'Text Box ID 3: +',
 'Text Box ID 4: C',
 'Text Box ID 5: 6htt ps:/arxiv.org',
 'Text Box ID 6:  Algorithm Visu..',
 ......]

大模型输出结果:
这里是用的通义大模型
在这里插入图片描述

8 方案缺陷

8.1 不支持中文

解决方法: 重新制作中文数据集进行微调

8.2 当解析结果包含重复图标/文本时,大模型可能无法做出正确的预测

在这里插入图片描述
如上图那样有重复的图标时,大模型可能无法理解应该操作哪一个
解决方法: 对重复元素添加更细致的描述,以便让大模型意识到重复元素的存在(原文用的potential,即该方法未经验证

8.3 无法识别文本内容中的超链接

解决方法: 训练一个模型将 OCR 和可交互区域检测组合成一个模块,从而可以检测可点击的文本/超链接。

8.4 图标误解

在这里插入图片描述
把上图(局部)输入给大模型,想点击“更多”,理论上应该点击BOX_26,但是实际上功能描述模型把BOX_26描述为“缓冲/加载”,导致大模型可能无法准确的预测动作
解决方法: 训练知道图像完整”上下文”的图标功能描述模型。(原文用的potential,即该方法未经验证

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

string------1

文章目录 一. STL1.概念2.版本 二. string类2.1 为什么学习string类2. 标准库中的string类2.2.1 构造(7个)2.2.2 对string类对象进行“访问和修改”(1)operator[](2)迭代器1.迭代器的使用2.迭代器的价值&am…

Docker-软件容器平台

一、容器 1、什么是容器 容器就是将软件打包成标准化单元,以用于开发、交付和部署 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和 Windows…

LED和QLED的区别

文章目录 1. 基础背光技术2. 量子点技术的引入3. 色彩表现4. 亮度和对比度5. 能效6. 寿命7. 价格总结 LED和 QLED都是基于液晶显示(LCD)技术的电视类型,但它们在显示技术、色彩表现和亮度方面有一些关键区别。以下是两者的详细区别&#xff…

速通LoRA:《LoRA: Low-Rank Adaptation of Large Language Models》全文解读

文章目录 总览AbstractIntroductionProblem StatementAren’t Existing Solutions Good Enough?Our MethodLow-Rank-Parametrized Update MatricesApplying LoRA to Transformer 何为高斯随机初始化Empirical ExperimentsBaselinesRoBERTa base/largeDeBERTa XXLGPT-2 medium/…

计算机图形学论文 | 木工设计与制造计划的共同优化

🦌🦌🦌读论文 我们的系统共同探索离散设计变量和制造计划的空间,以生成(设计,制造计划)对的帕累托前沿,使制造成本最小化。在该图中,(a)是椅子的输入设计和仅探索该设计的…

NVR录像机汇聚管理EasyNVR多品牌NVR管理工具/设备:大华IPC摄像头局域网访问异常解决办法

在当今社会,安全监控已成为各类场所不可或缺的一部分。无论是家庭、学校、商业场所还是公共场所,安全监控设备都扮演着至关重要的角色。在众多监控品牌中,大华IPC摄像头凭借其高清画质、强大功能和卓越稳定性,赢得了市场的广泛认可…

phpcms-tree(PHP无限级别分类)

phpcms-tree,是一个从PHPCMS v9最新版中提取出来的无限级别分类的源码,可以整合到任何项目中。 使用方法 参考Src/index.php里的实例。 源码下载: 支持本程序,请到Gitee和GitHub给我们点Star! Gitee:p…

【人工智能】Transformers之Pipeline(二十三):文档视觉问答(document-question-answering)

​​​​​​​ 目录 一、引言 二、文档问答(document-question-answering) 2.1 概述 2.2 impira/layoutlm-document-qa 2.2.1 LayoutLM v1 2.2.2 LayoutLM v2 2.2.3 LayoutXLM 2.2.4 LayoutLM v3 2.3 pipeline参数 2.3.1 pipeline对象实例化…

深入浅出 ChatGPT 底层原理:Transformer

Transformer 在人工智能和自然语言处理领域,Transformer架构的出现无疑是一个里程碑式的突破。它不仅推动了GPT(Generative Pre-trained Transformer)等大型语言模型的发展,还彻底改变了我们处理和理解自然语言的方式。 GPT与Transformer GPT 近几年,人工智能技…

显示器接口种类 | 附图片

显示器接口类型主要包括VGA、DVI、HDMI、DP和USB Type-C等。 VGA、DVI、HDMI、DP和USB Type-C 1. 观察 VGA接口:15针 DP接口:在DP接口旁,都有一个“D”型的标志。 电脑主机:DP(D) 显示器:VGA(15针) Ref https://cloud.tenc…

【详细】如何优雅地删除 Docker 容器与镜像

内容预览 ≧∀≦ゞ 镜像与容器的区别删除容器和镜像的具体步骤1. 删除容器步骤 1:查看当前运行的容器步骤 2:停止容器步骤 3:删除容器 2. 删除镜像步骤 1:查看镜像列表步骤 2:删除镜像 3. 删除所有容器和镜像 使用 1Pa…

面试击穿mysql

Mysql三大范式: 第一范式(1NF): 不符合第一范式的典型情况是在一个字段中存放多种不同类型的详细信息。例如,在商品表中,若将商品名称、价格和类型都存储在同一个字段中,会带来诸多弊端。首先,在…

RK3568 Android12跳过认证 预置谷歌服务GMS

在Rom开发中需要发布海外版本时基本都需要内置google服务,而规范方式集成的话都需要设备进行认证,获取google应用签名等非常复杂的一套流程,一般大厂才有这些资质和资源,这里介绍一种非常规方式集成GMS,跳过设置认证流程,在RK3568 android12环境亲测有效。 谷歌全家桶中…

算法(第一周)

一周周五,总结一下本周的算法学习,从本周开始重新学习许久未见的算法,当然不同于大一时使用的 C 语言以及做过的简单题,现在是每天一题 C 和 JavaScript(还在学,目前只写了一题) 题单是代码随想…

一文了解珈和科技在农业遥感领域的服务内容和能力

2020年,农业农村部、中央网信办联合印发了《数字农业农村发展规划(2019-2025年)》,对数字农业农村建设作出了具体部署。其中,农业遥感作为推进数字农业农村的重要力量贯穿《规划》始终。 今年10月,农业农村…

基于STM32的智能停车场管理系统设计

引言 本项目基于STM32微控制器设计了一个智能停车场管理系统,通过集成多个传感器模块和控制设备,实现对停车位的实时监测、显示空闲车位数量,并通过车牌识别实现车辆的自动出入管理。该系统能够实时检测停车位的状态,并通过LCD屏…

springboot智慧自习室管理系统-计算机设计毕业源码96430

目录 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.1.1技术可行性 2.1.2经济可行性 2.1.3社会可行性 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 …

光流法与直接法在SLAM中的应用

本文总结视觉SLAM中常用的光流法与直接法 1、Lucas-Kanade光流法 相机所拍摄到的图像随相机视角的变化而变化,这种变化也可以理解为图像中像素的反向移动。“光流”(Optical Flow)是指通过分析连续图像帧来估计场景中像素或特征点的运动的技…

【在Linux世界中追寻伟大的One Piece】多路转接epoll

目录 1 -> I/O多路转接之poll 1.1 -> poll函数接口 1.2 -> poll的优点 1.3 -> poll的缺点 1.4 -> poll示例 1.4.1 -> 使用poll监控标准输入 2 -> I/O多路转接之epoll 2.1 -> 初识epoll 2.2 -> epoll的相关系统调用 2.2.1 -> epoll_cre…

鸿蒙华为商城APP案例

模拟器运行效果如下: 鸿蒙版APP-华为商城-演示视频