
多模态大模型中图像分辨率packing策略及原生分辨率NaViT的部分结论 原创
传统上,ViT会将输入图像调整为固定的正方形纵横比,然后分割为固定数量的 patches。但这种做法存在局限性,例如可能破坏图像的原始纵横比,影响模型对图像内容的理解,且在训练和推理效率上有提升空间。
前期《多模态大模型中不同分辨率策略研究与原生分辨率的有效性评估》评估结论也通过评估得到,原生分辨率对于多模态大模型有增益,再来看下NaVit的原生分辨率packing策略,该工作由23年提出,但应该是比较早的原生分辨率探索,下面看看。
方法
1、架构上改进
NaViT 是在原始 ViT 的基础上构建的,为了用 Patch n’ Pack,对架构进行了修改:
- 掩码自注意力和掩码池化:如下图为避免不同图像样本间相互干扰,引入额外的自注意力掩码。同时,在编码器之上使用掩码池化,对每个样本内的token表示进行池化,使序列中每个样本都能得到单一向量表示,以此控制注意力的感受野。
- 分解式和分数位置嵌入:为处理任意分辨率和宽高比的图像,重新设计位置嵌入。传统ViT对分辨率的正方形图像,会学习长度为的1 - D位置嵌入,在高分辨率下训练或评估时需线性插值;Pix2struct引入的2D绝对位置嵌入虽支持可变宽高比,但训练时需看到所有坐标组合。NaViT则引入分解式位置嵌入,将其分解为和坐标的单独嵌入和,再进行组合(如相加)。同时考虑了绝对嵌入(基于绝对patch索引)和分数嵌入(基于相对距离),还探索了简单学习嵌入、正弦嵌入和NeRF中使用的学习傅里叶位置嵌入。
2、 训练上改进
- 连续token丢弃:传统token丢弃是在训练时随机省略输入补丁以加速训练,但通常所有样本丢弃比例相同。NaViT的Patch n’ Pack技术支持连续token丢弃,即每张图像的token丢弃率可变。这既能享受丢弃带来的训练加速,又能保留部分完整图像,减少训练与推理的差异。而且,丢弃率分布可在训练过程中按预定计划变化。
- 分辨率采样:NaViT可使用图像原始分辨率训练,也能在保持宽高比的同时重采样像素总数。传统ViT在训练时,小图像训练通量高但处理细节和高分辨率图像能力弱,大图像则相反。NaViT更加灵活,可通过从图像尺寸分布中采样,进行混合分辨率训练,既提高通量又能接触大图像,提升模型性能。
NaViT 在预训练(左)期间表现出显著的计算效率,这延续到了下游微调(中)。一个 NaViT 可以成功应用于多种分辨率(右),平稳地在性能和推理成本之间进行权衡。
从上图看到,在相同计算预算下,NaViT的性能始终优于ViT。
原因分析:NaViT在固定计算预算内处理的训练样本数量显著增加。分辨率采样和token丢弃的结合,使可变尺寸的图像能高效打包成与原始模型相似的序列长度(例如,NaViT-L/16训练时处理的图像数量是ViT的5倍)。
一些结论:
对比固定分辨率与可变分辨率
- 可变分辨率微调的NaViT性能与单分辨率微调的NaViT相当,优于单分辨率ViT。
- 低分辨率(64)微调的NaViT在高分辨率评估时仍保持良好性能。
偏向较低分辨率直接采样边长能获得最佳整体性能
上图,直接采样边长且偏向低分辨率(如截断正态分布)的策略性能最优,因优先选择短序列提升了throughput。
采样较低分辨率可以提高吞吐量,提升性能, 并使模型在不同分辨率下的使用更加高效
- 可变分辨率模型在所有评估分辨率下均优于固定分辨率模型。即使在训练与评估分辨率一致的最佳情况下,可变分辨率模型仍能持平或超越固定分辨率模型
- 低分辨率图像加速训练 throughput,高分辨率图像保留细节,两者结合兼顾效率与性能。
上图结论:
- 连续token丢弃:从Beta分布采样丢弃率,相比固定丢弃率更优(a)。
- 分辨率依赖丢弃率:根据图像分辨率动态调整丢弃率(如分辨率高则丢弃率高),进一步提升性能(b)。
参考文献:Patch n’ Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution,https://arxiv.org/pdf/2307.06304
本文转载自大模型自然语言处理 作者:llmnlp
