AIGC系列之:CLIP和OpenCLIP

这篇具有很好参考价值的文章主要介绍了AIGC系列之:CLIP和OpenCLIP。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

模型背景

CLIP模型介绍

相关资料

原理和方法

Image Encoder

Text Encoder

对比学习

预训练

Zero Shot预测

优势和劣势

总结

OpenClip模型介绍

相关资料

原理

结果

用法

模型总结


模型背景

Stable Diffusion主要由三个核心模块组成:

  • Text Encoder(文本编码器)

  • Image Information Creator(图像信息生成器)

  • Image Decoder(图像生成器)openclip模型,AIGC,深度学习,AIGC,StableDiffusion,CLIP,OpenCLIP,图像生成,人工智能,计算机视觉

        文本编码器负责处理语义信息。通常是利用CLIP(v1版本)、OpenCLIP(v2版本)等模型将人类语言(文字)编码为计算机语言(语义向量)。训练CLIP(OpenCLIP)则需要一个图文配对的数据集。数据集来自LAION-5B,由50亿个图片以及图片对应的标签组成。包含23.2亿的英文描述,22.6亿个100+其他语言以及12.7亿的未知语。

openclip模型,AIGC,深度学习,AIGC,StableDiffusion,CLIP,OpenCLIP,图像生成,人工智能,计算机视觉

CLIP模型介绍

        CLIP(Contrastive Language-Image Pretraining), 是OpenAI利用4亿张互联网上找到的图片,以及图片对应的Alternative文字训练的多模态模型。不仅可以拿来做常见的图片分类、目标检测,也可用来优化业务场景的商品搜索和内容推荐。CLIP能够基于视觉和语言相互关联的方式,实现无监督或弱监督的图像分类任务,并在多项视觉和语言任务中取得了优异的性能。Stable Diffusion V1中使用OpenAI的CLIP的 ViT-L/14进行文本嵌入。

相关资料

  论文地址:https://arxiv.org/pdf/2103.00020.pdfarxiv.org/pdf/2103.00020.pdf

  代码地址:https://github.com/OpenAI/CLIPgithub.com/OpenAI/CLIP

  官方解读博客:https://openai.com/research/clipopenai.com/research/clip

  一些好的博客:

  https://zhuanlan.zhihu.com/p/625165635

  https://juejin.cn/post/7264503343996747830

  https://juejin.cn/post/7241859817563389989

原理和方法

        CLIP模型的核心思想是将视觉和语言的表示方式相互联系起来从而实现图像任务。CLIP模型由两个主体部分组成:Text Encoder和Image Encoder。这两部分可以分别理解成文本和图像的特征提取器。CLIP模型采用了对比学习(Contrastive Learning)和预训练(Pre-Training)的方法,使得模型能够在大规模无标注数据上进行训练,并学习到具有良好泛化能力的特征表示。

Image Encoder

        对于 Image Encoder,CLIP使用“ViT-L/14@336px”这个模型,也就是架构为Large,patch_size = 14的ViT,同时在整个CLIP预训练结束后,用更高分辨率(336*336)的图片做了一个epoch的fine-tune,目的是让CLIP能涌现出更好的效果。与Text Encoder类似,每张图片对应一个最终特征表示向量Ii。

Text Encoder

        对于 Text Encoder,使用改进版的 Transformer,一个带有8个注意头的 63M 参数的12层512宽 Transformer 模型,CLIP借鉴的是GPT2的架构。对于每条prompt,在进入Text Encoder前,都会添加表示开始和结束的符号[SOS][EOS]。最终将最后一层[EOS]位置的向量作为该prompt的特征表示向量。然后通过 LN,后接 Linear 层投影到多模态空间中。

对比学习

          对比学习是一种学习相似性度量的方法,是通过将同一组数据中的不同样本对进行比较,来学习它们之间的相似度或差异度。在CLIP模型中,对比学习被用来训练模型学习视觉和语言的相互关系。CLIP模型将图像和文本映射到同一表示空间,并通过对比不同图像和文本对之间的相似性和差异性进行训练,从而学习到具有良好泛化能力的特征表示。假设一个batch中共有N对<图像,文字>对,那么它们过完各自的Encoder后,就会分别产生:

  • N条文字向量[T1,T2,...,TN]

  • N条图片向量[I1,I2,...,IN]

        这两组向量,将会分别过一次多模态Embedding(multimodal embedding) ,也就是在图中代表文字的紫色向量下,还有一层参数Wt(图中没有画出来),文字向量需要先和Wt做矩阵相乘后,才能得到最终的文字向量。对图片向量,同理也有个对应的Wi。Wt,Wi 的作用是把文字、图片特征投影到多模态的特征空间中去

       如图所示,给定一个 Batch 的 N 个 (图片,文本) 对,图片输入给 Image Encoder 得到表征 I1, I2, ..., IN ,文本输入给Text Encoder得到表征 T1, T2, ..., TN, 然后通过“对比学习”,找到图像和文字的相似关系。对于图中列出的N*N个格子,只需计算每个格子上对应的向量点积(余弦相似度)。由于对角线上的图片-文字对是真值,希望对角线上的相似度可以最大,据此可设置交叉熵函数,来求得每个batch下的Loss。

