🚀 太乙 - 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}},
}