社区计算机视觉课程文档

多模态文本生成 (BLIP)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

多模态文本生成 (BLIP)

引言

CLIP 发布后,人工智能社区认识到大型数据集和对比学习在深度学习中的巨大潜力。该领域的一个重要进展是 BLIP (Bootstrapping Language-Image Pre-training),它将多模态模型的能力扩展到文本生成。

CapFilt:字幕和过滤

由于多模态模型需要大量数据集,因此通常需要使用图像和替代文本(alt-text)对从互联网上抓取。然而,替代文本通常不能准确描述图像的视觉内容,使其成为学习视觉-语言对齐的次优噪声信号。因此,BLIP 论文引入了字幕和过滤机制(CapFilt)。它由一个深度学习模型组成,该模型过滤掉嘈杂的配对,以及另一个为图像创建字幕的模型。这两个模型都首先使用人工标注数据集进行微调。他们发现使用 CapFit 清理数据集比仅使用网络数据集产生了更优异的性能。有关此过程的更多详细信息,请参阅 BLIP 论文

BLIP 架构与训练

BLIP 架构结合了视觉编码器和编码器-解码器多模态混合 (MED),实现了视觉和文本数据的多功能处理。其结构如下图所示(相同颜色的块共享参数):

  • 视觉 Transformer (ViT):这是一个简单的视觉 Transformer,具有自注意力、前馈块和用于嵌入表示的 [CLS] 标记。
  • 单模态文本编码器:类似于 BERT 的架构,它使用 [CLS] 标记进行嵌入,并像 CLIP 一样采用对比损失来对齐图像和文本表示。
  • 图像-文本编码器:它用 [Encode] 标记替换了 [CLS] 标记。交叉注意力层可以集成图像和文本嵌入,创建多模态表示。它采用线性层来评估图像-文本对的一致性。
  • 图像-文本解码器:该解码器将双向自注意力替换为因果自注意力,通过交叉熵损失以自回归方式进行训练,用于字幕生成或回答视觉问题等任务。

BLIP 的架构集成了视觉编码器和编码器-解码器多模态混合组件,实现了高级文本和图像处理。这种设计使其能够熟练处理各种任务,从对齐图像-文本对到生成字幕和回答视觉问题。

用例:BLIP-2

继 BLIP 成功之后,其创造者 Salesforce 推出了 BLIP-2,这是一个增强版本。BLIP-2 的改进和功能在 BLIP-2 论文Hugging Face 文档中详细介绍。在这里,我们利用 BLIP-2 进行视觉问答。

from PIL import Image
import requests
from transformers import Blip2Processor, Blip2ForConditionalGeneration
import torch

device = "cuda" if torch.cuda.is_available() else "cpu"

processor = Blip2Processor.from_pretrained("Salesforce/blip2-opt-2.7b")
model = Blip2ForConditionalGeneration.from_pretrained(
    "Salesforce/blip2-opt-2.7b", torch_dtype=torch.float16
)
model.to(device)
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)

prompt = "Question: How many remotes are there? Answer:"
inputs = processor(images=image, text=prompt, return_tensors="pt").to(
    device, torch.float16
)
outputs = model.generate(**inputs)
text = processor.tokenizer.batch_decode(outputs, skip_special_tokens=True)
print(text)

此代码片段演示了 BLIP-2 在视觉问答中的应用。尝试更复杂的查询或使用提供的 Gradio 应用程序进一步探索此功能。

结论

BLIP 标志着多模态文本生成领域的一个重要里程碑,它利用 CLIP 的优势创建了一个强大的模型。它强调了数据集质量优于数量的重要性,为多模态学习的进步做出了贡献。有关更多详细信息,请参阅 BLIP 论文BLIP-2 论文以及 Hugging Face 文档中的 BLIPBLIP-2

< > 在 GitHub 上更新