【LLM多模态】InternVL模型架构和训练过程

note

InternVL-1.5的三个重要改进:

  • InternViT增强:V1.2版本去掉了模型的最后3层,将分辨率扩展为固定448x448,而V1.5进一步扩展为动态448x448,即每张训练图像可分块,每块大小为448x448,支持1~12个块。此外,还增强了数据规模、质量和多样性,提高了OCR和高分辨率处理能力。
  • 动态高分辨率:基于图像的分辨率和纵横比,将图像切分为448x448的分块,训练阶段最多12块,测试阶段可以外推到40块,即4K分辨率,这样模型训练和推理能适应多种分辨率和纵横比,避免了强行resize带来的失真和细节丢失。如下图,具体来说,对于一张800x1300的图像,从预定义的纵横比中匹配一个最接近的纵横比2:3,然后将图像resize到896x1344,并切分为多个448x448的图像块,再添加一个缩略视图 (直接resize到448x448) 用于图像全局理解。
  • 高质量中英双语数据集:包含自然场景、图表、文档、对话等多样化的数据,借助LLM实现数据集英文到中文的转换。

一、InternVL模型

可以参考几个经典的指标:
在这里插入图片描述

  • 多模态性能提升:InternVL 1.5在OCR、多模态、数学和多轮对话等18个基准测试中的8个中取得了最先进的结果,显示了其在多模态理解方面的卓越性能。
  • 强视觉编码器:模型采用了一种持续学习策略,显著提升了视觉理解能力,并且能够在不同的大型语言模型(LLM)中迁移和重用。
  • 动态高分辨率:InternVL 1.5能够根据输入图像的长宽比和分辨率,动态地将图像划分为不同大小的图块,最高支持4K分辨率的输入。
  • 双语数据集:通过收集和注释高质量的双语数据集,InternVL 1.5在OCR和中文相关任务中表现出色。
  • ViT-MLP-LLM架构:模型采用了与流行的多模态大模型相似的架构,通过MLP映射器将预训练的视觉编码器与语言模型结合在一起,并通过Pixel Shuffle技巧减少了视觉标记的数量。

模型效果:
在这里插入图片描述
和以往模型架构的区别:
在这里插入图片描述

训练过程

在这里插入图片描述
三阶段训练:

  • 视觉-语言对比训练:进行对比学习,将InternViT-6B与多语言LLaMA-7B在网络规模上的嘈杂图像文本对进行对齐
  • 视觉-语言生成训练:QLLaMA在第一阶段继承了LLaMA-7B的权重。我们保持InternViT-6B和QLLaMA冻结,仅训练新添加的可学习查询和交叉注意力层,使用过滤后的高质量数据。表2总结了第二阶段的数据集。可以看到,我们进一步过滤了低质量标题的数据,将第一阶段的49.8亿个数据减少到了10.3亿(1.03 billion)个
  • 有监督微调:通过MLP层将其与现成的LLM解码器(如Vicuna或InternLM)连接,并进行监督微调

在这里插入图片描述

二、Intern-VL 1.5模型

最近的多模态LLM进展:

  • 谷歌的 Gemini 系列从 Gemini 1.0 [107] 到 Gemini 1.5 [92] 进行,增强了 MLLM,能够处理文本、图像和音频并支持多达 100 万个标记,从而显着提高了性能
  • QwenVL-Plus/Max 是阿里巴巴在 QwenVL 系列 [5] 中的领先模型,在不需要 OCR 工具的情况下在多模态任务中表现出色
  • 其他模型:Anthropic 的 Claude-3V 系列 [3]、HyperGAI 的 HPT Pro [35]、Apple 的 MM1 [84]、StepFun 的 Step-1V [102] 和 xAI 的 Grok-1.5V

视觉编码器的研究进展:

  • 当前很多MLLM使用CLIP-ViT [91] and SigLIP [136]作为视觉编码器
  • LlaVA-HR[76]引入了一种双分支视觉编码器,利用CLIP-ViT进行低分辨率路径,使用CLIP-ConvNext进行高分辨率路径。
  • DeepSeek-VL [71] 采用双编码器设计,对低分辨率图像使用 SigLIP-L 和高分辨率图像使用 SAM-B

1. 模型介绍

  • 视觉编码器:InternViT-6B
    • 动态高分辨率(和很多多模态LLM不一样的地方):我们将图像根据输入图像的纵横比和分辨率划分为1到40块,每块为448×448像素(图像很大则会被切分,每个块被模型独立处理,可以更好地处理图像的细节),从而支持高达4K分辨率的输入(40个小块)。具体的处理方法如下图。
      • 采用动态高分辨率:从预定义的比率中动态匹配一个最优的宽高比,将图像划分为448×448像素的瓦片,并创建一个缩略图以捕捉全局上下文。采用这种方法最小化了宽高比的失真,并适应了训练过程中的不同分辨率。
    • 使用pixel shuffle将视觉token减少到原来的四分之一(原始为1024个token)。PixelUnshuffle操作(即Space2Depth操作,即把相邻区块的特征从空间维度往通道维度上堆叠,来降低分辨率,但是最近的论文总是写成Pixel Shuffle,与经验叫法相悖)
    • InternVL-6B图像编码器:在纯视觉任务和图生文任务上逼近或超过了谷歌的闭源 ViT-22B 模型,并在多模态大模型评测上与 GPT4V、Gemini 等模型竞争相当。

