1. CLIP简介

  CLIP全称Constrastive Language-Image Pre-training,是OPAI推出的采用对比学习的文本-图像预训练模型。CLIP惊艳之处在于架构非常简洁且效果好到难以置信,在zero-shot文本-图像检索,zero-shot图像分类,文本→图像生成任务guidance,open-domain 检测分割等任务上均有非常惊艳的表现,本文将对CLIP做一些初步的介绍。

2. CLIP模型简介

   CLIP的基本算法原理如下,为了对image和text建立联系,首先分别对image和text进行特征提取,image特征提取的backbone可以是resnet系列模型也可以是VIT系列模型,text特征提取目前一般采用bert模型,特征提取之后,由于做了normalize,直接相乘来计算余弦距离,同一pair对的结果趋近于1,不同pair对的结果趋近于0,因为就可以采用对比损失loss(info-nce-loss),熟悉这个loss的同学应该都清楚,这种计算loss方式效果与batch size有很大关系,一般需要比较大的batch size才能有效果。CLIP的模型如下图所示:

   CLIP 能够成功,并且很难自己复现的一个重要原因就是CLIP用了大量的训练数据以及训练资源,真的可以说是大力出奇迹。CLIP用了4亿的图像文本对进行训练。伪代码如下:

  • 编码 :通过图像&文本编码器,得分图像和文本特征。
  • 投影:首先通过投影矩阵将图像及文本特征映射到相同的维度大小,在进行L2 normalization (使得之后的点积操作直接等效于cosine similarity)
  • 相似度计算:点积运算计算文本-图像的cosine similarity,得到 n x n 矩阵的logits(模型预测),越接近1则说明模型预测该文本-图像对是配对的,否则不配对。
  • 计算loss:已知 logits 矩阵对角线的文本和图像是配对的,非对角线元素不配对,因此构造训练标签 np.arange(n),然后分别在图像维度(axis=0) 和文本维度(axis=1)计算loss。以图像维度为例简单说明一下这里的逻辑,因为在计算相似度的时候,图像特征矩阵@文本特征矩阵得到的 n x n 矩阵,第一个n 代表的图像,因此我们在axis=0 计算图像维度的loss。

3. CLIP模型优缺点总结

优点

  • zero-shot做得好,经过在400million大的未清洗的数据集上训练,在不同的数据集上表现还可以,可以自定义任务,而且效率很高。
  • 高效,虽然GPT3做zero-shot也很好,但是CLIP吃的资源少,计算量少,训练效率高。最好的一版CLIP只在256个GPU上训练两周就好了,跟目前图像领域的其他大模型都差不多。
  • 灵活和通用:因为他们直接从自然语言中学习广泛的视觉概念,CLIP明显比现有的ImageNet模型更灵活和通用。我们发现他们能够轻松地完成许多不同的任务。

缺点

  • 虽然CLIP通常在识别普通物体方面表现良好,但在更抽象或更系统的任务上却表现不佳。比如计算图像中物体的数量,以及在更复杂的任务上,比如预测照片中最近的汽车距离有多近。在这两个数据集上,零射剪辑只比随机猜测好一点点。与特定任务模型相比,Zero-shot CLIP在非常细粒度的分类上也很困难,比如区分汽车模型、飞机变体或花卉种类之间的区别。
  • 对于未包含在其预训练数据集中的图像,CLIP的泛化效果也很差。例如,尽管CLIP学习了一个有效的OCR系统,但当从MNIST数据集评估手写数字时,zero-shot CLIP仅达到88%的准确率,远低于数据集上99.75%的人的准确率。(其实还行,毕竟不是专门在MNIST上跑的)

4. CLIP模型开源方案

OPENAI方案:

github代码地址
论文介绍

中文CLIP方案:

中文clip
CLIP图片搜索演示Demo
CLIP视频搜索演示Demo

参考资料:CLIP介绍:连接图像与自然语言

