项目介绍:siglip-large-patch16-384
项目背景
SigLIP是“Sigmoid Loss for Language Image Pre-Training”这一论文中引入的一个大型多模态模型。这一项目由Zhai等人提出,最初在GitHub上的big_vision库中发布。这款模型是在WebLi数据集上以384x384的分辨率进行预训练的。
模型描述
SigLIP模型基于CLIP(一个多模态模型),并使用更优的损失函数:sigmoid损失。该损失函数仅在图像和文本对上操作,不需要进行全局的对比相似度归一化。这一优点允许模型在小批量和大批量训练下都能表现优异。
预期用途及限制
SigLIP可以用于多种任务,如零样本图像分类和图像文本检索。用户可以在模型中心查看关于不同任务的其他版本。
使用方法
用户可以通过简单的Python代码调用SigLIP模型来进行零样本图像分类。示例如下:
from PIL import Image
import requests
from transformers import AutoProcessor, AutoModel
import torch
model = AutoModel.from_pretrained("google/siglip-large-patch16-384")
processor = AutoProcessor.from_pretrained("google/siglip-large-patch16-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-large-patch16-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数据集的英语图像文本对上进行了预训练。
预处理
图像被缩放到相同的384x384分辨率,并通过RGB通道归一化处理(均值为0.5,标准差为0.5)。文本被分词并填充到相同长度(64个token)。
计算资源
SigLIP模型在16个TPU-v4芯片上进行了三天的训练。
评估结果
论文中提供了SigLIP与CLIP模型的对比评估结果,显示了SigLIP在相应任务中优异的表现。
引用信息
如果需要引用此项目,请使用以下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在提升多模态任务性能方面展现了其独特的价值。