当前位置: 首页 > news >正文

【模型架构篇11】多模态架构:视觉-语言融合深度解析

🎨 多模态架构:视觉-语言融合深度解析

一句话速览:从CLIP到Gemini原生多模态,从BLIP到LLaVA,视觉语言模型(VLM)在3年间完成了从"外挂视觉"到"原生融合"的跨越。本文拆解7种主流多模态架构,覆盖CLIP对比学习、LLaVA的投影桥接、Gemini的早期融合、LLaMA 4的Early Fusion iRoPE,附带完整代码实现。


📑 目录

  • 为什么多模态是AI的必由之路?
  • 多模态架构的三代演进
  • 架构一:CLIP——对比学习的双塔模式
  • 架构二:LLaVA/视觉投影——最流行的"外挂"方案
  • 架构三:BLIP-2/Qwen-VL——Q-Former桥接
  • 架构四:Flamingo——冻住的视觉专家
  • 架构五:Gemini/LLaMA 4——原生多模态
  • 视觉编码器进化史:ViT → SigLIP-2 → InternViT
  • 主流多模态模型能力全景
  • 多模态训练核心技巧
  • 总结与展望

🤔 为什么多模态是AI的必由之路?

单模态的"天花板"

纯文本大模型已经很强了,但它有一个天然的缺陷:

用户: "这张图里有什么?" 纯文本模型: "我无法看到图片。" ❌ 只能处理文字 多模态模型: "这是一张日落时分的海滩照片,天空呈现橙紫色渐变, 海面上有波浪反射着夕阳的光芒..." ✅ 图文双通

真实世界是"多模态"的——我们通过视觉、听觉、触觉等多种方式感知世界。只靠文本训练的AI,就像一个从没看过世界的盲人,无论读多少书,对"红色"、“日落”、"笑脸"的认知都是不完整的。

多模态能力的商业价值

场景纯文本能做吗多模态的价值
医疗影像分析看懂X光/CT片 + 生成诊断报告
电商图文内容自动生成商品图描述、卖点文案
自动驾驶同时理解路况图像 + 导航指令
教育辅导看懂题目图片 + 给出解题步骤
视频内容分析理解视频帧 + 生成摘要
UI自动化看懂界面截图 + 自动操作

三个关键概念

多模态大模型 = 视觉编码器(看) + 模态对齐(连接) + 语言模型(理解+生成) ┌──────────────────────────────────────────┐ │ 视觉编码器 (Vision Encoder) │ │ 将图像转为特征向量 │ │ 代表: ViT, SigLIP, InternViT │ └────────────────┬─────────────────────────┘ ↓ ┌──────────────────────────────────────────┐ │ 模态对齐层 (Alignment Layer) │ │ 将视觉特征映射到语言模型的语义空间 │ │ 代表: MLP Projector, Q-Former │ └────────────────┬─────────────────────────┘ ↓ ┌──────────────────────────────────────────┐ │ 语言模型 (LLM Backbone) │ │ 理解视觉+文本的联合表示,生成回答 │ │ 代表: Qwen, LLaMA, GPT │ └──────────────────────────────────────────┘

🕰️ 多模态架构的三代演进

第一代:外挂式 (2021-2023)

视觉编码器(独立训练)→ 投影层(训练)→ 语言模型(冻结/微调) ↑ ↑ 先训练好的 后接上去的 视觉能力 语言能力

代表:CLIP、BLIP-2、LLaVA 1.5

特点:视觉和语言两部分独立训练,通过投影层强行对齐。

第二代:联合训练式 (2024-2025)

视觉编码器(联合训练)→ 对齐层(联合)→ 语言模型(联合训练) ↑ ↑ 一起训练 一起训练

代表:Qwen2-VL、InternVL 2/3、GPT-4o

特点:视觉和语言一起训练,互相适应,效果远好于外挂。

第三代:原生多模态 (2025-2026)

统一编码器(文本+图像+音频+视频进入同一语义空间) ↓ 共享Transformer主干(从预训练第一刻就是多模态)

代表:Gemini 1.5/2.0LLaMA 4Claude Fable 5

特点:从设计之初就原生支持多模态,性能和融合深度远超拼接方案。


🏗️ 架构一:CLIP——对比学习的双塔模式

