CLIP 论文的关键内容

news2024/12/22 16:57:27

CLIP 论文整体架构

该论文总共有 48 页,除去最后的补充材料十页去掉,正文也还有三十多页,其中大部分篇幅都留给了实验和响应的一些分析。

从头开始的话,第一页就是摘要,接下来一页多是引言,接下来的两页就是讲了一下方法,主要说的是怎么做预训练,然后从第六页一直到第十八页全都是说的实验,当然这里面也包括了怎么去做 zeor-shot 的推理,还有包括这种 prompt engineering 、prompt ensemble 等等,算是方法和实验的合体。

讲完了实验作者大概花了一页篇幅去讨论了一下 CLIP 工作的局限性,然后接下来的五页作者主要就是讨论了一下CLIP这篇工作有可能能带来的巨大的影响力,在这个部分首先讨论的是 bias ,即模型的偏见,然后讨论了 CLIP 有可能在监控视频里的一些应用,最后作者展望了一下 CLIP 还有哪些可以做的这个未来工作,然后在讲完了所有的这些方法、实验和分析之后作者用了一页的篇幅就大概说了一下相关工作,最后给出了一个简短的小结论。

CLIP 到底是什么

CLIP 的迁移学习能力非常强,其预训练好的模型能够在任意一个视觉分类的数据集上取得不错的效果。
最重要的是,其是 zero-shot 的:

在这里插入图片描述

预训练的含义:

在这里插入图片描述

作者在这篇文章中做了超级多的实验,在超过三十个数据集上做了测试:

在这里插入图片描述

CLIP 到底是什么?到底是怎么去做到 zero-shot 推理的?

看文章中的图一:

在这里插入图片描述

上图是模型总览图,这是 CLIP 工作的一个大概流程。

CLIP 是如何进行预训练的?从题目中可以窥见一二,通过自然语言处理那边来的一些监督信号,我们可以训练一个迁移效果很好的视觉模型。因此明显这是一个牵扯到文字、图片的一个多模态的工作。

那么是如何利用来自自然语言处理那边的信号的呢?在训练过程中,模型的输入是一个图片和文字的配对。以上图为例,图片是一只狗,配对的文字也是 pepper 是一只小狗。

然后图片会通过一个 Image Encoder 图片编码器,从而得到一些特征(这里的编码器可以是一个 ResNet 也可以是一个Vision Transformer)。对于文本句子来说其也会通过一个文本编码器,从而得到一些文本的特征。

假设现在每个Training Batch(训练批次)里都有 n 个这样的图片文本对,也就是说有 n 个句子,n 张图片,对应的会得到 n 个文本特征以及 n 个图片特征,而 CLIP 就是在这些特征上去做对比学习。

对比学习非常的灵活,只需要一个正样本和一个负样本的定义即可,其他的都是正常套路。

正样本是啥?其实很简单,上面图中的一个配对的 图片-文本对 就是一个正样本。因为其描述的是一个东西。

所以说在上图中的特征矩阵里,沿着对角线方向上的内容都是正样本:

在这里插入图片描述

因为 I1T1 、I2T2 这些本身就都是配对的。

那么剩下矩阵中的不是对角线上的其他元素就都是负样本了。也就是说我们有 n 个正样本,然后又 n 平方减去 n 个负样本。

一旦有了正负样本,模型就可以通过对比学习的方式去训练起来了,完全不需要任何手工的标注。

但是对于这种无监督的预训练方式,也就是对比学习,其是需要大量的数据的,因此 OpenAI 还专门去收集了这么一个数据集。该数据集中有 4 亿个 图片-文本对,数据质量很高,这也是为什么 CLIP 这个预训练模型为什么能这么强大的主要原因之一。

CLIP 如何做推理的

CLIP 如何去做 zeor-shot 的推理的呢?

从上面可以知道,CLIP 这个模型经过预训练之后其实只能得到一些视觉上和文本上的特征,他并没有在任何分类的任务上去做继续的这种训练或者微调,因此他是没有分类头的,没有分类头怎么做推理呢?

分类头:

在这里插入图片描述

本文提出了一个非常巧妙的利用自然语言的一种办法,叫 prompt template。

这里使用 Image Net 数据集做一个例子。

CLIP 就是先将 Image Net 里这 1000 个类,比如飞机啊、汽车啊、狗啊变成一个句子:

在这里插入图片描述

从上图可以看到,也就是用 plane、cat、dog 等去替代花括号包起来的 object 的这个内容,就相当于一个模板(在很多 it 技术领域都有类似概念的存在)。

有 1000 个类,那么就生成了这样的 1000 个句子。然后这 1000 个句子通过我们之前预训练好的这个文本编码器 Text Encoder 就会得到一千个这个文本的特征。

