MLLM | InternLM-XComposer2-4KHD: 支持336 像素到 4K 高清的分辨率的大视觉语言模型

上海AI Lab,香港中文大学等

论文标题:InternLM-XComposer2-4KHD: A Pioneering Large Vision-Language Model Handling Resolutions from 336 Pixels to 4K HD

论文地址:https://arxiv.org/abs/2404.06512

Code and models are publicly available at https://github.com/InternLM/InternLM-XComposer

一、问题提出

大型视觉语言模型(LVLM)对image captioning和视觉问答 (VQA)等任务的熟练。然而,由于分辨率有限,它们很难处理包含精细细节的图像,例如图表、表格、文档和信息图表。最近的进展旨在提高大视觉语言模型(LVLM)的分辨率。【Cogagent、Mini-Gemini、Kosmos-2.5、Vary】直接采用高分辨率视觉编码器。然而,Vision Transformer (ViT) 架构在处理不同分辨率和长宽比的图像时存在不足,从而限制了其有效处理不同输入的能力。或者,【mplug-docowl 1.5、Otterhd 、Monkey 、Sphinx、Llava-next、Textmonkey 、 Llava-uhd 】保持视觉编码器的分辨率,将高分辨率图像分割成多个低分辨率图像块。然而,这些方法受到分辨率不足的限制,通常在1500×1500左右,不能满足日常内容的需求,例如网站截图、文档页面和蓝图设计图。此外,它们仅限于一些预定义的高分辨率设置或有限的分辨率范围。

二、方法提出

InternLM-XComposer2-4KHD的模型架构主要沿用了InternLM-XComposer2的设计(为简单起见,下面简称为XComposer2),包括轻量级视觉编码器OpenAI ViT-Large/14、大型语言模型InternLM2-7B ,以及用于高效对齐的部分 LoRA。

1、High-Resolution Input.

动态图像分区 “Dynamic Image Partition.”

利用静态输入图像大小来处理高分辨率图像,尤其是那些具有不同纵横比的图像,既不高效也不有效。为了克服这一限制,引入了一种动态图像Partition方法。策略性地将图像分割成更小的块,同时保持原始图像长宽比的完整性。

给定最大分区数 H,大小为 [h, w] 的图像 x 被调整大小并填充到大小为 [ph × 336, pw × 336] 的新图像 x’:

pw 和 ph 分别代表每行和每列的 patch 数量。然后将  x’ 分割成 ph × pw 不重叠的patch。每个patch都是一个 336 × 336 大小的小图像,将这些补丁视为 ViT 的单独输入。使用“HD-H”来表示具有 H 个patch约束的高分辨率设置。例如,HD-9最多允许 9 个patch,包括一系列分辨率,例如 1008×1008 (3*3)、672×1344(2*4)、336×3024(1*8) 等。

Global-Local Format.

对于每个输入图像,将其以两个视图呈现给模型。第一个是全局视图,其中图像大小调整为固定大小( 336 × 336)。这提供了对图像的宏观理解。根据经验,这对于 LVLM 正确理解图像至关重要。第二个视图是局部视图。使用前面提到的动态图像分区策略将图像划分为补丁,并从每个patch中提取特征。特征提取后,补丁被重新组装成一个大的特征图。经过简单的标记合并过程后,特征图将被展平为最终的局部特征。

Image 2D Structure Newline Indicator.

图像具有 2D 结构,并且图像比例是动态的,每行的token数量在不同图像中可能会有所不同。这种变化可能会混淆 LVLM,从而难以确定哪些token属于图像的同一行,哪些token属于下一行。这种混乱可能会阻碍 LVLM 理解图像 2D 结构的能力,而这对于理解文档、图表和表格等结构图像内容至关重要。为了解决这个问题,在flatten前在图像特征的每行末尾引入了一个可学习的换行符(‘\n’)。最后,concate全局视图和局部视图,在它们之间插入一个特殊的‘separate’ token来区分这两个视图。

2、Pre-Training

