Explore how CLIP bridges the gap between vision and language. Learn about zero-shot learning, contrastive image-text pairs, and using CLIP with [YOLO26](https://docs.ultralytics.com/models/yolo26/) for open-vocabulary detection.
CLIP(对比式语言-图像预训练)是由OpenAI开发的一项革命性神经网络架构,它弥合了视觉数据与自然语言之间的鸿沟。与传统计算机视觉(CV)系统需要为固定类别进行耗时费力的数据标注不同,CLIP通过训练数百万个从互联网收集的图像-文本对来理解图像。 这种方法使模型能够实现零样本学习,即仅通过阅读文本描述,就能识别训练过程中从未明确接触过的物体、概念或风格。通过将视觉与语言信息映射到共享特征空间,CLIP成为强大的基础模型,可广泛应用于各类下游任务,且无需进行大量特定任务的微调。
CLIP的核心机制涉及两个并行编码器:图像编码器(通常基于视觉Transformer ViT) 或ResNet)和文本编码器。 Transformer 类似于现代大型语言模型(LLMs)中使用的模型。通过称为对比学习的过程,系统被训练来预测批次中哪个文本片段与哪个图像匹配。
在训练过程中,模型通过优化参数,使匹配的图像-文本对的向量嵌入更趋近,同时将不匹配的对推离。这构建出一个多模态潜在空间,其中"金毛寻回犬"图像的数学表示与"一张狗的照片"的文本嵌入在空间上相邻。 通过计算这些向量间的余弦相似度,模型能量化图像与自然语言提示的契合程度,从而实现灵活的图像分类与检索。
将视觉与语言相连接的能力,使CLIP成为现代人工智能应用中的基石技术:
标准目标检测器仅限于其训练类别,而基于CLIP的特征可实现开放词汇检测。以下 Python 代码演示了如何使用
ultralytics 用于通过自定义文本提示detect 包:
from ultralytics import YOLOWorld
# Load a pre-trained YOLO-World model utilizing CLIP features
model = YOLOWorld("yolov8s-world.pt")
# Define custom classes using natural language text prompts
model.set_classes(["person wearing sunglasses", "red backpack"])
# Run inference on an image to detect the text-defined objects
results = model.predict("travelers.jpg")
# Display the results
results[0].show()
区分CLIP与其他常见AI范式有助于理解其独特价值: