🚀 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),但显然图像搜索的质量在很大程度上取决于图像数据库的大小。
本项目由❤️在地下室悄悄完成🤫