Monkey 和 TextMonkey ---- 论文阅读

文章目录

  • Monkey
    • 贡献
    • 方法
      • 增强输入分辨率
      • 多级描述生成
      • 多任务训练
    • 实验
    • 局限
    • 结论
  • TextMonkey
    • 贡献
    • 方法
      • 移位窗口注意(Shifted Window Attention)
      • 图像重采样器(Image Resampler)
      • Token Resampler
      • 位置相关任务(Position-Related Task)
      • 损失函数
    • 实验
      • 数据集
      • 比较
      • 可视化
    • 结论

论文:
Monkey:https://arxiv.org/abs/2311.06607
Text-Monkey:https://arxiv.org/abs/2403.04473
代码:
Monkey:https://github.com/Yuliang-Liu/Monkey

Monkey

在这里插入图片描述

贡献

  1. 上下文关联。引入了一种多级描述生成方法,该方法提高了模型掌握多个目标之间关系的能力,并在生成文本描述时更有效地利用公共知识。
  2. 支持分辨率高达1344 x 896。这种分辨率的显著提高超过了LMM通常采用的标准448 x 448分辨率,增强了辨别和理解不明显或密集聚集的对象和密集文本的能力。
  3. 增强了总体性能。在18个不同的数据集上进行了测试,使Monkey模型在图像字幕、通用视觉问答、以场景文本为中心的视觉问答和面向文档的视觉问答等任务中具有非常有竞争力的性能。特别是,在以密集文本问答为中心的定性评估中,与GPT4V相比,Monkey显示出了有希望的结果。

方法

在这里插入图片描述
最初,输入图像被分割成 patch。然后,这些 patch 通过具有不同适配器的共享视觉转换器 (ViT) 进行处理。随后,局部和全局特征以及问题都使用共享重采样器和大型语言模型 (LLM) 进行处理,从而产生所需的答案。

增强输入分辨率

输入分辨率对于准确解释文本和详细的图像特征至关重要。
首先使用滑动窗口把图像分割成小块,在每个共享编码中利用 LoRA 来解决图像不同部分的不同视觉元素。LoRA 的这种集成是为帮助编码器有效地识别和吸收每个图像区域的细节敏感特征,这增强了对空间和时间关系的理解,而不会显著增加参数或计算需求。

为了保留输入图像的整体结构信息,还将原始图像的大小调整为分割后小块的大小,将其作为全局图像,然后每个小块和全局图像通过视觉编码器处理并同时重新采样。重新采样目的是总结视觉信息并在语言特征空间中获得更高的语义视觉表示,它利用交叉注意力机制来实现。该交叉注意力机制使用可训练向量作为 query ,来自视觉编码器的图像特征作为交叉注意力的 key。
这种方法在图像的详细和整体视角之间取得了平衡,从而提高了模型的性能,从而避免了计算需求的大幅增加。

多级描述生成

以前的模型如LLAVA和Qwen-VL使用LAION、COYO和CC3M等大型数据集进行初始训练。然而,这些数据集通常提供过于简单的图像-文本对(例如,描述复杂图像的短句),缺乏详细的图像。因此,即使这些模型是用高分辨率图像训练的,它们也很难准确地将视觉特征与基本标题联系起来。这种限制会影响模型有效地将视觉处理与语言理解相结合。

为了弥合这一差距,本文提出了一种自动生成多级描述的新方法。该技术旨在通过有效地混合各种生成器的输出来创建丰富且高质量的字幕数据。本文利用几个高级系统的组合,每个系统都将其自己的强度带到过程中:BLIP2 ,它提供了对图像和文本之间关系的深刻理解;PPOCR,OCR工具; GRIT,专门针对详细的图像-文本匹配; SAM ,专注于语义对齐;和 ChatGPT,以其在上下文语言生成。

在这里插入图片描述

如上图所示,图像描述过程从 BLIP2 开始,使用 Q-former 创建整体字幕,以与视觉编码器和 LLM 紧密集成,同时保留原始 CC3M 注释以进行上下文。接下来,GRIT 是一个区域到文本模型,生成特定区域、对象及其特征的详细描述。PPOCR从图像中提取文本,SAM片段并识别对象及其部分。然后,这些对象由 BLIP2 单独描述。然而,为了应对这些工具的潜在不准确,尤其是在零样本设置中,我们发现使用 BLIP2 来检查图像区域、对象及其描述之间的一致性至关重要,过滤掉低分匹配。最后,所有数据,包括全局字幕、本地化描述、文本提取和具有空间坐标的对象细节,都被输入 ChatGPT API 进行微调,使 ChatGPT 能够生成准确和上下文丰富的图像描述。

