社群計算機視覺課程文件

多模態文字生成 (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 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.