首页 > 其他分享 >CLIP

CLIP

时间:2023-04-10 09:46:56浏览次数:46  
标签:CLIP 训练 特征 图片 文本 1000

CLIP OpenAI ICML2021

摘要

CLIP的方法非常的简单,但是效果非常好。

比如,clip的迁移学习能力是非常强的,它预训好的模型,能够在任意一个视觉分类的数据集上取得不错的效果。而且最重要的是CLIP是zero shot的,也就是说它完全没有在这些数据集上去做训练,就能得到不错的效果。

Clip在不使用ImageNet的训练集的情况下,也就是不使用128万张图片中任意一张训练的情况下,直接zero short做推理,就能获得和之前有监督训练好的res50相同的效果。

预训练

首先我们看一下CLIP的模型总览图。

CLIP利用了自然语言处理得到一个监督信号,去训练一个迁移效果很好的视觉模型,

首先,模型的输入是图片和文字的配对。图片通过一个图片的编码器,从而得到特征,这里的编码器可以是resnet,也可以是vision transformer。而对于文本,则通过一个文本编码器,得到文本特征。

我们假设每个training batch里都有n个图片文本对,那么就可以得到n个图片的特征,还有n个文本的特征,然后clip就在这些特征上去做对比学习。

对比学习需要正样本和负样本的定义,在这里配对的一个图片和文本就是一个正样本,因为它描述的是一个东西。所以特征矩阵里沿着这个对角线方向上的都是正样本,剩下的都是负样本。有了正负样本,我们就可以使用对比学习进行训练了。但是对于这种无监督的预训练方式,它是需要大量的数据的,因此,OpenAI专门收取了一个数据集,包含4亿个图片文本对,这也是CLIP为什么强大的原因之一。

推理

CLIP如何做zero shot的推理呢?因为clip经过用训练之后,它只能得到一些视觉上和文本上的特征,并没有在任何分类的任务上去做训练或者微调,所以说它是没有分类头的。这里作者提出了利用自然语言的一种方法,也就是prompt template。

什么是ptompt template?

如右图所示,假设在imageNet数据集上,CLIP就会先把imageNet里面的1000个类,比如飞机、汽车、狗,变成一个句子,也就是把单词填充到图中object的位置。相对应的,”plane“就变成了”A photo of a plane“。imageNet有1000个类,那么这就会生成1000个句子,然后这1000个句子通过之前预训练好的文本编码器,就会得到1000个文本特征。

为什么需要prompt template?

直接使用单词去抽取文本的特征也是可以的,但是由于在模型预训练的时候,图片每次看到的基本都是一个句子,如果在推理的时候,突然把文本变成了一个单词,那么就和训练时看到的文本不一样了,效果就会稍有下降


那么在推理的时候,当我们得到一张图片,把图片扔进图片编码器得到图片特征,然后拿图片的特征去和所有的文本特征去做一个cosine similarity,然后再用一个softmax得到概率分布。最后这个图像的特征跟哪个文本特征最相似,我们就把这个文本特征所对应的那个句子挑出来,从而完成了分类的任务。

并且,因为CLIP zero shot的推理能力,我们输入的图片也可以不用是imageNet里的图片,类别也可以换成其他的单词,比如,输入一张三轮车的照片,然后在类别中也加上三轮车,那么很有可能这张图片就能正确的被分类成三轮车。但如果像之前那种严格按照1000类去训练的分类头来说,模型永远都不会判断出这张图片是三轮车,最多也就是把它判断成是车或者是自行车这种。

CLIP的特点

不论是在训练的时候,还是在推理的时候,CLIP都不需要有一个提前定好一个标签列表了,任意给一张照片,都可以通过给模型去喂这种不同的文本句子,从而知道这张图片里到底有没有我们感兴趣的物体。

结果

CLIP不光是能识别新的物体,由于它把视觉的语义和文字的语义联系到了一起,所以学到特征的语义性非常强,迁移的效果也就非常的好。剩下的几行比较了迁移学习能力,我们可以看到CLIP的效果比严格按照1000类分类头的resnet要好很多。可能时因为和NLP的结合,CLIP学到的视觉特征已经和用语言描述物体之间产生了强烈的联系,所以能够准确的完成迁移学习的任务,即使domain变化非常剧烈(如上图)。

