多模态-2 CLIP
这篇文章介绍多模态模型-CLIP多模态基础知识点可以看多模态-1 基础理论ViT的相关介绍可以看计算机视觉Transformer-1 基础结构CLIP原论文《Learning Transferable Visual Models From Natural Language Supervision》-2021-OpenAI一 为什么提出CLIP做过视觉模型的一定会有以下痛苦经历本来最初的要求是让模型识别20种类别你收集数据-标记数据-构建模型-调参炼丹-输出能识别20种类别的模型你开心地进行交付时突然需求跟你说又加了一个新类别你又需要重新做重走整个流程即使有数据平台、标记外包等随着需求的变动如此循环也是很烦的。之所以要进行循环的根源是传统判别式模型外推能力有限它只认识你在训练数据集中标记过、教给它让它学习的类别如果你的训练数据集中根本就没有“猫”这种类别的数据然后突然输入一张“猫”的图片让模型识别它大概率会不产生任何识别结果或者给出置信度很低的其它相似类别标签输出比如输出了“狗”。工业模型落地一直强调的“数据先于模型”就是这个道理再牛的模型没有数据做燃料也是废物。我们希望有这样一种模型它经过训练后对于未在训练集中出现的类别也能做出准确的判断学术上称这种能力为“Zero-Shot”CLIP就是这种模型。二 结构传统判别式模型是从特征映射的角度处理识别问题也就是“特征-识别结果”而CLIP是从语义相似性的角度来处理识别问题也就是“(特征识别结果)-最相似的是正确结果”。举例来说输入一张“猫”的图片传统判别式模型会对图片进行特征提取根据提取到的特征进行判断说“我认为这张图片90%是猫”而CLIP会分别对图片、所有类别“猫”、“狗”......都进行特征提取然后判断每个图片特征类别特征相似度是多少选相似度最大的作为当前图片的类别。CLIP的Zero-Shot能力就体现在如果‘所有类别’哪天突然变了传统判别式模型需要重新构建数据集-进行训练......但是CLIP只需要对新类别进行一次特征提取就可以然后还是通过相似度比对就可以进行判断识别CLIP整体结构如下左侧是CLIP的训练过程CLIP包含两个关键组件Image Encoder(图像编码器)、Text Encoder(文本编码器)最后就是通过数据集训练这两个编码器让它们提取到的特征具有语义相似性也就是图像编码器对‘猫图片’的特征编码输出和文本编码器对文本“猫”的特征编码输出具有最大的相似性。右侧是CLIP的推理过程输入一张待进行识别的图片利用训练完毕的图像编码器对其进行特征提取利用文本编码器对所有类别标签文本进行特征提取然后判断图像特征和类别标签文本特征的相似性具有最大相似性的就是图像对应的类别。CLIP训练时的输入是多个图像图像文本描述对比如猫的图片“A photo of a cat”利用图像编码器对输入图像进行特征提取论文中尝试了ResNet和ViT作为图像编码器利用文本编码器对于图像文本描述进行特征提取论文中尝试了类似BERT结构的文本编码器对于图像编码器和文本编码器提取到的特征利用对比学习最大化正确匹配图像图像文本描述相关特征的余弦相似度最小化错误匹配图像图像文本描述相关特征的余弦相似度强迫模型学习出图像特征和文本特征之间的语义相关性。三 数据集构建CLIP作者通过不同主题的搜索关键词在网络上进行图片数据搜索构建了一个包含4亿图像图像文本描述对的数据集为了保持数据集的均衡性每个主题的搜索关键词大约包含20000个数据这个数据集命名为WIT(WebImageText)其包含的文本token数量接近于GPT-2的训练数据集。四 训练过程CLIP训练过程的核心目标是将图像和文本映射到一个共享的语义向量空间中使得语义相近的图文对特征在该空间中距离更近而无关的图文对特征距离更远。具体过程1)从训练数据集中获取一个batch的图像图像文本描述训练数据论文中使用的batch size高达327682)获取图像编码器、文本编码器对于batch数据的特征编码表示对特征编码表示进行归一化3)计算当前batch所有图像编码表示、文本编码表示的余弦相似度矩阵4)计算当前batch的损失对于第i个图像和第i个图像文本描述直观上就是最大化相似度矩阵对角线上的值最小化其它的值所以论文里会像下图所示进行示意5)根据损失反向梯度传播训练CLIP所有非对角线元素其实是作为负样本负样本越多效果越好这也是为什么CLIP要采取那么大的batch size这也提醒我们如果我们的资源没办法支撑这么大的batch size时不要轻易尝试在我们的数据集上训练CLIP效果肯定差。训练的一些其它细节如下整体训练过程的伪代码如下训练伪代码解释如下# image_encoder - ResNet /Vision Transformer图像编码器 # text_encoder - CBOW /Text Transformer 文本编码器 # I[n, h, w, c] - 包含n张图像的训练图像 # T[n, L] - 包含n个长度为L的图像文本描述 # W_i[d_i, d_e] - 图像编码结果线性变换层可学习矩阵 # W_t[d_t, d_e] - 文本编码结果线性变换层可学习矩阵 # t - Logits计算中的可学习温度控制参数 # 利用图像编码器和文本编码器获取输入训练图像文本对的特征 I_f image_encoder(I) #[n, d_i] T_f text_encoder(T) #[n, d_t] # 先利用线性变换层(对应可学习的W_i、W_t参数)对编码器提取到的特征进行维度变换 # 然后进行L2正则化 axis1表示操作每一行 也就是对每一行进行正则化 I_e l2_normalize(np.dot(I_f, W_i), axis1) T_e l2_normalize(np.dot(T_f, W_t), axis1) # 因为已经进行过正则化所以利用dot计算内积就是余弦相似度的结果然后利用可学习的温度参数t对结果进行平滑得到logits logits np.dot(I_e, T_e.T) * np.exp(t) # arange(n)得到[0,1,...n]的标签也就是第i张图片的标签是i,训练目标是最大化对角线上图像-文本对的匹配,也就是最大化对角线上的余弦相似值,最小化其它的值 labels np.arange(n) # 分别计算logits每行每列的交叉熵损失对应图像-文本的匹配损失和文本-图像的匹配损失 loss_i cross_entropy_loss(logits, labels, axis0) loss_t cross_entropy_loss(logits, labels, axis1) # 整体损失是图像到文本的匹配损失和文本到图像的匹配损失的平均值 loss (loss_i loss_t)/2五 实验结果CLIP的论文一共48页实验部分页数就占了32页这里列出部分实验部分的页面感受一下数据的震撼^_^感兴趣的可以细读原论文的实验部分可以称作是论文实验部分的撰写教科书了CLIP的实验主要涵盖了零样本(Zero-Shot)能力的验证、模型鲁棒性、模型可拓展性、消融实验、失败案例分析环节六 细节问题1)可以把图片对应的文本描述看做是语言大模型中的prompt越详细的prompt训练效果会越好这也是为什么后续的多模态模型直接用next token的文本生成方式进行训练2)CLIP在人工合成的小型公开评测数据集CIFAR-10、CIFAR-100上效果不如以往的传统模型3)要想针对特定领域重新训练CLIP所需的数据量非常大4)CLIP图像特征编码表示来自哪里5)CLIP的文本特征编码表示来自哪里七 如何使用CLIPCLIP的使用记住一点永远不要轻易地尝试重新开始训练(微调)CLIPCLIP具体应用中常使用的是Linear Probe(线性探针)的方法八 拓展1 文本描述拓展3 现代多模态模型中的img标签2 中文CLIPCLIP是在英文数据集上进行训练的中文效果不好阿里达摩研究院在大规模中文数据集上训练了一个对中文友好的CLIP模型具体工作可以查看《Chinese CLIP: Contrastive Vision-Language Pretraining in Chinese》整体先冻结预训练CLIP的图像编码器只训练文本编码器然后在联合训练。论文整体工作如下数据集构建策略如下

相关新闻

安全工具篇魔改二开CS消除流量特征Profile请求个性主题反编译去暗桩

安全工具篇魔改二开CS消除流量特征Profile请求个性主题反编译去暗桩

2026/7/10 14:56:26 阅读更多 →
mysql生成的redo 记录是什么?

mysql生成的redo 记录是什么?

2026/7/5 14:32:30 阅读更多 →
AI大模型面试宝典:全面解析大模型技术,助你轻松应对各类面试问题

AI大模型面试宝典:全面解析大模型技术,助你轻松应对各类面试问题

2026/7/9 1:09:08 阅读更多 →

最新新闻

Spring 整合 MyBatis + 数据库连接池

Spring 整合 MyBatis + 数据库连接池

一、版本匹配前置说明Spring Boot 2.x(Spring5):使用 mybatis-spring-boot-starter 2.xSpring Boot 3.x(Spring6):使用 mybatis-spring-boot-starter 3.x连接池主流:HikariCP(Spring…

2026/7/11 2:19:28 阅读更多 →
R 语言 PLS-DA 实战:mixOmics 与 ropls 双包对比,3步实现代谢组学数据降维

R 语言 PLS-DA 实战:mixOmics 与 ropls 双包对比,3步实现代谢组学数据降维

R语言PLS-DA实战:mixOmics与ropls双包对比与代谢组学降维指南引言:为什么需要PLS-DA?在代谢组学研究中,我们常常面临高维数据的挑战——样本量可能只有几十到几百,但检测到的代谢物数量却高达数百甚至上千种。传统的PC…

2026/7/11 2:19:28 阅读更多 →
UABEA性能优化解析:Unity资源提取效率提升1200%的底层原理与实践

UABEA性能优化解析:Unity资源提取效率提升1200%的底层原理与实践

1. 项目概述:当资源提取成为瓶颈如果你是一名Unity游戏开发者、技术美术,或者是一名热衷于游戏模组制作的爱好者,那么“资源提取”这个词对你来说一定不陌生。无论是为了分析竞品的美术风格、复用某些特效资源,还是为了制作一个改…

2026/7/11 2:17:27 阅读更多 →
大模型复合函数多层嵌套:核心取舍逻辑与实操注意点(轻量化/零资源训练专属)

大模型复合函数多层嵌套:核心取舍逻辑与实操注意点(轻量化/零资源训练专属)

大模型开发交流群:306671879 自研小参数模型和落地模型部署应用感兴趣的可以来 大模型复合函数多层嵌套:核心取舍逻辑与实操注意点(轻量化/零资源训练专属) 结合你之前吃透的「大模型多层复合函数堆叠」核心本质,以及…

2026/7/11 2:17:27 阅读更多 →
AI Agent 正在改变软件开发:从代码生成到智能协作的技术演进

AI Agent 正在改变软件开发:从代码生成到智能协作的技术演进

近几年,人工智能的发展速度远远超出了很多人的预期。从最初的智能问答,到如今能够编写代码、分析日志、自动测试、生成文档,AI 正逐渐成为开发者工作中的重要工具。 尤其是大语言模型(LLM)的成熟,让 AI 不…

2026/7/11 2:15:27 阅读更多 →
FPGA数字钟设计避坑3要点:从50MHz分频到动态扫描的时序收敛

FPGA数字钟设计避坑3要点:从50MHz分频到动态扫描的时序收敛

FPGA数字钟设计避坑3要点:从50MHz分频到动态扫描的时序收敛在FPGA上实现数字钟看似简单,实则暗藏玄机。许多工程师在完成基本功能后,往往会遇到计时误差、显示闪烁或按键响应异常等问题。本文将聚焦三个最易出错的环节:高精度分频…

2026/7/11 2:11:26 阅读更多 →

日新闻

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南

5分钟完全掌握:ComfyUI ControlNet预处理器终极使用指南 【免费下载链接】comfyui_controlnet_aux ComfyUIs ControlNet Auxiliary Preprocessors 项目地址: https://gitcode.com/gh_mirrors/co/comfyui_controlnet_aux 想要让AI图像生成真正听从你的指挥吗&…

2026/7/11 0:02:12 阅读更多 →
PIC18F45K42驱动EPT-14A4005P压电蜂鸣器方案详解

PIC18F45K42驱动EPT-14A4005P压电蜂鸣器方案详解

1. 项目背景与核心需求 在工业控制、安防系统和智能家居等领域,可靠的声音警报系统是不可或缺的基础组件。传统蜂鸣器存在音量不足、音质模糊等问题,而基于压电陶瓷技术的EPT-14A4005P蜂鸣器配合PIC18F45K42微控制器,能够构建一套适应性强、音…

2026/7/11 0:04:12 阅读更多 →
大模型推理中的算子融合优化:LayerNorm + Attention 的 CUDA Kernel 手写与验证

大模型推理中的算子融合优化:LayerNorm + Attention 的 CUDA Kernel 手写与验证

大模型推理中的算子融合优化:LayerNorm Attention 的 CUDA Kernel 手写与验证 一、GPU 利用率 30%:分开的算子吃掉所有带宽 推理服务的 GPU 利用率监测显示一个反直觉的现象:计算核心(SM)利用率不到 30%,但…

2026/7/11 0:04:12 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/10 19:03:29 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/9 13:46:46 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/9 21:41:05 阅读更多 →

月新闻