玩转C科技.NET

从学会做人开始认识这个世界!http://volnet.github.io

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

2023年5月7日 #

OpenAI CLIP 关键点 - 连接图像和文字

  • 标签: #CLIP #Image2Text #Text2Image #OpenAI
  • 创建时间:2023-04-21 00:17:52

基本原理

  1. CLIP是一个图像分类模型。
  2. 准备训练数据:准备大量的文本描述和图片的训练对,然后把进行对比训练。
  3. 文本描述和图片的训练对的数据获取:从互联网上获得400Million的图像文本数据对。这个 规模大致和GPT-2的数据规模相当。
    1. 好处1:数据获取容易。传统的做法会对图像进行分类,以ImageNet为例,获得图片后需要人工进行分类标注,这个周期长成本高。
    2. 好处2:迁移能力强。过去是精确分类一张图片,这样当出现一个未包含的图片的时候,在已知图片分类里就找不到对应的答案了。而CLIP因为训练的素材里面的描述是文本性的(而不是一两个单词的简单分类名称),因此它获得了更好的泛化能力。
  4. 因为有了这么大的数据,所以需要更好大量的算力,以及优质的算法。
    1. Text Encoder采用的是Transformer。
    2. Image Encoder采用的是Vision Transformer。
    3. 整个计算在256个V100 GPU上训练2周(12天),得出了ViT-L/14@336px模型。
  5. CLIP的设计初衷是为了能够做到零样本迁移(Zero-Shot)到下游数据集上的,也就是说,希望训练完的模型,在遇到一个完全没有见过的图片训练集的时候,可以进行高效的分类。为了达到这个零样本学习的能力:
    1. 研发人员摒弃了传统的数据集,因为传统的数据集通常是建立在明确分类基础上的,所以当一个新分类的图片出现的时候,这个模型就不知所措了。
    2. 把一般的分类换成一个描述性的文本,则可以比较好的解决这个问题。这里列出了他们准备文本描述的模板,通过这些模板,可以把一个带有歧义的单词,变成一个有意义的图像描述,比如论文里举例:boxer,当只提到这个词的时候,我们可能以为它是个拳击手,但是当结合了模板A photo of a {label}, a type of pet.(其中{label}替换成boxer)那么boxer就可以被理解为一种狗(其中在生成数据的时候,比如a type of pet部分也是可以自动拼进去的,比如图片本来就来自牛津词典宠物图片集,那么自然就可以增加这样的分类信息,这会进一步让图像识别变得更加精准)。
  6. 主要用途:图像搜索(基于文本)、自然语言描述图像等。
  7. 限制:参考论文P18(6. Limitations)
  8. 结果:CLIP在Zero-Shot的情况下,在大部分常见数据集上都比特定训练的模型表现的好。在一些特别的模型基础上,Zero-Shot可能不一定有很好的效果,但是进行Few-shot则比特定训练的模型表现要好,因此模型具备很强的迁移能力。
  9. 引发的思考:
    1. 数据量大,就可以获得不一样的研究方法和模型效果。其实CLIP用到的方法并不新鲜,前人也有用过类似的方法,但是因为没有采用这么大的数据量,所以没有达到SOTA的效果。
    2. 模型的输入输出都变成了token,也可以理解都都是文本,它和NLP领域的GPT模型带来的颠覆性相似。
    3. 因为是一般性的文本描述,而不是特定分类描述,所以模型具备了多模态的特性。
    4. 因为是一般性的文本描述,所以模型可以用于自然语言描述图像。
  10. 这个项目的训练方法没有开源,但是训练结果的模型开源了。

基于CLIP延展的项目

  1. StyleCLIP:变化发型、眼睛等。
  2. CLIPDrawCLIPDraw: Exploring Text-to-Drawing Synthesis through Language-Image Encoders 可以通过CLIP绘制一些蜡笔画。
  3. Paper:Open-Vocabulary Object Detection Using Captions 基于字幕的开放词汇目标检测 目标检测。
  4. Contrastive Language-Image Forensic Search 基于文本对视频中的内容进行检索。

参考资料

  1. Paper: Learning Transferable Visual Models From Natural Language Supervision 从自然语言监督中学习可迁移的视觉模型
    1. CLIP 论文逐段精读【论文精读】
  2. OpenAI | CLIP: Connecting text and images CLIP:连接文本和图像

转载请注明出处:https://www.cnblogs.com/volnet/p/openai-clip.html

posted @ 2023-05-07 23:10 volnet(可以叫我大V) 阅读(378) 评论(0) 推荐(1) 编辑

【笔记】跟吴恩达和IsaFulford学提示词工程(初级开发者入门课程)

