许可证:cc-by-4.0
语言:
- 日语
任务标签:特征提取
标签:
- clip
- japanese-clip
recruit-jp/japanese-clip-vit-b-32-roberta-base
概述
更多细节请参阅我们的技术博客文章:
模型详情
该模型是一个日语版本的CLIP。使用此模型,您可以将日语文本和图像映射到相同的嵌入空间。
该模型可用于零样本图像分类、文本-图像检索、图像特征提取等任务。
该模型的图像编码器基于laion/CLIP-ViT-B-32-laion2B-s34B-b79K,文本编码器基于rinna/japanese-roberta-base。
该模型在LAION2B-multi数据集的日语子集上训练,专为日语优化。
使用方法
- 安装依赖包
pip install pillow requests transformers torch torchvision sentencepiece
- 运行以下代码
import io
import requests
import torch
import torchvision
from PIL import Image
from transformers import AutoTokenizer, AutoModel
model_name = "recruit-jp/japanese-clip-vit-b-32-roberta-base"
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(model_name, trust_remote_code=True).to(device)
def _convert_to_rgb(image):
return image.convert('RGB')
preprocess = torchvision.transforms.Compose([
torchvision.transforms.Resize(size=224, interpolation=torchvision.transforms.InterpolationMode.BICUBIC, max_size=None),
torchvision.transforms.CenterCrop(size=(224, 224)),
_convert_to_rgb,
torchvision.transforms.ToTensor(),
torchvision.transforms.Normalize(mean=[0.48145466, 0.4578275, 0.40821073], std=[0.26862954, 0.26130258, 0.27577711])
])
def tokenize(tokenizer, texts):
texts = ["[CLS]" + text for text in texts]
encodings = [
tokenizer(text, max_length=77, padding="max_length", truncation=True, add_special_tokens=False)["input_ids"]
for text in texts
]
return torch.LongTensor(encodings)
image = Image.open(
io.BytesIO(
requests.get(
'https://images.pexels.com/photos/2253275/pexels-photo-2253275.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260'
).content
)
)
image = preprocess(image).unsqueeze(0).to(device)
text = tokenize(tokenizer, texts=["犬", "猫", "象"]).to(device)
with torch.inference_mode():
image_features = model.get_image_features(image)
image_features /= image_features.norm(dim=-1, keepdim=True)
text_features = model.get_text_features(input_ids=text)
text_features /= text_features.norm(dim=-1, keepdim=True)
probs = image_features @ text_features.T
print("标签概率:", probs.cpu().numpy()[0])
模型性能
我们在以下数据集上进行了模型性能评估。
由于ImageNet V2和Food101是英语语境的数据集,我们在评估前将类别标签翻译为日语。
我们还评估了以下模型在相同数据集上的表现:
laion/CLIP-ViT-H-14-frozen-xlm-roberta-large-laion5B-s13B-b90k、laion/CLIP-ViT-B-32-xlm-roberta-base-laion5B-s13B-b90k、rinna/japanese-clip-vit-b-16和stabilityai/japanese-stable-clip-vit-l-16。
注意:stabilityai/japanese-stable-clip-vit-l-16是在STAIR Captions数据集上训练的,因此未在STAIR Captions上评估该模型。
模型 |
ImageNet V2 |
Food101 |
ETLC-平假名 |
ETLC-片假名 |
STAIR Captions 图像到文本 |
STAIR Captions 文本到图像 |
jafood101 |
jaflower30 |
jafacility20 |
jalandmark10 |
laion/CLIP-ViT-H-14-frozen-xlm-roberta-large-laion5B-s13B-b90k |
0.471 |
0.742 |
0.055 |
0.029 |
0.462 |
0.223 |
0.709 |
0.869 |
0.820 |
0.899 |
laion/CLIP-ViT-B-32-xlm-roberta-base-laion5B-s13B-b90k |
0.326 |
0.508 |
0.162 |
0.061 |
0.372 |
0.169 |
0.609 |
0.709 |
0.749 |
0.846 |
rinna/japanese-clip-vit-b-16 |
0.435 |
0.491 |
0.014 |
0.024 |
0.089 |
0.034 |
0.308 |
0.592 |
0.406 |
0.656 |
stabilityai/japanese-stable-clip-vit-l-16 |
0.481 |
0.460 |
0.013 |
0.023 |
- |
- |
0.413 |
0.689 |
0.677 |
0.752 |
recruit-jp/japanese-clip-vit-b-32-roberta-base |
0.175 |
0.301 |
0.030 |
0.038 |
0.191 |
0.102 |
0.524 |
0.592 |
0.676 |
0.797 |
训练数据集
该模型在LAION2B-multi数据集的1.28亿日语图像-文本对上训练。
免责声明
株式会社Recruit对于使用本模型所产生的任何结果,不保证其准确性、实用性、可靠性或合法性,也不承担任何保证或补偿责任。此外,对于因使用本模型而导致的用户损失或与第三方之间的纠纷,株式会社Recruit概不负责。