什么是OpenAI的CLIP?
CLIP,全称为Contrastive Language-Image Pre-training(对比语言-图像预训练),是OpenAI开发的一个神经网络。它旨在从自然语言中理解视觉概念。CLIP并非在带有特定标签(如“猫”或“狗”)的精选数据集上进行训练,而是从互联网上抓取的大量、嘈杂的图像及其对应的文本标题中学习。这种独特的训练方法使其能够执行各种图像分类任务,而无需针对这些任务进行显式训练,这种能力被称为“零样本”(zero-shot)学习。
主要特点
- 零样本图像分类: 使用自然语言提示即时定义类别来分类图像,无需任何模型再训练。
- 图文相似度: 给定一张图片和一组文本描述,CLIP可以判断哪个文本最能描述该图片。
- 鲁棒的视觉表示: 该模型学习到一种灵活而鲁棒的视觉概念理解,其泛化能力通常优于在特定数据集(如ImageNet)上训练的传统模型。
- 视觉的自然语言界面: 它弥合了视觉和语言之间的鸿沟,允许用户使用日常语言与图像进行交互和搜索。
应用场景
- 内容审核: 自动标记与不当或敏感内容文本描述相匹配的图像。
- 增强图像搜索: 构建搜索引擎,允许用户使用复杂的描述性句子而不是简单的标签来查找图像。
- 指导生成模型: CLIP评估图像与提示匹配程度的能力是早期文本到图像革命的关键组成部分,著名地与VQGAN等模型一起使用。
- 无障碍工具: 创建可以为视障用户描述图像内容的应用程序。
入门指南
这是一个简单的“Hello World”示例,使用transformers库来展示CLIP如何将图像与文本提示进行匹配。
首先,请确保您已安装必要的库: ```bash pip install transformers torch Pillow requests
然后,您可以运行以下Python代码: ```python from PIL import Image import requests from transformers import CLIPProcessor, CLIPModel
从Hugging Face加载预训练模型和处理器
model = CLIPModel.from_pretrained(“openai/clip-vit-base-patch32”) processor = CLIPProcessor.from_pretrained(“openai/clip-vit-base-patch32”)
用于测试的图片URL
url = “http://images.cocodataset.org/val2017/000000039769.jpg” image = Image.open(requests.get(url, stream=True).raw)
准备文本提示和图像
模型将判断哪个提示更好地描述了图像
inputs = processor( text=[“一张猫的照片”, “一张狗的照片”], images=image, return_tensors=”pt”, padding=True )
将输入传递给模型
outputs = model(**inputs)
logits_per_image代表图像与每个文本提示之间的相似度得分
logits_per_image = outputs.logits_per_image
应用softmax以获得概率
probs = logits_per_image.softmax(dim=1)
print(f”概率: {probs.tolist()[0]}”)
输出将显示“一张猫的照片”具有更高的概率
定价
OpenAI的CLIP模型是开源的,并在宽松的MIT许可证下发布。模型权重和源代码可免费用于研究和集成到应用程序中。虽然模型本身是免费的,但通过第三方API或在云平台上使用它可能会产生费用。