解析 Ferret-UI:多模态大模型在移动用户界面理解中的应用

移动应用的爆炸性增长,用户界面(UI)的设计越来越复杂,功能也越来越丰富。但现有的多模态大模型(MLLMs)在理解用户界面时存在局限,尤其是在处理具有特定分辨率和包含众多小型对象(如图标、文本)的移动 UI 屏幕时。这些模型通常难以准确识别和操作界面上的特定元素,也难以执行基于自然语言指令的复杂任务。

苹果团队提出的Ferret-UI,正是为了解决这一问题而设计的。它是一款专门针对移动 UI 屏幕理解而优化的 MLLM,具备强大的引用、定位和推理能力。通过创新的“任意分辨率”技术,Ferret-UI 能够放大 UI 屏幕上的细节,并通过精确的区域注释来增强视觉特征的编码。这使得 Ferret-UI 能够在不同尺寸和方向的屏幕上,对 UI 元素进行更准确的识别和操作,从而更好地理解和响应用户的指令。

Ferret-UI 能够执行的不同类型的任务,例如小部件分类、图标识别、OCR 等

Ferret-UI 的训练涉及从基础到高级的广泛任务,包括图标识别、文本查找、控件列表生成,以及详细描述、感知/交互对话和功能推断等。这些训练样本的精心策划和格式化,为模型提供了丰富的视觉和空间知识,使其能够在更深层次上理解 UI,并执行开放性指令。

方法

Ferret-UI 模型是在 Ferret 模型的基础上发展起来的。Ferret 是一个多模态大型语言模型,擅长处理自然图像中的引用和定位任务。然而,移动 UI 屏幕通常具有不同于自然图像的特定特征,例如更长的屏幕比例和更小的交互元素。为了解决这一问题,Ferret-UI 引入了“任意分辨率”技术,允许模型自适应不同尺寸和比例的屏幕。

Ferret-UI-anyres 架构

Ferret-UI-anyres在 Ferret-UI-base 的基础上进行了扩展,以包含更细粒度的图像特征。

  1. 预训练图像编码器和投影层: Ferret-UI-anyres 使用了一个预训练的图像编码器(例如 CLIP-ViT-L/14)来处理整个屏幕的图像,并生成图像特征。这些特征为模型提供了对屏幕全局内容的理解。

  2. 子图像的额外图像特征: 根据原始图像的纵横比,屏幕被划分为子图像。每个子图像都独立地通过相同的图像编码器进行处理,以生成额外的图像特征。这种处理方式使得模型能够捕捉到更多的细节,尤其是在屏幕元素较小或距离较远时。

  3. 视觉采样器: 对于具有区域引用的文本,Ferret-UI-anyres 包含一个视觉采样器,它生成与文本区域相对应的连续特征。这使得模型能够更精确地理解和定位屏幕上的文本内容。

  4. 大模型(LLM)的集成使用: Ferret-UI-anyres 的核心是一个大模型,它利用全图像表示、子图像表示、区域特征和文本嵌入来生成响应。模型在生成回答时,不仅考虑了整体屏幕内容,还包括了细节层面的信息。

  5. 多模态特征融合: 模型融合了来自不同源的特征,包括全局和局部的视觉信息,以及与特定区域相关的文本信息。这种多模态特征的融合为模型提供了丰富的上下文,使其能够更准确地理解用户指令并做出适当的响应。

  6. 灵活适应不同纵横比: Ferret-UI-anyres 的架构设计使其能够灵活适应不同纵横比的屏幕,无论是垂直还是水平方向的屏幕,模型都能够有效地处理。

通过这种架构设计,Ferret-UI-anyres 能够更全面地理解和分析移动 UI 屏幕,从而在执行引用、定位和推理任务时表现出更高的准确性和效率。这种设计不仅提升了模型对 UI 元素的理解,也为处理更加复杂的用户界面交互任务提供了可能。

Ferret-UI 的任意分辨率技术是其创新之处。这项技术通过将屏幕分割成多个子图像来增强模型对细节的捕捉能力。具体来说,根据屏幕的原始纵横比,模型会选择最合适的网格配置(1x2 或 2x1),然后将屏幕调整大小以适应所选网格,并将其分割成子图像。这样,无论是纵向还是横向的屏幕,模型都能够捕捉到重要的视觉细节。

Ferret-UI 使用预训练的视觉编码器(如 CLIP-ViT-L/14)来提取整个屏幕和每个子图像的图像特征。这些特征随后通过投影层转换成适合语言模型处理的格式。这种转换使得语言模型能够更好地理解和处理视觉信息。