通过合并这些系统的独特特征,本文方法实现了分层和全面的字幕创建风格。它捕获了广泛的视觉和文本细微差别,导致字幕不仅详细说明,而且上下文多样化和引人入胜。

多任务训练

本文是要训练一个既具有成本效益又能够理解各种任务的不同类型的图像模型。通过集成各种数据集并为所有任务使用统一的指令,提高了模型的学习能力和训练效率。

本文专注于创建图像标题、响应基于图像的问题和其他需要模型处理文本和图像的活动等任务。对于字幕,我们用“Generate the caption in English:”指示模型用于基本字幕,“Generate the detailed caption in English:”表示更复杂的字幕。在回答有关图像的问题时,使用一个简单的格式:“{question} Answer:{answer}。”

在训练过程中,使用了针对特定任务量身定制的各种公共数据集。对于图像字幕,包括本文的详细字幕和已建立的数据集,如 COCO 字幕 和 TextCaps 。对于一般的视觉问答(VQA),我们利用VQAV2、OKVQA、GQA、ScienceQA和VizWiz等数据集。对于以文本为中心的 VQA 任务,我们选择 TextVQA 、OCRVQA 和 AI2D ;而对于与文档相关的 VQA,我们采用了 DocVQA 、ChartQA 、InfoVQA 、DeepForm、Kleister Charity (KLC) 、WikiTableQuestions (WTQ)、TableFact 和 VisualMRC 等数据集。为了确保平衡训练,控制了每个任务的图像计数如下表。本文数据集(大约有 1.44 亿个示例)旨在有效地训练本文的模型来理解和执行各种指令。
在这里插入图片描述

实验

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

局限

由于语言模型的输入长度有限,本文方法处理输入图像的能力被限制为最多六个 patches (图像大小为 896*1344)。这种限制阻碍了输入分辨率的进一步扩展。

此外,对于多级描述生成方法,它只能描述图像中呈现的场景,其范围受封装在 BLIP2 和原始 CC3M 注释中的世界知识的限制。例如,当提供国家位置的照片时,该方法可以描述场景的视觉方面,但它缺乏识别和指定场景确实在该国家的能力。

结论

本文提出了一种训练高效的方法,在不从一开始就进行预训练的情况下,有效地将输入分辨率容量提高到1344×896像素。为了弥合简单文本标签和高分辨率之间的差距,提出了一种多级描述生成方法,该方法自动提供丰富的信息,可以引导模型学习场景和对象之间的上下文关联。随着这两种设计的协同作用,本文模型在多个基准上都取得了优异的成绩。通过将本文模型与各种 LMM 进行比较,包括 GPT4V,本文模型通过关注文本信息并捕获图像中的精细细节来展示图像字幕的良好性能;它改进的输入分辨率也可以在具有密集文本的文档图像中取得显着的性能

TextMonkey

在这里插入图片描述

贡献

  1. 增强跨窗口关系。采用 Shfited Window Attention 在扩展输入分辨率的同时成功合并跨窗口连接。在移位窗口注意机制中引入了零初始化,使模型能够避免对早期训练进行剧烈修改
  2. token 压缩。因为放大分辨率会导致一些冗余标记。通过使用相似性作为标准,能够找到作为 token resamper 查询的重要 token。这个模块不仅减少了 token 的长度,而且提高了模型的性能。此外,与使用随机查询相比,它显着提高了性能。
  3. 支持文本接地。本文扩展了我们的范围,以包括基于文本的问答之外的任务,包括阅读文本、文本发现和文本接地。此外,将位置信息合并到答案中可以提高模型的可解释性。TextMonkey还可以进行微调,以了解屏幕镜头点击的命令

方法

在这里插入图片描述

