Skip to content
🔗 分享本题
查看我的学习进度 →

CLIP 与 BLIP 对比图解:CLIP 侧重图文对齐与检索,BLIP 增加跨模态融合、文本解码和 CapFilt 数据自举

🧠 图解记忆:CLIP 的双编码器擅长图文对齐但不能生成,BLIP 通过 ITC、ITM、LM 联合训练和文本解码器统一了检索、字幕与视觉问答;点击图片可查看原图。

💡 答案要点

BLIP = Bootstrapped Language-Image Pre-training(自举语言-图像预训练)

核心区别:

维度CLIPBLIP
任务类型只能理解(检索)理解 + 生成
训练目标对比学习(ITC)ITC + ITM + LM(三合一)
架构双编码器编码器 + 解码器
能力图文匹配图文匹配 + 字幕生成 + VQA

为什么需要 BLIP?

CLIP 的局限:

任务1:给图片找匹配文本 ✓
任务2:给图片生成字幕 ✗(不支持)
任务3:回答图片相关问题 ✗(不支持)

原因:
  CLIP 只有编码器,不能生成文本

BLIP 的能力:

任务1:图文检索 ✓(继承 CLIP)
任务2:图像字幕 ✓(新增)
任务3:视觉问答 ✓(新增)

实现:
  编码器:理解图像和文本
  解码器:生成文本

BLIP 架构:

┌─────────────────────────────────────────────────────────┐
│                     BLIP 架构                            │
└─────────────────────────────────────────────────────────┘

图像编码器(Image Encoder)
  ViT → 图像特征

文本编码器(Text Encoder)
  BERT → 文本特征(双向)

文本解码器(Text Decoder)
  GPT → 生成文本(单向)

多任务训练:
  1. ITC(Image-Text Contrastive):对比学习
  2. ITM(Image-Text Matching):二分类(匹配/不匹配)
  3. LM(Language Modeling):生成字幕

三个训练目标:

1. ITC(对比学习):

python
# 和 CLIP 一样
image_features = image_encoder(image)
text_features = text_encoder(text)
loss_itc = contrastive_loss(image_features, text_features)

2. ITM(匹配分类):

python
# 判断图文是否匹配
combined = cross_attention(image_features, text_features)
logits = classifier(combined)  # [匹配, 不匹配]
loss_itm = bce_loss(logits, label)

# 正样本:真实配对
# 负样本:随机配对

3. LM(生成字幕):

python
# 自回归生成
text_decoder_input = [image_features, caption_prefix]
generated_caption = text_decoder.generate(text_decoder_input)
loss_lm = cross_entropy_loss(generated_caption, target_caption)

BLIP 的创新:CapFilt(字幕过滤):

问题:
  网络爬取的图文对质量参差不齐
  很多文本描述不准确

BLIP 解决方案:
  1. 用 BLIP 模型生成新字幕(Caption)
  2. 用 BLIP 模型过滤低质量数据(Filter)
  3. 用清洗后的数据重新训练(Bootstrap)

流程:
  原始数据 → BLIP-Base 生成字幕
           → 过滤低质量样本
           → 清洗后数据
           → 训练 BLIP-Large

效果:
  数据质量提升 → 模型性能提升

性能对比(COCO):

模型图像字幕(CIDEr)图文检索(R@1)VQA准确率
CLIP-58.4%-
ALBEF131.473.1%74.5%
BLIP136.782.3%78.3%

面试话术:

"CLIP 是理解型模型,BLIP 是理解+生成型。BLIP 用三个训练目标(ITC+ITM+LM)统一了检索和生成任务。特别是 CapFilt 机制,用模型自己清洗数据,形成正反馈循环。"