第一篇:范式转变------从专用模型到基础模型
1.1 传统范式 vs. 基础模型范式
-
传统范式 :
数据域1 -> 模型1 -> 任务1,数据域2 -> 模型2 -> 任务2。每个任务都需要独立的模型和标注数据。 -
基础模型范式 :
大规模、多样化的数据集 -> 基础模型(Foundation Model) -> 微调/零样本/少样本 -> 任务1, 任务2, 任务3... -
基础模型的特征 :通用、对多种任务鲁棒;通常参数量巨大、训练数据海量、采用自监督预训练目标。
1.2 基础模型的分类
-
语言:ELMo, BERT, GPT, T5。
-
分类(本课重点):CLIP, CoCa(视觉-语言分类基础模型)。
-
语言模型 + 视觉(LM + Vision):LLaVA, Flamingo, GPT, Gemini, Qwen。
-
链式(Chaining):LM + CLIP, 视觉编程(Visual Programming)。
-
其他:Segment Anything(分割)、Whisper(语音)、Dalle/Stable Diffusion/Imagen(文生图)。
1.3 回顾自监督学习(SimCLR)到视觉-语言嵌入
-
SimCLR核心:对同一图像做两次数据增强,提取特征,计算对比损失(正样本拉近,负样本推远)。希望学到的表征能泛化到新实例。
-
终极愿景 :如果表征空间不仅能嵌入图像,还能嵌入句子/短语呢?
-
比如,
"My favorite dog is a golden retriever"和"A cute fluffy cat"应该与对应的图像在同一个嵌入空间中靠近。 -
核心问题:如何构建联合的视觉-语言嵌入空间?
-
第二篇:CLIP------对比语言-图像预训练(Contrastive Language-Image Pre-training)
2.1 数据收集与模型训练
-
第一步:收集海量数据(4亿图像-文本对)。从互联网抓取图像的 alt-text。为了覆盖广泛视觉概念,使用50万个查询词,每个查询词最多包含2万个图像-文本对。
-
第二步:训练模型 。放弃预测精确单词(图像描述生成),改为对比学习。只需要匹配正确的描述与图像,而无需一字不差地生成。
-
架构:
-
图像编码器:ResNet 或 ViT,输出图像向量 u。
-
文本编码器:Transformer,输出文本向量 v。
-
2.2 CLIP的训练目标:InfoNCE Loss
-
给定一个批次 N 个(图像,文本)对。计算所有 N×N 个图像-文本对的余弦相似度。
-
目标:最大化对角线上的相似度(正样本对),最小化非对角线上的相似度(负样本对)。
-
公式(双向 InfoNCE Loss):
Matlab% u: 图像特征矩阵 (N x D) % v: 文本特征矩阵 (N x D) % tau: 温度系数 (Temperature) % 计算相似度矩阵 logits = (u * v') / tau; % (N x N) % 行方向 Softmax(图像->文本) labels = 1:N; loss_i2t = cross_entropy_loss(logits, labels); % 列方向 Softmax(文本->图像) loss_t2i = cross_entropy_loss(logits', labels); % 最终损失 loss = (loss_i2t + loss_t2i) / 2;
2.3 零样本推理(Zero-shot Prediction)------CLIP的魔法
-
传统LLM零样本 :给定提示
"I love ___",预测"cake"。或者"The movie review 'I hated the movie' is"->"negative"。 -
CLIP的零样本分类:
-
没有分类头(No Classifier Head)!
-
步骤1(构建分类器) :把数据集的所有类别名称变成文本描述,比如
"A photo of a [plane]","A photo of a [dog]"。送入文本编码器得到文本向量(相当于分类器的权重)。 -
步骤2(预测) :将待测图片送入图像编码器得到图像向量。
-
步骤3(匹配):计算图像向量与所有类别文本向量的余弦相似度,取最高分对应的类别。
-
这类似于1-NN算法,文本向量作为训练数据。
-
-
提示工程(Prompt Engineering) :使用
"A photo of a [category]"而非单独的类别词,能提升性能(+5% on ImageNet),因为这更符合训练数据的分布。使用多个提示(Prompt Ensemble)取平均向量能进一步减少偏差。
2.4 CLIP的惊人表现与泛化能力
-
与ResNet101对比 :在ImageNet上,CLIP ViT-L 零样本准确率 76.2%,与全监督训练的 ResNet101 持平,但CLIP完全没有使用人类标注!
-
鲁棒性极强:
- 在 ObjectNet(奇怪视角)、ImageNet Rendition(渲染图)、ImageNet Sketch(素描)、ImageNet Adversarial(对抗样本)上,ResNet101 性能暴跌(如对抗样本跌至 2.7%),但 CLIP 依然保持极高的准确率(对抗样本 77.1%)。
-
线性探测 vs 零样本:在大多数数据集上,线性探测(Linear Probe,即用CLIP特征训练一个线性分类器)效果最好(+28.9% on StanfordCars),但在一些特殊数据集上,零样本表现更好。
2.5 为什么CLIP表现这么好?
-
无标签为何能打败有标签?
-
原因:1) "无标签"其实有文本监督(其实是一种弱监督);2) 预训练规模极大(3.07亿参数,4亿图像);3) 测试集泄露可能性低(约2%)。
-
规模对比:ImageNet ResNet 参数 4450万,CLIP 参数 3.07亿。CLIP 训练数据 4亿图片。
2.6 CLIP的变体与改进
-
SigLIP :使用 Sigmoid 代替 Softmax。优点:不需要为了计算损失而将整个批次具体化(Materialize),极大节省显存。
-
CoCa (Contrastive Captioners) :在CLIP基础上增加了一个**生成目标(Captioning Loss)**和解码器。结合了对比学习和生成式学习的优点。在ImageNet上达到了最先进的91.0%准确率。
2.7 CLIP的局限性
-
缺点1:过度依赖批次大小(Batch Size)。增加批次大小有助于理解细粒度概念(Batch 4 = "animal", Batch 32000 = "Welsh Corgi"),但仍存在上限。
-
缺点2:组合性差(Compositionality) 。无法区分
"草地上有一个马克杯"和"杯子里有一些草"。- 解决方案 :难负样本微调(Hard Negative Fine-Tuning) (如 ARO 数据集),或使用**区域级别的描述(Region Captions)**替代全图描述。
-
缺点3:单一数据集无法涵盖所有知识。
第三篇:LLaVA------大型语言与视觉助手
3.1 历史背景与动机)
-
语言模型(LLM)在数学、情感分析、符号推理上表现强大。能否构建一个接受图像和文本输入,输出文本的模型?
-
ViLBERT (2019):早期视觉-语言模型,但需要针对每个任务单独微调(例如为 RefCOCO 设计 Mask-RCNN 边界框重排序),非常任务特定(Task-specific)。
3.2 LLaVA 架构与关键创新
-
核心思想:利用LLM的自回归特性,将图像特征作为"视觉Token"输入到LLM中。
-
Q: 应该使用CLIP的哪些特征?
-
不要使用
CLStoken(池化token),因为它丢失了空间信息。 -
使用倒数第二层的 Patch Token!这些Token保留了空间和语言信息,非常适合LLM。
-
-
架构与训练配方:
-
初始化:使用预训练的语言模型(如 LLaMA)作为 LLM 解码器,预训练的图像编码器(如 CLIP)。
-
桥接层(Linear Layer):训练一个全新的线性层,将 CLIP 的特征映射到 LLM 的输入空间。
-
联合微调:微调 LLM + 线性层。
- 仅需约 178,000 个包含输入图像、指令和期望输出的样本,就能获得合理的性能。
-
3.3 Flamingo:另一种融合方式
-
架构:
-
视觉编码器:处理图像。
-
Perceiver Resampler:将可变数量的图像Token转换为固定数量的Token(解决分辨率不一的问题)。
-
GATED XATTN-DENSE:在LLM中插入交叉注意力层(Cross-Attention),让文本Token Attend到图像Token。
-
-
训练数据 :图文交错的序列数据(Interleaved text and visual data),使用
<image>和<eos>标签标记图像出现和文本结束。 -
能力 :支持上下文学习(In-Context Learning) 。例如,给几个"图像-描述"示例,模型能自动推理出第三张图的描述,甚至能进行简单的数学运算(如
2+1=3,5+6=11, 然后推断3x6=18)。 -
结果:在零样本和少样本任务上表现优异。
第四篇:现代格局、数据质量与全模型(2026年展望)
4.1 开源与闭源的现状
-
API Only(闭源) :GPT-4o, Gemini 1.5 Pro, Claude 3.5 Sonnet。Gemini 目前被公认为最强的专有视觉-语言模型。
-
Open Weights(开源权重,可下载运行) :Qwen3-VL, LLaVA OneVision, Intern VL2。Qwen3-VL 是典型代表。
- Qwen3-VL 的改进 :使用 SigLIP-2 视觉编码器(而非 CLIP);原生图像分辨率(Native Resolution);使用 2D-RoPE 处理不同尺寸;视频帧时间以文本形式
<0.0 seconds>输入。
- Qwen3-VL 的改进 :使用 SigLIP-2 视觉编码器(而非 CLIP);原生图像分辨率(Native Resolution);使用 2D-RoPE 处理不同尺寸;视频帧时间以文本形式
-
Distilled(蒸馏模型):从GPT等大模型蒸馏出的开源模型。
-
Fully Open Source(完全开源,可复现训练):Molmo 等。
-
质量 vs 数量:
-
LLaMA 3.1V 使用 60亿图像-文本对(网络数据,偶然性强,标注不充分)。
-
Molmo 仅使用 70万 高质量、人类标注的图像-文本对(PixMo 数据集)。
-
PixMo 数据采集 :人们不喜欢打字,但喜欢说话。标注者被要求针对一张图片口述 60-90 秒,然后自动将语音转化为文本,得到极其详细、密集的描述。
-
4.2 链式模型:CuPL (Customized Prompts via Language models)
-
问题:模型遇到从未见过的概念(如"marimba", "viaduct", "papillon", "lorikeet")怎么办?
-
解决方案(Chaining):
-
让 LLM(如 GPT-3)生成该词的详细描述。
"A marimba is a large wooden percussion instrument..." -
将这些描述作为 CLIP 文本编码器的输入,生成更丰富的文本嵌入。
-
进行分类。
- 在 ImageNet 及多个数据集上带来了显著的零样本提升。
-
4.3 链式模型:VisProg (Visual Programming)
-
核心思想 :组合式视觉推理,无需训练。让 LLM 写 Python 代码来调用各种现成的视觉模型(VQA, Seg, Classify, Stable Diffusion 等),解决复杂的推理任务。
-
案例1(多图VQA):
-
输入两张图,问:"左右两图加起来有6个人和2条船,对吗?"
-
GPT-3 生成代码:
pythonClass MyMultiImageVQA(): def ProcessIms(): Ans1 = VQA(Image1) Ans2 = VQA(Image2) return Ans1 + Ans2
-
-
案例2(图像编辑):
-
指令:"把沙漠换成茂密的绿草。"
-
代码:
pythonOBJ0 = Seg(image=IMAGE) OBJ1 = Select(image=IMAGE, object=OBJ0, query='desert') IMAGE0 = Replace(image=IMAGE, object=OBJ1, prompt='lush green grass') RESULT = IMAGE0
-
-
VisProg 内置了图像理解(Loc, FaceDet, Seg)、图像操作(Replace, ColorPop, BgBlur)和知识检索(List, Eval)等模块。
4.4 全模型(Omni Models)与总结
-
全模型 :始于 2024 年的 GPT-4o。近期 Thinking Machines 和 Gemini 也推出了自己的模型。目标:训练一个模型,统一处理文本、音频、视频和视觉输入输出。
-
CLIP总结:模型参数 4450万(ResNet)-> 3.07亿(ViT-L);数据量 4亿图像文本对;零样本和线性探测表现极佳。
-
Flamingo总结:图文交错训练,实现上下文学习。
-
CuPL总结:使用LLM生成自定义提示。
-
VisProg总结:使用LLM生成Python代码,组合视觉模型。
💡 复习建议与核心考点:
-
CLIP的InfoNCE Loss:理解为什么它等同于互信息下界,以及双向(图像->文本,文本->图像)损失的计算方式。
-
CLIP的零样本分类机制:文本编码器变成分类器权重,图像编码器提取特征,余弦相似度匹配。
-
LLaVA vs Flamingo:LLaVA使用简单线性层桥接(Token拼接),Flamingo使用Perceiver Resampler和GATED XATTN-DENSE(交叉注意力)。
-
组合性(Compositionality):CLIP在"草地上有杯子" vs "杯子里有草"上的失败,以及Hard Negative Fine-Tuning解决方案。
-
数据质量 vs 数据规模:Molmo 用 70万 高质量数据挑战 LLaMA 3.1V 的 60亿 网络数据。
-
视觉编程(VisProg):利用LLM生成代码调用外部工具,实现无训练的复杂视觉推理。