在预训练阶段,LLM 被冻结,同时视觉编码器和部分 LoRA 都经过微调,以使视觉token与 LLM 保持一致。预训练数据主要遵循 XComposer2 中的设计,其设计考虑了三个目标:1) general semantic alignment, 2) world knowledge alignment, 3) vision capability enhancement。重点关注高分辨率和结构图像理解。因此,收集了更多相关数据来增强这一特定能力。

CLIP ViT-L-14-336 作为视觉编码器。使用“HD-25”。对于每个图像或patch,通过简单的‘merge’操作,图像token数量减少到 1/4。通过在channel维度将附近的 4 个 token 连接成一个新 token,然后通过 MLP 将其与 LLM 对齐。 “separate”和“\n”标记是随机初始化的。对于部分 LoRA,为 LLM 解码器块中的所有线性层设置等级为 256。训练4096 的批大小,2 个epoch。在训练step的前 1% 内,学习率线性增加到 2 × 10−4。此后,根据余弦衰减策略减小到 0。为保留视觉编码器预先存在的知识,应用分层学习率(LLDR)衰减策略,并将衰减因子设置为0.90。

3、KHD Supervised Fine-tuning

低分辨率输入可能会扭曲密集的文本信息,导致模型无法理解。为解决这个问题,引入混合分辨率训练策略以实现更高效的训练。对于需要高分辨率的任务,在训练期间采用“HD-55”。这样就可以输入 4K (3840 × 1600) 图像,而无需额外的图像压缩。对于其他任务,实施动态分辨率策略。图像的大小会调整到原始大小和“HD25”设置指定的大小之间的范围内。这种动态方法增强了 LVLM 针对输入分辨率差异的鲁棒性,从而使 LVLM 在推理过程中能够利用更大的分辨率。例如,观察到使用“HD30” vs “HD25”设置下进行训练时,HD30可以在大多数 OCR 相关任务上产生更好的结果。

联合训练批大小为 2048 的所有组件,超过 3500 个step。来自多个源的数据以加权方式采样,权重基于每个源的数据数量。由于“HD55”设置比“HD-25”具有双倍图像tokens,因此调整dataloader以启用不同的批大小,并相应地调整它们的权重。最大学习率设置为5×10−5,每个组件都有自己独特的学习策略。对于视觉编码器,将 LLDR 设置为 0.9,这与预训练策略一致。对于LLM,采用固定的学习率比例因子 0.2。这减慢了LLM的更新速度,在保留其原有能力和使其与视觉知识保持一致之间取得了平衡。

三、实验

1、LVLM Benchmark results.

在表 3 和表 4 中,在一系列基准测试中将 IXC24KHD 与 SOTA 开源 LVLM 和闭源 API 进行了比较。评估主要在OpenCompass VLMEvalKit上进行,以便统一复现结果。

High-resolution Understanding Evaluation.

2、Dive into Resolution

High-Resolution Training is Critical for HD-OCR tasks

