当前位置: 首页 > article >正文

【CLIP论文阅读】:基于自然语言监督的通用视觉预训练范式

论文信息标题Learning Transferable Visual Models From Natural Language Supervision会议ICML 2021单位OpenAI代码https://github.com/OpenAI/CLIP论文https://arxiv.org/pdf/2103.00020.pdf一、引言传统CV的“题库思维”困局想象一下你花了3个月标注了1000类猫的图像训练出一个准确率99%的猫品种分类器结果老板突然说“再加100类狗”你是不是想原地辞职这就是传统计算机视觉CV的核心痛点——模型只能识别训练时见过的固定类别换个任务就得重新标注、重新训练。传统CV模型就像只会背题库的学生它们在ImageNet这张“1000题大试卷”上考了满分但遇到试卷外的题目比如识别“一只戴着墨镜的柯基在冲浪”就直接懵了。它们学习的不是“什么是狗”这个语义概念而是“ImageNet里狗的像素长什么样”这种虚假相关性。有没有一种模型能像人类一样通过看文字描述就能学会识别新东西2021年OpenAI提出的CLIPContrastive Language-Image Pre-training对比语言-图像预训练给出了答案。它用4亿对互联网上的图文数据训练实现了零样本迁移通俗解释训练时从没见过某个任务的任何样本直接就能做这个任务在30多个CV任务上吊打传统监督模型彻底改变了CV的发展方向。二、CLIP的核心思想让图像和文字“说同一种语言”CLIP的思路简单到离谱既然人类能通过文字描述理解图像那为什么不让模型也这么做它的核心目标是学习一个共同的嵌入空间让语义相似的图像和文本在这个空间里离得近语义不同的离得远。整个过程分为三步如图1所示图1 CLIP整体工作流程来源论文Figure 1对比预训练输入一批图文对让模型学会判断哪张图配哪句话生成零样本分类器把目标类别的名称转成文本比如“一张猫的照片”用文本编码器生成对应的嵌入向量这些向量就是分类器的权重零样本预测把待分类图像输入图像编码器得到嵌入向量和所有文本嵌入计算相似度相似度最高的就是预测类别这个设计有多巧妙传统模型的分类器是固定的1000类就是1000个权重而CLIP的分类器是用自然语言动态生成的。你想识别什么只要写一句话就行完全不需要重新训练模型。三、模型架构与核心公式详解3.1 双塔架构CLIP采用经典的双塔架构通俗解释两个独立的编码器分别处理图像和文本最后把它们的输出映射到同一个空间图像编码器可以是ResNet或者Vision TransformerViT负责把图像转成固定长度的特征向量文本编码器基于Transformer的语言模型负责把文本转成同样长度的特征向量3.2 核心对比损失公式CLIP的灵魂是对称交叉熵损失它让正确的图文对相似度最大化错误的对相似度最小化。公式如下L 1 2 ( L i L t ) \mathcal{L} \frac{1}{2} \left( \mathcal{L}_i \mathcal{L}_t \right)L21​(Li​Lt​)其中L i \mathcal{L}_iLi​图像到文本的交叉熵损失给定图像预测对应的文本L t \mathcal{L}_tLt​文本到图像的交叉熵损失给定文本预测对应的图像单个方向的损失计算如下L i − 1 N ∑ i 1 N log ⁡ exp ⁡ ( I i ⋅ T i τ ) ∑ j 1 N exp ⁡ ( I i ⋅ T j τ ) \mathcal{L}_i -\frac{1}{N} \sum_{i1}^N \log \frac{\exp \left( \frac{I_i \cdot T_i}{\tau} \right)}{\sum_{j1}^N \exp \left( \frac{I_i \cdot T_j}{\tau} \right)}Li​−N1​i1∑N​log∑j1N​exp(τIi​⋅Tj​​)exp(τIi​⋅Ti​​)​公式符号全解释N NN一个批次batch里的图文对数量I i I_iIi​第i ii张图像经过编码器和线性投影后的归一化嵌入向量T i T_iTi​第i ii段文本经过编码器和线性投影后的归一化嵌入向量I i ⋅ T i I_i \cdot T_iIi​⋅Ti​两个向量的点积等价于余弦相似度因为已经归一化τ \tauτ可学习的温度参数通俗解释控制相似度分布的“尖锐程度”τ \tauτ越小模型越关注最相似的负样本训练越严格分子正确图文对的相似度分母第i ii张图像和所有N NN个文本的相似度之和通俗理解这个损失就像一个配对游戏。对于每张图像模型要从N NN个文本里找出它的“真命天子”。损失值越小说明模型找对的概率越高。对称损失意味着不仅要“图找文”还要“文找图”双向监督让模型学得更稳。四、关键技术细节为什么CLIP能成4.1 超大高质量数据集WITCLIP的成功首先归功于4亿对高质量图文数据作者把它命名为WITWebImageText。构建方法很聪明收集维基百科中出现次数≥100次的50万个单词作为基础查询词用这些查询词在互联网上搜索图文对每个查询词最多保留2万对最终得到4亿对数据总词量和训练GPT-2的WebText数据集相当为什么不用现成的数据集论文里对比了YFCC100M1亿张图但过滤后只剩1500万对高质量数据而且标注稀疏。WIT的规模是它的27倍覆盖了更广泛的视觉概念。4.2 对比学习比生成式学习效率高4倍作者一开始尝试了生成式目标让模型根据图像生成文本但发现效率极低。如图2所示图2 不同预训练目标的零样本效率对比来源论文Figure 2基于Transformer的生成式模型学习速度最慢比词袋模型慢3倍词袋预测模型比生成式快3倍CLIP的对比学习模型比词袋模型再快4倍总共快12倍原因分析生成式任务要求模型预测文本的每个单词难度极大而对比任务只需要判断“这张图和这句话配不配”是一个简单的二分类问题模型能更快学到核心的语义对齐关系。4.3 模型缩放越大越强CLIP训练了8个不同大小的模型从最小的ResNet-50到最大的ViT-L/14336px。作者发现零样本性能和计算量呈平滑的对数线性关系——计算量每翻一倍性能就稳定提升。这和GPT系列的缩放规律完全一致证明了自然语言监督的可扩展性。五、震撼的实验结果零样本吊打传统模型5.1 里程碑式的零样本ImageNet准确率最震撼的结果来自ImageNet零样本分类。之前最好的零样本模型Visual N-Grams只能达到11.5%的准确率而CLIP直接干到了76.2%和原始ResNet-50的全监督准确率持平模型aYahooImageNetSUNVisual N-Grams72.411.523.0CLIP98.476.258.5表1 CLIP与Visual N-Grams的零样本准确率对比来源论文Table 1这意味着什么CLIP不需要用ImageNet的128万张标注图像训练只需要用自然语言描述“一张{类别}的照片”就能达到和全监督模型一样的效果。这彻底打破了“CV必须依赖大规模标注数据”的铁律。5.2 27个数据集的全面对比作者在27个不同的CV任务上测试了CLIP包括OCR、动作识别、细粒度分类、地理定位等。结果如图3所示图3 零样本CLIP与ResNet50线性探针在27个数据集的性能对比来源论文Figure 5亮点分析✅CLIP赢了16个数据集在OCRSST2、Hateful Memes、动作识别Kinetics700、UCF101、细粒度汽车分类Stanford Cars等任务上大幅领先✅STL-10数据集达到99.3%准确率创造了新的SOTA而且是零样本❌CLIP输了11个数据集在计数CLEVRCounts、卫星图像EuroSAT、RESISC45、医学图像PatchCamelyon、交通标志GTSRB等任务上表现较差有趣的失败案例CLIP在MNIST手写数字数据集上只有88%的准确率甚至不如直接在原始像素上训练的逻辑回归92.5%。原因很简单WIT数据集里几乎没有手写数字的图像CLIP从来没见过这种“奇怪的数字写法”。这说明CLIP的泛化能力不是万能的它仍然依赖训练数据的分布。5.3 零样本≈4-shot监督学习作者还对比了零样本CLIP和在CLIP特征上训练的few-shot线性分类器。结果发现零样本CLIP的性能相当于4-shot线性分类器而且接近16-shot的最佳结果。这意味着用自然语言告诉模型“这是什么”比给它看4张标注图像还要有效。人类的语言果然是最高效的知识传递方式六、鲁棒性分布偏移下的王者传统CV模型有一个致命弱点对分布偏移极其敏感。比如把ImageNet里的狗换成卡通狗、素描狗模型的准确率就会暴跌。而CLIP在这方面表现惊人如图4所示图4 零样本CLIP与ResNet101在自然分布偏移下的性能对比来源论文Figure 13ResNet101在ImageNet上准确率76.2%但在ImageNet-R艺术风格的ImageNet上只有37.7%暴跌38.5%零样本CLIP在ImageNet上准确率76.2%在ImageNet-R上仍然有88.9%反而提升了12.7%原因分析传统模型学习的是ImageNet里的虚假相关性比如“狗总是出现在草坪上”而CLIP学习的是语义概念本身。不管狗是照片、卡通还是素描只要它符合“狗”这个语义概念CLIP就能识别出来。七、局限性与社会影响7.1 技术局限性CLIP虽然强大但也有明显的短板抽象任务能力弱比如计数、空间推理“球在盒子左边”细粒度分类差区分不同品种的花、飞机型号等分布外数据泛化差比如MNIST手写数字、医学图像需要大量计算最大的ViT-L/14模型需要256张V100训练12天7.2 社会影响CLIP是一把双刃剑正面影响降低了CV的门槛让普通人不用标注数据就能开发CV应用推动了通用视觉模型的发展负面影响社会偏见论文里发现CLIP会把黑人图像更容易分类成“罪犯”“小偷”把女性更容易分类成“保姆”“家庭主妇”滥用风险可以被用于无监督监控、大规模人脸识别等侵犯隐私的场景作者在论文里用了整整一章讨论这些问题呼吁社区关注AI的伦理和安全。八、核心代码实现下面是CLIP核心对比损失的Python实现完全对应论文里的伪代码importnumpyasnpdefclip_loss(image_embeddings,text_embeddings,temperature): CLIP对称交叉熵损失实现 参数: image_embeddings: 图像嵌入形状为[N, d]N是批次大小d是嵌入维度 text_embeddings: 文本嵌入形状为[N, d] temperature: 温度参数τ可学习的标量 返回: loss: 平均损失值 # 步骤1对嵌入向量进行L2归一化这样点积就等于余弦相似度image_embeddingsimage_embeddings/np.linalg.norm(image_embeddings,axis1,keepdimsTrue)text_embeddingstext_embeddings/np.linalg.norm(text_embeddings,axis1,keepdimsTrue)# 步骤2计算所有图文对的相似度矩阵形状为[N, N]logitsnp.dot(image_embeddings,text_embeddings.T)*np.exp(temperature)# 步骤3生成标签正确的配对是对角线元素第i张图对应第i段文本labelsnp.arange(logits.shape[0])# 步骤4计算图像到文本的损失和文本到图像的损失defcross_entropy(logits,labels,axis):# 先计算softmaxexp_logitsnp.exp(logits-np.max(logits,axisaxis,keepdimsTrue))probsexp_logits/np.sum(exp_logits,axisaxis,keepdimsTrue)# 再计算交叉熵return-np.mean(np.log(probs[np.arange(len(labels)),labels]))loss_icross_entropy(logits,labels,axis1)# 图找文loss_tcross_entropy(logits.T,labels,axis1)# 文找图# 步骤5返回平均损失return(loss_iloss_t)/2# 测试代码if__name____main__:N32# 批次大小d512# 嵌入维度image_embnp.random.randn(N,d)text_embnp.random.randn(N,d)tempnp.log(0.07)# 初始温度0.07和论文一致lossclip_loss(image_emb,text_emb,temp)print(fCLIP损失值:{loss:.4f})九、总结与展望CLIP是CV领域里程碑式的工作它的核心贡献可以概括为三点证明了自然语言监督可以训练出通用的视觉模型打破了CV对标注数据的依赖提出了对比学习的图文对齐范式现在所有的多模态大模型LLaVA、BLIP-2、GPT-4V都基于这个思路展示了零样本迁移的强大能力让CV模型从“专用工具”变成了“通用平台”CLIP之后CV进入了“多模态大模型时代”。现在的VLM不仅能识别图像还能理解图像内容、回答问题、生成描述甚至能调用工具完成复杂任务。而这一切都始于2021年OpenAI的这篇论文——它告诉我们当视觉和语言相遇AI才能真正理解这个世界。

相关文章:

【CLIP论文阅读】:基于自然语言监督的通用视觉预训练范式

论文信息 标题:Learning Transferable Visual Models From Natural Language Supervision会议:ICML 2021单位:OpenAI代码:https://github.com/OpenAI/CLIP论文:https://arxiv.org/pdf/2103.00020.pdf 一、引言&#x…...

Python Django REST Framework实战:构建RESTful API

Python Django REST Framework实战:构建RESTful API 引言 在Python Web开发中,Django REST Framework(DRF)是构建RESTful API的首选框架。作为一名从Rust转向Python的后端开发者,我深刻体会到DRF在快速构建高质量API方…...

上位机知识篇---提高Linux下载速度

提升 wget、pip 和 conda 的下载速度,核心方法可以归结为两类:一是使用更快的下载工具,二是连接到更近的镜像站点。下面的表格总结了几种主流的加速方案,方便你快速查阅:提速方法wgetpipconda🚀 换用更快的…...

观察使用Taotoken Token Plan后月度API成本的变化趋势

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察使用Taotoken Token Plan后月度API成本的变化趋势 对于依赖大模型API进行开发的中小型团队而言,月度API成本的可预…...

供水泵恒压变频控制系统:备用泵自动投切,保障供水不间断

供水泵恒压变频控制系统是一套融合变频调速、PID闭环控制与智能多泵管理的自动化节能供水解决方案,核心是按需供水、稳压节能、无人值守。 一、核心原理压力采集:管网压力传感器实时采集水压(0~1.6MPa)。偏差计算:PLC/专用控制器将实测值与设…...

终极窗口尺寸调整工具:WindowResizer完整使用指南

终极窗口尺寸调整工具:WindowResizer完整使用指南 【免费下载链接】WindowResizer 一个可以强制调整应用程序窗口大小的工具 项目地址: https://gitcode.com/gh_mirrors/wi/WindowResizer 还在为那些无法拖拽大小的顽固应用程序窗口而烦恼吗?Wind…...

Nrfr终极指南:5步轻松修改SIM卡国家码,免Root突破区域限制

Nrfr终极指南:5步轻松修改SIM卡国家码,免Root突破区域限制 【免费下载链接】Nrfr 🌍 免 Root 的 SIM 卡国家码修改工具 | 解决国际漫游时的兼容性问题,帮助使用海外 SIM 卡获得更好的本地化体验,解锁运营商限制&#x…...

为什么需要图像篡改检测?5个简单步骤守护数字世界的真实性

为什么需要图像篡改检测?5个简单步骤守护数字世界的真实性 【免费下载链接】image_tampering_detection_references A list of papers, codes and other interesting collections pertaining to image tampering detection and localization. 项目地址: https://g…...

别再只会轮询了!STM32CubeMX配置USART中断,从原理到调试一条龙指南

STM32串口中断实战:从轮询到事件驱动的效率跃迁 在嵌入式开发中,串口通信就像系统的神经末梢,负责与外界交换关键信息。传统轮询方式如同不断拨打电话确认消息,而中断机制则像设置来电提醒——只有当数据真正到达时才会唤醒CPU。这…...

