CLIP | 打破文本图像次元壁

news2024/11/27 7:26:12

1 贡献

CLIP是文字图片的多模态工作

CLIP的迁移效果非常好。不同风格数据集的ZeroShot推理能力超强

在分类 ,物体检测和分割,视频检索都很多视觉下游任务都可以用CLIP取得有监督学习的效果

采用利用自然语音信号的监督信号来进行训练

提出了高质量的文本图片对数据集

2 方法

2.1 预训练

输入是文字和图片的一个配对

CLIP包括两个模型:Text EncoderImage Encoder,其中Text Encoder用来提取文本的特征,可以采用NLP中常用的text transformer模型;而Image Encoder用来提取图像的特征,可以采用常用CNN模型或者vision transformer VIT。

如下图

图片经过图片编码器编码Text Encoder得到图片特征

句子经过文字编码器编码Image Encoder得到文字特征

接下来要进行的就是配对任务了 所以作者爬了一个四个亿的数据集

这里用自然语言用来引导分类的好处:

(1)避免了大范围的标注工作,只需要下载图片和文字的配对即可,使得大规模数据集更容易获得

(2)标注是文本,而不是那种n选1的标签,模型的输入自由度就大了很多

(3)图片和文字绑定到一起,学习到了多模态的特征,容易Zeroshot迁移

正样本 负样本定义?

这里共有N个正样本,即真正属于一对的文本和图像(矩阵中的对角线元素),而剩余的N^2−N个文本-图像对为负样本,那么CLIP的训练目标就是最大N个正样本的相似度,同时最小化N^2−N个负样本的相似度,对应的伪代码实现如下所示:

对比学习的高效性,比gpt的预训练的方式更高效

把预测性的目标函数(gpt)换成了对比性的目标函数,训练效率提高了4倍,

怎么去做推理?没有分类头

算相似度的方式,算有哪些物体

2.2 做Zero-Shot推理分类

推理很简单,两步

(1)根据任务的分类标签构建每个类别的描述文本:A photo of {label},然后将这些文本送入Text Encoder得到对应的文本特征,如果类别数目为N,那么将得到N个文本特征。

因为预训练时候是句子(而且同时由于文本多义性),所以推理的时候,将单词改为句子A photo of {物体}

(2)将要预测的图像送入Image Encoder得到图像特征,然后与N个文本特征计算缩放的余弦相似度(和训练过程一致),然后选择相似度最大的文本对应的类别作为图像分类预测结果,进一步地,可以将这些相似度看成logits,送入softmax后可以到每个类别的预测概率。

3.CLIP还可以做什么

图像检索

基于文本来搜索图像是CLIP最能直接实现的一个应用,其实CLIP也是作为DALL-E的排序模型,即从生成的图像中选择和文本相关性较高的。

视频理解

CLIP是基于文本-图像对来做的,但是它可以扩展到文本-视频,比如VideoCLIP就是将CLIP应用在视频领域来实现一些zero-shot视频理解任务。

图像编辑

CLIP可以用在指导图像编辑任务上,HairCLIP这篇工作用CLIP来定制化修改发型:

图像生成

CLIP还可以应用在图像生成上,比如StyleCLIP这篇工作用CLIP实现了文本引导的StyleGAN:

自监督学习

最近华为的工作MVP更是采用CLIP来进行视觉自监督训练:

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

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

相关文章

抖店开通后,新手必须要知道的几个做店技巧,建议认真看完

我是王路飞。 抖店的运营,无非就是围绕【产品】【流量】展开的。 你要是能把这两个点给搞明白,新店快速出单、真是爆单就不再是问题了。 今天就给你们说一下,抖店开通后,作为一个新手商家,你必须要知道的几个做店技…

Java中如何进行加锁??