为什么CLIP如此重要?

CLIP(Contrastive Language-Image Pre-training)是多模态领域的GPT时刻——它首次证明了文本和图像可以在统一的语义空间中表示。

架构

CLIP双塔架构: [图像] ─→ [Image Encoder (ViT)] ─→ I₁, I₂, ..., I_N (图像特征) │ 对比学习对齐 (InfoNCE Loss) │ [文本] ─→ [Text Encoder (Transformer)] ─→ T₁, T₂, ..., T_N (文本特征) 训练目标:让配对的图文对距离更近,不配对的更远 batch_size=32,768 (超大批次!)
# CLIP的核心:对比学习损失importtorchimporttorch.nn.functionalasFdefclip_loss(image_features,text_features,temperature=0.07):""" image_features: [batch_size, d_model] 图像特征 text_features: [batch_size, d_model] 文本特征 temperature: 温度系数,控制softmax的平滑程度 """# 归一化image_features=F.normalize(image_features,dim=-1)text_features=F.normalize(text_features,dim=-1)# 计算相似度矩阵 [batch, batch]logits=image_features @ text_features.T/temperature# 对角线是正样本(配对的图文对)batch_size=logits.shape[0]labels=torch.arange(batch_size,device=logits.device)# 两个方向的对称损失loss_i=F.cross_entropy(logits,labels)# 图像→文本loss_t=F.cross_entropy(logits.T,labels)# 文本→图像return(loss_i+loss_t)/2

CLIP的关键参数

版本视觉编码器文本编码器训练数据参数量
CLIP ViT-B/32ViT-Base63M Transformer400M图文对150M
CLIP ViT-L/14ViT-Large123M Transformer400M图文对428M
CLIP ViT-H/14ViT-Huge302M Transformer400M图文对958M

CLIP的局限

  1. 只能做理解,不能做生成:CLIP只能对比图文相关性,不能生成图像描述
  2. 全局特征,缺乏细粒度:整个图像变成一个向量,难以定位到具体区域
  3. 零样本不完美:对训练中没见过的概念理解偏差大

💡面试加分点:CLIP最大的贡献不是模型本身,而是对比学习+超大批次的训练范式。它用对比损失替代了传统的分类损失,让模型在400M图文对上学会"通用视觉概念"。几乎所有后续的多模态模型都基于CLIP的范式。


🏗️ 架构二:LLaVA/视觉投影——最流行的"外挂"方案

LLaVA:简单就是王道

LLaVA(Large Language and Vision Assistant)是目前最简单、最流行的多模态架构。它的核心思想出奇简单:

百闻不如一见——用一层MLP把视觉特征"翻译"成语言模型能理解的token

importtorchimporttorch.nnasnnclassLLaVAModel(nn.Module):""" LLaVA:视觉编码器 + MLP投影 + LLM 最流行的多模态方案——简单但有效 """def__init__(self,vision_encoder,language_model,projection_dim=4096):super().__init__()# 视觉编码器(冻结)self.vision_encoder=vision_encoderforparaminself.vision_encoder.parameters():param.requires_grad=False# 投影层 —— LLaVA的核心!将图像特征映射到文本空间self.projector=nn.Sequential(nn.Linear(vision_encoder.hidden_dim,projection_dim),nn.GELU(),nn.Linear(projection_dim,projection_dim),)# 语言模型(训练投影层时冻结,第二阶段全量微调)self.language_model=language_modeldefforward(self,images,input_ids,attention_mask=None):# 1. 提取图像特征image_features=self.vision_encoder(images)# [B, num_patches, d_vit]# 2. 投影到语言空间visual_tokens=self.projector(image_features)# [B, num_patches, d_llm]# 3. 将视觉token插入文本token中# 格式: <image_token><image_token>...<text_token><text_token>...combined_input=self._interleave(visual_tokens,input_ids)# 4. LLM处理联合输入outputs=self.language_model(inputs_embeds=combined_input,attention_mask=attention_mask)returnoutputsdef_interleave(self,visual_tokens,text_tokens):"""将视觉token和文本token拼接"""# 实际实现中需要根据特殊token <image> 的位置插入# 简化版:visual tokens在前,text tokens在后returntorch.cat([visual_tokens,text_tokens],dim=1)

LLaVA的两阶段训练