ETS2LA:让《欧洲卡车模拟2》自动驾驶的终极解决方案

ETS2LA:让《欧洲卡车模拟2》自动驾驶的终极解决方案 【免费下载链接】Euro-Truck-Simulator-2-Lane-Assist Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/Euro-Truck-Simulator-2-Lane-Assist 你是否曾梦想在…...

Photoshop图层批量导出效率革命:10倍速免费脚本完全指南

Photoshop图层批量导出效率革命:10倍速免费脚本完全指南 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Adobe. 项目地址: h…...

用STM32F103和RC522模块DIY一个智能门禁,附完整代码和PCB文件

用STM32F103和RC522模块打造高性价比智能门禁系统 在创客圈子里,智能门禁系统一直是极受欢迎的DIY项目。它不仅融合了嵌入式开发、射频识别和物联网技术,还能解决生活中的实际问题。相比动辄上千元的商业门禁设备,用STM32F103C8T6&#xff0…...

OpenCV颜色操作避坑指南:cv::Scalar里BGR和RGB顺序别再搞混了

OpenCV颜色操作避坑指南:cv::Scalar里BGR和RGB顺序别再搞混了 第一次用OpenCV画红色矩形时,我信心满满地写下cv::Scalar(255, 0, 0),结果屏幕上却出现了一个蓝色方块——这个场景恐怕每个OpenCV初学者都遇到过。颜色通道顺序这个看似简单的细…...

