🚀 CLIPfa:連接波斯語文本與圖像
CLIPfa是一個將波斯語文本與圖像相連接的項目。OpenAI發佈的CLIP模型可通過對比學習目標匹配文本和圖像的向量表示,從而實現文本與圖像的連接。本項目在此基礎上,訓練了OpenAI的CLIP模型的波斯語版本,為波斯語的文本 - 圖像關聯提供了支持。
🚀 快速開始
模型訓練背景
OpenAI發佈了論文《Learning Transferable Visual Models From Natural Language Supervision》,並提出了CLIP(Contrastive Language–Image Pre-training)模型。該模型由視覺編碼器和文本編碼器兩個獨立模型組成,在4億張圖像及對應字幕上進行訓練,旨在通過對比學習目標匹配文本和圖像的向量表示,以此連接文本和圖像。
本項目在40萬對(圖像,文本)數據集上訓練了OpenAI的CLIP模型的波斯語版本。使用Farahani's RoBERTa - fa
作為文本編碼器,從原始CLIP中選取ViT
作為視覺編碼器,並對它們進行微調。
需要注意的是,本次訓練僅使用了40萬對數據,而原始CLIP使用了400萬對數據。此外,訓練在592個由V100芯片驅動的GPU上進行了30天。
模型使用方法
兩個模型都會生成768維的向量。
基礎用法
from transformers import CLIPVisionModel, RobertaModel, AutoTokenizer, CLIPFeatureExtractor
vision_encoder = CLIPVisionModel.from_pretrained('SajjadAyoubi/clip-fa-vision')
preprocessor = CLIPFeatureExtractor.from_pretrained('SajjadAyoubi/clip-fa-vision')
text_encoder = RobertaModel.from_pretrained('SajjadAyoubi/clip-fa-text')
tokenizer = AutoTokenizer.from_pretrained('SajjadAyoubi/clip-fa-text')
text = 'something'
image = PIL.Image.open('my_favorite_image.jpg')
text_embedding = text_encoder(**tokenizer(text,
return_tensors='pt')).pooler_output
image_embedding = vision_encoder(**preprocessor(image,
return_tensors='pt')).pooler_output
text_embedding.shape == image_embedding.shape
演示示例
以下是CLIPfa在25KUnsplash images
上的一些用例。
安裝
使用以下命令安裝:
pip install -q git+https://github.com/sajjjadayobi/clipfa.git
代碼示例
from clipfa import CLIPDemo
demo = CLIPDemo(vision_encoder, text_encoder, tokenizer)
demo.compute_text_embeddings(['گاو' ,'اسب' ,'ماهی'])
demo.compute_image_embeddings(test_df.image_path.to_list())
在線演示
CLIPfa at Huggingface🤗 spaces
為了使應用接近即時運行,我們使用了一小部分圖像(25K),但顯然圖像搜索的質量在很大程度上取決於圖像數據庫的大小。
本項目由❤️在地下室悄悄完成🤫