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 上的交互式演示,以及可直接使用的 transformers pipelines,用于分类和零样本任务。

性能对比

  • 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'])))

流式示例展示了诸如 urltextwidthheightclip_similarity_vitb32nsfw_score_opennsfw2watermark_scoreaesthetic_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_featuresget_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 数据集

Sources