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相关任务的数据也是必不可少的,对高分辨率任务的效果上起到了很大的作用。
方法
视觉编码器选用了 OpenAI CLIP ViT-L-14-336 MLP projecter 连接视觉特征和 LLM
LLM 使用了上海人工智能实验室自己的 InternLM2
输入类似图像金字塔,但是只有两级。模型会把图片直接resize的全局视图,和切patch之后的多个高分辨视图,编码和映射之后同时作为LLM的输入:
图像切割:对于任意给定的图片,在训练时会预设一个参数,指定该图片最多被切分为多少个“patch”(小块)。例如,HD-9、HD-25和HD-55指的是图片最多被切分为9块、25块和55块。
图像resize:选择分辨率的目标是在接近预设的patch数量的情况下,保持图片横纵比的情况下切成不超过指定patch,尽量减少后续处理中添加的padding像素。一旦确定了分辨率,图片会先按比例调整大小以保持原有的横纵比,然后添加padding直至达到该分辨率。
全局视图获取:除了输入高分辨率的图像patches,原图还会被强制调整为较低分辨率的全局视图,例如将672×1344的图像resize为336x336像素,作为全局视图的额外输入。
组织输入内容:为了帮助模型更好地理解和区分不同的patch,研究者在每个patch后添加了一个可学习的特殊token,并引入了另一个特殊的分隔token。
Token合并:鉴于在高分辨率输入时,图像token的数量会非常多(例如56个patch每个输出576个token,总共32256个image token),直接训练会导致问题。因此,采用了一个简单的token合并策略,将相邻的4个token合并为一个,转换到通道维度(经典的Space2Detph或称为PixelUnShuffle操作),从而将最多的image token数量减少到8064个,使得模型训练更为可行。(更加简单可行的操作,替代了先前工作中各种花里胡哨的resampler,符合奥卡姆剃刀,也确实更加有效)
使用的训练数据如下:
可以看到预训练阶段和指令微调阶段,均增加了大量高分辨率、OCR数据。
评测
[高分辨率VLM系列解读]
通向高分辨率VLM (3): mPLUG-DocOwl 1.5
点击👇关注 “思源数据科学”
👇点个“赞”和“在看”吧