但其实直接使用原生的那些单词去做文本特征的提取也是可以的,但是因为在模型预训练的时候我们的图片每次看到的基本都是一个句子,如果在推理的时候突然把所有的这个文本都变成了一个单词,那这样就跟在训练的时候看到的这个文本就不太一样了,效果就会稍有下降。

另外一个单词如何变成一个句子也是很有讲究的。因此 CLIP 这篇论文在后面还提出了 prompt engineering 和 prompt ensemble 这两种方式去进一步的提高这个模型的准确率。而不需要重新训练这个模型。

然后在推理的时候,不论此时来到的什么图片,我们只要将这个图片扔给这个图片的编码器,得到了这个图片特征之后就让这个图片特征去跟所有的这些文本特征去做这个 cosine similarity(余弦相似度):

在这里插入图片描述

计算相似性,最后这个图像特征和这里的哪个文本特征最相似,那么就把这个文本特征和所对应的那个句子挑出来,从而完成了分类这个任务:

在这里插入图片描述

也就是这张图片里有狗这个物体。

并且在 CLIP 真正使用的时候,这里的标签还是可以改的(比如不是飞机,而是坦克),不光是 Image Net 这 1000 个类,可以换成任意的单词,同样图片也可以是任何的图片,然后依旧可以使用这种通过算余弦相似度的方式去判断这张图片里到底还有哪些物体。

这个性质就是CLIP的强大之处,因为它彻底摆脱了 categorical label 的这个限制,也就是说不论是在训练的时候还是在推理的时候,其都不需要有一个这么提前定好的这么一个标签列表了。任意给我一张照片,我都可以通过给模型去喂这种不同的文本句子从而知道这张图片里到底有没有我所感兴趣的物体。

而且 CLIP 不光是能识别新的物体,由于它真的把这个视觉的语义和文字的语义联系到了一起,所以它学到的这个特征的语义性非常强,迁移效果也非常的好。

基于CLIP的应用

基于CLIP 的图像生成,用文本去指导图像的生成。

基于CLIP 的物体检测和分割。

基于CLIP 的用来做视频检索的,意思是给定一段视频,然后想去搜索这个视频里到底有没有出现过某个物体或者是场景,那么就可以通过直接输入文本的这种形式去做检索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1697489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMBOK® 第六版 项目经理的角色

项目经理普遍是一个责任大但权力有限的角色,是一个综合的中层领导者,负责项目从启动到收尾的全过程。他需要整合项目管理的各个方面,以确保项目目标的实现,并满足相关方的期望和需求。在工作中,项目经理大部分时间都用…

【全开源】海报在线制作系统源码(ThinkPHP+FastAdmin+UniApp)

打造个性化创意海报的利器 引言 在数字化时代,海报作为一种重要的宣传媒介,其设计质量和效率直接影响着宣传效果。为了满足广大用户对于个性化、高效制作海报的需求,海报在线制作系统源码应运而生。本文将详细介绍海报在线制作系统源码的特…

MVCC 原理分析、MySQL是如何解决幻读的

文章目录 一、前言回顾1.1 事务四大特性ACID1.2 并发事务问题1.3 事务隔离级别 二、MVCC2.1 为什么使用MVCC2.2 基本概念——当前读、快照读、MVCC2.2.1 当前读2.2.2 快照读2.2.3 MVCC 2.3 隐藏字段—— TRX_ID、ROLL_PTR2.4 undo log2.4.1 介绍2.4.2 版本链 2.5 Read View读视…

tensorflow2.0 -- 介绍及环境配置

文章目录 机器学习的框架tensorflow 2.0环境配置 机器学习的框架 scikit-learn, 传统的机器学习框架,不支持深度学习和GPU加速计算; caffe, 深度学习框架,发展到pytorch keras, 深度学习的包裹器 tensorflow,google开源的深度学习…

【Linux部署】【pig前端部署】Linux安装- docker/docker-compose/nginx (使用docker优雅部署nginx)

🌸🌸 Linux安装- docker/docker-compose/nginx 优雅部署 🌸🌸 一、一键安装jdk yum install -y java-1.8.0-openjdk.x86_64验证 二、安装docker yum list docker-ce --showduplicates | sort -rsudo yum install -y yum-utils …

RocketMq局部顺序消息

