尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【机器视觉】必会算法之:CLIP(对比语言-图像预训练)
机器视觉之CLIP1、引言2、CLIP(Contrastive Language-Image Pre-training)2.1 定义与解析2.2 核心原理2.2.1 双塔结构图像编码器 文本编码器2.2.2 对比学习把配对拉近、把非配对推远2.2.3 训练数据4 亿图文对2.2.4 零样本分类用文本当分类器2.3 实现方式 / 工作流程2.4 算法公式2.5 代码示例3、总结1、引言小屌丝鱼哥最近搞图像分类发现个怪事——我训的模型换个数据集就拉胯咋回事啊小鱼嘿这叫数据集偏见模型只认你喂的那几个类没见过的它一脸懵。小屌丝那有没有那种啥都能认一点的万能模型小鱼有而且思路特别骚——直接让图像和文字谈恋爱。这就是今天的主角CLIP。小屌丝图……和文谈恋爱鱼哥你别又整抽象。小鱼(⊙o⊙)… 用对比学习把图像和对应文字塞进同一个向量空间谁跟谁是一对模型自己学会。零样本分类就是从这儿来的。小屌丝懂了一个看图说话、一个听文认图最后他俩能在同一个坐标系里对上号。小鱼精辟。那咱开整。2、CLIP(Contrastive Language-Image Pre-training)2.1 定义与解析CLIPContrastive Language-Image Pre-training对比语言-图像预训练是 OpenAI 在 2021 年提出的多模态预训练模型。一句话理解它同时训练一个看图的编码器和一个读文的编码器让图片—文字配对样本在向量空间里挨得近、非配对样本离得远。训完之后图像和文本就共用同一个语义空间了。它最炸裂的地方在于——零样本Zero-shot。你不用再为某个新任务重新训练分类器直接拿文字描述当类别原型去比对图像就行。简单来说CLIP 把分类从背题库变成了查字典图像查到文字分类自然就出来了。2.2 核心原理2.2.1 双塔结构图像编码器 文本编码器CLIP 是两个独立的编码器双塔图像编码器Image Encoder可选ViTVision Transformer或ResNet把图像压成一个特征向量文本编码器Text Encoder一个Transformer把句子压成同维度的特征向量。关键点两塔输出维度一致如 512/640/768这样图像向量和文本向量才能直接算相似度。2.2.2 对比学习把配对拉近、把非配对推远训练数据是一堆(图像, 文本)对。在一个 batch 里真正配对的只有对角线上的 N 对其余 N²−N 对都是错的。CLIP 用对比损失训练让对角线正样本对的相似度尽可能高让非对角线负样本对的相似度尽可能低。这就逼着两个编码器把图文语义对齐到同一空间。2.2.3 训练数据4 亿图文对CLIP 在4 亿400M从互联网收集的(图像, 文本)对上训练。海量、弱标注、天然多样——这正是它能泛化到没见过的任务的底气。2.2.4 零样本分类用文本当分类器推理时比如要分狗/猫/车就把类别名套进模板“a photo of a dog” / “a photo of a cat” / “a photo of a car”用文本编码器编码这些句子再和图像向量算余弦相似度谁最像就是哪类。整个过程没有任何新增训练参数。2.3 实现方式 / 工作流程CLIP 的推理可以压缩成 4 步编码图像图像过 Image Encoder → 图像向量I II编码文本候选类别描述过 Text Encoder → 一组文本向量{ T 1 , T 2 , . . . } \{T_1,T_2,...\}{T1​,T2​,...}算相似度每个T k T_kTk​与I II做余弦相似度再乘温度系数归一化选类softmax 后取概率最大的类别。Image ──▶ Image Encoder ──▶ I │ Text (prompts) ──▶ Text Encoder ──▶ {Tk} ──▶ cosine(I, Tk) ──▶ softmax ──▶ 类别2.4 算法公式CLIP 的核心是对比损失InfoNCE 的对称形式。设 batch 内有 N 对图像特征I i I_iIi​、文本特征T i T_iTi​先各自做 L2 归一化并除以温度τ \tauτsim ( I i , T j ) I i ⊤ T j ∥ I i ∥ ∥ T j ∥ ⋅ τ \text{sim}(I_i, T_j) \frac{I_i^\top T_j}{\|I_i\|\|T_j\| \cdot \tau}sim(Ii​,Tj​)∥Ii​∥∥Tj​∥⋅τIi⊤​Tj​​图像→文本方向的损失让第i ii个图像匹配第i ii个文本L i → t − 1 N ∑ i 1 N log ⁡ exp ⁡ ( sim ( I i , T i ) ) ∑ j 1 N exp ⁡ ( sim ( I i , T j ) ) \mathcal{L}_{i\to t} -\frac{1}{N}\sum_{i1}^{N} \log \frac{\exp(\text{sim}(I_i, T_i))}{\sum_{j1}^{N}\exp(\text{sim}(I_i, T_j))}Li→t​−N1​i1∑N​log∑j1N​exp(sim(Ii​,Tj​))exp(sim(Ii​,Ti​))​总损失为双向对称平均L 1 2 ( L i → t L t → i ) \mathcal{L} \frac{1}{2}(\mathcal{L}_{i\to t} \mathcal{L}_{t\to i})L21​(Li→t​Lt→i​)。记住一句话正样本对相似度拉满负样本对压下去图文就对齐了。2.5 代码示例用 OpenAI 官方clip包跑一个零样本图像分类环境准备pipinstallgithttps://github.com/openai/CLIP.git pipinstalltorch torchvision pillow零样本分类importclipimporttorchfromPILimportImage# 1、加载模型可选 ViT-B/32、ViT-B/16、ViT-L/14 等devicecudaiftorch.cuda.is_available()elsecpumodel,preprocessclip.load(ViT-B/32,devicedevice)# 2、准备图像与候选文本imagepreprocess(Image.open(dog.jpg)).unsqueeze(0).to(device)labels[a photo of a dog,a photo of a cat,a photo of a car]textclip.tokenize(labels).to(device)# 3、前向得到图像-文本相似度已含温度缩放withtorch.no_grad():logits_per_image,_model(image,text)probslogits_per_image.softmax(dim-1).cpu().numpy()[0]# 4、输出概率forlabel,pinzip(labels,probs):print(f{label}:{p:.3f})# 例a photo of a dog: 0.912图像检索以文搜图# 把一批图像编码成向量用文本向量去检索最相近的图withtorch.no_grad():image_featuresmodel.encode_image(image_batch)# [B, D]text_featuremodel.encode_text(clip.tokenize([a sunset on the beach]).to(device))sims(image_features text_feature.T).softmax(dim0)top_idxsims.argmax().item()# 最匹配的图像索引小提示CLIP 是后续一大波多模态模型的地基——DALL·E、Stable Diffusion 的文本条件、BLIP、LLaVA 都建立在它的图文对齐思想之上。学会了 CLIP半个多模态圈子你就通了。典型应用场景零样本图像分类、以文搜图 / 以图搜文、图像检索、内容审核、作为下游生成模型扩散模型的文本条件编码器。3、总结今天这篇把CLIP对比语言-图像预训练啃了一遍是什么OpenAI 的多模态模型把图像和文本对齐到同一向量空间怎么搭图像编码器 文本编码器双塔对比损失训练强在哪4 亿图文对喂出来的天然零样本换个任务不用重训怎么用文本当分类器算余弦相似度 softmax几行代码就跑通往哪走它是 DALL·E、Stable Diffusion、LLaVA 等多模态模型的共同基石。到这儿你手里又多了一把万能钥匙。配合前面咱讲过的SAM分割一切图文分割识别的活儿基本都能拿下。我是小鱼CSDN 博客专家AIGC MVP专家阿里云 专家博主51CTO博客专家企业认证金牌面试官多个头部名企认证特邀讲师等名企签约职场面试培训、职场规划师多个国内主流技术社区的认证专家博主多款主流产品(阿里云等)评测一等奖获得者关注小鱼学习【机器视觉与目标检测】最新最全的领域知识。
RELATED

