文章目录
- 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
贡献
- 上下文关联。引入了一种多级描述生成方法,该方法提高了模型掌握多个目标之间关系的能力,并在生成文本描述时更有效地利用公共知识。
- 支持分辨率高达1344 x 896。这种分辨率的显著提高超过了LMM通常采用的标准448 x 448分辨率,增强了辨别和理解不明显或密集聚集的对象和密集文本的能力。
- 增强了总体性能。在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
贡献
- 增强跨窗口关系。采用 Shfited Window Attention 在扩展输入分辨率的同时成功合并跨窗口连接。在移位窗口注意机制中引入了零初始化,使模型能够避免对早期训练进行剧烈修改
- token 压缩。因为放大分辨率会导致一些冗余标记。通过使用相似性作为标准,能够找到作为 token resamper 查询的重要 token。这个模块不仅减少了 token 的长度,而且提高了模型的性能。此外,与使用随机查询相比,它显着提高了性能。
- 支持文本接地。本文扩展了我们的范围,以包括基于文本的问答之外的任务,包括阅读文本、文本发现和文本接地。此外,将位置信息合并到答案中可以提高模型的可解释性。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=1∑LlogP(si~∣I,Q,s1:i)
实验
数据集
为了进一步增强模型处理结构化文本的能力,本文使用结构化数据在 TextMonkey 上微调一个 epoch 以增强其结构化能力,从而产生 TextMonkey†。微调数据主要由前一阶段的 5% 数据以及部分结构化数据组成,包括文档、表格和图表。结构化数据图像还来自公开可用的数据集,并使用它们的结构信息生成。因此,在结构化数据中总共有 55.7k 的数据。
比较
可视化
图表结构化
APP Agent 使用 Text-Monkey 单击和滑动图形用户界面
结论
本文为了解决大模型对于文档图像的分辨率问题,使用了滑动窗口并且采用了零初始化的移位窗口注意力来对多窗口建立关系。为了解决视觉 token 的冗余,提出使用 token 重采样来有效减少 token 的数量。同时针对大模型容易出现的幻觉问题,加入了面向文本的任务,增强模型对空间关系的感知和理解。
局限性:由于公共数据集大部分是英文的,针对中文的处理能力稍弱。而且对于分辨率大的图像,与现有的OCR相比,识别效果仍然不好,会出现重复、漏识别等问题。