在这里插入图片描述
InternVL模型中的动态分辨率操作(Dynamic High-Resolution)是一种适应不同输入图像分辨率和宽高比的方法。这种方法通过将图像分割成固定大小的瓦片(tile),来增强模型处理详细视觉信息的能力,同时适应多样化的图像分辨率。具体来说,操作包括以下几个步骤:

  1. 动态宽高比匹配(Dynamic Aspect Ratio Matching):首先,模型会从预定义的宽高比集合中动态地匹配最优的宽高比,以保持图像的自然宽高比。例如,集合中可能包含1:1, 1:2, 2:1等宽高比,模型会根据输入图像的宽高比与这些预定义的宽高比进行匹配。

  2. 图像分割与缩略图(Image Division & Thumbnail):确定合适的宽高比后,图像会被调整到相应的分辨率,然后分割成448×448像素的瓦片。此外,为了捕获全局上下文,模型还会生成整个图像的缩略图,这个缩略图也被缩放至448×448像素。

  3. 像素洗牌(Pixel Shuffle)操作:这是一种用于减少视觉令牌数量的操作,通过这种操作,可以将图像表示的视觉令牌数量减少到原始数量的四分之一。这有助于提高模型处理高分辨率图像时的计算效率。

在InternVL 1.5模型中,使用像素洗牌操作是为了在保持图像表示的同时减少模型在处理时所需的视觉令牌数量。这样,即使在测试阶段图像瓦片的数量可以增加到40个(即4K分辨率),模型也能够高效地处理高分辨率输入,实现对高分辨率图像的零样本适应性。总的来说,动态分辨率操作使得InternVL 1.5能够灵活地处理不同尺寸和宽高比的图像,同时通过像素洗牌技术提高处理高分辨率图像时的计算效率。

其他方面:

  • 训练语料:大量中英文
  • 模态对齐方法:对比-生成融合的渐进式对齐技术
  • 模型效果:在OCR和中英文理解评测集上表现出色
  • 主要的benchmark:OCR-related, general multimodal, mathematical, and multi-turn conversation benchmarks.

模型架构:
在这里插入图片描述
两阶段训练:

  • 预训练:对vit和mlp参数更新
  • 微调:全参更新参数

翻译的prompt(可参考):

System:
You are a translator proficient inEnglishand{language}.Your task is to translate the following English text into{language}, focusing on a natural and fluent result that avoids “translationese.”Please consider these points:
1.Keep proper nouns, brands,and geographical names inEnglish.
2.Retain technical terms or jargon inEnglish, but feel free to explain in{language}if necessary.
3.Use{language} idiomatic expressions forEnglish idioms or proverbs to ensure cultural relevance.
4.Ensure quotes or direct speech sound natural in{language}, maintaining the original’s tone.
5.For acronyms, provide the full form in{language}with the English acronym in parentheses.
User:
Textfor translation:{text}
Assistant:
{translation results}

2. 训练数据

为了重点提高OCR效果,训练集中还加入了PaddleOCR。
在这里插入图片描述

3. 模型效果

和sota模型在16个benchmark的效果对比:
在这里插入图片描述
动态分辨率对性能的影响因任务而异。在某些基准测试中,高分辨率可能因增加计算成本而降低性能;而在OCR和文档理解等任务中,高分辨率则能显著提升性能。这强调了为不同任务选择合适分辨率的重要性,并表明动态分辨率是提升多模态模型性能的有效工具。这一结论与mPlug-DocOwl1.5和LLaVa-UHD的研究结果相一致。

二、Intern-VL 2模型

InternVL 2.0的技术报告暂未开源。但模型结构方面和InternVL 1.5没有较大的改动。动态分辨率输入方面,训练中最多12个448×448的patch,测试中最多40个patch(4K分辨率)

模型架构:
在这里插入图片描述
相关模型信息如下,分为两阶段训练:
在这里插入图片描述

  • 使用渐进式对齐的训练方法:模型从小到大,数据从粗到精
  • 多模态编码器:支持图像,视频,文字,语音、三维点云等模态
  • 多模态输出,如images, bounding boxes, and masks

Reference

[1] Intern-vl 2技术博客:https://internvl.github.io/blog/2024-07-02-InternVL-2.0/
[2] 通向高分辨率VLM (5): InternLM-XComposer-4KHD
[3] InternVL-1.5:开源社区最强的多模态大模型成长记录
[4] PixelShuffle面面观(附不同框架的pytorch等价实现)
[5] 多模态MLLM都是怎么实现的(11)–从SadTaler到快手LivePortait
[6] 2024 SOTA多模态大模型架构设计的最佳实践
[7] Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network

相关推荐

  1. LLM、AGI、AI 篇三:微调模型

    2024-07-14 09:44:04       57 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 09:44:04       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 09:44:04       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 09:44:04       58 阅读
  4. Python语言-面向对象

    2024-07-14 09:44:04       69 阅读

热门阅读

  1. C#中反射与MVC和AOP

    2024-07-14 09:44:04       27 阅读
  2. 新词的发现

    2024-07-14 09:44:04       25 阅读
  3. C++类和对象(一)

    2024-07-14 09:44:04       19 阅读
  4. 【AI原理解析】—对抗学习(AL)原理

    2024-07-14 09:44:04       26 阅读
  5. 【nginx】nginx的优点

    2024-07-14 09:44:04       22 阅读
  6. C++多态

    C++多态

    2024-07-14 09:44:04      23 阅读