🚀 模型卡片:CLIP
CLIP 模型由 OpenAI 的研究人员开发,用于研究计算机视觉任务中的鲁棒性因素,以及测试模型以零样本方式泛化到任意图像分类任务的能力。它并非用于通用模型部署,研究人员在部署类似 CLIP 的模型时,需先仔细研究其在特定场景中的能力。
🚀 快速开始
from PIL import Image
import requests
from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch16")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch16")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True)
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image # 这是图像 - 文本相似度得分
probs = logits_per_image.softmax(dim=1) # 我们可以使用 softmax 函数得到标签概率
✨ 主要特性
- 研究计算机视觉任务中的鲁棒性因素。
- 测试模型以零样本方式泛化到任意图像分类任务的能力。
📦 安装指南
文档未提及安装步骤,故跳过此章节。
💻 使用示例
基础用法
from PIL import Image
import requests
from transformers import CLIPProcessor, CLIPModel
model = CLIPModel.from_pretrained("openai/clip-vit-base-patch16")
processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch16")
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True)
outputs = model(**inputs)
logits_per_image = outputs.logits_per_image # 这是图像 - 文本相似度得分
probs = logits_per_image.softmax(dim=1) # 我们可以使用 softmax 函数得到标签概率
📚 详细文档
🔧 技术细节
模型日期
2021 年 1 月
模型类型
基础模型使用 ViT - B/16 Transformer 架构作为图像编码器,并使用掩码自注意力 Transformer 作为文本编码器。这些编码器通过对比损失进行训练,以最大化(图像,文本)对的相似度。
原始实现有两种变体:一种使用 ResNet 图像编码器,另一种使用视觉 Transformer。本仓库使用的是视觉 Transformer 变体。
数据
模型在公开可用的图像 - 文本数据上进行训练。这是通过抓取一些网站和使用常用的现有图像数据集(如 YFCC100M)相结合的方式完成的。大部分数据来自互联网抓取,这意味着数据更能代表与互联网连接最紧密的人群和社会,往往偏向于更发达的国家以及年轻的男性用户。
数据使命声明
构建此数据集的目标是测试计算机视觉任务中的鲁棒性和泛化能力。因此,重点是从不同的公开互联网数据源收集大量数据。数据收集大多采用非干预方式,但仅抓取有政策禁止过度暴力和成人图像的网站,并允许过滤此类内容。不打算将此数据集用作任何商业或部署模型的基础,也不会发布该数据集。
性能
已在广泛的计算机视觉数据集基准测试中评估了 CLIP 的性能,涵盖从 OCR 到纹理识别再到细粒度分类等各种任务。论文描述了模型在以下数据集上的性能:
- Food101
- CIFAR10
- CIFAR100
- Birdsnap
- SUN397
- Stanford Cars
- FGVC Aircraft
- VOC2007
- DTD
- Oxford - IIIT Pet 数据集
- Caltech101
- Flowers102
- MNIST
- SVHN
- IIIT5K
- Hateful Memes
- SST - 2
- UCF101
- Kinetics700
- Country211
- CLEVR Counting
- KITTI Distance
- STL - 10
- RareAct
- Flickr30
- MSCOCO
- ImageNet
- ImageNet - A
- ImageNet - R
- ImageNet Sketch
- ObjectNet (ImageNet Overlap)
- Youtube - BB
- ImageNet - Vid
局限性
CLIP 及其分析存在一些局限性。CLIP 目前在某些任务(如细粒度分类和对象计数)上存在困难。CLIP 在公平性和偏差方面也存在问题,论文和下一节会简要讨论。此外,测试 CLIP 的方法也有重要局限性,在许多情况下使用线性探针评估 CLIP 的性能,有证据表明线性探针可能低估模型性能。
偏差和公平性
发现 CLIP 的性能及其表现出的特定偏差在很大程度上取决于类别设计以及对包含和排除类别的选择。通过将 Fairface 中的人物图像分类到与犯罪相关和非人类动物类别中,测试了 CLIP 存在的某些诋毁风险,发现了基于种族和性别的显著差异。此外,这些差异可能会根据类别的构建方式而改变(详细内容见论文的更广泛影响部分)。
还使用 Fairface 数据集测试了 CLIP 在性别、种族和年龄分类上的性能(默认使用 Fairface 数据集中构建的种族类别),以评估不同人群的性能质量。发现性别分类在所有种族中的准确率 >96%,其中“中东”准确率最高(98.4%),“白人”准确率最低(96.5%)。此外,CLIP 在种族分类上的平均准确率约为 93%,在年龄分类上约为 63%。使用评估来测试性别、种族和年龄分类以及诋毁危害,只是为了评估模型在不同人群中的性能并发现潜在风险,而不是为了表明对这些任务的认可或热衷。
📄 许可证
文档未提及许可证信息,故跳过此章节。
💬 反馈
发送关于模型的问题或评论的地址
请使用 此 Google 表单