Deep Learning for Computer Vision——Vision and Language

第一篇:范式转变------从专用模型到基础模型

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的哪些特征?

    • 不要使用 CLS token(池化token),因为它丢失了空间信息。

    • 使用倒数第二层的 Patch Token!这些Token保留了空间和语言信息,非常适合LLM。

  • 架构与训练配方:

    1. 初始化:使用预训练的语言模型(如 LLaMA)作为 LLM 解码器,预训练的图像编码器(如 CLIP)。

    2. 桥接层(Linear Layer):训练一个全新的线性层,将 CLIP 的特征映射到 LLM 的输入空间。

    3. 联合微调:微调 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> 输入。
  • 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):

    1. 让 LLM(如 GPT-3)生成该词的详细描述。"A marimba is a large wooden percussion instrument..."

    2. 将这些描述作为 CLIP 文本编码器的输入,生成更丰富的文本嵌入。

    3. 进行分类。

    • 在 ImageNet 及多个数据集上带来了显著的零样本提升。

4.3 链式模型:VisProg (Visual Programming)

  • 核心思想 :组合式视觉推理,无需训练。让 LLM 写 Python 代码来调用各种现成的视觉模型(VQA, Seg, Classify, Stable Diffusion 等),解决复杂的推理任务。

  • 案例1(多图VQA):

    • 输入两张图,问:"左右两图加起来有6个人和2条船,对吗?"

    • GPT-3 生成代码:

      python 复制代码
      Class MyMultiImageVQA():
          def ProcessIms():
              Ans1 = VQA(Image1)
              Ans2 = VQA(Image2)
              return Ans1 + Ans2
  • 案例2(图像编辑):

    • 指令:"把沙漠换成茂密的绿草。"

    • 代码:

      python 复制代码
      OBJ0 = 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代码,组合视觉模型。

💡 复习建议与核心考点:

  1. CLIP的InfoNCE Loss:理解为什么它等同于互信息下界,以及双向(图像->文本,文本->图像)损失的计算方式。

  2. CLIP的零样本分类机制:文本编码器变成分类器权重,图像编码器提取特征,余弦相似度匹配。

  3. LLaVA vs Flamingo:LLaVA使用简单线性层桥接(Token拼接),Flamingo使用Perceiver Resampler和GATED XATTN-DENSE(交叉注意力)。

  4. 组合性(Compositionality):CLIP在"草地上有杯子" vs "杯子里有草"上的失败,以及Hard Negative Fine-Tuning解决方案。

  5. 数据质量 vs 数据规模:Molmo 用 70万 高质量数据挑战 LLaMA 3.1V 的 60亿 网络数据。

  6. 视觉编程(VisProg):利用LLM生成代码调用外部工具,实现无训练的复杂视觉推理。

相关推荐
东坡肘子1 小时前
iPhone Duo 留给开发者的一个月 -- 肘子的 Swift 周报 #155
人工智能·swiftui·swift
LaughingZhu1 小时前
Product Hunt 每日热榜 | 2026-09-27
人工智能·深度学习·神经网络·搜索引擎·百度
时下握今1 小时前
Spring AI 工具调用详解:Function Calling 与 MCP 客户端 / 服务器实战
人工智能
计算机源码社1 小时前
【27届大数据毕设】基于Spark的AI艺术创作者价值评估与市场趋势预测研究 基于Python与Spark的AI生成艺术受众画像及异常热度识别可视化平台
大数据·人工智能·hadoop·python·spark·毕业设计·课程设计
嵌入式er1 小时前
经纬恒润 自动驾驶嵌入式软件-秋招面经
人工智能·机器学习·自动驾驶
向上的车轮3 小时前
AI音乐创作实战:用Workbuddy定制专属BGM并仿写《Star Sky》
人工智能·ai音乐·workbuddy
宸津-代码粉碎机7 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python