项目介绍:siglip-so400m-patch14-224
概述
SigLIP 是一种通过在 WebLi 数据集上进行预训练的图像文本联合预训练模型。在论文《Sigmoid Loss for Language Image Pre-Training》中,作者 Zhai 等人首次介绍了这个模型,并在这个仓库中发布。SigLIP 使用了 SoViT-400m 架构,经过形状优化设计,详细内容参见 Alabdulmohsin 等人的研究论文。
模型描述
SigLIP 是 CLIP 的扩展,它通过使用 sigmoid 损失函数进行了改进。与传统的损失函数不同,sigmoid 损失函数只需利用图像-文本对进行计算,不需要对成对相似度进行全局归一化。这种设计使得 SigLIP 在增大批次训练时效率更高,同时在小批量训练时表现也更出色。
可以通过作者在 Twitter 上的一条简要介绍了解更多。
适用场景及限制
SigLIP 模型可以用于零样本图像分类和图像-文本检索等任务。可以访问模型中心来查找其他版本以适用于你感兴趣的任务。
使用方法
可以通过以下示例代码实现零样本图像分类:
from PIL import Image
import requests
from transformers import AutoProcessor, AutoModel
import torch
model = AutoModel.from_pretrained("google/siglip-so400m-patch14-224")
processor = AutoProcessor.from_pretrained("google/siglip-so400m-patch14-224")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
texts = ["a photo of 2 cats", "a photo of 2 dogs"]
inputs = processor(text=texts, images=image, padding="max_length", return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image
probs = torch.sigmoid(logits_per_image)
print(f"{probs[0][0]:.1%} that image 0 is '{texts[0]}'")
此外,还可以利用 pipeline API,简化操作流程:
from transformers import pipeline
from PIL import Image
import requests
image_classifier = pipeline(task="zero-shot-image-classification", model="google/siglip-so400m-patch14-224")
url = 'http://images.cocodataset.org/val2017/000000039769.jpg'
image = Image.open(requests.get(url, stream=True).raw)
outputs = image_classifier(image, candidate_labels=["2 cats", "a plane", "a remote"])
outputs = [{"score": round(output["score"], 4), "label": output["label"] } for output in outputs]
print(outputs)
训练过程
训练数据
SigLIP 预训练使用了 WebLI 数据集 (Chen et al., 2023)。
预处理
图像被调整到相同的 384x384 分辨率,并在 RGB 通道上进行归一化,平均值为 (0.5, 0.5, 0.5), 标准差为 (0.5, 0.5, 0.5)。
文本被标记化并填充到统一长度(64 个 tokens)。
计算资源
该模型训练使用了 16 个 TPU-v4 芯片,持续了三天。
评估结果
SigLIP 相比于 CLIP 的评估结果如下:
引用信息
请参见以下 BibTeX 条目:
@misc{zhai2023sigmoid,
title={Sigmoid Loss for Language Image Pre-Training},
author={Xiaohua Zhai and Basil Mustafa and Alexander Kolesnikov and Lucas Beyer},
year={2023},
eprint={2303.15343},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
通过这些介绍,希望大家对 SigLIP 项目有了更全面的了解!