Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

CLIP (Contrastive Language-Image Pre-training)

CLIP 是 OpenAI 的模型,它将图像和文本嵌入同一共享空间,因此可以用纯文本标签对图像进行分类。了解其训练方式和零样本工作原理。

CLIP(对比式语言-图像预训练)是 OpenAI开发的一种模型,能够学习将图像与其文本描述匹配起来。它由图像编码器和文本编码器组成,并通过训练让图像及其对应描述映射到同一嵌入空间中彼此接近的向量。CLIP 使用从互联网收集的 4 亿组图像-描述对进行训练;只提供文本类别、不提供这些类别的标注样本,它也能对图像进行分类,这种能力称为零样本学习。在其2021 年论文中,CLIP 最佳模型在 ImageNet上实现了 76.2% 的零样本 top-1 准确率,达到原始全监督 ResNet-50的水平,却完全没有使用 ResNet-50 训练所用的 128 万张标注图像。

CLIP 的训练方式#

CLIP 有两个编码器。图像编码器采用 ResNet 或 视觉 Transformer (ViT),文本编码器则是一个 12 层的 Transformer,基础版本有 6300 万个参数。线性投影会将每个编码器的输出映射到共享空间,并将每个向量归一化为单位长度。

训练时使用对比学习,每批包含 32,768 组图像-描述对。对于包含 N 组配对的批次,CLIP 会计算每张图像与每条描述之间的余弦相似度,得到一个 N×N 矩阵,其对角线对应正确配对。对每一行计算 softmax交叉熵损失,要求每张图像从 N 条描述中选出自己的描述;再对每一列计算第二个损失,要求每条描述选出对应图像。在 softmax 之前,会用一个可学习的温度参数缩放相似度。

由于描述是自由格式文本,CLIP 可以从网络内容描述的各种事物中学习,包括对象、场景、艺术风格、图像中的文字和动作,而不受固定类别列表的限制。

零样本分类#

要对图像进行分类,CLIP 会把每个候选标签嵌入为简短句子,例如“a photo of a dog”,再嵌入图像,并选择余弦相似度最高的标签。提示词的措辞很重要:论文报告称,仅使用模板 “A photo of a {label}.” 就让 ImageNet 准确率提高了 1.3%,对 80 个模板的文本嵌入取平均值又提升了 3.5%。下面的 Hugging Face Transformers流水线会将每个标签套入模板 “This is a photo of {}.”,并运行原始 ViT-B/32 模型:

from transformers import pipeline

# Load OpenAI's CLIP ViT-B/32 for zero-shot image classification
classifier = pipeline("zero-shot-image-classification", model="openai/clip-vit-base-patch32")

# The classes are free-form text, chosen at inference time
labels = ["a city bus", "a tram", "a delivery truck", "a bicycle"]
predictions = classifier("https://ultralytics.com/images/bus.jpg", candidate_labels=labels)

# Scores are a softmax over the image's similarity to each caption
for prediction in predictions:
    print(f"{prediction['label']}: {prediction['score']:.3f}")

它会输出 a city bus: 0.657、a tram: 0.341、a delivery truck: 0.001 和 a bicycle: 0.000。有轨电车这种大型客运车辆几乎占据了剩余的全部概率;要使用新的标签集,只需提供一份新的字符串列表。

实际应用#

  • 语义搜索:图像集合只需嵌入一次,然后存入向量数据库。搜索时,将“木地板上的红色运动鞋”这类文本查询嵌入并与图像匹配,就能按内容查找图像,无需手动添加标签。
  • 文生图生成:Stable Diffusion 1.x 使用 CLIP ViT-L/14 的文本嵌入来控制图像生成器;CLIP 相似度也广泛用于评估生成图像与提示词的吻合程度。
  • 开放词汇检测:Tencent AI Lab 开发的 YOLO-World模型已集成到 Ultralytics 软件包中;它们使用 CLIP 的 ViT-B/32 文本编码器对传入 set_classes 的类别名称进行编码,因此训练一次后的检测器就能根据名称查找“red backpack”或“forklift”。Google 的 OWLv2基于 CLIP 预训练的图像和文本编码器构建,而 VLM Leaderboard会在真实世界检测数据集上,将 OWLv2 与其他开放词汇检测器和 VLM 进行比较。
  • VLM 的视觉编码器:许多视觉语言模型以预训练的 CLIP 图像编码器为基础。例如,LLaVA 会将 CLIP ViT-L/14 特征输入语言模型。
  • 数据集筛选:LAION-5B等大型开放式图像-文本数据集只保留 CLIP 图文相似度超过阈值的网络配对,从而剔除与图像内容不符的描述。
  • 监督学习分类器:标准分类器会为每个训练类别设置一个输出,无法为从未见过的类别打分。CLIP 的“分类器”是一组文本嵌入,因此标签变化时它也会随之改变。
  • SigLIP:Google 的这一变体用 sigmoid 损失取代 CLIP 针对整个批次的 softmax,对每组图文配对分别评分,因此占用的内存更少,在小批次中效果更好。
  • 自监督对比学习:SimCLR 等方法会对比同一图像经过增强后的两个视图,并仅从图像中学习。CLIP 则在两种模态之间进行对比,将图像特征与文字联系起来。
  • 生成式 VLM:CLIP 会评估图像-文本相似度,但无法撰写描述或回答问题。生成式模型会将语言模型接入图像编码器,而图像编码器通常就是 CLIP 自身的编码器。

局限性#

CLIP 在细粒度类别(例如飞机或汽车型号)、对象计数以及距离估算等抽象任务上的零样本准确率较低。它还会学习网络图像描述中的偏差。由于 CLIP 学会了读取图像中的文字,因此也可能被文字误导:在 OpenAI 的多模态神经元研究中,一颗贴有手写“iPod”标签的苹果被分类为 iPod。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来