【计算机视觉】CLIP:语言-图像表示之间的桥梁

CLIP是一个结合了图像编码器和文本编码器的模型,通过大规模的图像-文本对数据训练,能理解和关联图像与文本。它可以应用于图像分类、图像描述和文本到图像生成,如在DALLE2和midjourney中用于指导生成逼真图像。CLIP的强项在于其跨视觉和语言数据集的可迁移性,开启了人工智能在多模态理解上的新可能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

最近GPT4的火爆覆盖了一个新闻:midjourney v5发布,DALLE2,midjourney都可以从文本中生成图像,这种模型要求人工智能同时理解语言和图像数据。

传统的基于人工智能的模型很难同时理解语言和图像。因为自然语言处理和计算机视觉一直被视为两个独立的领域,这使得机器在两者之间进行有效沟通具有挑战性。

然而CLIP的多模态架构通过在相同的潜在空间中学习语言和视觉表现在二者之间建立了桥梁 。因此,CLIP允许我们利用其他架构,使用它的“语言-图像表示”进行下游任务。

CLIP是一个基于超大数据量的pair-wise 预训练模型但是在它的下游任务DalleE-2,Stable-Diffusion中,CLIP也是其中打通文本和图像的核心模块,比如开源的SD2就是使用了OpenCLIP来学习二者的表示,因此了解CLIP是深入了解后续扩散模型非常重要的一环,所以今天来主要介绍一下CLIP:

Contrastive Language-Image Pre-training (CLIP)利用自然语言描述图像的数据,训练了一个同时对图像和文本具有深度理解能力的神经网络模型。通过使用自然语言作为监督信号,CLIP 可以自然地跨越多个视觉和语言数据集,且具有较强的可迁移性。CLIP 可以与最先进的视觉和语言模型相媲美,且可以在多个视觉和语言任务上进行零样本学习。

二、架构

CLIP架构由两个主要组件组成:图像编码器和文本编码器。每个编码器都能够分别理解来自图像或文本的信息,并将这些信息嵌入到向量中。

CLIP的思想是在图像-文本对的大型数据集中训练这些编码器,并使嵌入变得相似。

在这里插入图片描述

“给定一批N(图像,文本)对,CLIP被训练来预测一批中N × N个可能的(图像,文本)对中哪一个是真实的实匹配。”它通过联合训练编码器来学习多模态嵌入空间,对N个图像和文本嵌入进行余弦相似度的计算,最大小化正确的匹配,最大化不正确的匹配。

由于CLIP是在一个大的预训练数据集上训练的,它可以很好地泛化许多下游任务。CLIP为我们提供了两个编码器,可以将文本和图像嵌入到相同的潜在空间中,所以我们可以有效地将其用于许多应用程序。

三、应用

以下是一些使用CLIP的下游任务示例:

3.1 图像分类

CLIP可用于图像分类任务,CLIP将图像与其对应的文本描述相关联的能力使其能够很好地泛化到新的类别,并与其他图像分类模型相比提高性能。

比如说HuggingFace提供了的这个简单的例子:

 from PIL import Image
 import requests
 
 from transformers import CLIPProcessor, CLIPModel
 
 model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
 processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
 
 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  # this is the image-text similarity score
 probs = logits_per_image.softmax(dim=1)  # we can take the softmax to ge

3.2 图像描述

CLIP可用于图像描述任务,利用它将图像与相应的文本描述相关联的能力,我们可以将CLIP与其他序列到序列模型结合起来,使用CLIP的嵌入来生成标题等。我们可以参考我们的CoCa(对比字幕),或者CLIPCap,它将CLIP与GPT模型结合起来生成字幕。

3.3 文本到图像

CLIP在文本到图像生成上下文中的一个有趣应用是潜在扩散模型。该模型使用CLIP作为一种方法来指导从文本描述中生成逼真的图像。

在潜在扩散模型中使用CLIP有几个优点。首先,它允许模型生成更忠实于文本描述的图像,因为CLIP可以就生成的图像和文本描述之间的语义相似性提供反馈。其次,它允许模型生成更多样化和更有创造性的图像,因为CLIP可以引导生成过程朝着不太常见但仍然合理的图像表示。

CLIP处理图像和文本输入的能力及其预训练过程使其成为各种领域中下游任务的多功能和强大的工具。

四、总结

CLIP 将语言和图像表示合二为一的能力为许多应用打开了大门。虽然我们人类可以感知不同类型的数据,包括文本、数据、音频等。但是过去基于 AI 的模型已经显示出它们只能理解一种模态的弱点。有了 CLIP,我们可以想象一个未来,人工智能模型可以像我们一样“理解”这个世界。

### CLIP模型在零样本学习中的应用 CLIP(Contrastive Language–Image Pre-training)是一种由OpenAI开发的多模态模型,它通过联合训练大量图像和对应的文本数据来实现跨模态的理解能力。这种预训练方法使得CLIP能够在未见过的任务上表现出强大的泛化性能,尤其是在零样本学习场景下。 #### 零样本学习的概念 零样本学习是指模型无需针对特定任务进行额外的微调或训练即可完成新任务的能力。对于CLIP而言,其核心优势在于能够利用自然语言作为桥梁,在测试阶段直接处理从未见过的数据分布[^1]。 #### 应用实例 以下是几个典型的CLIP模型应用于零样本学习的例子: 1. **分类任务** 假设有一个新的图像分类任务,其中类别标签并未用于训练过程。可以通过提供描述这些类别的简单文本提示(prompts),让CLIP计算输入图片与各类别之间的相似度得分并据此预测最可能的结果。例如,“a photo of a dog”可以用来表示狗这一类别。 2. **检索任务** 在视觉搜索领域,用户可以用自然语言查询指定想要查找的内容类型。“Find images that depict sunny beaches with palm trees.”这样的请求可以直接转化为向量空间内的匹配操作,从而快速定位符合条件的多媒体资源。 3. **生成对抗网络指导** 结合扩散模型或其他生成技术时,CLIP还可以充当评估器角色,帮助调整生成过程中产生的样例使其更贴近目标语义特征。这种方法已被证明能显著提升合成质量以及多样性[^2]。 4. **行为理解分析** 对于视频监控或者动作识别等领域来说,借助预先定义好的一系列事件模板(如“person crossing road at zebra crossing”),即使是在缺乏标注的情况下也有可能达到较高精度的行为解析效果。 #### 技术细节说明 为了支持上述功能特性,CLIP采用了对比损失函数设计思路,并引入了大规模互联网抓取素材库来进行端到端优化。具体来讲,就是同时编码来自不同感官通道的信息片段至统一维度下的嵌入表征形式;之后再依据余弦距离衡量两者间关联程度大小关系[^3]。 ```python import clip import torch device = "cuda" if torch.cuda.is_available() else "cpu" model, preprocess = clip.load("ViT-B/32", device=device) image_input = preprocess(image).unsqueeze(0).to(device) text_inputs = torch.cat([clip.tokenize(f"a photo of {c}") for c in classes]).to(device) with torch.no_grad(): image_features = model.encode_image(image_input) text_features = model.encode_text(text_inputs) similarity = (100.0 * image_features @ text_features.T).softmax(dim=-1) values, indices = similarity[0].topk(5) ``` 以上代码展示了如何加载预训练版本的CLIP模型并对单张照片执行基于关键词列表的选择判断逻辑流程演示。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值