openclip模型,AIGC,深度学习,AIGC,StableDiffusion,CLIP,OpenCLIP,图像生成,人工智能,计算机视觉

预训练

        预训练是指在大规模无标注数据上训练模型,使其学习到通用的特征表示。在CLIP模型中,预训练包括两个阶段:视觉预训练和视觉-语言预训练。

  • 视觉预训练:在大规模无标注图像数据上训练模型,使其学习到视觉特征表示。在视觉预训练阶段,CLIP模型使用对比学习的方法,将不同图像对进行比较,从而学习到具有区分度的视觉特征。CLIP模型使用了一个基于Transformer的编码器来将图像转换为特征表示,然后通过对比学习使得同一张图像的不同裁剪或变换间距离更近,不同图像间距离更远。这样模型就能学习有区分度的视觉特征表示。

  • 视觉-语言预训练:在大规模无标注图像和文本数据上训练模型,使其学习到视觉和语言的相互关系。在视觉-语言预训练阶段,CLIP模型使用了对比学习和跨模态对比学习的方法,使得模型能够学习到视觉和语言的相互关系。CLIP模型使用了一个基于Transformer的编码器将图像和文本转换为特征表示,并通过对比学习的方法,使得相同含义的不同图像和文本之间的距离更近,而不同含义的图像和文本之间的距离更远。这样模型就能学习到有良好泛化能力的视觉和语言特征表示,并用于各种视觉和语言任务中。

Zero Shot预测

        Zero-Shot 预测如下图所示,当做完模型对比学习和预训练后,就能用模型进行zero-shot预测:

  • 首先,创建一个标签全集,如图中(2)所示,并得到每一个标签的特征向量

  • 然后,取一张图片,如图中(3)所示,过Image Encoder后得到该图片的特征向量

  • 最后,计算图片向量和文字向量间的相似度,取相似度最高的那条label即可。openclip模型,AIGC,深度学习,AIGC,StableDiffusion,CLIP,OpenCLIP,图像生成,人工智能,计算机视觉

优势和劣势

        CLIP模型优势:

  • 无监督或弱监督的学习方法:CLIP模型采用了对比学习和预训练的方法,使得模型能够在大规模无标注数据上进行训练,并学习到具有良好泛化能力的特征表示,因此不需要大量标注数据。

  • 泛化能力强:CLIP模型能够学习到具有良好泛化能力的特征表示,并在多项视觉和语言任务中取得优异性能。

  • 可解释性好:CLIP模型使用了一个基于Transformer的编码器,能够对输入的图像和文本进行编码,并输出对应的特征表示,因此具有很好的可解释性。

  CLIP模型劣势:

  • 计算资源消耗大:由于CLIP模型采用了大规模无标注数据进行训练,并使用了较大的模型,因此需要大量计算资源进行训练和推理。

  • 文字标签是个闭集:模型预测一张新的图像,只能从已有的标签集合中找出最相似的,不能预测一个新标签。

总结

        通过 CLIP 模型,可以对任意物品名称进行零样本分类,还能进行零样本的目标检测。而文本和图片在同一个向量空间的这个特性,也能够直接利用这个模型进一步优化商品搜索功能。可以拿文本的向量,通过找到余弦距离最近的商品图片来优化搜索的召回过程。也能直接拿图片向量,实现以图搜图这样的功能。

