
多模态视觉语言模型FILA-细粒度分辨率融合策略 原创
上图是四种在图片切图上的操作:如动态分辨率仅涉及裁剪图像并将其输入CLIP-ViT、mini-gemini在最后层将低分辨率的CLIP-ViT特征与高分辨率辅助分支进行交互,主要使用交叉注意力机制,c则采用通道级串联。本文介绍的方法使用一个模块将低分辨率和高分辨率进行融合实现交互,下面来看看如何实现。
方法
方法
1. 输入图像预处理(动态切图)
这个目标是把高分辨率图像切成若干 336×336 的小块,同时保留一张 336×336 的“全局缩略图”。
- 步骤:
- 从 5 个预定义画布尺寸(336×672、672×336、672×672、1008×336、336×1008)中挑一个能最紧凑包住原图的。
- 等比例缩放 → padding → 切成 个 336×336 patch。
- 额外生成一张 336×336 的“全局视图”,保留整体语境。
2. 双路编码器(混合编码器)
双路编码器集成了ConvNeXt、CLIP-ViT和CVFM模块。ConvNeXt和ViT网络都被划分为四个阶段。每个阶段的最后一层作为一个交互层,通过CVFM模块将其输出与相应的ConvNeXt阶段的输出结合起来。
- 低分辨率支路:所有 patch + 全局视图 → CLIP-ViT(冻结参数,224/336 训练分辨率)。
- 高分辨率支路:整张原图以更高分辨率(32/14 × Hh,32/14 × Wh,约 768×768)→ ConvNeXt,提取多尺度特征。
结构:Hybrid Encoder = CLIP-ViT + ConvNeXt + CVFM(跨层融合模块)
- ConvNeXt 分支:4 个 stage(stem → 96 → 192 → 384 → 768 通道),每个 stage 3×3 卷积降采样 2×。
- CLIP-ViT 分支:同样 4 个 stage(对应 ViT 的 layer 2/6/12/20)。
- CVFM 在 每个 stage 结束处做一次跨模型融合,而不是只在最后一层。
特征对齐:ConvNeXt 输出特征尺寸与 ViT 隐藏层尺寸需空间对齐: ViT 固定 24×24 spatial tokens(576 tokens)。ConvNeXt stage-i 输出尺寸通过 2×2 卷积或插值对齐到 24×24。最终沿 channel 维度拼接(channel concatenation),再通过 1×1 Conv/MLP 降维回 ViT 原始通道数。
3. 连接 LLM
CLIP-ViT 输出的 patch token 与 ConvNeXt 输出的高分辨率特征经过 CVFM 融合 → MLP 投影 → 与文本 token 拼接 → 送入 LLaMA3-8B。
4. 两阶段训练
- 阶段一:低分辨率预训练(Frozen ViT & LLM) 目的:先把 CVFM 融合模块 与 MLP 投影层 训练好,让视觉特征能与 LLM 词向量空间对齐。图像统一 resize 到 336×336 → 送入 CLIP-ViT,同一张图再 resize 到 768×768 → 送入 ConvNeXt。不做动态切图,避免一开始就让 CVFM 面对“碎片化”难题。
冻结策略:ViT 与 LLM 完全冻结(参数不参与梯度更新) 只训练:CVFM(跨层融合权重)和MLP Projector(把视觉 token 映射到词向量维度) - 阶段二:高分辨率指令微调(全部解冻):让模型具备高分辨率细粒度理解(OCR、文档、图表)多轮对话与指令跟随能力。启用动态切图:原图切成 336×336 patch,同时保留全局 336×336 缩略图。ConvNeXt 输入:整张图 upsample 到 32/14×Hh ≈ 1536×1536 → 得到多尺度特征。
冻结策略:解冻全部参数
实验结果
参考文献: FILA: FINE-GRAINED VISION LANGUAGE MODELS,https://arxiv.org/pdf/2412.08378v3
本文转载自大模型自然语言处理 作者:Raschka