第一阶段:投影层预训练(约1天) [冻结视觉编码器 + 冻结LLM] → 只训练MLP投影层 数据:CC-595K 图文对 目标:让视觉token能对齐文本的语义空间 第二阶段:端到端微调(约2天) [冻结视觉编码器] → 训练MLP投影层 + LLM(LoRA或全量) 数据:158K 多轮对话数据 目标:让模型能基于图像进行对话

LLaVA家族演进

版本视觉编码器语言模型投影层亮点
LLaVA 1.0 (2023.10)CLIP ViT-LVicuna 13B单层MLP首次提出
LLaVA 1.5 (2024.01)CLIP ViT-LVicuna 13B2层MLP大幅提升
LLaVA 1.6 (2024.04)CLIP ViT-LMistral 7B2层MLP动态高分辨率
LLaVA-NeXT (2024)SigLIPQwen 22层MLP多尺度

🏗️ 架构三:BLIP-2/Qwen-VL——Q-Former桥接

Q-Former:可学习的"翻译官"

BLIP-2引入了**Q-Former(Querying Transformer)**作为视觉和语言之间的桥接,比LLaVA的简单MLP更强大:

Q-Former的工作原理: [图像] → [ViT视觉编码器] → 图像特征 ↓ ┌───────────────────┐ │ Q-Former │ │ │ │ [可学习的查询] │ ← 一组固定数量的查询向量 │ [交叉注意力] │ ← 查询与图像特征交互 │ [自注意力] │ ← 查询之间互相通信 │ │ └────────┬──────────┘ ↓ [固定数量的视觉token] ↓ ┌───────────────────┐ │ LLM语言模型 │ └───────────────────┘

Q-Former vs MLP投影

对比MLP投影(LLaVA)Q-Former(BLIP-2)
视觉token数等于图像patch数(256-576个)固定32个(大幅减少)
参数量~8M~188M
训练难度容易复杂
效果良好更好(尤其在细粒度任务)
推理效率慢(太多图像token)(固定少量token)
可解释性黑盒可观察查询关注了图像的哪些区域

Qwen2-VL的改进

阿里Qwen2-VL在Q-Former基础上做了进一步优化:

# Qwen2-VL的动态分辨率机制classQwen2VLVisionEncoder(nn.Module):""" Qwen2-VL的动态视觉编码器 核心:不再固定图像尺寸,而是根据原始比例动态调整 """def__init__(self,max_pixels=1280*28*28):super().__init__()self.encoder=SigLIPVisionModel()self.merger=QwenVLMMerger()# 将4个patch合并为1个tokendefforward(self,images):# 动态分辨率处理# 保持图像宽高比,确保patch数量不超过上限processed=self._dynamic_resize(images)# 编码为特征features=self.encoder(processed)# 2x2合并 → 减少token数merged=self.merger(features)returnmerged# [B, dynamic_tokens, d_model]

🏗️ 架构四:Flamingo——冻住的视觉专家

DeepMind的VLM

Flamingo是DeepMind 2022年提出的多模态架构,它有一个非常独特的设计理念:

不修改已有的语言模型,而是"在旁边添加"视觉能力

Flamingo的核心设计: [文本] → [冻结的语言模型] → [输出] ↑ [门控交叉注意力层] ← GATED_XATTN-DENSE层 ↑ [Perceiver Resampler] ← 将可变数量的视觉token压缩为固定数量 ↑ [视觉编码器(NFNet)] ← 冻结 ↑ [图像/视频]

关键创新:GATED_XATTN-DENSE

Flamingo没有把视觉token直接输入LLM,而是在LLM的Transformer层之间插入新的交叉注意力层:

原始LLM层: [Self-Attention] → [FFN] → Layer i Flamingo增强的LLM层: [Self-Attention] → [GATED_XATTN-DENSE] → [FFN] → Layer i ↑ 视觉特征输入 GATED_XATTN-DENSE = tanh(gate) × CrossAttention(visual_features) 其中gate是可学习的标量,初始化为0(模型从零开始学习"看")

这让Flamingo可以在完全不修改预训练LLM权重的情况下,让模型获得视觉能力。


🏗️ 架构五:Gemini/LLaMA 4——原生多模态

第三代架构:从拼接走向原生

