AI日记:多模态CLIP

发布时间:2026/5/26 18:57:03

AI日记:多模态CLIP 从2021年OpenAI发布至今CLIP开创的对比学习范式已经深刻影响了整个多模态领域。直到2025年底顶会ICCV、AAAI还在不断接收CLIP相关的创新工作足见其生命力。今天我们从定义、原理、架构、推理到最新进展一次性把CLIP讲透。##学习AI求职AI使用幕语幕语AI一、CLIP 是什么1.1 基本定义CLIPContrastive Language–Image Pre-training对比语言-图像预训练是 OpenAI 在 2021 年发布的革命性多模态模型。核心目标让 AI 能够理解图像和自然语言之间的语义关联实现真正的图文统一表示学习。1.2 革命性突破在 CLIP 出现之前计算机视觉和自然语言处理是两个完全割裂的领域传统CV模型只能识别预定义的固定类别如 ImageNet 的 1000 类传统NLP模型只能处理文本无法理解图像内容CLIP 的出现彻底改变了这一局面突破点说明✅打破模态壁垒首次实现图像和文本的统一语义空间✅开放世界识别支持任意自然语言描述的图像理解✅零样本迁移无需微调就能执行新任务✅数据效率革命利用互联网海量弱标注数据无需人工标注二、CLIP 的核心思想2.1 对比学习范式传统监督学习是对每个图像标注固定类别直接训练分类器。CLIP 不一样——CLIP不直接学习分类它学习的是「哪些图文是配对的哪些不是」。通过在海量图文对上进行对比学习让模型学到通用的语义关联知识。2.2 共享语义空间CLIP 的核心创新是构建了一个共享的多模态向量空间图像编码器 文本编码器 ↓ ↓ [图像特征向量] ↔ [文本特征向量] ↖_____________↗ 共享语义空间在这个空间中语义相似的图像和文本 → 向量距离很近语义无关的图像和文本 → 向量距离很远这就是为什么CLIP能做到以图搜文和以文搜图。三、CLIP 的技术架构3.1 双编码器结构Dual EncoderCLIP采用非常简洁的双塔结构┌─────────────────┐ 输入图像 → │ 图像编码器 │ → 图像特征向量 (512维) │ (ViT/ResNet) │ └─────────────────┘ ↓ 共享语义空间 ← 余弦相似度计算 ↑ ┌─────────────────┐ 输入文本 → │ 文本编码器 │ → 文本特征向量 (512维) │ (Transformer) │ └─────────────────┘编码器选择图像编码器Vision Transformer (ViT-B/32, ViT-L/14 等) / ResNet-50/101 (带注意力池化)文本编码器12层 Transformer最大序列长度77 tokens使用BPE分词器3.2 训练过程详解数据准备数据规模4亿个图像-文本对数据来源互联网公开数据网页图片 alt文本/标题数据特点自然形成的弱监督信号无需人工标注训练流程我整理成伪代码方便理解def clip_training_step(batch_images, batch_texts, temperature0.07): # 1. 分别编码图像和文本 image_features image_encoder(batch_images) # [batch_size, hidden_dim] text_features text_encoder(batch_texts) # [batch_size, hidden_dim] # 2. L2归一化使点积等价于余弦相似度 image_features normalize(image_features, dim-1) text_features normalize(text_features, dim-1) # 3. 计算相似度矩阵 logits image_features text_features.T / temperature # [B, B] # 4. 对比损失InfoNCE labels torch.arange(batch_size) # 对角线为正样本 loss_i cross_entropy(logits, labels) # 图像→文本方向 loss_t cross_entropy(logits.T, labels) # 文本→图像方向 return (loss_i loss_t) / 2关键技术细节温度参数 (temperature)控制相似度分布的尖锐程度通常在 0.01-0.1 之间对称损失同时优化图像→文本和文本→图像两个方向提升对齐效果大批量训练使用 32K 的 batch size 提升负样本质量对比学习效果更好四、CLIP 的推理能力4.1 零样本分类Zero-shot Classification这是 CLIP 最引人注目的能力无需任何微调直接用自然语言进行图像分类。工作流程def zero_shot_classify(image, class_names, clip_model): # 1. 生成候选文本提示 texts [fa photo of a {name} for name in class_names] # 2. 编码图像和文本 image_feat clip_model.encode_image(image) # [1, D] text_feats clip_model.encode_text(texts) # [N, D] # 3. 计算相似度并选择最高分 similarities (image_feat text_feats.T).softmax(dim-1) predicted_class class_names[similarities.argmax()] return predicted_class实际效果ImageNet 零样本准确率~76%接近有监督 ResNet-50 的 76.5%跨数据集泛化在未见过的数据集上表现优异开放词汇分类可以识别训练时未见过的类别4.2 图文检索Image-Text Retrieval以文搜图输入一只戴着墨镜的柯基犬输出最匹配的图片以图搜文输入一张图片输出最匹配的文字描述应用场景电商平台商品搜索社交媒体内容检索企业数字资产管理##学习AI求职AI使用幕语幕语AI

相关新闻