11. Vision Encoder 怎么选?ViT、CLIP、SigLIP、DINOv2 各有什么特点和适用场景?

整理 Vision Encoder 的选型逻辑,以及 ViT、CLIP、SigLIP、DINOv2 的特点与适用场景。

简单回答

Vision Encoder 是 VLM 的感知基础,选型直接决定了模型的视觉理解上限。ViT 是纯视觉分类骨干,不具备跨模态对齐能力;CLIP 通过图文对比学习具备了语义对齐,但训练目标偏全局相似度;SigLIP 改进了 CLIP 的训练目标,在细粒度理解上更稳定;DINOv2 是自监督视觉预训练,局部特征细节最丰富,适合需要精细视觉感知的任务。实际 VLM 选 Encoder 的核心看三件事:跨模态对齐能力、细粒度特征质量、以及和目标 LLM 输入的维度适配性。

详细解答

ViT:纯视觉的起点

ViT(Vision Transformer)是把 Transformer 应用到图像的奠基工作。做法是把图片切成若干固定大小的 patch(比如 16×16 像素),每个 patch 展平后做线性投影变成 token,加上位置编码,送进标准 Transformer Encoder。ViT 的训练目标是图像分类(在 ImageNet 这类数据集上),没有任何语言相关的训练信号。

用 ViT 作为 VLM 的视觉编码器有一个根本问题:ViT 的表征空间和 LLM 的语言空间没有对齐,中间需要一个能力很强的 Projector 来做语义桥接,难度大、效果不稳定。早期一些 VLM 用了 ViT 作为视觉骨干,但基本上都是作为后来方案的对比基线。

CLIP:跨模态对齐的奠基

CLIP(Contrastive Language-Image Pre-training,OpenAI)用 4 亿图文对做对比预训练,让匹配的图文对在向量空间里更近,不匹配的更远。这使得 CLIP 的视觉编码器和文本编码器天然处于同一个语义空间,是图文对齐能力的重要来源。

CLIP 视觉特征的特点是全局语义丰富——它擅长判断"这张图说的是什么",但对局部细节(某个角落的文字、图表中的具体数值)的表征相对弱,因为对比学习的训练信号主要来自全图和整句描述的匹配,局部信息贡献有限。

大量早期 VLM(LLaVA 1.0/1.5、MiniGPT-4 等)都用 CLIP ViT-L/14 作为视觉编码器,效果好,工程成熟。

SigLIP:更稳定的对比学习

SigLIP(Sigmoid Loss for Language-Image Pre-Training,Google)是 CLIP 的一个重要改进。CLIP 用的是 Softmax 对比损失——在一个 batch 里,每张图要和所有文本做竞争比较,batch 越大效果越好,但对分布式训练的通信要求很高(需要同步不同 GPU 上的所有 sample 才能算 loss)。

SigLIP 改用逐样本的 Sigmoid 二分类损失——每一对图文单独判断"匹配/不匹配",不需要在 batch 内做全局比较:

其中 是标签(1 表示匹配,-1 表示不匹配), 是 sigmoid 函数, 是偏置项。

这个改变带来了两个好处:训练更稳定(不依赖 batch 内的负样本数量);在细粒度图文匹配和零样本分类上效果比 CLIP 更好。很多 2023 年之后的主流 VLM(Gemini 系列、PaliGemma、InternVL 2.0 系列)切换到了 SigLIP 作为视觉编码器。

DINOv2:自监督学习的局部细节王

DINOv2(Meta)完全没有语言训练信号,是一个纯视觉自监督预训练模型。训练方式是 Self-Distillation with no Labels(DINO),让模型在同一张图的不同裁剪(局部 patch)之间做一致性约束,迫使模型学习到丰富的局部视觉结构。

DINOv2 的特征有一个独特的性质:局部特征非常精细——它能区分图片中不同区域的细微视觉差异,在密集预测任务(分割、深度估计、关键点检测)上远超 CLIP。这使得 DINOv2 在需要精细视觉感知的场景(医学图像分析、工业检测、细粒度物体理解)里表现优秀。

但 DINOv2 没有语言对齐,作为 VLM 的 Encoder 需要更复杂的 Projector,且整体跨模态性能不如 SigLIP。一个有意思的探索方向是把 SigLIP 和 DINOv2 的特征拼接起来,同时获得语义对齐和局部细节——InternVL 2.5 等模型在这个方向有实验。

实际选型的考量

工程选型上,以下几点是主要的判断维度:

目标任务类型:通用图文理解和对话选 SigLIP;需要精细局部感知(文档 OCR、图表识别)考虑混合 SigLIP + DINOv2;纯分类任务可以用标准 ViT。

编码器分辨率:CLIP 最常见的是 224×224,SigLIP 有 224、384、512 多种版本,分辨率越高细节越好但计算量更大。处理文档等高分辨率图片时,编码器分辨率是关键限制。

与 LLM 的维度适配:不同 Encoder 输出维度不同(ViT-L 是 1024 维,ViT-bigG 是 1280 维),Projector 的设计需要适配。

预训练数据规模:SigLIP 用了更大规模的图文对训练,通常比同规模 CLIP 效果更好。

面试时可以这样答

选 Vision Encoder 主要看两件事:有没有跨模态对齐能力,以及局部特征够不够细。

ViT 是纯视觉分类骨干,没有语言对齐,直接用作 VLM 的视觉部分桥接难度大,现在基本作为基线存在。CLIP 是图文对比学习,全局语义对齐好,但对局部细节不够敏感,早期 VLM 的标配。SigLIP 改进了 CLIP 的训练目标,从 Softmax 对比换成逐样本 Sigmoid,训练更稳定,细粒度对齐更好,现在很多主流模型(Gemini、InternVL 系列)都切过去了。DINOv2 完全自监督,局部特征最丰富,适合需要精细感知的任务,但没有语言对齐,用作 VLM 要配合更强的 Projector。

工程上通用 VLM 首选 SigLIP,有文档 OCR、图表这类高细节需求的可以考虑混合 SigLIP + DINOv2 特征。分辨率版本也很重要,处理文档一般要用 384 或更高分辨率的编码器。

常见追问

  1. SigLIP 和 CLIP 在 zero-shot 分类任务上的差距有多大?什么场景差距最明显?
  2. DINOv2 的 self-distillation 训练目标具体是什么?为什么能学到细粒度特征?
  3. 如果要同时处理高分辨率图片和普通图片,Encoder 的分辨率策略怎么设计?