研究四种分辨率设置:HD-9(最多 1561 个图像token、HD16(2653 个token)、HD-25(4057 个token)和 4KHD(8737 个token)。在这里,报告了 InfoVQA、DocVQA 和 TextVQA 的验证集、ChartQA 和 AI2D 的测试集、MMBench EN-Test 以及 SEEDBench 的 2k 子集(将其表示为 SEED*)。

Higher Inference Resolution Leads to better results on Text-related Tasks.

模型在以稍高的分辨率进行推断时,往往会在文本相关任务上产生更好的结果。 HD-9、HD-16 和 HD-25 的结果。

训练中使用的自然图像token长度增强了 LVLM 的鲁棒性,当图像中的文本在更高分辨率的输入中更加“清晰”时,会产生更好的结果。相反,在此设置下,ChartQA 的结果始终会下降。这可能是由于当分辨率改变时模型对图表结构变得混乱。此外,与图 5 中的观察结果类似,分辨率对感知相关基准的影响似乎相当小。

可视化结果

3、High-Resolution Strategy Ablation

The Role of Global-View.

发现全局视图对于 LVLM 准确理解输入图像至关重要。当它被删除时,模型在所有基准测试中的表现都会变差。全局视图提供了对图像的一般宏观理解,而该模型很难从局部视图中的大量标记中得出这种理解。

The Role of the Newline Token.

在展平操作之前,在图像特征的每行末尾合并一个特殊的换行符。该token用作图像 2D 结构的指示符。当采用固定高分辨率策略 HD-9 时,观察到换行token带来的好处很小。这可能归因于 LVLM 能够处理训练后图像比例的有限差异。然而,当实施更具挑战性的 4KHD(HD-25 + HD-55)策略时,该策略在图像比例和标记数量方面都表现出显着的多样性,在没有换行符的情况下,LVLM 在 OCR 相关任务上表现出显着的性能下降。当图像标记直接展平为一维序列时,LVLM 很难理解图像的形状。换行标记可以帮助模型更好地理解图像的结构。

Influence of Token Merging Strategy.

采用一种简单的合并策略,沿着channel维度concate四个相邻的token。发现这种方法可以有效地减少图像标记的数量。研究了两种额外的策略:ReSampler和C-Abstractor,其默认设置和相同的压缩率0.25,即将具有576个token的图像减少到144个token。结果表明,串联和 C-Abstractor 都工作良好,并且在大多数基准上得到相似的结果。然而,ReSampler的性能比其他方法差,并且有明显的余量。认为这是由于用于收集信息的可学习查询需要大量数据进行训练而引起的,预训练数据对于它完全收敛来说有些轻量级。

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

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

相关文章

PyCharm Professional 安装

文章目录 下载PyCharm 2022.3 Professional使用‘第一种【推荐】’即可记得要是要使用Activation Code激活! 破解方法: https://www.exception.site/essay/pycharm-pojie-jihuoma 下载PyCharm 2022.3 Professional [https://www.jetbrains.com/pycharm/…

使用 ollama 部署最新的Llama 3 70B本地模型

一、ollama是什么? 在本地启动并运行大型语言模型。运行Llama 3,Mistral, Gemma, Code Llama和其他模型。自定义并创建您自己的。 综合优点: 快速下载容器自动运行大模型,现在下载,马上上手。本地利用 cpu 运行大模型&#xff0c…

【Hadoop】-Apache Hive概述 Hive架构[11]

目录 Apache Hive概述 一、分布式SQL计算-Hive 二、为什么使用Hive Hive架构 一、Hive组件 Apache Hive概述 Apache Hive是一个在Hadoop上构建的数据仓库基础设施,它提供了一个SQL-Like查询语言来分析和查询大规模的数据集。Hive将结构化查询语言(…

视频教程下载:ChatGPT驱动的SEO、网络营销、生产力提升

用户遇到的一个常见问题是在ChatGPT对话过程中难以保持清晰的目的和专注。这可能导致互动无效和浪费时间。这门课程将教给各种创意人士——艺术家、制造者、博主、讲师和内容创作者——如何制定理想的提示配方,从而产生更有成效的对话和更高的回报。 这是一门关于如…

小程序前端调用接口(getAccessToken)获取调用凭据,调用接口(msgSecCheck)检测文本内容是否安全--最终版

序言: 集合百家之所长,方著此篇文章,废话少说,直接上代码,找好你的小程序APPID,AppSecret(小程序密钥),进行配置,然后复制粘贴代码,就可以了。 第一步:小程序前端调用接口(getAccessToken)获取调用凭据 wx.request({method: GET,url: "https://api.weixin.qq.…

【入门篇】本章包括创建云项目、数据库的使用、云存储管理、云函数的基本使用、实战举例(小程序之云函数开发入门到使用发布上线实操)

云函数 云函数相当于服务器接口的概念,它并属于小程序端代码。它是以函数的形式运行后端代码来响应事件以及调用其他服务。运行环境是Node.js。 一、基创建云函数项目 打开微信开发者工具: 打开微信开发者工具,并登录你的微信开发者账号。 创建项目: 如果还没有创建项目,你…

7. Django 模型与数据库

第7章 模型与数据库 Django对各种数据库提供了很好的支持, 包括PostgreSQL, MySQL, SQLite和Oracle, 而且为这些数据库提供了统一的API方法, 这些API统称为ORM框架. 通过使用Django内置的ORM框架可以实现数据库连接和读写操作. 本章以SQLite数据库为例, 分别讲述Django的模型…

Ai-WB2 系列模组SDK接入亚马逊云

文章目录 前言一、准备二、亚马逊云物模型建立1. 注册亚马逊账号,登录AWS IoT控制台,[注册地址](https://aws.amazon.com/cn/)2. 创建好之后点击登录3. 创建物品以及下载证书 三、连接亚马逊云demo获取以及配置1. 下载源码2. 按照顺序执行下面指令3. 修改…

用友U8-Cloud api/hr接口存在SQL注入漏洞

声明: 本文仅用于技术交流,请勿用于非法用途 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。 简介 U8 Cloud是由用友推出的新一代云ERP系统&#xff0…

20240331-1-基于深度学习的模型

基于深度学习的模型 知识体系 主要包括深度学习相关的特征抽取模型,包括卷积网络、循环网络、注意力机制、预训练模型等。 CNN TextCNN 是 CNN 的 NLP 版本,来自 Kim 的 [1408.5882] Convolutional Neural Networks for Sentence Classification 结…

hadoop安装记录

零、版本说明 centos [rootnode1 ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)jdk [rootnode1 ~]# java -version java version "1.8.0_311" Java(TM) SE Runtime Environment (build 1.8.0_311-b11) Java HotSpot(TM) 64-Bit Server VM (…

Node.js数电票、全电票查验接口示例、发票查验、票据OCR API

何为数电票:数电票全称为全面数字化的电子发票,是一种全新的发票形式,与传统的纸质发票具有同等的法律效力,以数字形式存在,不依赖于纸质介质,而数电票的推行旨在提高发票管理效率,降低企业成本…

【LeetCode热题100】【图论】腐烂的橘子

题目描述:994. 腐烂的橘子 - 力扣(LeetCode) 腐烂的橘子会污染周围的橘子,要求多少轮扩散才能把全部橘子污染,这就相当于滴墨水入清水,会扩散,其实就是广度遍历,看看遍历多少层可以…

编写一款2D CAD/CAM软件(十六)交互绘制图形

绘制步骤 以交互绘制圆形为例: 点击鼠标左键,确定圆心位置;抬起鼠标,移动鼠标,半径随鼠标位置变化;点击左键确定半径,完成圆的绘制。 绘制结果 Code /// j-operator-create-circle.h#pragma…

Facebook的区块链应用深度分析

去中心化身份验证的意义 在当今数字化社会中,身份验证的重要性不言而喻。对于Facebook这样的大型社交媒体平台来说,确保用户的身份真实性和数据的安全性是至关重要的。传统的中心化身份验证方式存在一定的安全风险和可信性问题,而去中心化身…

04-2.Vue2.x data与el的2种写法

文章目录 data与el的2种写法 data与el的2种写法 <!DOCTYPE html> <html lang"en"><head><!-- data与el的2种写法1. el有2种写法&#xff1a;1)new Vue时直接传递el属性----常用2)通过vm.$mount(#root)指定容器 ----不常用2.data有2种写法&…

verilog中赋值运算符(=和<=)的用法

目录 原理 RTL 图 运算符优先级 原理 “”阻塞赋值&#xff0c;”<”非阻塞赋值。阻塞赋值为执行完一条赋值语句&#xff0c;再执行下一条&#xff0c;可理解为顺序执行&#xff0c;而且赋值是立即执行&#xff1b;非阻塞赋值可理解为并行执行&#xff0c;不考虑顺序&am…

智能合约区块应用链交易所系统教程开发搭建

智能合约区块应用链交易所系统开发搭建是一个复杂的过程&#xff0c;需要涉及到多个领域的知识和技能&#xff0c;包括区块链技术、智能合约开发、网络通信、数据库管理、前端开发等等。下面是一个大致的步骤&#xff0c;可以帮助你开始开发&#xff1a; 1. 确定系统需求和架构…

Qt绘制边框有阴影兼容性问题

在Qt开发过程中&#xff0c;有时候我们要显示一个有阴影的对话框&#xff0c;这时一般采用自定义实现&#xff0c;然而最近在开发时软件时&#xff0c;Win11上显示正常&#xff0c;Win10或其他Win11电脑显示不正常&#xff0c;存在兼容性问题吗&#xff1f; 下面是具体的源码 …