首先使用滑动窗口模块将输入图像划分为不重叠的 patch,每个 patch 的大小为 448x448 像素。这些 patch 进一步细分为 14x14 像素的更小的patch ,每个 patch 都被视为一个 token。利用预训练的 CLIP 模型,然后分别在每个窗口 patch 上处理这些 token。为了建立各个窗口 patch 之间的连接,在 Transformer 块之间以一定间隔集成移位窗口注意力(Shifted Window Attention)。为了生成分层表示,输入图像的大小被调整为 448x448,并输入CLIP提取全局特征。这个全局特征以及来自子图像的特征,然后由共享图像重采样器处理以与语言域对齐。然后,通过压缩标记的长度,使用 Token Resampler 进一步最小化语言空间中的冗余。最终,这些处理后的特征与输入问题相结合,由大型语言模型 (LLM) 分析以产生所需的答案。

移位窗口注意(Shifted Window Attention)

有研究强调了输入分辨率对文档理解重要性。为了提高训练效率,有写方法采用了滑动窗口技术来提高图像分辨率,但这种策略可能会导致文档分析中连接文本的碎片化,从而破坏语义的连续性,
为了缓解上述问题,本文采用了移位窗口注意来增强 CLIP 的视觉处理能力。具体的,本文将图像分割成不重叠的窗口,在每个窗口内分别使用 CLIP,本身该结构不考虑跨窗口的关系。为了合并不同窗口之间的交互并增强图像的上下文理解,所以采用了移位窗口注意力机制。如 Swin Transformer ,滑动窗口向左上角方向循环移动,从而产生新的窗口。通过掩码机制进行自注意力计算,将自注意力计算限制在新的窗口内。
为了实现更平滑的训练初始化,本文通过从零初始化开始学习来对移位窗口注意力进行修改,避免了初始阶段早期特征的过度转换,通过将 MLP 中的常规初始化修改为零初始化,以实现更平滑的训练。根据 LoRA,两个线性层,一个使用随机高斯初始化,另一个使用零初始化。这种方法确保图像编码器的参数在初始阶段保持稳定,便于更平滑的训练。

图像重采样器(Image Resampler)

为了最初减少图像特征的冗余,本文在每个窗口上使用 Qwen-VL 的图像重采样器。该模块使用一组可训练参数作为 query,并且利用来自视觉编码器的图像特征作为交叉注意力的 key 和 value。这个过程有助于将视觉特征序列压缩为 256 的固定长度。此外,为了保持对细粒度图像理解至关重要的位置信息,将二维绝对位置编码集成到交叉注意机制的 query-key 中。

Token Resampler

随着分辨率的增加,使用滑动窗口机制,token 的数量也随着增加。然而,由于某些预研模型的输入长度和训练时间的限制,有必要去减少 token。对于自然语言,重复的语言元素是冗余信息。假设通过扩展图像的分辨率,将存在冗余视觉信息。本文首先计算了图像 token 的相似性:在图像重采样器之后随机选择20个有序特征,并使用余弦相似度得出成对的相似性,可以观察到许多图像 token 表现出多个相似标记,如下图左所示。然后,本文定量比较了不同分辨率的 token 的冗余,如下图右所示。根据经验,选择阈值 0.8 作为相似阈值。在 448、896 和 1334分辨率下,分别观察到 68/256(26.6%)、571/1024(55.8%)和1373/2304(59.5%)的冗余 token。随着分辨率的增加,重复 token 的占比越高。可以观察到,某些 token 是比较独特的,并且缺乏相似的对应 token,例如途中的第五个 token,这表明这个 token 是不同的。假设这些 token 携带关键和独特的信息,利用相似度作为度量来识别显著 token。
在这里插入图片描述
因此,本文提出 token 重采样来压缩冗余 token,如下如所示。本文来利用token 过滤算法来选择最有价值的 token。为了避免直接丢弃其他 token 造成的信息损失,利用重要的 token 作为 query,并使用交叉注意力机制进一步融合所有特征。除此之外,与随机查询相比还显著提升了性能。
在这里插入图片描述

位置相关任务(Position-Related Task)

为了缓解 LLM 的幻觉问题(可能产生与所提供的图像无关的错误相应),本文旨在增强 LLM 在回复的时候可以分析和结合视觉信息的能力。本文对现有的问答数据集进行了修改:将答案的位置信息集成到答案本身中,为了保持直接对话的原始能力,还保留了原始的问答任务。
为了更好地感知文本的空间位置,需要模型具有很强的空间理解。基于此,添加了额外的训练任务来改进模型对文本位置的感知,例如文本定位和阅读文本,比如下表中的任务。为了保证文本和位置数据之间的强联系,我们严格地保持他们地对齐,确保文本信息总是出现在任何相关地位置细节之前。

