文章链接:https://arxiv.org/pdf/2404.16821
发布时间:2024.04
Copyright (c) Wang-Luning. All Rights Reserved.
在架构上去掉了QLLaMA中间件,使用简单的MLP projector来作为图像和文本的桥梁,将视觉特征对齐到文本特征空间然后输入LLM,使得结构变成了ViT+MLP+LLM类型。
除了训练了更强大的vision encoder、设计了更高质量的数据集外,其最大的创新点在于dynamic resolution(动态分辨率),从而避免像普通ViT那样需要将任何分辨率的image缩放到固定且低分辨率的大小(如224*224)输入,从而产生固定数量的visual tokens,导致失真和信息丢失。
在训练中,将images切分成1~12个448*448的tiles(根据输入图像大小和长宽比不同)。在推理时,可以达到最多40个tiles(对应4K分辨率)。
具体而言,为了保持图像原始的比例,预定义一系列宽高比:{1:1, 1:2, 2:1, 3:1, 2:3, ...}总共35种组合。对于输入的图像,首先计算其宽高比并匹配一个最接近的预定义组合{m:n},然后将其缩放成(m*448) * (n*448)(例如输入图像为800*1300,其最接近2:3,因此缩放成896*1344),然后再将其切成若干个448*448的局部高分辨率块,同时还保留一个将全图直接缩放到448*448的低分辨率缩略图来概括全局信息。
这些tiles会被vision encoder单独、并行地处理(也即ViT接收的每个序列的长度仍是原先的固定值),相当于“一块一块仔细查看每个细节区域,然后再粗略看一下全局缩略图“,最终再将它们的信息进行融合。
为了确保在高分辨率下的可扩展性/效率,采用pixel shuffle操作来将ViT处理后的visual tokens减少为原先的1/4,这样一个448*448的图片可以用256个visual tokens进行表示,同时每个token的特征维度被调整到了LLM输入空间维数。
训练过程分为两个阶段:
预训练阶段:
训练InternViT-6B和MLP projector来提升visual feature提取能力。在这个过程中,采用了continuous pre-training,先用传统的224*224分辨率进行训练,然后再调整到448*448,最终调整到dynamic 448*448(由1~12个448*448 tile组成的更高分辨率的图像)。
微调阶段:
将包括LLM在内的所有参数(总共约26B)一起微调,来提升端到端的多模态能力。
InternVL 2.0和1.5相比在模型架构上基本没有变化,属于其在更多模态和任务上的扩展(包括了Images, video, medical data等),并且提供了一系列更大的模型(从InternLM2-20B扩展到了102B),总共最大达到108B