Files
2026-05-16 17:16:51 +08:00

6.5 KiB
Raw Permalink Blame History

LLaVA与miniGPT4

概述

LLaVALarge Language and Vision Assistant和miniGPT4是两阶段训练的视觉-语言模型代表,它们通过连接预训练的视觉编码器和大语言模型,实现了多模态理解能力。本章节深入分析这两个模型的核心架构和训练方法。

1. LLaVA架构详解

1.1 整体架构

LLaVA采用简洁的"视觉编码器 + 投影层 + LLM"架构:

图像 → Vision Encoder (ViT-L/14) → 投影层 (MLP) → LLM (Vicuna/LLaMA)
                                        ↓
文本提示 → Tokenize → 拼接 → LLM → 文本响应

1.2 MLP投影层设计

投影层的作用: 将视觉特征映射到语言模型的嵌入空间

架构:

class ProjectionLayer(nn.Module):
    def __init__(self, vision_dim, llm_dim):
        self.linear1 = nn.Linear(vision_dim, llm_dim)
        self.activation = nn.ReLU()
        self.linear2 = nn.Linear(llm_dim, llm_dim)
    
    def forward(self, x):
        x = self.linear1(x)
        x = self.activation(x)
        x = self.linear2(x)
        return x

维度对应:

  • ViT-L/14输出257 tokens × 1024维
  • 投影后257 tokens × 4096维匹配LLaMA维度

1.3 视觉编码器

使用OpenAI的CLIP ViT-L/14作为视觉编码器

参数
图像分辨率 224×224
Patch Size 14×14
Transformer层数 24
隐藏维度 1024
注意力头数 16
参数量 ~428M

CLIP预训练使视觉编码器具备良好的语义理解能力。

1.4 大语言模型

使用Vicuna基于LLaMA的对话模型作为语言decoder

模型 参数量 上下文长度
LLaVA-1.0 7B/13B 2048
LLaVA-1.5 7B/13B 4096

2. 两阶段训练策略

2.1 第一阶段:语言-图像对齐预训练

目标: 让投影层学习将视觉特征映射到语言空间

数据: CC3M数据集约600K图像-文本对)

训练配置:

# 阶段1配置
batch_size: 256
learning_rate: 1e-3
epochs: 1
optimizer: AdamW
temperature: for contrastive loss

训练要点:

  • 冻结视觉编码器和LLM参数
  • 仅训练投影层MLP
  • 使用对比学习损失(可选)

2.2 第二阶段:指令微调

目标: 赋予模型多模态对话能力

数据: LLaVA-Instruct-150K数据集

数据构成:

类型 数量 描述
对话数据 90K 多轮对话
详细描述 40K 图像详细描述
复杂问答 20K 需要推理的问题

训练配置:

# 阶段2配置
batch_size: 32
learning_rate: 2e-5
epochs: 3
optimizer: AdamW
weight_decay: 0.01

训练范围:

  • 投影层:可训练
  • LLM可训练LoRA/QLoRA可选
  • 视觉编码器:冻结或轻度微调

3. miniGPT4架构详解

3.1 核心设计理念

miniGPT4的目标是用最少的训练成本实现类似GPT-4的多模态能力

图像 → EVA (ViT) → Q-Former → LLM (Vicuna)
                         ↓
                    冻结 EVA
                    冻结 LLM
                    仅训练 Q-Former

3.2 Q-Former跨模态连接

miniGPT4使用BLIP-2的Q-Former作为跨模态桥梁

Q-Former结构

  • 12个Transformer层
  • Cross-attention层连接视觉特征
  • 32个可学习的query tokens

信息流动:

视觉特征 → Cross-attention → Query features → 线性映射 → LLM嵌入

3.3 EVA视觉编码器

EVA是基于CLIP的大规模视觉Transformer

特性 EVA-B/16 EVA-L/14
参数量 86M 304M
图像分辨率 224/448 224
预训练数据 LAION-2B CLIP

EVA相比CLIP具有更好的视觉理解能力。

3.4 训练策略对比

阶段 LLaVA miniGPT4
第一阶段 CC3M + 投影层训练 BLIP-2预训练权重 + Q-Former训练
第二阶段 LLaVA-Instruct微调 对话数据微调

4. 对齐策略分析

4.1 模态对齐的核心问题

视觉编码器产生的特征空间与语言模型的嵌入空间存在差异:

问题:

  • 视觉特征:连续、高维、空间结构
  • 文本特征:离散、语义抽象

4.2 投影方法对比

方法 代表模型 参数量 对齐质量
MLP投影 LLaVA 40M 中等
Q-Former miniGPT4 185M 较好
Adapter LLaMA-Adapter 8M 可接受
LoRA QLoRA-LLaVA <1M 较好

4.3 轻量化对齐技术

LLaMA-Adapter方法

# Adapter结构
class AdapterLayer(nn.Module):
    self.lora_down = nn.Linear(dim, r)
    self.lora_up = nn.Linear(r, dim)
    self.alpha = alpha / r  # 缩放因子
    
    def forward(self, x):
        return x + self.alpha * self.lora_up(self.lora_down(x))

5. 训练数据构建

5.1 LLaVA-Instruct数据集

构建流程:

Step 1: COCO captions → GPT-4扩展 → 详细描述
Step 2: 图像问答对生成 → 质量过滤
Step 3: 多轮对话构造 → 对话角色分配

数据集统计:

  • 图像总数158K
  • 对话轮次610K
  • 平均对话长度3.5轮

5.2 miniGPT4数据生成

使用ChatGPT生成围绕图像的对话

Prompt模板

Given an image, generate a conversation that includes questions 
about the image content and detailed descriptions. The conversation 
should be natural and informative.

6. 模型能力对比

能力 LLaVA miniGPT4
图像描述
视觉问答
多轮对话
复杂推理 较弱 中等
中文理解 一般 一般
推理速度 中等

7. 关键技术总结

技术 LLaVA miniGPT4
视觉编码器 CLIP ViT-L/14 EVA
跨模态连接 MLP Q-Former
LLM Vicuna-7B Vicuna-7B
训练成本 ~1天(A100) ~1天(A100)
对齐质量 中上 良好

8. 应用场景

场景 LLaVA适用性 miniGPT4适用性
图像标注
视觉助手
内容创作
教育问答

9. 未来改进方向

  1. 更大规模视觉编码器EVA-CLIP、LLaVA-1.6
  2. 更长上下文:支持高分辨率图像
  3. 多语言支持:扩展到中文等多语言
  4. 指令遵循增强RLHF/CONFLICT训练
  5. 实时视觉理解:视频流输入支持

LLaVA和miniGPT4开创了视觉-语言模型轻量化训练的新范式,为后续多模态大模型的发展奠定了基础。