2025-2026年最重大的趋势是原生多模态——模型从训练的第一刻起就同时处理文本和图像。

什么是"原生"?

拼接式(GPT-4V、LLaVA): 1. 先训练一个纯文本LLM 2. 再训练一个视觉编码器 3. 最后把它们拼在一起(对齐训练) 问题:视觉和文本的语义空间天然有差距,对齐很困难 原生式(Gemini、LLaMA 4): 1. 从随机初始化开始 2. 同时输入文本+图像+音频训练 3. 所有模态在同一个模型中协同进化 优势:跨模态理解更深,推理时天然支持多模态

Gemini的原生多模态

Gemini处理图像的工作流: [原始图像] ↓ [ViT编码器] → 图像patch特征 ↓ [投影层] → 图像token(与文本token同一语义空间) ↓ [共享的Transformer主干] ← 从预训练第一刻就是多模态 ↓ [文本/代码/...输出]

Gemini的关键突破在于:共享Transformer在预训练时同时看到文本和图像数据,而不是文本模型训练好了再去"学习看"。

LLaMA 4的Early Fusion

LLaMA 4采用了**Early Fusion(早期融合)**策略:

LLaMA 4的Early Fusion: [文本token] ──┐ ├──→ [统一的嵌入层] → [共享Transformer] → [输出] [图像token] ──┘ (从编码阶段就融合) 对比Late Fusion(GPT-4V风格): [文本token] ──→ [嵌入层] ──┐ ├──→ [LLM处理] [图像token] ──────────────┘ (在输入LLM时才拼在一起)

Early Fusion的优势:

  1. 模态间交互更深:在嵌入层就开始交互
  2. 语义一致性更好:视觉和文本在底层就共享语义
  3. 训练效率更高:可以从头端到端训练

🔬 视觉编码器进化史:ViT → SigLIP-2 → InternViT

ViT(Vision Transformer)

所有视觉编码器的基础:

ViT的核心思想:将图像分成16×16的patch,像处理文本token一样处理图像 [224×224图像] → 分成(224/16)² = 196个patch ↓ [线性投影] → 每个patch变成768维向量 ↓ [位置编码] → 加入位置信息(类似文本中的位置编码) ↓ [Transformer编码器] → 标准Transformer块 ↓ [CLS token] → 汇聚整个图像的信息

SigLIP

Google的SigLIP(Sigmoid Loss for Language Image Pre-training)是CLIP的重大改进:

维度CLIPSigLIP
损失函数Softmax对比损失(依赖批次内负样本)Sigmoid二元损失(独立计算每对)
批次大小要求32,768+(越大越好)不需要超大batch
训练效率低(需要全批次负样本)(每对独立)
效果更好+更稳定
# SigLIP vs CLIP 的核心差异defsiglip_loss(image_features,text_features):""" SigLIP使用sigmoid损失,每对图文独立计算 不需要像CLIP那样计算整个batch的相似度矩阵 """# 计算配对图文对的logitslogits=image_features @ text_features.T# 仍然是矩阵# 关键差异:使用sigmoid + 二元交叉熵(逐元素)# 而不是softmax(需要和其他样本比较)batch_size=logits.shape[0]labels=2*torch.eye(batch_size)-1# 对角=1,其他=-1loss=-torch.mean(torch.log(torch.sigmoid(labels*logits)))returnloss

视觉编码器发展年表

模型时间参数量核心创新
ViT-B/16202086M用Transformer处理图像patch
CLIP ViT-L2021428M对比学习+超大批次
SigLIP2023~500MSigmoid损失替代Softmax
SigLIP-22025~600M动态分辨率+2D-RoPE
InternViT-300M2025~300M动态分辨率+原生尺度
InternViT-6B20256B3000M数据集动态分辨率

InternVL系列:视觉编码器的"参数量暴涨"

  • InternVL 1.0(2024.01):6B ViT + 34B LLM →40B总参数
  • InternVL 1.5(2024.04):6B ViT + 34B LLM → 动态分辨率
  • InternVL 2.0(2024.07):6B ViT + 各种LLM → 多尺寸
  • InternVL 3.0(2025.02):6B ViT + 78B LLM →端到端训练
  • InternVL 3.5(2025-2026):→原生多模态预训练

