🚀 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)来确保这个应用程序接近实时运行,但显然,图像搜索的质量在很大程度上取决于图像数据库的大小。
本项目在地下室用心打造🤫