通向高分辨率VLM (5): InternLM-XComposer-4KHD

文摘   科技   2024-06-20 09:15   上海  

HuggingFace: https://huggingface.co/internlm/internlm-xcomposer2-4khd-7b

Github: https://github.com/InternLM/InternLM-XComposer

Paper: https://arxiv.org/abs/2404.06512


摘要

与本系列先前几篇高分辨率VLM类似,上海人工智能实验室出品的InternLM-XComposer-4KHD使用了相同的方法解决了高分辨率输入的问题。InternLM-XComposer2-4KHD 支持从336像素到4K HD(3840x1600)的分辨率。

高分辨率处理方面,该模型引入了一种新的动态分辨率自动patch切片方法,这允许模型在保持训练图像宽高比的同时,根据输入图像的宽高比自动计算并调整patch数量和布局。在输入高分辨率patches的同时,也增加了低分辨率的全局视图输入。这样更加符合知觉,也更加简单合理。

训练数据方面,高分辨率的训练数据尤其是OCR相关任务的数据也是必不可少的,对高分辨率任务的效果上起到了很大的作用。

方法

InternLM-XComposer2-4KHD的结构如下:
  1. 视觉编码器选用了 OpenAI CLIP ViT-L-14-336
  2. MLP projecter 连接视觉特征和 LLM

  3. LLM 使用了上海人工智能实验室自己的 InternLM2

输入类似图像金字塔,但是只有两级。模型会把图片直接resize的全局视图,和切patch之后的多个高分辨视图,编码和映射之后同时作为LLM的输入:

  1. 图像切割:对于任意给定的图片,在训练时会预设一个参数,指定该图片最多被切分为多少个“patch”(小块)。例如,HD-9、HD-25和HD-55指的是图片最多被切分为9块、25块和55块。

  2. 图像resize:选择分辨率的目标是在接近预设的patch数量的情况下,保持图片横纵比的情况下切成不超过指定patch,尽量减少后续处理中添加的padding像素。一旦确定了分辨率,图片会先按比例调整大小以保持原有的横纵比,然后添加padding直至达到该分辨率。

  3. 全局视图获取:除了输入高分辨率的图像patches,原图还会被强制调整为较低分辨率的全局视图,例如将672×1344的图像resize为336x336像素,作为全局视图的额外输入。

  4. 组织输入内容:为了帮助模型更好地理解和区分不同的patch,研究者在每个patch后添加了一个可学习的特殊token,并引入了另一个特殊的分隔token。

  5. Token合并:鉴于在高分辨率输入时,图像token的数量会非常多(例如56个patch每个输出576个token,总共32256个image token),直接训练会导致问题。因此,采用了一个简单的token合并策略,将相邻的4个token合并为一个,转换到通道维度(经典的Space2Detph或称为PixelUnShuffle操作),从而将最多的image token数量减少到8064个,使得模型训练更为可行。(更加简单可行的操作,替代了先前工作中各种花里胡哨的resampler,符合奥卡姆剃刀,也确实更加有效)

使用的训练数据如下:

可以看到预训练阶段和指令微调阶段,均增加了大量高分辨率、OCR数据。

评测

从结果来看,高分辨率对于OCR有关的VQA任务有很大帮助,对其他任务帮助不大。文档理解场景的对比上来看,本文方案也是超出了先前推送的Monkey或者LLaVA-UHD等,且支持到了更高分辨率的输入。
大模型的论文都喜欢画星座图,个人感觉其实意义不大,每个坐标轴上下界都可以手动调整,总有办法显得自己远超其他开源模型,且弱项与闭源商业模型差距不大。

InternLM-XComposer-4KHD更简单合理的设计,更高的性能参数,相比之前工作来说更具实用价值。实际使用体验也是相对不错的:


[高分辨率VLM系列解读]

通向高分辨率VLM (1): Monkey

通向高分辨率VLM (2): LLaVA-UHD

通向高分辨率VLM (3): mPLUG-DocOwl 1.5

通向高分辨率VLM (4): Idefics2

点击👇关注 “思源数据科学

👇点个“赞”和“在看”吧

思源数据科学
Towards AGI
 最新文章