在这里插入图片描述
为了标准化不同比率地图像,使用 (0,1000) 的尺度来表示位置信息。因此在分辨率为 HxW 的图像中,文本坐标 (x, y) 将归一化为 [x/H*1000] , y 也一样。

损失函数

由于 TextMonkey 被训练来预测其他 LLM 等下一个标记,它只需要在训练时最大化损失的可能性。

L = max ⁡ ∑ i = 1 L log ⁡ P ( s i ~ ∣ I , Q , s 1 : i ) L = \max \sum_{i=1} ^ L \log P(\tilde{s_i}| I, Q,s_{1:i}) L=maxi=1LlogP(si~I,Q,s1:i)

实验

数据集

在这里插入图片描述

为了进一步增强模型处理结构化文本的能力,本文使用结构化数据在 TextMonkey 上微调一个 epoch 以增强其结构化能力,从而产生 TextMonkey†。微调数据主要由前一阶段的 5% 数据以及部分结构化数据组成,包括文档、表格和图表。结构化数据图像还来自公开可用的数据集,并使用它们的结构信息生成。因此,在结构化数据中总共有 55.7k 的数据。

比较

在这里插入图片描述

在这里插入图片描述

可视化

在这里插入图片描述
图表结构化

在这里插入图片描述
APP Agent 使用 Text-Monkey 单击和滑动图形用户界面
在这里插入图片描述

结论

本文为了解决大模型对于文档图像的分辨率问题,使用了滑动窗口并且采用了零初始化的移位窗口注意力来对多窗口建立关系。为了解决视觉 token 的冗余,提出使用 token 重采样来有效减少 token 的数量。同时针对大模型容易出现的幻觉问题,加入了面向文本的任务,增强模型对空间关系的感知和理解。

局限性:由于公共数据集大部分是英文的,针对中文的处理能力稍弱。而且对于分辨率大的图像,与现有的OCR相比,识别效果仍然不好,会出现重复、漏识别等问题。

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

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

相关文章

Collection与数据结构链表与LinkedList(三):链表精选OJ例题(下)