Ferret-UI 设计了一个空间感知的视觉采样器,用于处理具有区域引用的文本,生成相应的区域连续特征。这种采样器能够处理不同稀疏级别的区域形状的连续特征,从而增强模型对屏幕特定区域的理解和响应。

Ferret-UI 包括了一系列 UI 引用任务(如 OCR、图标识别、控件分类)和定位任务(如查找文本/图标/控件、控件列表)。这些任务帮助模型建立起对 UI 元素的语义和空间定位的理解,为高级 UI 交互打下了坚实的基础。

通过这些方法和技术的整合,Ferret-UI 能够更深入地理解移动 UI 屏幕,并有效地执行开放性的语言指令。这些技术的融合为移动 UI 自动化和智能化提供了新的可能性,推动了人机交互领域的进一步发展。

数据集与任务构建

为了训练 Ferret-UI,研究团队首先需要收集多样化的移动 UI 屏幕图像。这包括从 Android 和 iPhone 设备中获取的屏幕截图。对于 Android,团队使用了 RICO 数据集的一个子集,特别是 Spotlight 任务中公开可用的数据。而对于 iPhone,使用了 AMP 数据集,涵盖了广泛的应用程序,并从中随机选择了一部分进行训练和测试数据的划分。还使用了预训练的像素级 UI 检测模型来收集屏幕元素的细粒度注释,包括 UI 类型、边界框和显示的文本。

移动 UI 屏幕和训练数据的统计信息,包括不同分辨率下的训练和测试屏幕数量,以及每个训练任务的样本数量。表 1a 展示了不同分辨率的屏幕数量,表 1b 展示了每个训练任务的样本数量

表 1 提供了移动 UI 屏幕和训练数据的统计信息,这些数据为 Ferret-UI 的训练提供了丰富的素材,确保模型能够在多种 UI 场景下学习和泛化。团队采用了三种不同的方法来构建数据集:

重新格式化 Spotlight:将 Spotlight 任务中的 screen2words、widgetcaptions 和 taperception 格式化成对话式 QA 对。使用 GPT-3.5 Turbo 从基础提示生成多样化的提示,并将这些提示与原始图像和正确答案配对。

基础任务:除了 Spotlight 任务外,团队还使用配对屏幕和 UI 元素生成了依赖于定位和引用能力的新 UI 任务数据。这包括为 Android 和 iPhone 屏幕分别引入了 7 个任务:OCR、图标识别和控件分类作为引用任务;以及控件列表、查找文本、查找图标和查找控件作为定位任务。每种任务都使用 GPT-3.5 Turbo 来扩展基础提示,引入任务问题的不同变体。

基础任务数据生成的过程。UI 检测器输出所有检测到的元素,每个元素的类型、文本和边界框都被用来创建基础任务的训练样本

高级任务:为了将推理能力整合到模型中,团队遵循 LLaVA 的方法,并使用 GPT-4 收集了 4 种更多格式的数据。这部分数据收集专注于 iPhone 屏幕,并筛选出具有 2 到 15 个检测结果的示例。这些示例连同提示一起发送给 GPT-4,以创建所需格式的数据。高级任务包括详细描述、对话感知、对话交互和功能推断。对于这些任务,团队扩展了基础提示,并将它们与 GPT-4 的响应配对作为模型训练的输入数据。

高级任务数据生成的概述。首先对检测输出的边界框坐标进行归一化处理,然后将检测结果、提示和可选的一次性示例发送给 GPT-4 以创建所需格式的数据
实验

Ferret-UI-anyres(集成了任意分辨率功能的版本)和Ferret-UI-base(直接遵循Ferret架构的版本)在训练时对解码器和投影层进行了更新,而视觉编码器保持冻结。所有训练数据被格式化为遵循指令的格式,并且训练目标与Ferret中的相同。训练混合数据集包含250K样本,Ferret-UI-base在8个A100 GPU上训练需要1天,而Ferret-UI-anyres需要大约3天。

实验结果显示,Ferret-UI 在多个任务上均优于基线模型,包括公共基准测试(Spotlight 任务)以及基础和高级 UI 任务。特别是在 iPhone 和 Android 平台上的高级任务中,Ferret-UI 显示出了卓越的性能,这表明了模型在不同操作系统上的良好迁移能力。

Ferret-UI 和基线模型在所有任务上的性能结果。包括了公共基准的元素任务和高级任务的性能比较
基础任务性能的比较
高级任务性能的比较。包括了详细描述、对话感知、对话交互和功能推断等任务

消融研究部分探讨了不同因素对模型性能的影响。首先是对高级任务的消融研究,研究了基础任务数据对模型处理高级任务能力的影响。结果显示,基础任务数据的加入显著提升了模型在高级任务上的表现,这支持了基础任务有助于增强模型视觉和空间理解的假设。其次,对 Spotlight 任务的消融研究显示,将高级任务数据与所有基础任务数据结合使用时,能够获得最佳性能。