相关推荐

如何看待DeepSeek和OpenAI都开源了各自的harness?

如何看待DeepSeek和OpenAI都开源了各自的harness?

我觉得,这两家的 Harness 开源说明,大模型公司越来越重视模型之外的执行系统。尤其是 OpenAI。它经常被吐槽不够 Open,却愿意开放 Codex 背后的执行系统。要理解这个选择,得先看看我们使用 AI 的方式发生了什么变化。01从 Chatbot…

📅 2026/11/2 1:57:20
catia常用的几个功能

catia常用的几个功能

指令界面位置经常错乱,进入这个界面,点击恢复位置就可以 了装配设计中,如偏移、角度、相合等指令,一般都是插入的部件之间的关系,如果想把某个圆管设计成和xy平面平行,又和x轴平行,不能选中圆管…

📅 2026/11/2 1:57:20
《数值分析小白笔记03:高斯消元法与LU算法》

《数值分析小白笔记03:高斯消元法与LU算法》

这周的课程,老师给我们讲解了高斯消元法和LU分解法。听着这些名词,有点高大上,实则也是数学里面的线性代数知识。换了一个叫法。我从老师给的网址网盘里下载对应的教材文件。如有需要电子教材的可以评论区留言!上课的时候&#xf…

📅 2026/11/2 1:52:20
MORE NEWS