OpenClip模型介绍

        CLIP 使计算图像和文本的表示形式以测量它们的相似程度成为可能。CLIP 模型以自我监督的方式在数亿或数十亿图像-文本对上进行训练。例如:LAION-5B 数据集,包含 58 亿个密切相关的图像-文本对。2022 年 9 月,LAION机构利用这个数据集的 OpenCLIP 项目,对CLIP论文完成了开源实现即OpenCLIP。在 ImageNet数据集上,原版OpenAI CLIP的准确率只有75.4%,而OpenCLIP实现了80.1% 的zero-shot准确率,在 MS COCO 上实现了74.9% 的zero-shot图像检索(Recall@5),这也是目前性能最强的开源 CLIP 模型。

        2022年11月,OpenAI发布了Stable Diffusion 2.0。与最初的v1版本相比,Stable Diffusion 2.0版本使用全新的文本编码器(OpenCLIP)训练文本到图像模型,这大大提高了生成图像的质量。与SD 1.0中所使用的含有630万文本模型参数的ClipText相比,OpenCLIP文本模型参数多达3.54亿。此版本的文生图模型可以生成默认分辨率为512x512像素以及768x768像素的图像。此外,该模型在LAION-Aesthetics(LAION-5B的美学子集)进行训练。与v1版本不同的是,v2版本使用LAION的NSFW(色情和性内容过滤器)过滤掉了数据集中的成人内容。

相关资料

OpenCLIP源码地址:GitHub - mlfoundations/open_clip: An open source implementation of CLIP.

官网介绍:https://laion.ai/blog/giant-openclip/

原理

        LAION 使用 OpenCLIP 训练了三个大型 CLIP 模型:ViT-L/14、ViT-H/14 和 ViT-g/14(与其他模型相比,ViT-g/14 的训练周期仅为三分之一左右),并在其官方网站上称它自己是当年开源 CLIP 模型之最佳,OpenCLIP原理和CLIP一样,只是在不同数据集上的实现,如下图所示:

openclip模型,AIGC,深度学习,AIGC,StableDiffusion,CLIP,OpenCLIP,图像生成,人工智能,计算机视觉

结果

openclip模型,AIGC,深度学习,AIGC,StableDiffusion,CLIP,OpenCLIP,图像生成,人工智能,计算机视觉

openclip模型,AIGC,深度学习,AIGC,StableDiffusion,CLIP,OpenCLIP,图像生成,人工智能,计算机视觉

用法

pip install open_clip_torch
import torch from PIL 
import Image 
import open_clip 

model, _, preprocess = open_clip.create_model_and_transforms('ViT-B-32', pretrained='laion2b_s34b_b79k') 
tokenizer = open_clip.get_tokenizer('ViT-B-32') 

image = preprocess(Image.open("CLIP.png")).unsqueeze(0) 
text = tokenizer(["a diagram", "a dog", "a cat"]) 

with torch.no_grad(), torch.cuda.amp.autocast(): 
      image_features = model.encode_image(image) 
      text_features = model.encode_text(text) 
      image_features /= image_features.norm(dim=-1, keepdim=True) 
      text_features /= text_features.norm(dim=-1, keepdim=True) 
      text_probs = (100.0 * image_features @ text_features.T).softmax(dim=-1) 
      print("Label probs:", text_probs) # prints: [[1., 0., 0.]]

模型总结

  1. 二者都是OpenAI公司开发的,CLIP是2021年初发布,是多模态研究领域的经典之作,在多任务表现上达到了SOTA 。2022年9月发布OpenCLIP,包含三个大规模CLIP模型:ViT-L/14, ViT-H/14 和ViT-g/14。

  2. CLIP是指CLIP模型本身,而OpenCLIP则是指CLIP模型的开源实现。两者有着紧密的联系,OpenCLIP是对CLIP模型的应用和推广,使更多的人可以使用CLIP模型进行相关的研究和开发。

  3. CLIP利用4亿张互联网上找到的图片对应的Alternative文字训练的多模态模型。OpenCLIP在 LAION-5B的美学子集进行训练。与v1版本不同的是,v2版本使用LAION的NSFW过滤掉了数据集中的成人内容。

  4. Stable Diffusion 1.0中所使用ClipText的含有630万文本模型参数。Stable Diffusion 2.0版本使用的OpenCLIP文本模型参数多达3.54亿。

  5. 使用OpenCLIP版本的SD2.0文生图模型可以生成默认分辨率为512x512像素以及768x768像素的图像,而使用CLIP版本的SD1.0文生图模型只能生成默认分辨率为512x512像素的图像。文章来源地址https://www.toymoban.com/news/detail-761724.html

