将视觉语言模型训练为智能手机助手

24年4月Agile Loop和德国弗赖堡大学的论文“Training A Vision Language Model As Smartphone Assistant”。

为了解决能够执行各种用户任务的数字助理挑战,该研究重点是基于指令的移动设备控制域。 用大语言模型 (LLM) 的最新进展,本文提出一种可以在移动设备上完成各种任务的视觉-语言模型 (VLM)。 模型仅通过与用户界面(UI)交互来发挥作用。 它用来自设备屏幕的视觉输入并模仿类人交互,包括点击和滑动等手势。 输入和输出空间的这种通用性允许智体与设备上的任何应用程序进行交互。 与以前的方法不同,该模型不仅在单个屏幕图像上运行,而且在根据过去的屏幕截图序列以及相应动作创建的视觉语言句子上运行。该方法在具有挑战性的 Android in the Wild 基准测试中评估。

作者引入了一种专为 UI 环境设备控制而定制的视觉语言模型 (VLM)(GeminiTeam,2023;OpenAI,2023;Driess,2023)。 VLM 的主要功能是预测完成给定指令所需的后续操作。 其输入包括指令本身以及由屏幕截图和相关操作组成的历史记录,后者以自然语言格式化。
为了适应文本和视觉输入,将两种模式编码到统一的嵌入空间中。 语言模型中的tokens嵌入对文本组件进行编码,而视觉编码器将每个图像转换为低维表示。 可训练的线性投影将这些视觉嵌入与tokens嵌入的维度对齐。 随后,语言模型对这些嵌入的序列进行操作。 该序列从指令的tokens嵌入开始,然后是初始屏幕状态、第一个操作、后续屏幕状态等的嵌入。 这种方法能够将完整的轨迹表示为一系列嵌入序列,从而促进文本和视觉信息的无缝集成。

该方法的可视图解:根据指令、屏幕截图历史记录和动作历史记录为 VLM 创建一系列嵌入向量,这些向量首先被翻译为自然语言,然后被编码为tokens嵌入。 根据视觉编码器的不同,视觉嵌入向量的数量可能会有所不同。

请添加图片描述

对于视觉编码器,用预先训练的 Vision Transformer (ViT) 模型(Dosovitskiy et al., 2020),配置了 3.2 亿个参数,设计用于处理 384 × 384 大小的图像。输入分辨率的选择要确保识别精细细节,例如屏幕上出现的小文本。 使用可学习的投影矩阵将视觉编码器的输出投影到语言模型的tokens嵌入空间中。

对于语言模型,用 LLama-2-7B(Touvron,2023)。 选择仅解码器模型来自动回归文本生成的优先级,符合以文本形式预测动作的要求。 LLama-v2 模型以其在文本生成任务中的特征而闻名,这非常适合该应用程序。 使用 7B 参数版本的决定是出于计算效率的考虑,尽管更大的版本可能会产生更强大的性能。

值得注意的是,与以前的方法不同,该方法包含完整的历史状态,可以更全面地理解上下文并增强控制机制的稳健性。

Qwen-VL(Bai,2023b)的视觉编码器利用 Vision Transformer(ViT)架构,以及来自 Openclip 的 ViT-bigG(Ilharco,2021)的预训练权重。 输入图像的大小调整为 448 × 448 的分辨率,并由视觉编码器处理,将它们分割成步幅14的块,生成图像特征。 为了减少特征序列的长度,Qwen-VL 引入位置-觉察的视觉语言适配器。 该适配器使用随机初始化的单层交叉注意模块进行初始化,使用可训练的查询向量和位置编码来压缩图像特征。 然后将长度固定为 256 的压缩特征序列输入到语言模型中,该模型使用 Qwen-7B 中的预训练权重进行初始化(Bai,2023a)。 该模型总共有 96 亿个参数。

Qwen-VL 已接受过多种视觉语言任务的预训练。 特别是,这包括OCR等任务以及涉及在图像中定位目标的任务。 这两者都有助于理解屏幕的预训练任务,因为这需要理解文本以及定位按钮。

利用 AITW 基准测试提供的动作空间,其中包括四个字段:类型、触摸点、抬起点(手势动作专用)和键入的文本(打字动作专用)。 在此框架内,定义了六种不同的动作类型:双点手势、打字、返回(go back)、回主页(go home)、输入(enter)、任务完成和不可能任务。 双点手势伴随着触摸和抬起参数。 如果触摸和抬起彼此不同,则它可以表示滑动;如果它们足够相似,则可以表示轻击。 触摸和抬起参数均由触摸或抬起屏幕上的 (x, y) 坐标给出。