深度学习--CLIP算法(文本搜图片,图片搜图片)相关推荐

  1. 动手深度学习13——计算机视觉:数据增广、图片分类

    文章目录 一.数据增广 1.1 为何进行数据增广? 1.2 常见图片增广方式 1.2.1 翻转 1.2.2 切割(裁剪) 1.2.3 改变颜色 1.2.4 综合使用 1.3 使用图像增广进行训练 1. ...

  2. 深度学习之自编码器(5)VAE图片生成实战

    深度学习之自编码器(5)VAE图片生成实战 1. VAE模型 2. Reparameterization技巧 3. 网络训练 4. 图片生成 VAE图片生成实战完整代码  本节我们基于VAE模型实战F ...

  3. 模块一:深度学习入门算法

    模块一:深度学习入门算法 1.深度学习必备知识 1.1深度学习要解决的问题 机器学习流程: 数据获取 -----> 特征工程 -----> 建立模型 ------> 评估与应用 特征 ...

  4. 从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具

    从参数数量视角理解深度学习神经网络算法 DNN, CNN, RNN, LSTM 以python为工具 文章目录 1. 神经网络数据预处理 1.1 常规预测情景 1.2 文本预测场景 2.全连接神经网络 ...

  5. Adam 那么棒,为什么还对 SGD 念念不忘?一个框架看懂深度学习优化算法

    作者|Juliuszh 链接 | https://zhuanlan.zhihu.com/juliuszh 本文仅作学术分享,若侵权,请联系后台删文处理 机器学习界有一群炼丹师,他们每天的日常是: 拿来 ...

  6. 用深度学习解决大规模文本分类问题

     用深度学习解决大规模文本分类问题 人工智能头条 2017-03-27 22:14:22 淘宝 阅读(228) 评论(0) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者 ...

  7. 图像重建算法_基于深度学习图像重建算法(DLIR)对CT图像质量和剂量优化的研究:体模实验...

    编者按:今年Joël Greffier博士等在European Radiology (IF 4.1)上发表了题为<Image quality and dose reduction opportu ...

  8. 深度学习前沿算法思想

    转自: 深度学习前沿算法思想 导读 第一版: 深度学习前沿算法思想 深度学习实践:使用Tensorflow实现快速风格迁移 行为识别:让机器学会"察言观色"第一步 第二版: 谷歌首 ...

  9. 深度学习优化算法,Adam优缺点分析

    优化算法 首先我们来回顾一下各类优化算法. 深度学习优化算法经历了 SGD -> SGDM -> NAG ->AdaGrad -> AdaDelta -> Adam -& ...

最新文章

  1. redhat 6.0 Enterprise企业版如何使用yum安装软件
  2. java dom4 引入_java – 使用dom4j从节点获取属性值
  3. 2021 AAAS Fellow名单出炉!图灵奖得主Yan LeCun、联想芮勇等多位人士入选
  4. RabbitMQ 简介
  5. ubuntu 安装eclipse neon版本
  6. erlang精要(19)-以函数作为参数的函数,返回函数的函数(2)
  7. 如何运行 SAP Spartacus cypress 端到端测试
  8. 中小企业上云多地域办公组网,建立高质量云上内网环境
  9. 支付宝集五福下周一开始;iPhone 面世 13 周年;Laravel 6.10.0 发布 | 极客头条
  10. android学生管理实例,学生管理系统-基于SQLite数据库的Android应用
  11. Tomcat8.5下载安装配置
  12. 远程桌面无法复制粘贴问题
  13. 百度天气预报API接口的一个坑
  14. java订单派单规则_重点解读 | 什么是派单?派单的好处有哪些?
  15. 给大家分享一些IT网课资源的学习网站啦
  16. Win11找不到wt.exe如何解决?
  17. lookupedit可编辑可选择
  18. 腾讯滨海大厦 智能楼宇 智慧建筑 3D可视化管理系统-优锘科技-ThingJS物联网开发案例... 1
  19. 手撕自动驾驶算法——IMU测量模型、运动模型、误差模型
  20. 2021-2027全球与中国植物基牛奶替代品市场现状及未来发展趋势

热门文章

  1. Tortoisegit图文使用教程
  2. 神经网络讲解与实例,神经网络讲解教案
  3. 华为交换机配置命令总结
  4. ctp java_上期CTP 封装JAVA API window Swig
  5. python生成list_python 使用循环生成list
  6. FFMPEG视音频编解码
  7. Easyx GetAsyncKeyState 实现小球移动 防止出界 设置界限 边界设定(easyx | vs2022 | c / c++)
  8. python3正则表达式匹配但不包括最后一个字符_正则表达式匹配不包含某些字符串的技巧...
  9. c语言 8位有符号整数,C语言中什么是一个8位的整数
  10. iOS - App Extension 整体总结