🚀 SigLIP (形状优化模型)
SigLIP 是一个多模态模型,它在 CLIP 的基础上改进了损失函数,能更好地处理图像 - 文本对,可用于零样本图像分类和图像 - 文本检索等任务。
🚀 快速开始
SigLIP 是在分辨率为 384x384 的 WebLi 上预训练的模型。它由 Zhai 等人在论文 Sigmoid Loss for Language Image Pre - Training 中提出,并首次在 此仓库 发布。
该模型采用 SoViT - 400m 架构,这是 Alabdulmohsin 等人在 Getting ViT in Shape: Scaling Laws for Compute - Optimal Model Design 中提出的形状优化版本。
免责声明:发布 SigLIP 的团队未为此模型编写模型卡片,此卡片由 Hugging Face 团队编写。
✨ 主要特性
SigLIP 是一种多模态模型,它基于 CLIP,但使用了更好的损失函数。Sigmoid 损失仅对图像 - 文本对进行操作,无需对成对相似度进行全局归一化。这使得在进一步扩大批量大小的同时,在小批量大小下也能有更好的表现。
一位作者对 SigLIP 的简要总结可在 此处 找到。
📦 安装指南
文档未提及安装步骤,可参考 Hugging Face 相关库的安装方式来使用此模型。
💻 使用示例
基础用法
以下是如何使用此模型进行零样本图像分类的示例:
from PIL import Image
import requests
from transformers import AutoProcessor, AutoModel
import torch
model = AutoModel.from_pretrained("google/siglip-so400m-patch14-384")
processor = AutoProcessor.from_pretrained("google/siglip-so400m-patch14-384")
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-384")
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 等人, 2023) 上进行预训练。
预处理
- 图像:图像被调整大小/重新缩放至相同分辨率(384x384),并在 RGB 通道上以均值 (0.5, 0.5, 0.5) 和标准差 (0.5, 0.5, 0.5) 进行归一化。
- 文本:文本被分词并填充到相同长度(64 个标记)。
计算资源
该模型在 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}
}
📄 许可证
本项目采用 Apache - 2.0 许可证。