趋势非常明显:视觉编码器越来越大,与LLM深度融合。


📊 主流多模态模型能力全景

2026年6月主流VLM对比

模型架构类型视觉编码器语言模型图像输入视频输入开源
Claude Fable 5原生多模态专有专有✅ 8张+
Gemini 2.5 Pro原生专有专有✅ 长视频
GPT-4o拼接式专有ViTGPT-4
LLaMA 4 Scout原生(Early Fusion)ViTLLaMA 4 MoE✅ 8张✅开源
Qwen3-VLQ-FormerSigLIP-2Qwen 3✅ 动态分辨率✅开源
InternVL 3.5拼接式+联合训练InternViT-6BLLaMA 3✅ 动态分辨率✅开源
GLM-5GLM架构专有GLM-5✅开源
豆包Seed 2.0拼接式专有专有

多模态能力金字塔

级别4: 原生多模态 (2025-2026) Gemini 2.5, LLaMA 4, Claude Fable 5 → 从预训练第一刻就是多模态 → 跨模态理解最深 级别3: 端到端联合训练 (2024-2025) InternVL 3, Qwen3-VL, GPT-4o → 视觉和语言一起训练 → 效果接近原生 级别2: 投影桥接 (2023-2024) LLaVA 1.5, Qwen-VL, BLIP-2 → 冻结视觉编码器、训练投影层 → 效果好但仍有gap 级别1: 双塔对比 (2021-2023) CLIP, SigLIP → 只做理解、不做生成 → 但为所有后续方案奠基

🔧 多模态训练核心技巧

动态分辨率

问题:图像尺寸各异,但视觉编码器通常要求固定尺寸(如224×224)

传统方案:强制resize → 信息丢失,宽高比变形

动态分辨率方案(Qwen2-VL / InternVL):

defdynamic_resize(image,max_pixels=1280*28*28):""" 保持宽高比的动态分辨率调整 不再是固定224×224 """h,w=image.shape[:2]ratio=h/w# 根据原始比例计算目标尺寸ifh>w:new_h=min(h,max_pixels//w)new_w=w*new_h//helse:new_w=min(w,max_pixels//h)new_h=h*new_w//w# 确保patch对齐(通常是14或16的倍数)patch_size=14new_h=(new_h//patch_size)*patch_size new_w=(new_w//patch_size)*patch_sizereturnresize(image,(new_h,new_w))

多尺度训练

LLaVA-NeXT的训练策略:

训练阶段 图像尺寸 目的 ──────────────────────────────────────── 第一阶段 336×336 基础视觉理解 第二阶段 336×336 + 672×672 细粒度+全局 第三阶段 动态分辨率 通用能力

数据配比策略

多模态训练数据的关键是配比

数据类型占比来源作用
图文对40%LAION, CC图像-文本对齐
多轮对话25%LLaVA-mix对话能力
纯文本20%通用语料语言能力保持
OCR/文档10%扫描文档视觉文本理解
视频帧5%视频数据集时序理解

关键洞察:纯文本数据不能少——否则模型会"忘记"怎么理解纯文本。

defbuild_multimodal_batch(data_loader,text_ratio=0.2):""" 多模态训练中混合纯文本数据 防止模型"忘记"纯文本理解能力 """multimodal_batch=next(data_loader["multimodal"])ifrandom.random()<text_ratio:# 混合纯文本数据text_batch=next(data_loader["text"])# 在batch维度拼接return{"images":multimodal_batch["images"],"input_ids":torch.cat([multimodal_batch["input_ids"],text_batch["input_ids"]]),"attention_mask":torch.cat([multimodal_batch["attention_mask"],text_batch["attention_mask"]])}returnmultimodal_batch

📝 总结与展望

演进脉络

2021: CLIP → 双塔对比学习,统一图文语义空间 2022: Flamingo → 冻结LLM + 插入视觉交叉注意力 2023: LLaVA → 极简方案:MLP投影+Billion级效果 2024: Qwen2-VL → 动态分辨率 + Q-Former进阶 2025: InternVL 3 → 6B视觉编码器 + 端到端训练 2025-2026: Gemini/LLaMA 4 → 原生多模态