笔者在上篇文章介绍了线程安全的问题,接下来本篇文章就是来讲解如何避免线程安全问题~~ 前言:创建两个线程,每个线程都实现对同一个变量count各自自增5W次,我们来看一下代码: class Counter{private int count0;publi…

玩转宝塔,持续更新

用了下宝塔是真的比较爽,这里介绍下安装 1.linux安装宝塔 linux服务器直接安装输入就好 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec2.部署项目 2.1安装套件 这里直…

datax工具介绍及简单使用

介绍 Datax是一个异构数据源离线同步工具,致力于实现包括关系数据库、HDFS、Hive、ODPS、Hbase等各种异构数据源之间稳定高效的数据同步功能 设计理念 为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为…

Java转网络安全渗透测试,挖漏洞真香啊

最近,一个做运维的朋友在学渗透测试。他说,他公司请别人做渗透测试的费用是 2w/人天,一共2周。2周 10w 的收入,好香~ 于是,我也对渗透测试产生了兴趣。开始了探索之路~ 什么是渗透测试 渗透测试这名字听起来有一种…

Java实现自动玩王铲铲的致富之路小程序游戏

文章目录 前言1.调用adb命令截屏并读取到电脑2.打开游戏,提前截几个图,准备好相应的按钮位置颜色3.根据图片路径和x,y坐标,读取图片相应位置的颜色值4.根据颜色值判断如何进行触摸操作5.程序效果分析5.存在的问题6.改进思路7.改进版本&#x…

vue3中通过ref获取子组件实例,取值为undefined

也就是Vue3如何通过 ref 获取子组件实例(子组件中的DOM结构、数据、及方法),今天写index.vue(父组件)时想获取子组件的数据和方法,通过给子组件绑定ref,打印子组件的数据为undefined;百度搜索常用方法为: …

小白参加红队,需要做好哪些准备?

在本文中,我们将为读者介绍要想加入红队,需要掌握哪些方面的技能。 CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享 护网的定义是以国家组织组织事业单位、国企单位、名企单位等开展攻防两方的网络安全演习。进攻方一个…

【多线程】Thread 类 详解

Thread 类 详解 一. 创建线程1. 继承 Thread 类2. 实现 Runnable 接口3. 其他变形4. 多线程的优势-增加运行速度 二. Thread 类1. 构造方法2. 常见属性3. 启动线程-start()4. 中断线程-interrupt()5. 线程等待-join()6. 线程休眠-sleep()7. 获取当前线程引用 三. 线程的状态1. …

redis主从复制、哨兵、集群模式

redis群集有三种模式 redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,下面会讲解一下三种模式的工作方式,以及如何搭建cluster群集 ●主从复制:主从复制是高可用Redis的基础,哨兵和集群都是在主从复制…

Shell命令管理进程

Shell命令管理进程 列出进程 ps命令 top命令 管理后台进程 启动后台进程 查看后台进程 jobs和ps的区别 停止进程 Linux除了是一种多用户操作系统之外,还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视…

24、DAPlink仿真器-STM32F103C8T6

参考文章: A、https://oshwhub.com/nice0513/daplink-fang-zhen-qi B、https://oshwhub.com/Southerly/daplink-fang-zhen-qi-swd C、https://oshwhub.com/jixin002/stm32f103c8t6_cmsis-dap 串口烧录Hex文件 问题:不支持U盘拖拽,没有识别出U…

Java使用本地浏览器打开网页工具类分享

本文主要分享一个封装工具类,该工具类已实现查找本地可运行的浏览器打开网页。 package com;import java.lang.reflect.Method;/*** browse util** author Roc-xb*/ public class BrowseUtil {public static final String[] BROWSERS {"firefox", "…

UDP协议和报文格式,校验和,CRC的含义

💖💖💖每日一看,学习动力 一、UDP协议及其报文格式 UDP:特点:无连接,不可靠传输 报头里面有啥呢? 那么首先我要先提问一下?2个字节,可以表示的数据范围有多大…

【Sentinel Go】新手指南、流量控制、熔断降级和并发隔离控制

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开…

C语言入门Day_17 循环的控制

目录 前言 1.break 2.continue 3.易错点 4.思维导图 前言 我们知道当循环判断的边界条件不成立以后,循环就结束了。除此以外,我们如果想要提前结束循环,或者在循环中跳过某一次循环代码的执行,应该怎么做呢? 假如…

数据治理-数据架构-企业数据架构

是什么 数据架构定义了对组织非常重要元素的标准术语和设计。企业数据架构的设计中包括业务数据描述,如数据的收集、存储、整合、移动和分布。 当数据在组织中通过源或者接口流动时,需要安全、集成、存储、记录、分类、共享的报表和分析,最终…

3D目标检测数据集 KITTI(标签格式解析、点云转图像、点云转BEV)

本文介绍在3D目标检测中,理解和使用KITTI 数据集,包括KITTI 的基本情况、下载数据集、标签格式解析、点云转图像、点云转BEV。 目录 1、KITTI数据集中3D框可视化的效果 2、先看个视频,了解KITTI 的基本情况 3、来到KITTI官网,下…

C++ 11:多线程相关问题

目录 一. 线程类thread 1.1 thread的一些接口函数 2.2 通过thread创建多线程 二. this_thread 三. 互斥锁与原子操作 3.1 多线程中的加锁与解锁 3.1.1 mutex类 3.1.2 lock_guard 类 3.3 原子性操作 四. 条件变量 4.1 线程互斥的缺陷 4.2 condition_variable 实现线程…

图片mask任务和自监督损失函数MAE、Beit、MarkFeature、DINO、DINOv2

MAE (Masked Autoencoders Are Scalable Vision Learners) 来自Masked Autoencoders Are Scalable Vision Learners,Our loss function computes the mean squared error (MSE) between the reconstructed and original images in the pixel space. 几个关键点&…