🚀 太乙 - CLIP - RoBERTa - 102M - ViT - L 中文模型
太乙 - CLIP - RoBERTa - 102M - ViT - L 中文模型是首个开源的中文 CLIP 模型,在 1.23 亿图文对上进行预训练,文本端采用 RoBERTa - base,能够获得强大的视觉 - 语言表征。
- 主页:封神榜
- GitHub:[Fengshenbang - LM](https://github.com/IDEA - CCNL/Fengshenbang - LM)
🚀 快速开始
本模型可用于图像特征提取和图文匹配等多模态任务。以下是使用示例,你可以根据需求进行代码调整。
✨ 主要特性
- 开源中文 CLIP:首个开源的中文 CLIP 模型,填补了相关领域空白。
- 强大的预训练:在 1.23 亿图文对上进行预训练,能获得强大的视觉 - 语言表征。
- 高效训练策略:冻结视觉编码器,只微调语言编码器,实现快速且稳定的预训练。
📦 安装指南
文档未提供具体安装步骤,可参考相关依赖库(如 open_clip
、transformers
等)的官方文档进行安装。
💻 使用示例
基础用法
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))
📚 详细文档
模型分类
属性 |
详情 |
需求 |
特殊 |
任务 |
多模态 |
系列 |
太乙 |
模型 |
CLIP (RoBERTa) |
参数 |
102M |
额外 |
中文 |
模型信息
我们遵循 CLIP 的实验设置,以获得强大的视觉 - 语言表征。在训练中文版的 CLIP 时,我们使用 [chinese - roberta - wwm](https://huggingface.co/hfl/chinese - roberta - wwm - ext) 作为语言的编码器,并将 open_clip 中的 ViT - L - 14 应用于视觉的编码器。为了快速且稳定地进行预训练,我们冻结了视觉编码器并且只微调语言编码器。此外,我们将 [Noah - Wukong](https://wukong - dataset.github.io/wukong - dataset/) 数据集(100M)和 Zero 数据集(23M)用作预训练的数据集。在悟空数据集和 zero 数据集上预训练 24 轮,在 A100x32 上训练了 6 天。据我们所知,我们的 Taiyi - CLIP 是目前 Huggingface 社区中首个的开源中文 CLIP。
下游效果
零样本分类
模型 |
数据集 |
Top1 |
Top5 |
Taiyi - CLIP - RoBERTa - 102M - ViT - L - Chinese |
ImageNet1k - CN |
55.04% |
81.75% |
零样本图文检索
模型 |
数据集 |
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% |
🔧 技术细节
本模型在训练过程中,通过冻结视觉编码器并微调语言编码器,结合大规模的图文数据集进行预训练,从而获得强大的视觉 - 语言表征能力。具体技术细节可参考相关论文。
📄 许可证
本模型采用 Apache - 2.0 许可证。
📖 引用
如果您在您的工作中使用了我们的模型,可以引用我们的 论文:
@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}
}
也可以引用我们的 [网站](https://github.com/IDEA - CCNL/Fengshenbang - LM/):
@misc{Fengshenbang-LM,
title={Fengshenbang-LM},
author={IDEA-CCNL},
year={2021},
howpublished={\url{https://github.com/IDEA-CCNL/Fengshenbang-LM}},
}