🚀 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研究人员。我们主要设想研究人员将使用该模型来更好地理解计算机视觉模型的鲁棒性、泛化能力以及其他能力、偏差和限制。
🔧 技术细节
暂未提供相关技术细节,此部分跳过。
📄 许可证
暂未提及许可证信息,此部分跳过。