通过最初声明的动作类型,以及用于区分轻击和滑动的双点手势之附加规范,将这些动作翻译成自然语言。 对于点击操作,包含由空格字符分隔的触摸点坐标,并将坐标离散化为范围从 0 到 99 的 bin。例如,点击操作可能表示为“在 7 90 处点击”。 滑动操作表示为“从 3 44 滑动到 40 48”。 键入操作被描述为“ 输入文本“txt” ”,其中 txt 代表键入操作的键入文本。 返回(go back)、返回主页(go home)、输入(enter) 动作前面有“press”,表示按钮按下动作,例如“press home”。 AITW 中的动作与其自然语言表示之间的详细映射如表所示。

请添加图片描述
在 LLama+ViT 的训练过程中,冻结 LLM 的视觉编码器和tokens嵌入,将训练工作仅集中在语言模型本身和投影矩阵 Wproj 上,其用于将视觉编码器输出映射到语言模型的嵌入大小。 对于 Qwen-VL 模型,冻结除语言模型之外的网络所有部分,因为视觉和视觉投影部分已经过预训练,可以为语言模型生成有用的输入。 为了减少计算和硬件需求,对这两个模型都采用 LoRA(Hu et al., 2021)。

训练数据集包括演示,以及通过下一个token预测和屏蔽自注意训练的完整模型。 这种方法反映传统的 LLM 对特定域数据集的微调,但在损失计算期间,忽略与指令和图像嵌入相对应的预测。 因此,LLM 经过训练,可以根据提供的指令以及迄今为止的操作历史记录和屏幕截图,准确预测与正确操作相对应的token。 通过这种方式,模型可以在包括指令的完整轨迹上进行训练,就像在完整的句子上进行训练一样。

评估结果如下表所示,部分匹配得分对所有分组以及每个分组分别进行平均。 *请注意,由于正文中解释的动作表示不同,因此 Auto-UI 的结果不能直接与该方法进行比较。仍然包含这些结果以供参考。

请添加图片描述

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

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

相关文章

如何通过 AWS Managed Apache Flink 实现 Iceberg 的实时同步

AWS Managed Apache Flink (以下以 MSF 代指)是 AWS 提供的一款 Serverless 的 Flink 服务。 1. 问题 大家在使用 MSF 的时候,可能遇到最大的一个问题就是 MSF 的依赖管理,很多时候在 Flink 上运行的代码,托管到 MAF…

CV每日论文--2024.5.10

1、Attention-Driven Training-Free Efficiency Enhancement of Diffusion Models 中文标题:扩散模型的注意力驱动的训练免费效率增强 简介:扩散模型在生成高质量和多样化图像方面取得了出色的表现,但其卓越性能是以昂贵的架构设计为代价的,特别是广泛使…

1727jsp思想政治活动Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 思想政治活动管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff…

【VTKExamples::Rendering】第十期 TestStippledLine

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TestStippledLine,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 1. TestStippledLin…

【机器学习】机器学习与人工智能融合新篇章:自适应智能代理在多元化复杂环境中的创新应用与演进趋势

🔒文章目录: 💥1.引言 🚋1.1 机器学习与人工智能的发展背景 🚌1.2 自适应智能代理的概念与重要性 🚐1.3 研究目的与意义 ☔2.自适应智能代理的关键技术 🛣️2.1 环境感知与信息处理技术 …

JavaEE技术之SpringCloud(Nacos注册中心、Nacos配置中心、Sentinel实现熔断与限流)

文章目录 SpringCloud Alibaba1、简介1.1 背景1.2 Nacos主要功能1.3 Nacos和SpringBoot、SpringCloud版本选择 2、Nacos注册中心2.1 案例准备2.2 Nacos注册中心下载启动2.2.1 下载2.2.2 解压启动2.2.3 nacos-server访问测试 2.3 nacos注册中心客户端整合2.3.1 订单服务整合naco…

英伟达解码性能NVDEC

如果你能打开官网,请看这里: NVDEC Application Note 下面是摘录:

python数据可视化:从n个点中挑选m组3个点绘制m个三角形matplotlib.pyplot.triplot()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 python数据可视化: 从n个点中挑选m组3个点 绘制m个三角形 matplotlib.pyplot.triplot() [太阳]选择题 以下关于matplotlib.pyplot.triplot()函数说法正确的是? impor…

Python环境变量的访问:从入门到精通

环境变量是操作系统中的一种特殊变量,它允许用户在不修改程序的情况下,通过配置文件来改变程序的行为。在Python中,访问环境变量是一个常见的需求,无论是为了读取配置信息、获取系统信息,还是进行程序调试。本文将详细…

draw.io 网页版二次开发(1):源码下载和环境搭建

目录 一 说明 二 源码地址以及下载 三 开发环境搭建 1. 前端工程地址 2. 配置开发环境 (1)安装 node.js (2)安装 serve 服务器 3. 运行 四 最后 一 说明 应公司项目要求,需要对draw.io进行二次开发&…

python练习题(编程)

目录 7-1 输入列表,求列表元素和(eval输入应用) 输入格式: 输出格式: 输入样例: 输出样例: 7-3 求矩阵鞍点的个数 7-5 求圆面积 输入格式: 输出格式: 输入样例: 输出样例: 7-6 字典合并与排序 输入格式: 输出格式: 输入样例1: 输出样例1:…

Redis:分布式系统

文章目录 分布式单机架构应用数据分离架构应用服务集群架构 负载均衡读写分离冷热分离架构垂直分库微服务架构 分布式 下面就要简单对于分布式进行一个认识了 单机架构 在进行了解分布式之前,先了解一下什么是单机架构 如上所示就是一个单机架构,对于…

【JavaEE 初阶(六)】网络编程

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多网络知识 目录 1.前言2.浅谈网络2.1基本知识2.2.OSI与TCP/IP 3.网络编程3.1TCP与UDP区别3.2UDP网路编程…

18 【Aseprite 作图】描边 换颜色 蒙版

1 描边的方式:选择“编辑 - 特效 - 轮廓” 就可以一键描边了 2 替换颜色 通过“编辑 - 替换颜色”,就把颜色从黄色 替换成了 紫色 3 调整色相,通过“编辑 - 调整 - 色相/饱和度”,就可以类似PS调整色相饱和度 4 铅笔选择“锁…

vue+springboot用户注销功能

vue文件前端 <el-button type"warning" plain click"handleDeletion">注 销</el-button> // 注销 const handleDeletion (userName) > {ElMessageBox.confirm(注销该用户所有信息后无法恢复&#xff0c;您确认注销吗?, 注销确认, { type…

【eclipse】如何在IDE里创建一个Java Web项目?

如何在eclipse中创建一个动态Web项目并成功运行&#xff1f; 一、 最终效果 懒得写那么多了…我也不知道该怎么写了&#xff0c;有点乱&#xff0c;有问题可以在评论里留言&#xff0c;我看到会解决的&#xff0c;在这个过程中也踩到了一些坑&#xff0c;但好在有CSDN帮助解决…

【VTKExamples::Rendering】第十一期 TestStringToImageDemo

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享TestStringToImageDemo,该样例用于将字符转化为Image,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^…

YOLOv8独家改进:backbone改进 | 微软新作StarNet:超强轻量级Backbone | CVPR 2024

💡💡💡创新点:star operation(元素乘法)在无需加宽网络下,将输入映射到高维非线性特征空间的能力,这就是StarNet的核心创新,在紧凑的网络结构和较低的能耗下展示了令人印象深刻的性能和低延迟 💡💡💡如何跟YOLOv8结合:替代YOLOv8的backbone 收录 YOLOv8…

Qt---文件系统

一、基本文件操作 1. QFile对文件进行读和写 QFile file( path 文件路径) 读&#xff1a; file.open(打开方式) QlODevice::readOnly 全部读取->file.readAll()&#xff0c;按行读->file.readLine()&#xff0c;atend()->判断是否读到文件尾 …

贪心算法----最大数

今日题目&#xff1a;leetcode179------点击跳转题目 分析&#xff1a; 要把这些数组组成最大的数&#xff0c;首先我们把数字转化为字符串&#xff0c;根据自定义的排序规则把这些字符串字数排列&#xff0c;再用一个字符串接受这些字符串数字拼接成最大的字符串数字 排序规则…