专栏首页GiantPandaCVOpenAI CLIP 论文解读

OpenAI CLIP 论文解读

GiantPandaCV导语:视频内容主要是讲解 CLIP 这篇文章的思路,值得一看

点击小程序卡片观看视频

视频太长不看版:

CLIP 训练阶段

image-20210313165943853

模型架构分为两部分,图像编码器和文本编码器,图像编码器可以是比如 resnet50,然后文本编码器可以是 transformer。

训练数据是网络社交媒体上搜集的图像文本对。在训练阶段,对于一个batch 的数据,首先通过文本编码器和图像编码器,得到文本和图像的特征,接着将所有的文本和图像特征分别计算内积,就能得到一个矩阵,然后从图像的角度看,行方向就是一个分类器,从文本角度看,列方向也是一个分类器。

而由于我们已经知道一个batch中的文本和图像的匹配关系,所以目标函数就是最大化同一对图像和文本特征的内积,也就是矩阵对角线上的元素,而最小化与不相关特征的内积。文章的作者从社交媒体上搜集了有大约4亿对的数据。

CLIP 测试阶段

image-20210313170146896

在测试阶段,可以直接将训练好的CLIP用于其他数据集而不需要finetune。和训练阶段类似,首先将需要分类的图像经过编码器得到特征,然后对于目标任务数据集的每一个标签,或者你自己定义的标签,都构造一段对应的文本,如上图中的 dog 会改造成 "A photo of a dog",以此类推。然后经过编码器得到文本和图像特征,接着将文本特征与图像特征做内积,内积最大对应的标签就是图像的分类结果。这就完成了目标任务上的 zero-shot 分类。

一些有趣的实验结果

在27个数据集上与有监督resnet50的对比

image-20210313193337687

上图是在27个数据集上的对比实验结果,Linear Probe ResNet50 是指首先将 ResNet50 在 imagenet 数据集上做预训练。接着扔掉最后一层全连接并固定网络参数,重新添加一层线性分类器,然后在这27个数据集上重新训练新增的这层分类器。从实验结果上看,Zero-Shot CLIP 在其中16个数据集上都超过了 Linear Probe ResNet50,甚至包括了 imagenet。

在 ImageNet 变种数据集上与resnet101对比

image-20210313193844874

这个实验是对于imagenet数据集经过重新的筛选,制作了几个变种的版本。然后将 Zero-Shot CLIP 与在 Imagenet 上有监督训练的 ResNet101 在这些数据集上的分类精度做对比。可以看到随着变种版本的难度增大,ResNet101分类精度愈来愈差,而CLIP的表现则依然很坚挺。

通过添加标签对CLIP分类效果的影响

image-20210313194836019

这是在一个人脸数据集上的实验结果,最上面的 Table 6 是表示数据集标签包含7个人类种族、3类罪犯相关的标签和4类非人类的标签。Table 7 才是重点,表示各个年龄段的人脸识别为罪犯或者非人类的图片比例,可以看到通过给 Default Label Set 添加一个新的 'child' 儿童这个类别,0~19岁低年龄段的人脸的误识别率都降低了很多,因为CLIP分类的时候多了个儿童这个选项。通过这个实验说明文本编码器部分的标签文本构造对CLIP分类结果的影响非常大。

总结

CLIP提供一个如何做 zero-shot 分类的思路,且模型鲁棒性强。基于 CLIP 可以自由定义自己的分类器,而且与现有的很多工作结合或许玩出很多花样,比如 DALL·E 中用到了 CLIP,又比如有人已经把 CLIP 和 stylegan 结合来生成图片,又或者可以和 GPT-3 结合等等。想了解更多详细内容可以阅读原文章或者观看视频。

原论文链接:https://arxiv.org/pdf/2103.00020.pdf

本文分享自微信公众号 - GiantPandaCV(BBuf233),作者:梁德澎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-03-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【AlexeyAB DarkNet框架解析】九,YOLOV3损失函数代码详解(yolo_layer.c)

    前面已经讲完了YOLOV1/V2的损失函数代码解析,今天为大家带来YOLOv3的损失函数解析。YOLOV3的损失函数在YOLOV2的基础上,用多个独立的逻辑回归...

    BBuf
  • 深度学习算法优化系列二十一 | 在VS2015上利用TensorRT部署YOLOV3-Tiny模型

    大家好,最近在VS2015上尝试用TensorRT来部署检测模型,中间走了两天弯路,感觉对于一个完全新手来说要做成功这件事并不会那么顺利。所以这里写一篇部署文章...

    BBuf
  • 【从零开始学深度学习编译器】二,TVM中的scheduler

    在【从零开始学深度学习编译器】一,深度学习编译器及TVM 介绍我们已经知道TVM可以将各种深度学习训练框架的模型(计算图)转化为内部的Graph IR(Rela...

    BBuf
  • javascript 红皮高程(17)-- 按位异或(XOR)

    不吐槽了,继续研究JS,今天是按位异或这个操作符,它用符号(^)表示,它也是有二个操作数,这二个数当然也是十进制转成二进制之后的数。 它的规则就是,二个数的数值...

    web前端教室
  • 如何将你写的框架添加cocoapod支持[转]

    // 代码仓库clone 地址 git clonehttps://github.com/boyXiong/XWSwiftRefreshT.git

    freesan44
  • 以色列专家谈人工智能、网络安全: 新一轮科技革命利弊并存

    新一轮科技革命正在悄然改变着世界,以技术创新著称的以色列也在不断推动新技术的广泛和深入应用。以色列专家们认为,人工智能、网络安全、基因工程等技术会在新一轮科技革...

    C4rpeDime
  • 【Codeforces 722C】Destroying Array (数据结构、set)

    输入一个含有 n(1≤n≤100000) 个非负整数的 a 数组和一个 1~n 的排列 p 数组,求每次删除 a[p[i]] 后,最大连续子段和(不能跨越被删除...

    饶文津
  • masm nasm的全局变量

    战神伽罗
  • 技术人止步不前都是自己造成的

    说一个现状,现在愿意真正写原创技术文章的人越来越少了,好多原本写技术文章的作者也变了,他们开始去写鸡汤文,写热点文,为什么呢?这都是我们读者带的节奏,为了迎合读...

    龙哥
  • RFID 低频卡安全分析

    低频非接触卡主要用于门禁丶考勤等等在日常生活中使用非常的广泛,但他也具有比较大的安全隐患,他没有一些密钥安全认证这类安全机制,所有我们只要对低频卡有所研究就可以...

    信安之路

扫码关注云+社区

领取腾讯云代金券