摘要: Prompt提示词很重要,有品牌的提示词也难得,看看专业人士观察的重点是什么。 阅读全文

posted @ 2023-05-07 10:10 volnet(可以叫我大V) 阅读(396) 评论(0) 推荐(1) 编辑

2018年4月17日 #

MacOS使用Charles抓去HTTPS数据

摘要: 1、安装Charles,示例版本为4.0.1 2、Proxy Proxy Settings 3、MacOS Terminal ifconfig 获取本机IP地址,如192.168.1.14。 按照上一步骤的设置,代理地址就是192.168.1.14:8888 4、手机(iOS系统),设置 无线局域网 阅读全文

posted @ 2018-04-17 23:16 volnet(可以叫我大V) 阅读(2844) 评论(1) 推荐(0) 编辑

2016年10月10日 #

在浏览器的JavaScript里new Date().toUTCString()后,传递给C# DateTime().TryParse()会发生什么?

摘要: Format 1. Sun, 09 Oct 2016 13:24:35 GMT Format 2. Sun, 9 Oct 2016 13:36:09 UTC Format 1 是在IE里面产生的(Windows10下的Edge和IE已经使用Format2) Format 2 是Edge/Firefo 阅读全文

posted @ 2016-10-10 00:38 volnet(可以叫我大V) 阅读(809) 评论(0) 推荐(0) 编辑

2016年9月4日 #

如何安装Docker UCP

摘要: ```bash parallels@ubuntu:~/Downloads/Docker$ ls DTR UCP parallels@ubuntu:~/Downloads/Docker$ sudo openssl req -out ca.pem -new -x509 Generating a 2048 bit RSA private key ............................... 阅读全文

posted @ 2016-09-04 10:21 volnet(可以叫我大V) 阅读(559) 评论(0) 推荐(0) 编辑

2016年8月4日 #

Git凭证存储(简单易懂,一学就会,认真看)

摘要: 今天给自己提了一个问题,当我们在github.com或者gitlab上面新建仓库,并克隆到本地,首次使用的时候,会被问及用户名密码,但是这两个信息存在哪里呢? 带着这个问题,我开始搜索,并在 "《Pro Git》7.14 Git 工具 凭证存储" 中读到了完整的解答,但是当我第一次阅读的时候,并没有 阅读全文

posted @ 2016-08-04 20:38 volnet(可以叫我大V) 阅读(43313) 评论(0) 推荐(4) 编辑

2016年7月26日 #

重启Ubuntu后Hadoop的namenode起不来的解决办法‬

摘要: 因为Ubuntu每次重启之后都会将/tmp目录清空,而默认配置下每次hadoop name node -format总是将数据信息定位到/tmp/hadoop-${user.name}中,因此需要修改etc/hadoop/core-sites.xml文件,增加property指定临时目录到别的目录。 阅读全文

posted @ 2016-07-26 22:38 volnet(可以叫我大V) 阅读(1125) 评论(0) 推荐(0) 编辑

2016年6月15日 #

ASP.NET 上传文件最大值调整

摘要: 首先,最容易找到的是web.config下面配置: 这么设置会将请求的尺寸从默认4MB(4096KB)提升到50MB(51200KB)。 但是,如果只是这么设置的话,你会发现你的最大上传尺寸会停止在28.6MB,更大的文件上传,将返回404.13,表示内容长度过大。 原因在于IIS的默认设置,限定了 阅读全文

posted @ 2016-06-15 19:58 volnet(可以叫我大V) 阅读(1860) 评论(0) 推荐(0) 编辑

2016年6月2日 #

Git撤销提交

摘要: 本文链接:http://volnet.github.io/#!docs/git/reset-to-old-version.md 在使用Git进行版本管理的时候,经常会遇到一些错误的提交。 在开始演示之前,我们先建立一个测试的环境。 方法一:git revert(推荐) 推荐理由:git revert 阅读全文

posted @ 2016-06-02 23:03 volnet(可以叫我大V) 阅读(1411) 评论(0) 推荐(0) 编辑

2016年5月25日 #

MVC模式下如何实现RegisterStartupScript等功能

摘要: 本文源于http://www.achtmaal.com/blog/asp-net-mvc-and-registerclientscriptinclude,非常感谢原文作者的智慧和分享 RegisterStartupScript系列的向前台输出脚本的方法,是基于WebForm的,在MVC日益盛行的时代 阅读全文

posted @ 2016-05-25 21:52 volnet(可以叫我大V) 阅读(1229) 评论(0) 推荐(0) 编辑

使用Live Messenger联系我
点击右上角即可分享
微信分享提示