package com.ldj.rocketmq.producer;import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.common.message.Message;import java.nio.charset.StandardCharsets;/*** User: ldj* Date: 2024/5/26* Time: 15:09* Description: 局部顺序消…

深度神经网络——什么是生成式人工智能?

1.引言 生成式人工智能最近引起了很大的关注。 该术语用于指依赖无监督或半监督学习算法来创建新的数字图像、视频、音频和文本的任何类型的人工智能系统。 麻省理工学院表示,生成式人工智能是过去十年人工智能领域最有前途的进展之一。 通过生成式人工智能&#…

队列(C语言)

文章目录 [TOC](文章目录) 前言1.队列的概念及结构2.队列的实现3.相关操作的具体实现3.1.初始化队列(QueueInit)和销毁队列(QueueDestory)3.2.队尾入队(QueuePush)和队头出队(QueuePop)3.3.判空(QueueEmpty)、获得队尾元素(QueueBack)以及获得队头元素(QueueFront) 前言 前面我…

打卡信奥刷题(20)用Scratch图形化工具信奥B3756 [信息与未来 2021] 幸运数字

本题的基础是进制转换,关于2进制转换可以参考打卡信奥刷题(19)用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解 知道了2进制,来实现5进制、7进制、9进制是一样的。 [信息与未来 2021] 幸运数字 题目描述 如果⼀个…

内存的基本知识与连续分配管理

目录 一. 内存的基础知识1.1. 什么是内存1.2 指令的工作原理1.2.1 装入的三种方式 - 绝对装入1.2.2 可重定位装入1.2.3 动态重定位装入1.3 从写程序到程序运行 二. 基本内存管理的概念三. 覆盖与交换3.1 覆盖技术3.2 交换技术 四. 连续分配管理方式4.1 单一连续分配4.2 固定分区…

【全开源】赛事报名系统源码(Fastadmin+ThinkPHP和Uniapp)

基于FastadminThinkPHP和Uniapp开发的赛事报名系统,包含个人报名和团队报名、成绩查询、成绩证书等。 构建高效便捷的赛事参与平台 一、引言:赛事报名系统的重要性 在举办各类赛事时,一个高效便捷的报名系统对于组织者和参与者来说都至关重…

前后端部署笔记

windows版: 如果傻呗公司让用win电脑部署,类似于我们使用笔记本做局域网服务器,社内使用。 1.安装win版的nginx、mysql、node、jdk等 2.nginx开机自启参考Nginx配置及开机自启动(Windows环境)_nginx开机自启动 wind…

mapboxGL中山体背景+边界阴影的一种实现方案

概述 很多地图可视化的项目中有要求实现如下的效果,本文借助QGIS、PS和turf.js,在mapboxGL中实现山体背景+边界阴影的效果。 实现效果 实现 1. 需要数据 要实现这样的效果,我们需要如下数据: 山体背景图地级市数据…

[卷积神经网络]RepConv和重参数化

RepConv是Yolov7,YoloV9中一个重要的结构,其主要用于在保持精度不退化的情况下提升推理速度。RepConv在学习阶段和推理阶段拥有不同的结构,这使得其推理阶段的复杂度大大降低。这项技术的核心在于重参数化。 一、重参数化 重参数化的主要思想是将卷积(C…

2024年弘连网络FIC大会竞赛题线下决赛题

总结: FIC决赛的时候,很多小问题没发现,在pve平台做题确实很方便。 这套题目复盘完,服务器这块的知识确实收获了很多,对pve集群平台和网络拓扑也有了一定的认识,感谢各位大佬悉心指导。 接下来&#xff0…

工具使用-网络性能测试工具(iperf)-TCP 和 UDP 的吞吐量-包转发率参数的理解

时间戳:2024年5月26日15:18:39 iperf 和 netperf 都是最常用的网络性能测试工具,测试 TCP 和 UDP 的吞吐量。它们都以客户端和服务器通信的方式,测试一段时间内的平均吞吐量。 接下来,我们就以 iperf 为例,看一下 TC…

C语言PTA练习题:三角形类别,输入三角形三条边,求面积,四则计算器,猴子吃桃

7-1 三角形类别 输入三个整数,以这三个数为边长,判断是否构成三角形;若不能输出"no",若构成三角形,进一步判断它们构的是:锐角三角形或直角三角形或钝角三角形.分别输出"ruijiao",&qu…

Spring MVC+mybatis项目入门:旅游网(四)用户注册——mybatis的配置与使用以及Spring MVC重定向

个人博客:Spring MVCmybatis项目入门:旅游网(四)用户注册2-持久化 | iwtss blog 先看这个! 这是18年的文章,回收站里恢复的,现阶段看基本是没有参考意义的,技术老旧脱离时代(2024年…

qt-C++笔记之QThread使用

qt-C笔记之QThread使用 ——2024-05-26 下午 code review! 参考博文: qt-C笔记之使用QtConcurrent异步地执行槽函数中的内容,使其不阻塞主界面 qt-C笔记之QThread使用 文章目录 qt-C笔记之QThread使用一:Qt中几种多线程方法1.1. 使用 QThread 和 Lambda…

【二叉树】LeetCode.144:二叉树的前序遍历(小细节把握)

🎁个人主页:我们的五年 🔍系列专栏:初阶初阶结构刷题 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 1.题目描述:​编辑 2.问题分析: 🍔函数解读: …