🚀 CLIPfa:連接波斯語文本與圖像
CLIPfa是一個將波斯語文本與圖像相連接的項目。OpenAI發佈的CLIP(對比語言 - 圖像預訓練)模型能夠通過對比學習目標匹配文本和圖像的向量表示,從而建立兩者之間的聯繫。本項目在此基礎上,訓練了一個波斯語版本的CLIP模型,為波斯語的文本 - 圖像關聯任務提供支持。
🚀 快速開始
OpenAI發佈了《Learning Transferable Visual Models From Natural Language Supervision》論文,其中介紹了CLIP(對比語言 - 圖像預訓練)模型。該模型通過對比學習目標,匹配文本和圖像對應的向量表示,從而實現文本與圖像的連接。CLIP由兩個獨立的模型組成,即視覺編碼器和文本編碼器,它們在4億張圖像及其對應的描述上進行了訓練。
我們在包含40萬對(圖像,文本)的數據集上訓練了OpenAI的CLIP模型的波斯語(法爾西語)版本。我們使用[Farahani的RoBERTa - fa
](https://huggingface.co/m3hrdadfi/roberta - zwnj - wnli - mean - tokens)作為文本編碼器,並從原始CLIP中選取[ViT
](https://huggingface.co/openai/clip - vit - base - patch32)作為視覺編碼器,然後對它們進行微調。
需要注意的是,本次訓練僅使用了40萬對數據,而原始CLIP使用了400萬對數據。此外,訓練在592個由V100芯片驅動的GPU上進行了30天。
✨ 主要特性
- 基於OpenAI的CLIP模型,訓練出適用於波斯語的文本 - 圖像關聯模型。
- 可生成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
高級用法
以下是在25KUnsplash圖像
上的使用示例:
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在Huggingface🤗 spaces上的演示
我們使用了一小部分圖像(25K)來確保這個應用程序接近即時運行,但顯然,圖像搜索的質量在很大程度上取決於圖像數據庫的大小。
本項目在地下室用心打造🤫