更多资讯

📰

shp文件地图显示工具:从数据体检、坐标纠偏到网页渲染

1. 一个 shp 文件其实是六个文件:先把数据底子摸清拿到一个压缩包,解压出来一堆同名不同后缀的文件,很多人第一反应是"怎么这么多"。这不是打包的人手抖,而是shp 文件地图显示工具这条链路里最常见的起点问题&#xff1…

📰

算法基础与核心特性解析:从概念到实践应用

1. 算法基础概念解析算法是计算机科学中最基础也最重要的概念之一。简单来说,算法就是解决问题的一系列明确指令。就像烹饪食谱一样,它详细说明了从原材料到成品的每一个步骤。但不同于普通食谱,算法必须满足几个关键特性:确定性&…

📰

Meta Muse 架构拆解:Agent Runtime、安全虚拟机与提示词注入防护

1. 从“回答问题”到“替你做事”:Meta Muse 到底在解决什么问题过去两年,大家用 AI 的方式基本没变过:打开一个对话框,敲一段提示词,等它吐出一段文字,然后自己复制、粘贴、改格式、发邮件、填表格。AI 像…

📰

Cesium Billboard全解析:Entity配置、穿地形排查与性能优化

做三维地球相关的前端项目,几乎绕不开 Cesium 这套 Entity API,而Billboard是所有实体类型里出场频率最高的一个——比Model轻、比Point好看、比Label更自由,几乎所有 POI 标注、设备点位、报警闪烁图标、车辆状态标识,最后落到屏…

📰

AI工程四语言协同:Python原型、Rust交付、TS契约、Julia计算

1. 从零开始构建AI工程能力:不是学框架,而是重建“AI系统思维”你有没有发现,现在打开招聘网站搜“AI工程师”,岗位要求里清一色写着“熟悉PyTorch/TensorFlow”“有LLM微调经验”“掌握LangChain/RAG流程”。但真正坐到工位上第一…

📰

C++格式化输出三套体系:printf、cout与std::format深度对比

1. 项目概述:为什么“C 占位符”突然成了高频学习关键词?最近在几个技术社区和初学者交流群中,频繁看到“C 占位符”被单独拎出来讨论——不是作为某本教材里的一个冷门小节,而是作为独立的学习主题被反复提问:“C里到…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