趋势判断

  1. 原生多模态将成为标配:所有新训练的大模型都将从第一天起就是多模态的
  2. 视觉编码器越来越大:InternVL证明了更大的视觉编码器带来更好的效果
  3. 动态分辨率统一:固定尺寸resize将被彻底淘汰
  4. 视频理解是下一个战场:从静态图像到动态视频
  5. 端到端训练替代分阶段:不再需要"先文本后视觉"

面试知识清单

知识点重要性说明
CLIP对比学习⭐⭐⭐⭐⭐多模态的基石
LLaVA架构⭐⭐⭐⭐⭐最简单的方案,面试最常问
Q-Former⭐⭐⭐⭐BLIP-2和Qwen-VL的核心
原生多模态⭐⭐⭐⭐Gemini/LLaMA 4的路线
动态分辨率⭐⭐⭐实战关键优化
SigLIP vs CLIP⭐⭐⭐损失函数改进

如果你觉得这篇文章有帮助,欢迎点赞、收藏、转发!


📌 系列文章导航:

  • 【模型架构篇01】大模型部署:从vLLM到ollama
  • 【模型架构篇02】模型压缩:知识蒸馏与剪枝
  • 【模型架构篇10】长上下文模型
  • [【模型架构篇11】多模态架构:视觉-语言融合深度解析] ← 本文
http://www.gsyq.cn/news/1519645.html

相关文章:

  • 深入解析NXP KE1x MCU:Cortex-M0+内核与SIM模块实战配置指南
  • MC9328MXS USB设备控制器:从寄存器配置到数据传输实战
  • 【科研快报】与其消灭AI幻觉,不如教它说“我不确定“——谷歌团队提出AI元认知新范式
  • 揭阳亲测!汽车贴膜品牌老店推荐首推揭阳市榕城区东升志明汽车用品 - 资讯速览
  • “提示词”根本不算技能!程序员真正靠AI赚钱的3个硬核误区揭秘
  • 告别手动制表:3种办公场景下的效率工具选择思路 - 品牌测评鉴赏家
  • 开发日志(十一):多模态菜单 RAG 系统实战
  • 26年春季学期学习记录第44天
  • 鸿蒙数学108篇 第八十二篇:微积分基本定理
  • 猫抓浏览器扩展终极指南:三步搞定网页视频音频下载
  • 星露谷物语SMAPI终极指南:5分钟学会安全安装模组框架
  • Maya glTF导出插件深度解析:构建高效3D格式转换工作流实战指南
  • 2026无锡瓷砖空鼓翘边拱起根治全攻略|苏易修缮本地工况专属修复指南 - 苏易修缮
  • 3步掌握Kazumi硬件解码优化:告别手机视频卡顿的终极指南
  • 2026年张家港二手手机店大起底:这家企业为何脱颖而出? - 资讯速览
  • 2026年6月超声波点焊机直销工厂哪家专业,炭包超声波封口机/手提袋超声波点焊机,超声波点焊机源头工厂哪家专业 - 品牌推荐师
  • 表格自动化哪个工具好用?三款主流办公工具实测解析,适配全办公场景 - 品牌测评鉴赏家
  • WebPlotDigitizer:从图表图像中提取科研数据的智能助手
  • M68HC05指令集深度解析:从CISC架构到嵌入式实战优化
  • 会议视频快速转文字、提取音频!2026超好用工具实测 - 品牌测评鉴赏家
  • M68HC05微控制器核心概念:从指令集到内存映射的实战解析
  • Motorola Suite56并口JTAG调试器:原理、接口设计与实战排障
  • 2026年5月亲测东莞老店音响效果首推东莞洪浪汽车音响 - 资讯速览
  • 从‘死神经元’到稳定训练:在ResNet和Transformer里用PyTorch的LeakyReLU替代ReLU的实操指南
  • zhihu-api技术解析:构建高效知乎数据采集方案
  • CGAL泊松重建实战:从点云到网格,手把手教你用C++代码跑通第一个3D模型
  • MCU内部RC振荡器频率校准与时钟源切换实战指南
  • 别再只盯着算力了!深入拆解大模型训练中的‘通信墙’:NVLink、PCIe与网络拓扑实战分析
  • 终极指南:3步免费解锁Wand专业版完整功能,畅享AI游戏助手与远程控制
  • Pearcleaner:macOS终极清理指南 - 免费开源的应用残留彻底解决方案