🚀 ALIGN(基礎模型)
ALIGN模型是一個多模態模型,它結合了視覺和文本信息,通過對比學習來對齊視覺和文本表示。該模型在圖像分類、多模態嵌入檢索等任務中表現出色,為研究人員提供了強大的工具來探索零樣本學習和多模態交互。
🚀 快速開始
ALIGN 模型由Chao Jia、Yinfei Yang、Ye Xia、Yi - Ting Chen、Zarana Parekh、Hieu Pham、Quoc V. Le、Yunhsuan Sung、Zhen Li和Tom Duerig在論文 “Scaling Up Visual and Vision - Language Representation Learning With Noisy Text Supervision” 中提出。ALIGN採用雙編碼器架構,視覺編碼器使用 EfficientNet,文本編碼器使用 BERT,並通過對比學習來對齊視覺和文本表示。與以往的工作不同,ALIGN利用了大規模的噪聲數據集,證明了通過簡單的方法利用語料庫的規模可以實現最先進的表示。
ALIGN的代碼並未公開,此基礎模型是從Kakao Brain團隊的原始實現轉換而來。該實現遵循了原始Google模型的相同架構和超參數,但在開源的 [COYO](https://github.com/kakaobrain/coyo - dataset) 數據集上進行訓練。Google的 ALIGN 模型雖然在包含18億個圖像 - 文本對的大型數據集上進行訓練,但由於數據集未公開,無法復現。Kakao Brain的ALIGN儘管在規模小得多但經過精心策劃的COYO - 700M數據集上訓練,其性能與Google ALIGN報告的指標相當甚至更優。
✨ 主要特性
- 雙編碼器架構:結合EfficientNet視覺編碼器和BERT文本編碼器。
- 對比學習:學習對齊視覺和文本表示。
- 大規模噪聲數據利用:利用大規模噪聲數據集提升性能。
📦 安裝指南
暫未提及安裝步驟,此部分跳過。
💻 使用示例
基礎用法
零樣本圖像分類
import requests
import torch
from PIL import Image
from transformers import AlignProcessor, AlignModel
processor = AlignProcessor.from_pretrained("kakaobrain/align-base")
model = AlignModel.from_pretrained("kakaobrain/align-base")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
candidate_labels = ["an image of a cat", "an image of a dog"]
inputs = processor(text=candidate_labels, images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
# this is the image-text similarity score
logits_per_image = outputs.logits_per_image
# we can take the softmax to get the label probabilities
probs = logits_per_image.softmax(dim=1)
print(probs)
高級用法
多模態嵌入檢索
import requests
import torch
from PIL import Image
from transformers import AlignProcessor, AlignModel
processor = AlignProcessor.from_pretrained("kakaobrain/align-base")
model = AlignModel.from_pretrained("kakaobrain/align-base")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
text = "an image of a cat"
inputs = processor(text=text, images=image, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
# multi-modal text embedding
text_embeds = outputs.text_embeds
# multi-modal image embedding
image_embeds = outputs.image_embeds
或者,分別檢索圖像或文本嵌入:
import requests
import torch
from PIL import Image
from transformers import AlignProcessor, AlignModel
processor = AlignProcessor.from_pretrained("kakaobrain/align-base")
model = AlignModel.from_pretrained("kakaobrain/align-base")
# image embeddings
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(images=image, return_tensors="pt")
image_embeds = model.get_image_features(
pixel_values=inputs['pixel_values'],
)
# text embeddings
text = "an image of a cat"
inputs = processor(text=text, return_tensors="pt")
text_embeds = model.get_text_features(
input_ids=inputs['input_ids'],
attention_mask=inputs['attention_mask'],
token_type_ids=inputs['token_type_ids'],
)
📚 詳細文檔
COYO - 700M數據集
[COYO](https://github.com/kakaobrain/coyo - dataset#dataset-preview) 是一個包含7億個圖像 - 文本對的數據集,類似於Google的 ALIGN 1.8B
圖像 - 文本數據集,它是從網頁收集的 “噪聲” 替代文本和圖像對的集合,但為開源數據集。COYO - 700M
和 ALIGN 1.8B
被認為是 “噪聲” 數據集,因為只進行了最小限度的過濾。COYO
與另一個開源圖像 - 文本數據集 LAION
類似,但有以下區別。雖然 LAION 2B
是一個更大的數據集,包含20億個英語對,而 COYO
只有7億個對,但 COYO
對帶有更多元數據,使用戶在使用時有更多靈活性和更細粒度的控制。以下表格顯示了它們的差異:COYO
為所有對配備了美學分數、更強大的水印分數和人臉計數數據。
屬性 |
詳情 |
模型類型 |
ALIGN(基礎模型) |
訓練數據 |
COYO - 700M數據集 |
COYO |
LAION 2B |
ALIGN 1.8B |
使用CLIP ViT - B/32和ViT - L/14模型計算的圖像 - 文本相似度分數,作為元數據提供,但不進行過濾以避免可能的消除偏差 |
使用CLIP (ViT - B/32) 提供的圖像 - 文本相似度分數 - 僅保留閾值0.28以上的示例 |
基於頻率的最小過濾 |
對圖像和文本進行NSFW過濾 |
對圖像進行NSFW過濾 |
Google Cloud API |
人臉識別(人臉計數)數據作為元數據提供 |
無人臉識別數據 |
不適用 |
7億個英語對 |
20億個英語對 |
18億個 |
來自CC 2020年10月 - 2021年8月 |
來自CC 2014 - 2020年 |
不適用 |
美學分數 |
部分美學分數 |
不適用 |
更強大的水印分數 |
水印分數 |
不適用 |
Hugging Face Hub |
Hugging Face Hub |
未公開 |
英語 |
英語 |
英語? |
COYO可在Hugging Face Hub上作為 [數據集](https://huggingface.co/datasets/kakaobrain/coyo - 700m) 使用。
模型使用
預期用途
該模型旨在作為研究成果供研究社區使用。我們希望該模型能使研究人員更好地理解和探索零樣本、任意圖像分類。我們也希望它能用於跨學科研究,分析此類模型的潛在影響 - ALIGN論文中包含了對潛在下游影響的討論,為這種分析提供了示例。
主要預期用途
這些模型的主要預期用戶是AI研究人員。我們主要設想研究人員將使用該模型來更好地理解計算機視覺模型的魯棒性、泛化能力以及其他能力、偏差和限制。
🔧 技術細節
暫未提供相關技術細節,此部分跳過。
📄 許可證
暫未提及許可證信息,此部分跳過。