CLIP__视频笔记

learning transferable visual models from natural language supervision

高新能的迁移学习模型,结合了文本和图像信息

CLIP不在imagenet 128k的数据集上做预训练,能取得与预训练的ResNet50有同样的效果

clip的监督信号来自自然语言处理

网络的输入是图片-文本对,分别经过encoder提取特征,这个encoder可以是一个resnet,或者是一个vision transformer。然后在这些特征上进行对比学习,文本里的encoder可以是CBOW或者是tesxt trnaosformer。

在clip的对比学习中,配对的样本是正样本,如上图左矩阵中对角线的部分,所以共有n^2-n个副样本,clip的训练是在4亿张数据上进行的

clip的推理

Prompt template: 首先使用一组单词,将之加入句式中组成句子,然后进入test encoder编码器抽取特征,其实直接使用单词抽取特征也是可以的,但是clip在训练的过程中,text encoder接受的是一组句子,所以推理为了与训练的过程保持一致,还是采取了将单词编码成句子的方式。

于是将imagenet上1000类的图片,编码成这样的1000类文本特征

在分类过程中,网络接受任意一张图片,经过image encoder抽取特征,将得到的特征与文本特征计算 cosine similarity,取出最相似的文本特征,就得到了那个对应的类别。

在Prompt template的过程中,类别单词可以不仅限于imageent的1000类,所以clip做到了类别的拓展。 这是之前任何一个在imagenet上预;训练的模型都做不到的,摆脱了categorical label的限制。

由于clip把视觉的语义和文字的语义联系到了一起,学习到的特征语义性非常强,迁移的效果也非常好。

clip的有趣应用

style clip:把stylegan和clip结合到了一起,使用文字信息引导图像的生成

clip draw:做法更简单,用文字信息生成抽象的画,在普通的gpu上不到一分钟就可以生成

open-vocabulary object detection via vision and language knowledge distillation: 使用clip来做目标检测,

 原来的目标检测只能分辨玩具,clip的数据能做更细粒度的分类

github:johanmodin/clifs 用于视频检索,直接输入关键词,网络模型就检索视频里的每一帧,与文本特征相匹配,返回包含检索目标的图片。

———————————————————————————————————————————

有限制的类别限制了模型的泛化性,灵感来自于自然语言处理。

在自然语言处理的自监督训练模型中,不论使用atuoregessive(自回归预测)还是masked language(掩码完形填空)的方式,目标函数与下游任务无关,目的仅仅在于提取出一个高效有用的特征

作者尝试了小模型resnet 大模型vision transformer两种模型,结果发现迁移学习的性能和网络模型的大小是成正比的

作者为了进一步验证clip学习到特征的有效性,尝试了liner-prob,在模型训练好了之后,freeze the backbone,只训练分类头,发现clip也比之前的工作性能好,计算更高效。

这种多模态模型的训练是很困难的,首先作者借鉴了VirTex的多模态训练工作,在图像中使用CNN进行训练,在文本中使用Transformer训练。同时对比学习对无监督的训练也有诸多好处,把预测性任务转为对比学习的任务之后,学习效率提高了4倍

 由于数据集过大,temperature被设计为一个可学习的参数,没有调节。除了使用random crop之外没有使用其他数据增强的方式,在moco simlcr中十分重要的非线性投射层,也被简化为了linear-projection

有关如何在多个gpu上训练大模型

How to Train Really Large Models on Many GPUs? | Lil'Loghttps://lilianweng.github.io/posts/2021-09-25-train-large/

第3节

zero-shot研究动机,原来的对比学习目标都是抽取特征,如moco  simCLR DINO这些方法,但是对比学习想迁移到其他数据还是需要有标签的finetune,还有可能遇到数据集不好迁移,distribution shift的问题。那如何只做一次 训练一个模型,这就是zero-shot transfer。

Prompt engineering :一个模型微调中很流行的概念,在CLIP中,就是使用文本信息引导图片分类

另外,如果使用一个单词作为图片的prompt,经常会有歧义性的这个问题

所以把每一个单词都放到提示模板里 "a photo of {label}",具体的使用中,作者使用了80个这样的模板,最后把结果综合起来会是更好的结果

CLIP的局限性

CLIP只能和resnet50这种basline模型打成平手,但是和真正的state of art还有10几个点的差距,当然可以通过增大数据规模的方式来弥补这个差距,但是得还需要在4亿的基础上再*1000,所以对于openAI这种硬件条件来说也是无法训练的,所以需要找到提高训练效率的方法

另外,clip不是万能的方法,在很多困难的数据集中,例如找出图片中有多少个物体、区分视频中的异常帧,在这些数据集中,clip的性能和瞎猜差不多

另外虽然clip的泛化性能很好,但是如果训练数据和测试数据之间真的已经out of distribution的话,那clip的泛化性能也会变得很差,例如clip在minst数据集上性能很差

clip的分类任务还是从给定的类别里作选择,选出相似或者不相似,另外一种更灵活的方式是直接为图片生成标题,以后可能会将生成式模型的损失函数和对比模型的损失函数结合

clip利用数据效率不高,训练一共用了128亿张图片,自监督学习和self-training(伪标签的方式可能会有更高的利用效率

虽然clip一直在做zero-shot,但是是一直在imagenet上做测试的,网络和超参的调整也都以imagenet的性能为导向,所以可能imagenet给予了一种隐含的指示

OpenAI这批的clip训练数据是网上爬的,所以会有种族社会和宗教的偏见

clip存在一种很奇怪的现象,从zero-shot迁移到few-shot的过程中,不给训练样本的性能反而比给了样本的性能还要差

1:34简短的代码实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值