对高级任务和 Spotlight 任务进行消融研究的结果

在基础 UI 任务的分析中,Ferret-UI 在 OCR 和控件分类预测方面表现出色。OCR 分析揭示了模型在处理小文本和接近其他文本的文本时的挑战,以及模型倾向于预测实际单词而非仅仅是屏幕上显示的字符。而且Ferret-UI 能够准确预测部分被切断的文本。控件分类分析显示,模型在理解控件间关系时存在困难,例如,大型按钮由多个子元素组成时,模型可能将其错误分类为占据空间最大的子元素。

OCR 分析的结果
小部件分类分析的结果
"查找文本" 任务的分析结果

在高级 UI 任务的分析中,Ferret-UI 在进行基于上下文的对话时,其输出的边界框在正确性和相关性方面表现良好。手动评估了 Ferret-UI 和 GPT-4V 的对话交互输出中的所有输出框,Ferret-UI 的准确度达到了 91.7%,而 GPT-4V 为 93.4%。尽管 Ferret-UI 在评估得分上略低于 GPT-4V,但观察预测结果表明,GPT-4V 倾向于提供可能与问题不相关的额外信息,而 Ferret-UI 的简洁答案在某些情况下可能更为准确。

高级任务(功能推断、对话交互、对话感知)的可视化结果,以展示不同模型(Fuyu、CogAgent、GPT-4V、Ferret-UI)之间的差异

通过这些实验,Ferret-UI 证明了其在理解和交互移动 UI 屏幕方面的先进能力,特别是在处理复杂和开放式任务时的优越性能。这些结果不仅展示了 Ferret-UI 的技术实力,也为未来的 UI 自动化和智能化提供了有力的支持。

论文链接:https://arxiv.org/abs/2404.05719

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

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

相关文章

debian打包小结

背景 业务需要,打一个openstack组件的deb包 openstack组件有setup.py可直接支持打rpm包,但不支持deb包,所以手动打deb包 用了dh_make准备打包文件,然后用debuild或dpkg-buildpackages打deb包 步骤 方法有很多,我用…

【uniapp】HBuilderx中uniapp项目运行到微信小程序报错Error: Fail to open IDE

HBuilderx中uniapp项目运行到微信小程序报错Error: Fail to open IDE 问题描述 uniapp开发微信小程序,在HBuilderx中运行到微信开发者工具时报错Error: Fail to open IDE 解决方案 1. 查看微信开发者工具端服务端口是否开放 打开微信开发者工具选择&#xff1…

31、matlab卷积运算:卷积运算、二维卷积、N维卷积

1、matlab卷积运算简介 在Matlab中,卷积运算是一种常见的信号处理和图像处理操作,用于将两个函数或信号进行混合以创建一个新的函数或信号。在Matlab中,卷积运算可以通过使用函数conv来实现。 一维卷积:在一维情况下,…

切片的基础知识

文章目录 ● Slice 的底层实现原理?● array 和 Slice 的区别?● 拷贝大切片一定比小切片代价大吗?● Slice 深拷贝和浅拷贝?● 零切片、空切片、nil切片?● Slice 的扩容机制?● Slice 为什么不是线程安全…

Hive SQL:实现炸列(列转行)以及逆操作(行转列)

目录 列转行行转列 列转行 函数: EXPLODE(ARRAY):将ARRAY中的每一元素转换为每一行 EXPLODE(MAP):将MAP中的每个键值对转换为两行,其中一行数据包含键,另一行数据包含值 数据样例: 1、将每天的课程&#…

新款奔驰GLE350升级原厂空气悬挂系统有哪些功能

奔驰 GLE350 升级原厂空气悬挂带来了一系列显著的优势和功能: 1. 舒适性提升 • 能够根据不同的路况和驾驶模式自动调节悬挂硬度和高度,有效过滤路面颠簸,为驾乘者提供更加平稳、舒适的行驶体验。 2. 行驶高度调节 • 驾驶者可以手动或自…

Web服务器与Apache(虚拟主机基于ip、域名和端口号)

一、Web基础 1.HTML概述 HTML&#xff08;Hypertext Markup Language&#xff09;是一种标记语音,用于创建和组织Web页面的结构和内容&#xff0c;HTML是构建Web页面的基础&#xff0c;定义了页面的结构和内容&#xff0c;通过标记和元素来实现 2.HTML文件结构 <html>…

商汤上海AI实验室联合发布:自动驾驶全栈式高精度标定工具箱(含车、IMU、相机、激光雷达等的标定)