Acepe:下一代AI驱动的开发者环境,实现多代理协同与可控编程

1. 项目概述:下一代AI驱动的开发者环境如果你和我一样,在过去一年里尝试过各种AI编程助手,从Copilot的代码补全到Cursor的聊天式编程,再到Claude Code的深度分析,你可能会发现一个共同的痛点:这些工具虽然强…...

从‘ylim auto’到‘ylim manual’:深入理解Matlab坐标轴范围管理机制与性能优化

从‘ylim auto’到‘ylim manual’:深入理解Matlab坐标轴范围管理机制与性能优化 在数据可视化领域,Matlab作为一款强大的科学计算工具,其图形系统的精细控制能力常常被低估。当我们处理静态数据时,坐标轴范围的自动调整&#xff…...

从零搭建ROS机器人视觉定位系统:AprilTag二维码实战指南

1. 为什么选择AprilTag做机器人视觉定位? 刚接触机器人视觉定位时,你可能听说过二维码、ArUco标记、AprilTag等各种方案。我最初用普通二维码做过实验,发现识别距离超过1米就经常丢帧,后来换成ArUco标记稳定性有所提升&#xff0c…...

基于AI与向量数据库构建个人智能知识库:Braindb项目全解析

1. 项目概述:从“脑数据库”到个人知识管理的革命最近在折腾个人知识管理工具的朋友,应该都听过一个词叫“第二大脑”。市面上从Notion、Obsidian到各种双链笔记,大家都在试图解决同一个问题:如何把散落在各处、不成体系的信息&am…...

技能设计指南:用产品思维构建个人可衡量技能体系

1. 项目概述与核心价值最近在和一些做产品、运营的朋友聊天,发现一个挺有意思的现象:大家手上都有一堆“技能”,比如会写文案、会做数据分析、会用某个设计软件,但真到了要系统性地提升自己,或者向别人清晰展示自己能力…...

如何用waifu2x-caffe轻松实现4倍无损放大?一个免费AI图像增强的完整方案

如何用waifu2x-caffe轻松实现4倍无损放大?一个免费AI图像增强的完整方案 【免费下载链接】waifu2x-caffe waifu2xのCaffe版 项目地址: https://gitcode.com/gh_mirrors/wa/waifu2x-caffe 你是否曾经遇到过这样的困扰:收藏多年的老照片模糊不清&am…...

