Kakao Brain ViT 与 ALIGN 模型发布,使用 COYO 700M 数据集
TL;DR
Kakao Brain 与 Hugging Face 开源了两款视觉语言模型——ViT 和 ALIGN——它们在全新的 700 M 图文 COYO 数据集上进行训练,标志着首个公开发布的 ALIGN 模型以及首批与开放训练语料配套的 ViT/ALIGN 模型。
发布内容
- COYO 数据集 – 从网络收集的 700 M 图文对,以开源许可证发布。
- ViT 模型 – 采用 Google ViT 的架构和超参数的视觉 Transformer,在 COYO‑Labeled‑300M 子集上训练。
- ALIGN 模型 – 与 Google ALIGN 架构相匹配的双编码器图文模型,在完整的 COYO 数据集上训练。
- Demo spaces 与 pipelines – 在 Hugging Face Hub 上的交互式演示,以及可直接使用的
transformerspipelines,用于分类和零样本任务。
性能对比
- ALIGN‑B7‑Base 在 700 M 对上训练后,在 Image KNN 分类上与 Google 的 ALIGN‑B7‑Base 相当,并在 MS‑COCO 图文检索(图像到文本、文本到图像)上超越其表现。
- ViT‑L/16 在 384 px 和 512 px 分辨率下,达到了与 Google ViT‑L/16 相当的 ImageNet 与 ImageNet‑ReaL 准确率。
- 这些结果表明,即使使用的专有数据量只有一小部分,开源模型也能达到最先进的性能水平。
COYO 数据集详情
- 规模:700 M 英文图文对(过滤后约 747 M)。
- 来源:2020 年 10 月至 2021 年 8 月期间抓取的网页(Common Crawl)。
- 元数据:包括 CLIP 相似度分数(ViT‑B/32 与 ViT‑L/14)、NSFW 分数、水印分数、美学分数以及人脸计数数据。
- 与 LAION‑2B 的区别:
| 特性 | COYO | LAION‑2B |
|---|---|---|
| 大小 | 700 M | 2 B |
| 相似度分数 | CLIP‑B/32 与 L/14,无过滤 | CLIP‑B/32,阈值 0.28 |
| NSFW 过滤 | 图像和文本均过滤 | 仅图像 |
| 人脸计数 | 提供 | 未提供 |
| 水印分数 | 稳健指标 | 基础分数 |
| 可用性 | Hugging Face Hub | Hugging Face Hub |
ViT 工作原理
ViT 将图像划分为固定大小的块,对每个块进行嵌入,加入位置嵌入,并使用标准的 Transformer 编码器处理该序列。 该设计相较于可比的 CNN 提供了最高四倍的计算效率提升,同时保持领域无关性。 Kakao Brain 的 ViT 模型采用与 Google ViT 相同的架构,但在公开发布的 COYO‑Labeled‑300M 子集上进行训练,实现了完整的可复现性。
ALIGN 工作原理
ALIGN 使用双编码器:图像的视觉编码器和文本的文字编码器,并在噪声 alt‑text 对上使用对比损失进行训练。 这种噪声且大规模的训练语料(最初为 1.8 B 对)使得 ALIGN 在跨模态检索和零样本分类方面表现出色。 Kakao Brain 的 ALIGN 模型是该架构的首个开源实现,使用 700 M COYO 对进行训练,性能达到或超过 Google 报告的数值。
使用 COYO 数据集
from datasets import load_dataset
# Load the full dataset (may be large)
full = load_dataset('kakaobrain/coyo-700m')
# Stream a subset to avoid downloading everything
stream = load_dataset('kakaobrain/coyo-700m', streaming=True)
print(next(iter(stream['train'])))
流式示例展示了诸如 url、text、width、height、clip_similarity_vitb32、nsfw_score_opennsfw2、watermark_score 和 aesthetic_score_laion_v2 等字段。
ViT 快速入门
import requests, torch
from PIL import Image
from transformers import ViTImageProcessor, ViTForImageClassification
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
processor = ViTImageProcessor.from_pretrained('kakaobrain/vit-large-patch16-384')
model = ViTForImageClassification.from_pretrained('kakaobrain/vit-large-patch16-384')
inputs = processor(images=image, return_tensors='pt')
with torch.no_grad():
logits = model(**inputs).logits
probs = torch.nn.functional.softmax(logits, dim=-1)
top5 = torch.argsort(probs, descending=True)[0, :5]
for idx in top5:
print(f"{model.config.id2label[idx.item()]}: {probs[0, idx].item():.4f}")
或者使用高级 pipeline:
from transformers import pipeline
classifier = pipeline('image-classification', model='kakaobrain/vit-large-patch16-384')
print(classifier('http://images.cocodataset.org/val2017/000000039769.jpg', top_k=5))
ALIGN 快速入门
from transformers import AlignProcessor, AlignModel
import requests, torch
from PIL import Image
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
processor = AlignProcessor.from_pretrained('kakaobrain/align-base')
model = AlignModel.from_pretrained('kakaobrain/align-base')
candidate_labels = ['an image of a cat', 'an image of a dog']
inputs = processor(images=image, text=candidate_labels, return_tensors='pt')
with torch.no_grad():
logits = model(**inputs).logits_per_image
probs = logits.softmax(dim=1)
print(probs)
通过 pipeline 进行零样本分类:
from transformers import pipeline
classifier = pipeline('zero-shot-image-classification', model='kakaobrain/align-base')
print(classifier('https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png',
candidate_labels=['animals', 'humans', 'landscape']))
该模型还提供 get_image_features 和 get_text_features 接口,供下游基于嵌入的任务使用。
对研究社区的影响
- 可复现性:研究人员现在可以复现 Google 规模的 ViT 与 ALIGN 实验,因为模型和精确的训练数据均已公开。
- 可及性:开源的 ALIGN 模型消除了没有专有数十亿对数据集访问权限的实验室的一大障碍。
- 基准测试:由于 COYO 包含丰富的元数据(美学、水印、人脸计数),可以对模型在过滤子集上的行为进行更细粒度的分析。
- 未来工作:社区可以扩展 COYO,将其与其他数据集(如 LAION)结合,或在保持完全透明的前提下对已发布模型进行特定领域的微调。
所有代码片段均假设已安装最新版本的 transformers(或 ALIGN 的开发分支)以及通过 pip install datasets 安装的 datasets 库。
SUMMARY: Kakao Brain 与 Hugging Face 发布了在全新 700 M 图文 COYO 数据集上训练的开源 ViT 与 ALIGN 视觉语言模型,提供了首个公开可用的 ALIGN 模型以及具备可复现训练数据的 ViT 模型。
TITLE: Kakao Brain ViT 与 ALIGN 模型发布,使用 COYO 700M 数据集