1. 分割链表 OJ链接 class Solution {public ListNode partition(ListNode head, int x) {if(head null){return null;//空链表的情况}ListNode cur head;ListNode formerhead null;ListNode formerend null;ListNode latterhead null;ListNode latterend null;//定义…

【AXIS】AXI-Stream FIFO设计实现(四)——异步时钟

前文介绍了几种同步时钟情况下的AXI Stream FIFO实现方式,一般来说,FIFO也需要承担异步时钟域模块间数据传输的功能,本文介绍异步AXIS FIFO的实现方式。 如前文所说,AXI-Stream FIFO十分类似于FWFT异步FIFO,推荐参考前…

书生浦语笔记一

2023年6月,InternLM的第一代大模型正式发布。仅一个月后,该模型以及其全套工具链被开源。随后,在8月份,多模态语料库chat7B和lagent也被开源。而在接下来的9月份,InternLM20B的开源发布进一步加强了全线工具链的更新。…

《剑指 Offer》专项突破版 - 面试题 98、99 和 100 : 和动态规划相关的矩阵路径问题(C++ 实现)

目录 前言 面试题 98 : 路径的数目 面试题 99 : 最小路径之和 面试题 100 : 三角形中最小路径之和 前言 矩阵路径是一类常见的可以用动态规划来解决的问题。这类问题通常输入的是一个二维的格子,一个机器人按照一定的规则从格子的某个位置走到另一个位置&#…

软件杯 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0…

Java 面试宝典:请说下你对 Netty 中Reactor 模式的理解

大家好,我是大明哥,一个专注「死磕 Java」系列创作的硬核程序员。 本文已收录到我的技术网站:https://skjava.com。有全网最优质的系列文章、Java 全栈技术文档以及大厂完整面经 回答 Reactor 模式是一种高效处理并发网络事件的设计模式&…

SQLite3进行数据库各项常用操作

目录 前言1、SQLite介绍2、通过SQLite创建一个数据库文件3、往数据库文件中插入数据4、数据库文件信息查询5、修改数据库中的内容6、删除数据库中的内容 前言 本文是通过轻量化数据库管理工具SQLite进行的基础操作和一些功能实现。 1、SQLite介绍 SQLite是一个广泛使用的嵌入…

GEE土地分类——基于遥感影像数据的不同作物的分类

简介 这里我们首先要更改原始代码的中的影像和研究区矢量的问题,这个为了防止我们计算的过程超限,建议先将我们的研究区影像和样本点先存在自己的assets中,然后导入到新的脚本中。然周本文就是对其进行影像进行归一化处理,然后进行样本点值提取至点,然后训练样本点,进行…

系统架构体系

一、单体架构 1.浏览器,DNS服务器(解析域名,转换为IP地址),一台计算机就相当于一个服务器(用端口号进行区分Tomcat(web服务),数据库服务) 2.本次架构解决…

3D转换1111

1.三维坐标系 1.3D位移: translate3d(x,y,z)  translform:translateX(100px):仅仅是在x轴上移动  translform:translateY(100px):仅仅是在Y轴上移动  translform:translateZ(100px):仅仅是在Z轴上移动(注意&#xff1…

HTTP/1.1 如何优化?(计算机网络)

有三种方法: 第一个思路是,通过缓存技术来避免发送 HTTP 请求。客户端收到第一个请求的响应后,可以将其缓存在本地磁盘,下次请求的时候,如果缓存没过期,就直接读取本地缓存的响应数据。如果缓存过期&#…

Uibot6.0 (RPA财务机器人师资培训第6天 )发票验真机器人案例实战

类似于小北的这篇博客:Uibot (RPA设计软件)Mage AI智能识别(发票识别)———课前材料五_uibot 添加mageai-CSDN博客https://blog.csdn.net/Zhiyilang/article/details/135591297?spm1001.2014.3001.5501训练网站:泓江…

122、内网安全——域信息收集应用网络凭据CS插件AdfindBloodHound

文章目录 理解域域信息搜集 理解域 假设有1000台计算机,运维人员需要为每一台计算机进行软件的安装、环境部署,实际上运维人员不可能亲自对每一台计算机进行软件的安装和环境部署。实际,将所有1000台计算机放入一个域中,域内有一…

简单爬虫,爬取某东某商品评论前十页

商品链接地址:【博世四坑5系 6x100x160】博世(BOSCH)四坑5系(1支装)圆柄两坑两槽混凝土钻头 6x100x160mm【行情 报价 价格 评测】-京东 首先抓包,用搜索框搜索评论,看评论在哪个包中 为了好看筛…

Python - 深度学习系列31 - ollama的搭建与使用

说明 做这个的主要目的是为了搭建Langchain的本地环境,使用LangChain让LLM具备调用自定义函数的功能。 内容 1 安装server 以下将ollama的安装方式,以及使用做一个简单的说明(记录)。之前对这个工具没有了解,只是从快速实践的…

【python】pip清华大学镜像

1、修改pip源为清华源: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple2、结果是自动给我创建了一个文件: 3、打开这个文件所在的文件夹: 4、打开文件: 5、如果不想指定清华的,就删掉…

微信小程序引导组件【添加到我的小程序】

微信小程序引导组件,点击按钮,弹窗引导用户【添加到我的小程序】 源代码 https://ext.dcloud.net.cn/plugin?id17303

算法学习——LeetCode力扣图论篇3(127. 单词接龙、463. 岛屿的周长、684. 冗余连接、685. 冗余连接 II)

算法学习——LeetCode力扣图论篇3 127. 单词接龙 127. 单词接龙 - 力扣(LeetCode) 描述 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> … -> sk: 每一对相…

动态内存管理-错题合集讲解

空指针的解应用操作(错误信息合集) 越界访问 首先我们上一个代码,看看这个的代码的问题 这个代码的问题显而易见 ,就是在循环里面,产生了越界访问的问题,这里你开辟了10个整形空间,但是从0-1…

爬虫的验证码处理

1.我们先进入chrome浏览器的审查页面找到input方法: 为了不少找到一个input,我们ctrlf的方法输入input来查找 看见我们有6个需要输入的参数。 除了上面几个的input参数,我们还需要获取验证码的图片,后续要将字母填入进去。 二.安…