VLM(Vision-Language Model,视觉语言模型) 是一类能够同时理解、处理和生成图像与文本的多模态人工智能模型。

VLM 打破了计算机视觉(CV)和自然语言处理(NLP)之间的壁垒。

视觉感知的范式演进

  1. 传统机器学习:使用手工特征(SIFT、HOG)和浅层分类器(SVM)。任务形式为封闭集,只能执行特定任务
  2. 深度学习:使用学习到的特征和 CNN 架构,使用大规模人工标注的数据集。任务形式为封闭集,也只能执行特定任务
  3. 预训练-微调:先在大规模数据集上得到一个预训练的基础模型,再将其在特定任务上使用小规模数据集进行微调。任务形式仍然是封闭集,但是能够将预训练权重迁移至多种任务
  4. VLM:通过对比学习,在超大规模的互联网图文数据上进行预训练,目标是将图像和文本映射到同一个语义空间。比如让猫的图像和猫的文本在空间中尽可能靠近,视觉编码器 ViT(Vision Transformer,如 CLIP)的出现让视觉语言模型在架构上开始统一。此时 VLM 的任务形式变成了开放集,具备了零样本/少样本检测能力。

VLM 核心架构

Visual Encoder

视觉编码器,负责看。

早期使用 CNN,目前常用的 Backbone 都基于 ViT(Vision Transformer),比如 CLIP-ViT 等。

ViT 会将一张图像,切分为一个个固定大小的图像块(Patches),然后像处理文本序列一样处理这些图像块序列,通过自注意力机制来理解全局图像信息

CLIP(Contrastive Language-Image Pre-training)是 OpenAI 在 2021 年提出的多模态模型。CLIP 的核心是对比学习(Contrastive Learning),学习一个联合嵌入空间(Joint Embedding Space),让配对的图像和文本在空间里距离更近,不配对的则推远。

后来又提出了 SigLIP,去掉了 CLIP 中全局负样本的 Softmax 操作,改用 Sigmoid 独立计算每个样本的损失,训练更高效,且在细粒度的视觉理解上性能更优。

Projector

投影模块,负责翻译,将视觉特征投影到语言模型的语义空间中。

常见方案包括:

  1. MLP / Linear Projection,如 LLaVA
  2. Cross-Attention,如 Flamingo

LLM

大语言模型,负责思考和回答。接受对齐后的视觉 Token 和文本 Token,进行联合推理并生成回答。

常用的基座包括:

  1. LLaMA
  2. Qwen

模型框架

Two-Tower

双塔架构,视觉和文本由两个独立的编码器分别处理,最后再进行交互。交互较浅,通常在最后一层通过点积或简单的交叉注意力进行。

计算效率高,适合大规模图文检索任务。

Single-Tower

单塔架构,视觉和文本的输入在一开始就被拼接,交由同一个 Transformer 统一处理。交互深,在 Transformer 的多层网络中不断进行。

理解能力强,擅长处理需要深度推理的视觉问答和图像描述等复杂任务。

预训练目标

VLM预训练目标的一个显著演进趋势就是从早期单一目标发展到现在的多目标混合

这里的目标可以理解为损失函数

对比式目标 (Contrastive Objectives)

在特征空间中,将匹配的(正样本)拉近,将未配对的(负样本)推远,学习到具有判别性的表征。

  • 图像-文本对比学习 (Image-Text Contrastive Learning),这是最核心的对比目标,如 CLIP
  • 图像对比学习 (Image Contrastive Learning):专注于学习判别性的图像特征,迫使一张图像(Query)与其经过数据增强的版本(正样本)在嵌入空间中接近,而远离批次中的其他图像(负样本
  • 图像-文本-标签对比学习 (Image-Text-Label Contrastive Learning):前者的扩展。它引入了图像的类别标签作为监督信号,将同一类别的所有图像-文本对都视为正样本进行拉近

常用损失函数为 InfoNCE 损失(或对称交叉熵损失)。

比如一个批次里有 N 张图和 N 句话。模型算出一个 N×N 的相似度得分矩阵,损失函数要求对角线上的配对分数尽量高,其他位置的错误配对分数尽量低。

生成式目标 (Generative Objectives)

训练模型去生成数据,通过重建或预测的过程来学习语义特征。

  • 掩码语言建模 (Masked Language Modelling, MLM):源自NLP的BERT,随机掩码掉输入文本中的部分词,然后训练模型根据上下文来预测被掩码的词
  • 掩码图像建模 (Masked Image Modelling, MIM):图像领域的对应版。它随机掩码掉图像的一部分区块(Patch),然后训练模型根据未被掩码的区块来重建被掩码的部分
  • 掩码跨模态建模 (Masked Cross-Modal Modelling, MCM):MLM和MIM的结合。它同时掩码图像区块和文本词,并利用未掩码的另一模态信息来帮助重建被掩码的部分,从而学习跨模态关联
  • 图像到文本生成 (Image-to-Text Generation, ITG):也可以说是图像描述(Image Captioning)。模型以图像为条件,自回归地逐词预测对应的文本描述。

常用损失函数交叉熵损失(CE Loss),模型逐字往外蹦单词,每蹦出一个字,就计算这个字在词表上的概率分布。

对齐式目标 (Alignment Objectives)

确保模型能够精确地理解图像文本在细粒度上的对应关系,而不仅仅是全局的相似性。目标是判断一个图像-文本对是否在语义上对齐。

常用损失函数是 BCE 二值交叉熵或 Triplet 损失。

迁移学习

其核心目标在于实现预训练的 VLM 在下游任务的适配

Prompt Tuning

不修改 VLM 的预训练参数,而是通过设计或学习特定的文本提示(Prompt),来引导模型在特定任务上表现出更好的性能。

只需调整极少数参数,就能让模型适应新任务。

Visual Adaptation

在冻结的 VLM 图像或文本编码器之后,插入轻量级的可训练网络层,以适配下游数据的特征分布。

这个和 LoRA 不太一样,LoRA 修改的是内部的权重矩阵,且是纯线性叠加。用于 LLM Backbone 的微调或 ViT 的微调。

Adaptor 是在某个特征后,接一个小型 MLP,是非线性变换。用于跨模态对齐与特征适配。

知识蒸馏

知识蒸馏目的是将 VLM 中通用的知识转移到针对特定任务设计的模型中。

  1. Object Detection:开放词汇检测或生成 Pesudo-BBox/Mask 作为标注数据。
  2. Semantic Segmentation:开放词汇分割或生成 CAM 来辅助监督语义分割。

数据集

预训练数据集

VLM 预训练需要海量图-文对(Image-Text Pairs)。

一般分为三类:

  1. 人工标注数据集:质量高,但规模受限,比如 COCO Captions, Flickr8k, Flickr30k, Visual Genome
  2. 弱监督/爬取的数据集:规模庞大,但包含噪声。比如 LAION-5B, DataComp-1B
  3. 合成数据集:通过程序或生成模型制造,用于补充特定罕见场景。比如 Visual Genome

微调数据集

  1. 图像分类:ImageNet
  2. 目标检测:COCO,PASCAL VOC
  3. 语义分割:ADE20K,COCO-Stuff

参考文章

[1] [2304.00685] Vision-Language Models for Vision Tasks: A Survey