NaViT概述
NaViT利用序列打包训练,处理任意分辨率和长宽比的输入,在大规模监督和对比图像文本预训练中提高了训练效率,可以用于图像和视频分类、目标检测和语义分割,并在鲁棒性和公平性基准测试中取得了改进的结果。
图片
下面对NaViT在数据处理、模型架构和训练策略方面的优化总结:
- 数据预处理:如上图展示了NaViT在处理任意分辨率的方法,将不同分辨率的图像分割成补丁(patches),然后应用令牌丢弃(token drop)操作,类似于dropout,以加速训练过程。预处理后,将三张图像生成的补丁展平为一个序列,不足的部分用填充(padding)补充。
- 模型架构:引入掩码自注意力(Masked self attention)和掩码池化(masked pooling),以防止示例之间的信息交换(防止图片之间存在信息交换),并为每个示例提供单一的向量表示。采用因子化和分数位置嵌入(Factorized & fractional positional embeddings),以支持任意分辨率和宽高比,并便于推断到未见过的分辨率。
- 训练策略:
a.实施连续令牌丢弃(Continuous Token dropping),允许根据每张图像调整丢弃率,从而在保持一定完整图像的同时提高吞吐量,减少训练和推理之间的差异。
b.采用分辨率采样(Resolution sampling),通过在训练过程中从图像大小分布中采样,实现混合分辨率训练,同时保留每个图像的原始宽高比。这种方法可以在提高吞吐量的同时,增加对大图像的曝光,从而在与同等规模的ViT相比时显著提高性能。
通过上述优化,NaViT在处理任意分辨率和宽高比的图像方面表现出色,同时在训练效率和性能上优于传统的ViT模型。
POINTS
POINTS架构
POINTS1.5采用了传统的LLaVA(【多模态&LLM】LLaVA系列算法架构演进:LLaVA(1.0->1.5->Next(1.6)->NeXT(Video))风格架构,该架构包括视觉编码器、MLP投影层和LLM。这种架构通过持续的后期训练来增强LLM解释视觉信息的能力。
视觉编码器
改进点:
- NaViT风格视觉编码器: POINTS1.5用NaViT风格的视觉编码器替换了POINTS1.0中的CLIP视觉编码器。NaViT能够原生处理任意分辨率的图像,而无需分割图像。
- 动态高分辨率支持: NaViT允许模型在不降低性能的情况下处理任意大小的图像,避免了传统方法中分割图像导致的空间关系破坏问题。
批量前向传播与NaViT
由于NaViT处理的是序列长度不同的图像,批量前向传播需要特殊处理。采用了一种类似于LLM的策略,将多个图像序列打包成一个长序列,并记录每个图像序列的起始和结束索引,以确保自注意力机制仅在当前图像序列的边界内应用。
MLP投影层
投影层与LLaVA和NVLM-D一致,都是由一个带有GELU激活函数的两层MLP组成,用于将视觉编码器的输出转换为LLM可以处理的嵌入表示。
LLM
POINTS1.5使用Qwen2.5-7B-Instruct作为其LLM。
预训练数据格式:
图片
预训练期间的聊天模板,左图为POINTS1.0,右图为POINTS1.5
训练方法
图片
三阶段的训练方法如下:
第一阶段(对齐阶段):使用大量数据训练模态tokenizer和detokenizer。例如,视觉编码器和解码器。这个阶段的目的是确保tokenizer能够唯一且准确地编码任何模态信号到一个压缩的特征空间,同时detokenizer能够将这些压缩特征恢复为原始的模态信号。
第二阶段:预热模态嵌入层,将任何模态信号转换成LLM的文本空间。在这个阶段,数据集的大小不一定需要很大,因为在实验和之前的工作中发现,较小的数据集也可以达到良好的效果。
第三阶段:使用高质量的指令调整数据集来训练模态嵌入层和LLM,同时保持tokenizer和detokenizer不变。这个阶段的目的是赋予LLM理解不同模态的能力。
通过这三个阶段的训练,可以有效地扩展LLM以支持额外的模态。
实验
图片
OpenCompass benchmarks
- 发票信息抽取
图片
- OCR
图片
- 公式识别
图片
- etc...
参考文献
- Patch n' Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution,https://arxiv.org/abs/2307.06304
- POINTS1.5: Building a Vision-Language Model towards Real World Applications,https://arxiv.org/pdf/2412.08443
- https://github.com/WePOINTS/WePOINTS