地缘政治市场模拟器:ABM与NLP技术如何量化黑天鹅事件风险

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“hermes-geopolitical-market-sim”。光看名字,你可能会觉得这又是一个复杂到让人望而却步的宏观模型。但作为一个在量化分析和策略模拟领域摸爬滚打了十多年的从业者,我第一眼…...

别再手动敲命令了!用Ansible Playbook一键搞定Debian 12.9的桌面、网络和DNS配置

Ansible Playbook全自动部署Debian 12.9:从裸机到生产级桌面的终极实践 当面对数十台需要统一配置的Debian服务器时,手动敲命令不仅效率低下,更可能因人为失误导致环境差异。本文将展示如何用Ansible Playbook实现从最小化安装到完整生产环境…...

如何在Blender中实现CAD级精确建模:CAD_Sketcher完整指南

如何在Blender中实现CAD级精确建模:CAD_Sketcher完整指南 【免费下载链接】CAD_Sketcher Constraint-based geometry sketcher for blender 项目地址: https://gitcode.com/gh_mirrors/ca/CAD_Sketcher 你是否曾经在Blender中尝试创建精确的机械零件或建筑设…...

免费CAD软件LitCAD:让你10分钟掌握专业二维绘图的终极指南

免费CAD软件LitCAD:让你10分钟掌握专业二维绘图的终极指南 【免费下载链接】LitCAD A very simple CAD developed by C#. 项目地址: https://gitcode.com/gh_mirrors/li/LitCAD 还在为复杂昂贵的CAD软件发愁吗?今天我要向你推荐一款真正简单易用的…...

从开发工程师到产品经理,转型成功的5个关键因素

在软件行业的生态系统中,开发工程师与产品经理如同两条紧密交织的脉络,共同支撑着产品从概念到落地的全生命周期。对于软件测试从业者而言,观察这两种角色的转型路径,不仅能为自身职业发展提供多元视角,更能深刻理解产…...

【附源码】从零实现C语言链表库:设计思路与关键实现解析

【附源码】从零实现C语言链表库:设计思路与关键实现解析 链表作为最基础的数据结构之一,其实现质量直接反映了开发者对指针和内存管理的理解程度。本文将详细剖析一个完整的单链表实现,涵盖从基础操作到复杂算法的全部过程。 一、整体设计思路…...

Simulink-采样时间实战:从模型配置到模块级联的精准控制

1. Simulink采样时间基础概念 第一次接触Simulink建模时,很多人会被"采样时间"这个概念搞得一头雾水。我刚开始用Simulink做电机控制系统仿真时,就因为这个参数设置不当,导致仿真结果完全失真。简单来说,采样时间决定了…...

UnityLive2DExtractor:三步解锁Unity中的Live2D模型资源

UnityLive2DExtractor:三步解锁Unity中的Live2D模型资源 【免费下载链接】UnityLive2DExtractor Unity Live2D Cubism 3 Extractor 项目地址: https://gitcode.com/gh_mirrors/un/UnityLive2DExtractor 你是否曾经在Unity项目中遇到过精美的Live2D角色&#…...

形式化验证应用:从专家工具到芯片设计自动化验证的范式转变

1. 形式化验证的“特洛伊木马”:从专家工具到大众应用的范式转变在芯片设计的浩瀚战场上,验证工程师们与日益复杂的电路设计进行着一场永无止境的“特洛伊战争”。传统的动态仿真(Simulation)就像希腊联军,虽然兵强马壮…...

Windows网络性能测试终极指南:使用iperf3-win-builds轻松掌握网络诊断

Windows网络性能测试终极指南:使用iperf3-win-builds轻松掌握网络诊断 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 你是否曾经怀疑过…...

Steam成就管理器:如何高效管理游戏成就的完整指南

Steam成就管理器:如何高效管理游戏成就的完整指南 【免费下载链接】SteamAchievementManager A manager for game achievements in Steam. 项目地址: https://gitcode.com/gh_mirrors/st/SteamAchievementManager 你是否曾经为Steam游戏中那些难以完成的成就…...