模型:

IDEA-CCNL/Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese

英文

Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese

简介 简要介绍

首个开源的中文CLIP模型,1.23亿图文对上进行预训练的文本端RoBERTa-base

首个开源的中文CLIP模型,通过对1.23亿图文对进行预训练,采用RoBERTa-base作为文本编码器。

模型分类 模型分类法

需求 Demand 任务 Task 系列 Series 模型 Model 参数 Parameter 额外 Extra
特殊 Special 多模态 Multimodal 太乙 Taiyi CLIP (RoBERTa) 102M Chinese

模型信息 模型信息

我们遵循CLIP的实验设置,以获得强大的视觉-语言表征。在训练中文版的CLIP时,我们使用 chinese-roberta-wwm 作为语言的编码器,并将 open_clip 中的 ViT-L-14 应用于视觉的编码器。为了快速且稳定地进行预训练,我们冻结了视觉编码器并且只微调语言编码器。此外,我们将 Noah-Wukong 数据集(100M)和 Zero 数据集(23M)用作预训练的数据集。在悟空数据集和zero数据集上预训练24轮,在A100x32上训练了6天。据我们所知,我们的Taiyi-CLIP是目前Huggingface社区中首个的开源中文CLIP。

我们遵循CLIP的实验设置,以获得强大的视觉-语言表征。在训练中文版的CLIP时,我们使用 chinese-roberta-wwm 作为语言的编码器,并将 open_clip 中的 ViT-L-14 应用于视觉的编码器。为了快速且稳定地进行预训练,我们冻结了视觉编码器并且只微调语言编码器。此外,我们将 Noah-Wukong 数据集(100M)和 Zero 数据集(23M)用作预训练的数据集。在悟空数据集和zero数据集上预训练24轮,在A100x32上训练了6天。据我们所知,我们的Taiyi-CLIP是目前Huggingface社区中首个的开源中文CLIP。

下游效果性能

零样本分类

model dataset Top1 Top5
Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese ImageNet1k-CN 55.04% 81.75%

零样本文本-图像检索

model dataset Top1 Top5 Top10
Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese Flickr30k-CNA-test 58.32% 82.96% 89.40%
Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese COCO-CN-test 55.27% 81.10% 90.78%
Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese wukong50k 64.95% 91.77% 96.28%

使用法 使用方法

from PIL import Image
import requests
import open_clip
import torch
from transformers import BertModel, BertConfig, BertTokenizer
from transformers import CLIPProcessor, CLIPModel
import numpy as np

query_texts = ["一只猫", "一只狗",'两只猫', '两只老虎','一只老虎']  # 这里是输入文本的,可以随意替换。
# 加载Taiyi 中文 text encoder
text_tokenizer = BertTokenizer.from_pretrained("IDEA-CCNL/Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese")
text_encoder = BertModel.from_pretrained("IDEA-CCNL/Taiyi-CLIP-RoBERTa-102M-ViT-L-Chinese").eval()

url = "http://images.cocodataset.org/val2017/000000039769.jpg"  # 这里可以换成任意图片的url
# 加载openclip的image encoder
clip_model, _, processor = open_clip.create_model_and_transforms('ViT-L-14', pretrained='openai')
clip_model = clip_model.eval()


text = text_tokenizer(query_texts, return_tensors='pt', padding=True)['input_ids']
image = processor(Image.open(requests.get(url, stream=True).raw)).unsqueeze(0)
with torch.no_grad():
    image_features = clip_model.encode_image(image)
    text_features = text_encoder(text)[1]
    # 归一化
    image_features = image_features / image_features.norm(dim=1, keepdim=True)
    text_features = text_features / text_features.norm(dim=1, keepdim=True)
    # 计算余弦相似度 logit_scale是尺度系数
    logit_scale = clip_model.logit_scale.exp()
    logits_per_image =  logit_scale * image_features @ text_features.t()
    logits_per_text = logits_per_image.t()
    probs = logits_per_image.softmax(dim=-1).cpu().numpy()
    print(np.around(probs, 3))

引用 正文

如果您在您的工作中使用了我们的模型,可以引用我们的 论文

如果您在您的工作中使用了我们的模型,可以引用我们的 paper

@article{fengshenbang,
  author    = {Jiaxing Zhang and Ruyi Gan and Junjie Wang and Yuxiang Zhang and Lin Zhang and Ping Yang and Xinyu Gao and Ziwei Wu and Xiaoqun Dong and Junqing He and Jianheng Zhuo and Qi Yang and Yongfeng Huang and Xiayu Li and Yanghan Wu and Junyu Lu and Xinyu Zhu and Weifeng Chen and Ting Han and Kunhao Pan and Rui Wang and Hao Wang and Xiaojun Wu and Zhongshen Zeng and Chongpei Chen},
  title     = {Fengshenbang 1.0: Being the Foundation of Chinese Cognitive Intelligence},
  journal   = {CoRR},
  volume    = {abs/2209.02970},
  year      = {2022}
}

也可以引用我们的 网站

也可以引用我们的 website

@misc{Fengshenbang-LM,
  title={Fengshenbang-LM},
  author={IDEA-CCNL},
  year={2021},
  howpublished={\url{https://github.com/IDEA-CCNL/Fengshenbang-LM}},
}