Skip to content

模态连接器:LLM 与视觉的桥梁

连接器(Connector/Projector)负责将视觉编码器输出的特征适配到 LLM 的输入空间,其设计直接影响模型的参数效率和语义理解深度。


架构总览


主流方案对比

特性LLaVA (Linear)BLIP-2 (Q-Former)Flamingo (Perceiver)
核心机制两层 MLPTransformer 查询器Cross-Attention
输出 Token 数取决于 Patch 数固定(如 32)固定(如 64)
信息保留完整视觉细节压缩提取关键特征选择性压缩
训练复杂度高(两阶段)
LLM 是否冻结可选通常冻结冻结
优势场景OCR、细粒度高效推理多图交织

LLaVA 线性投影

LLaVA 采用极简设计哲学:简单但有效

架构设计

实现细节

python
class LLaVAProjector(nn.Module):
    def __init__(self, vision_dim=1024, llm_dim=4096):
        super().__init__()
        self.projector = nn.Sequential(
            nn.Linear(vision_dim, llm_dim),
            nn.GELU(),
            nn.Linear(llm_dim, llm_dim)
        )
    
    def forward(self, vision_features):
        # vision_features: [B, N, vision_dim]
        return self.projector(vision_features)
        # output: [B, N, llm_dim]

优势与代价

优势代价
✅ 保留完整视觉信息❌ Token 数量多(576 个)
✅ 训练简单快速❌ 推理成本高
✅ OCR/细节任务表现好❌ 显存占用大
✅ 参数量极少❌ 长文本上下文受限

LLaVA 训练策略

阶段数据训练模块目的
Stage 1558K 图文对仅 Projector特征对齐
Stage 2665K 指令数据Projector + LLM指令微调

BLIP-2 Q-Former

BLIP-2 引入 Q-Former(Querying Transformer) 作为视觉与语言的瓶颈层。

架构设计

核心机制

可学习查询向量(Learnable Queries)

  • 初始化 32 个查询向量,每个维度 768
  • 通过 Cross-Attention 与视觉特征交互
  • 强制从海量视觉信息中"提炼"关键特征

双流结构

  • 图像 Transformer:与视觉特征交互
  • 文本 Transformer:与文本特征交互
  • 两者共享 Self-Attention 层

两阶段预训练

Stage 1 损失函数

  • ITC (Image-Text Contrastive):对比学习对齐
  • ITM (Image-Text Matching):二分类匹配
  • ITG (Image-grounded Text Generation):图像条件文本生成

Stage 2

  • 将 Q-Former 输出作为 LLM 的软提示(Soft Prompt)
  • 仅训练 Q-Former,LLM 完全冻结

信息压缩分析

输入输出压缩率
ViT-L: 257×102432×768~8×
ViT-G: 577×140832×768~18×

信息过滤器

Q-Former 不仅压缩信息,还起到"过滤器"作用,去除与文本语义无关的视觉噪声(如背景细节)。


Flamingo Perceiver Resampler

Flamingo 使用 Perceiver 架构处理多图场景。

架构特点

核心思想

  • 使用固定数量的可学习 Latent 向量
  • 通过 Cross-Attention 从任意数量图像中提取特征
  • 输出 Token 数量恒定,与输入图像数量无关

Gated Cross-Attention

Flamingo 在 LLM 每层插入 Gated Cross-Attention:

python
# Flamingo Gated Cross-Attention
y = x + tanh(gate) * CrossAttention(x, vision_features)
  • gate 初始化为 0,训练时逐渐学习
  • 保护预训练 LLM 权重不被破坏

设计选择指南

场景 → 方案映射

场景推荐方案理由
OCR/文档理解LLaVA Linear需要完整视觉细节
资源受限/高并发Q-FormerToken 数量少
多图交织对话Perceiver固定输出长度
快速迭代/研究LLaVA Linear训练简单

Token 数量对推理的影响

假设 LLM 上下文窗口为 4096 Token:

方案视觉 Token剩余文本 Token推理成本
LLaVA (576)5763520
Q-Former (32)324064
AnyRes (2880)28801216极高

进阶:动态 Token 方案

LLaVA-NeXT AnyRes

解决高分辨率图像细节丢失问题:

Token 数量计算

  • 全局视图:576 Token
  • 每个子图:576 Token
  • 2×2 配置总计:576 + 4×576 = 2880 Token

Token 压缩技术

技术方法压缩率
Spatial Pooling2×2 平均池化
Token Merging相似 Token 合并2-4×
ResamplerPerceiver 架构可变

参考资源

论文主题
Visual Instruction Tuning (LLaVA)线性投影
BLIP-2Q-Former
FlamingoPerceiver Resampler
LLaVA-NeXTAnyRes

基于 VitePress 构建