前言 在自动驾驶技术飞速发展的今天&#xff0c;传感器的精确标定对于确保系统性能至关重要。SensorsCalibration&#xff0c;一个专为自动驾驶车辆设计的标定工具箱&#xff0c;提供了一套全面的解决方案&#xff0c;用于校准包括IMU、激光雷达、摄像头和雷达在内的多种传感器…

Spring Cloud Gateway 与 Nacos 的完美结合

在现代微服务架构中&#xff0c;服务网关扮演着至关重要的角色。它不仅负责路由请求到相应的服务&#xff0c;还承担着诸如负载均衡、安全认证、限流熔断等重要功能。Spring Cloud Gateway 作为 Spring Cloud 生态系统中的一员&#xff0c;以其强大的功能和灵活的配置&#xff…

双链表的实现

双链表的实现 前言链表的基础知识双链表的有关方法的实现 前言 Hello&#xff0c;亲爱的CSDN的小伙伴们&#xff0c;你们好&#xff0c;今天我来给大家分享有关双链表的知识&#xff0c;希望可以帮助到大家。 链表的基础知识 1.链表一共有八种&#xff0c;而最常见的只有两种…

【pytorch11】高阶操作

高阶操作 WhereGather where 三个参数&#xff0c;第一个是condition&#xff0c;第二个参数是源头A&#xff0c;第三个参数是源头B&#xff0c;也就是说有两项数据A和B&#xff0c;C有可能来自于A也有可能来自于B&#xff0c;如果全部来自于A的话直接赋值给A&#xff0c;如果…

SpringBoot实现图片添加水印

提示&#xff1a;今日完成图片添加水印功能 后续可能还会继续完善这个功能 文章目录 目录 文章目录 前端部分 后端 Xml Controller层 Sercive层 Service实现层 Config配置层 application.properties 文件后缀名获取 常量定义 前端部分 <!DOCTYPE html> <htm…

在postman中调试supabase的API接口

文章目录 在supabase中获取API地址和key知道它的restfull风格在postman中进行的设置1、get请求调试2、post新增用户调试3、使用patch更新数据&#xff0c;不用put&#xff01;4、delete删除数据 总结 在supabase中获取API地址和key 首先登录dashboard后台&#xff0c;首页- 右…

deepin基于apt-mirror同步软件源及构建本地内网源

1.安装apt-mirror sudo apt install -y apt-mirror2.配置apt-mirror(/etc/apt/mirror.list) sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.deepin.bak #备份配置文件 sudo gedit /etc/apt/mirror.list修改如下&#xff1a; deb [trustedyes] https://mirrors.bfsu.ed…

1976 ssm 营地管理系统开发mysql数据库web结构java编程计算机网页源码Myeclipse项目

一、源码特点 ssm 营地管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开…

单例模式(下)

文章目录 文章介绍步骤安排及单例讲解step1&#xff1a;注册单例类型&#xff08;main.cpp&#xff09;step2&#xff1a;定义类和私有构造函数&#xff08;keyboardinputmanager.h&#xff09;step3:&#xff08;keyboardinputmanager.cpp&#xff09;step4&#xff1a;在qml中…

【Qt】认识Qt界面Hello world小程序

一.认识Qt界面 1.左边栏 在编辑模式下&#xff0c;左边竖排的两个窗⼝叫做 "边栏" 。 ① 是项⽬⽂件管理窗⼝ ② 是打开⽂件列表窗⼝。 边栏⾥的窗⼝数⽬可以增加&#xff0c;边栏⼦窗⼝标题栏有⼀排⼩按钮&#xff0c;最右边的是关闭按钮&#xff0c;倒数第⼆个是 …

HTML5+CSS3+JS小实例:图片九宫格

实例:图片九宫格 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1…

【吊打面试官系列-MyBatis面试题】模糊查询 like 语句该怎么写?

大家好&#xff0c;我是锋哥。今天分享关于 【模糊查询 like 语句该怎么写?】面试题&#xff0c;希望对大家有帮助&#xff1b; 模糊查询 like 语句该怎么写? 第 1 种&#xff1a;在 Java 代码中添加 sql 通配符。 string wildcardname “%smi%”; list<name> names …

无法访问指向的web服务器(或虚拟主机)的目录,请检查网络设置

微信公众平台,进行业务域名、JS接口安全域名、网页授权域名配置时&#xff0c;遇到的问题中有&#xff1a;无法访问指向的web服务器&#xff08;或虚拟主机&#xff09;的目录&#xff0c;请检查网络设置&#xff0c;这里简单记录一下处理过程。 关于这个问题首先保证下载…