原文:
huggingface.co/docs/transformers
Chinese-CLIP
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/chinese_clip
概述
中文 CLIP 模型是由 An Yang、Junshu Pan、Junyang Lin、Rui Men、Yichang Zhang、Jingren Zhou、Chang Zhou 在中文 CLIP:中文对比视觉-语言预训练中提出的。中文 CLIP 是在大规模中文图像-文本对数据集上实现的 CLIP(Radford 等,2021)的一个实现。它能够执行跨模态检索,并且还可以作为视觉任务的视觉骨干,如零样本图像分类、开放域目标检测等。原始的中文 CLIP 代码在此链接上发布。
论文摘要如下:
CLIP(Radford 等,2021)的巨大成功推动了对视觉-语言对比学习的研究和应用。在这项工作中,我们构建了一个大规模的中文图像-文本对数据集,其中大部分数据来自公开可用的数据集,我们在新数据集上对中文 CLIP 模型进行了预训练。我们开发了 5 个不同大小的中文 CLIP 模型,参数范围从 7700 万到 9.58 亿。此外,我们提出了一种两阶段预训练方法,其中模型首先在图像编码器冻结的情况下进行训练,然后在优化所有参数的情况下进行训练,以实现增强的模型性能。我们的全面实验表明,中文 CLIP 在 MUGE、Flickr30K-CN 和 COCO-CN 的零样本学习和微调设置中可以实现最先进的性能,并且在 ELEVATER 基准测试(Li 等,2022)的评估中,它能够在零样本图像分类方面实现竞争性能。我们的代码、预训练模型和演示已发布。
中文 CLIP 模型由OFA-Sys贡献。
用法示例
下面的代码片段显示了如何计算图像和文本特征以及相似性:
代码语言:javascript复制>>> from PIL import Image
>>> import requests
>>> from transformers import ChineseCLIPProcessor, ChineseCLIPModel
>>> model = ChineseCLIPModel.from_pretrained("OFA-Sys/chinese-clip-vit-base-patch16")
>>> processor = ChineseCLIPProcessor.from_pretrained("OFA-Sys/chinese-clip-vit-base-patch16")
>>> url = "https://img.yuanmabao.com/zijie/pic/2024/06/26/o3xkfbgoenu.jpeg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> # Squirtle, Bulbasaur, Charmander, Pikachu in English
>>> texts = ["杰尼龟", "妙蛙种子", "小火龙", "皮卡丘"]
>>> # compute image feature
>>> inputs = processor(images=image, return_tensors="pt")
>>> image_features = model.get_image_features(**inputs)
>>> image_features = image_features / image_features.norm(p=2, dim=-1, keepdim=True) # normalize
>>> # compute text features
>>> inputs = processor(text=texts, padding=True, return_tensors="pt")
>>> text_features = model.get_text_features(**inputs)
>>> text_features = text_features / text_features.norm(p=2, dim=-1, keepdim=True) # normalize
>>> # compute image-text similarity scores
>>> inputs = processor(text=texts, images=image, return_tensors="pt", padding=True)
>>> outputs = model(**inputs)
>>> logits_per_image = outputs.logits_per_image # this is the image-text similarity score
>>> probs = logits_per_image.softmax(dim=1) # probs: [[1.2686e-03, 5.4499e-02, 6.7968e-04, 9.4355e-01]]
目前,在