基于CLIP的应用

StyleCLIP: 通过文字去引导图片变化。(CLIP + StyleGAN)

[2103.17249] StyleCLIP: Text-Driven Manipulation of StyleGAN Imagery (arxiv.org)

目标检测

[2104.13921] Open-vocabulary Object Detection via Vision and Language Knowledge Distillation (arxiv.org)

image-20230407111251928

传统的目标检测的方法去做预测的话,可能只能告诉你这些都是玩具,也就是这里的蓝色基础类,但是当利用了这种自然语言之后,就摆脱了基础类的这个限制,训练出来的模型就可以检测出这些新的类,也就是红色的这些类。

提示模板

标签:CLIP,训练,特征,图片,文本,1000
From: https://www.cnblogs.com/orange0005/p/17301811.html

相关文章

  • 在Ubutu(14.10)的Eclipse启动Tomcat,以及部署问题
    启动Tomcat安装了阿土14.10(启动盘报gfxboot.c32:notaCOM32Rimage,网上查得输入live,果然可以,对此解决方式只能说),想装一个javaservlet的环境,下载了eclipse,通过apt-getinstall安装了tomcat和openjava。但是在运行时,RunOnServer中ServerName无法显示,导致无法运行。根据网上的指......
  • 【问题解决】eclipse cdt debug状态控制台输出中文部分乱码
    问题复现使用eclipsecdt版本写了一个C代码简易输出的程序如下:#include<stdio.h>#include<stdlib.h>voidprintln(chararr[]){ inti=0; while(arr[i]!='\0'){ printf("%c",arr[i]); i++; } printf("\n");}intmain(void){......
  • NetBeans VS Eclipse,新一轮的争端
    www.theserverside.com,www.javalobby.org,dev2dev论坛等多个Java论坛上争论着一个非常激烈的话题:WhyEclipseDevelopersAreMovingToNetBeans(为什么Eclipse开发者正在转向NetBeans)。不知道是什么原因,如此简单的争端到了后来也会有些发霉的味道。不能否认,这些言论最......
  • ubuntu eclipse 下驚醒GTK的配置(全)
    偶然的想法想玩玩GTK,因为Qt就是对gtk的C++封装,想着gtk应该比qt更高的执行效率吧,下面分享下自己搭建的过程。 1、我的ubuntu虚拟机是安装了eclipse+cdt的,如果是安装了eclipse没有安装CDT,则要安装CDT:     .可以在Eclipseupdate中输入以下地址来安装:http://download.eclipse......
  • Eclipse中安装Velocity插件
    工具特性:   1)用户自定义模版   2)根据velocity的vtl和html的标签进行自动缩进   3)语法高亮显示   4)html标签和velocity语句的自动完成提示和内容帮助,   5)html预览   6)使用ctrl+alt+鼠标点击html的结束标签(如)或velocity......
  • Eclipse中代码无异常缺编译报红
    Eclipse中代码无异常缺编译报红背景:在Eclipse中,明明代码没有问题,之前编写好的类,重启Eclipse之后就出现编译期间爆红,注释也爆红。解决Window→Preferences→Java→Compiler→Building把Buildpathproblems中的IncompletebuildpathCirculardependencies两个属性从默认......
  • windows+eclipse+cygwin+cdt+ndk
    windows系统上安装与使用AndroidNDKr5NDK&cygwin邮箱里有一:什么是NDK?NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等......
  • eclipse反编译插件配置
    1.下载必要软件jad.exe文件:https://varaneckas.com/jad/net.sf.jadclipse_3.3.0.jar(JadClipse-Eclipseplugin):https://sourceforge.net/projects/jadclipse/2.放置......
  • Jelastic云平台集成Eclipse
    作者:chszsJelasticInc.公司是最具创新性的Java云托管平台的创建者,宣布Jelastic云平台与Eclipse集成,提供了Jelastic插件,加速JavaEE下面的开发和部署,并且可以在Eclipse内管......
  • Crystal Reports for Eclipse(2)
    CrystalReportsforEclipse(2)创建一份新报表1、选择数据源通过数据库浏览器(DatabaseExplorer),你可以选择大多数数据源。当你从头创建一个空白报表时,数据库浏览器将会出现......