到了这里,关于AIGC系列之:CLIP和OpenCLIP的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【AIGC】7、CLIP | OpenAI 出品使用 4 亿样本训练的图文匹配模型

    论文:Learning Transferable Visual Models From Natural Language Supervision 代码:https://github.com/OpenAI/CLIP 官网:https://openai.com/research/clip 出处:OpenAI 时间:2021.02 贡献: 基于图文匹配,不受限于分类类别,有很强的扩展性!!!这是 CLIP 最炸裂的地方,彻底摆脱了预定义标签列表了 不仅仅

    2024年02月08日
    浏览(49)
  • Docker AIGC等大模型深度学习环境搭建(完整详细版)

    本文是《Python从零开始进行AIGC大模型训练与推理》(https://blog.csdn.net/suiyingy/article/details/130169592)专栏的一部分,所述方法和步骤基本上是通用的,不局限于AIGC大模型深度学习环境。         Docker AIGC等大模型深度学习环境搭建步骤主要包含如下步骤: CUDA驱动更新 Dock

    2024年02月06日
    浏览(66)
  • AIGC零基础30天学习——CLIP与zero-shot

           在前面对CLIP的学习中,对 zero-shot prediction 环节一直有一些疑惑,zero-shot是什么,它该如何进行操作?     zero-shot是指零样本学习,和zero-shot相关联的概念包括many-shot、few-shot和one-shot,这些其实都是从训练集样本类型、测试集样本类型和对应的样本数量角度进行划分

    2024年02月09日
    浏览(41)
  • 【深度学习】clip-interrogator clip docker 容器启动过程

    给一张图片,输出图片描述。 只有从dockerfile制作的镜像才有分层结构,加速传输,故第一步需要编写dockerfile,过程是不断调试的,下面是一些制作过程中写的dockerfile片段,可以参考一下语句和写法: 比较重要的是最后一个dockerfile,可以通过kevinchina/deeplearning:sd_base_cuda116

    2024年02月07日
    浏览(37)
  • 深度学习系列53:大模型微调概述

    参考系列文章:https://zhuanlan.zhihu.com/p/635152813 github链接:https://github.com/liguodongiot/llm-action 下面这种instructive learning,在模型参数达到80亿后,会发生质的提升: 类似的还有手写prompt 然后可以推广到绿色的新任务上: fine-tuning指的是预训练模型下游接新的MLP,然后全量参数微调

    2024年02月21日
    浏览(43)
  • 如何向大模型ChatGPT提出问题以获得优质回答:基于AIGC和深度学习的实践指南

    提示工程 | 高性能计算 | ChatGPT 深度学习 | GPU服务器 |Ibrahim John 在当今信息爆炸的时代,人们对于知识获取的需求日益增长。特别是在深度学习、高性能计算和人工智能领域,这些前沿技术的不断发展让人们对其应用场景和实现方法有了更多的探索和研究。其中,作为一种基

    2024年02月04日
    浏览(64)
  • 深度学习系列60: 大模型文本理解和生成概述

    参考网络课程:https://www.bilibili.com/video/BV1UG411p7zv/?p=98spm_id_from=pageDrivervd_source=3eeaf9c562508b013fa950114d4b0990 包含理解和分类两大类问题,对应的就是BERT和GPT两大类模型;而交叉领域则对应T5 传统IR方法BM25基于tf-idf,介绍如下 根据单词去匹配有两类问题:有时候同一个词有很多意

    2024年02月22日
    浏览(37)
  • 深度学习系列29:VQ-GAN模型

    发表于2021年,来自德国海德堡大学IWR研究团队。最大的亮点在于其可以生成百万像素级别的图片。 VQGAN的突出点在于其使用codebook来离散编码模型中间特征,并且使用Transformer(GPT-2模型)作为编码生成工具。codebook的思想在VQVAE中已经提出,而VQGAN的整体架构大致是将VQVAE的编

    2024年02月04日
    浏览(38)
  • 深度学习系列61:在CPU上运行大模型

    https://github.com/Mozilla-Ocho/llamafile 直接下载就可以用,链接为:https://huggingface.co/jartine/llava-v1.5-7B-GGUF/resolve/main/llava-v1.5-7b-q4.llamafile?download=true 启动:./llava-v1.5-7b-q4.llamafile -ngl 9999,然后浏览器上就有一个聊天窗口了。 也可使用openai的python接口调用: 目前支持的模型: 也可以使

    2024年03月12日
    浏览(58)
  • 【深度学习】GPT系列模型:语言理解能力的革新

    自然语言理解包括一系列不同的任务,例如文本蕴涵、问答、语义相似度评估和文档分类。尽管大量的未标记文本语料库很充足,但用于学习这些特定任务的标记数据却很稀缺,使得判别式训练模型难以达到良好的表现。 我们证明,在多样化的未标记文本语料库上进行生成式

    2024年02月08日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包