【计算机视觉】CLIP:语言-图像表示之间的桥梁

news/2024/7/8 2:50:57 标签: 计算机视觉, 人工智能, CLIP, 语言模型

文章目录

  • 一、前言
  • 二、架构
  • 三、应用
    • 3.1 图像分类
    • 3.2 图像描述
    • 3.3 文本到图像
  • 四、总结

一、前言

最近GPT4的火爆覆盖了一个新闻:midjourney v5发布,DALLE2,midjourney都可以从文本中生成图像,这种模型要求人工智能同时理解语言和图像数据。

传统的基于人工智能的模型很难同时理解语言和图像。因为自然语言处理和计算机视觉一直被视为两个独立的领域,这使得机器在两者之间进行有效沟通具有挑战性。

然而CLIP的多模态架构通过在相同的潜在空间中学习语言和视觉表现在二者之间建立了桥梁 。因此,CLIP允许我们利用其他架构,使用它的“语言-图像表示”进行下游任务。

CLIP是一个基于超大数据量的pair-wise 预训练模型但是在它的下游任务DalleE-2,Stable-Diffusion中,CLIP也是其中打通文本和图像的核心模块,比如开源的SD2就是使用了OpenCLIP来学习二者的表示,因此了解CLIP是深入了解后续扩散模型非常重要的一环,所以今天来主要介绍一下CLIP

Contrastive Language-Image Pre-training (CLIP)利用自然语言描述图像的数据,训练了一个同时对图像和文本具有深度理解能力的神经网络模型。通过使用自然语言作为监督信号,CLIP 可以自然地跨越多个视觉和语言数据集,且具有较强的可迁移性。CLIP 可以与最先进的视觉和语言模型相媲美,且可以在多个视觉和语言任务上进行零样本学习。

二、架构

CLIP架构由两个主要组件组成:图像编码器和文本编码器。每个编码器都能够分别理解来自图像或文本的信息,并将这些信息嵌入到向量中。

CLIP的思想是在图像-文本对的大型数据集中训练这些编码器,并使嵌入变得相似。

在这里插入图片描述

“给定一批N(图像,文本)对,CLIP被训练来预测一批中N × N个可能的(图像,文本)对中哪一个是真实的实匹配。”它通过联合训练编码器来学习多模态嵌入空间,对N个图像和文本嵌入进行余弦相似度的计算,最大小化正确的匹配,最大化不正确的匹配。

由于CLIP是在一个大的预训练数据集上训练的,它可以很好地泛化许多下游任务。CLIP为我们提供了两个编码器,可以将文本和图像嵌入到相同的潜在空间中,所以我们可以有效地将其用于许多应用程序。

三、应用

以下是一些使用CLIP的下游任务示例:

3.1 图像分类

CLIP可用于图像分类任务,CLIP将图像与其对应的文本描述相关联的能力使其能够很好地泛化到新的类别,并与其他图像分类模型相比提高性能。

比如说HuggingFace提供了的这个简单的例子:

 from PIL import Image
 import requests
 
 from transformers import CLIPProcessor, CLIPModel
 
 model = CLIPModel.from_pretrained("openai/clip-vit-base-patch32")
 processor = CLIPProcessor.from_pretrained("openai/clip-vit-base-patch32")
 
 url = "http://images.cocodataset.org/val2017/000000039769.jpg"
 image = Image.open(requests.get(url, stream=True).raw)
 
 inputs = processor(text=["a photo of a cat", "a photo of a dog"], images=image, return_tensors="pt", padding=True)
 
 outputs = model(**inputs)
 logits_per_image = outputs.logits_per_image  # this is the image-text similarity score
 probs = logits_per_image.softmax(dim=1)  # we can take the softmax to ge

3.2 图像描述

CLIP可用于图像描述任务,利用它将图像与相应的文本描述相关联的能力,我们可以将CLIP与其他序列到序列模型结合起来,使用CLIP的嵌入来生成标题等。我们可以参考我们的CoCa(对比字幕),或者CLIPCap,它将CLIP与GPT模型结合起来生成字幕。

3.3 文本到图像

CLIP在文本到图像生成上下文中的一个有趣应用是潜在扩散模型。该模型使用CLIP作为一种方法来指导从文本描述中生成逼真的图像。

在潜在扩散模型中使用CLIP有几个优点。首先,它允许模型生成更忠实于文本描述的图像,因为CLIP可以就生成的图像和文本描述之间的语义相似性提供反馈。其次,它允许模型生成更多样化和更有创造性的图像,因为CLIP可以引导生成过程朝着不太常见但仍然合理的图像表示。

CLIP处理图像和文本输入的能力及其预训练过程使其成为各种领域中下游任务的多功能和强大的工具。

四、总结

CLIP 将语言和图像表示合二为一的能力为许多应用打开了大门。虽然我们人类可以感知不同类型的数据,包括文本、数据、音频等。但是过去基于 AI 的模型已经显示出它们只能理解一种模态的弱点。有了 CLIP,我们可以想象一个未来,人工智能模型可以像我们一样“理解”这个世界。


http://www.niftyadmin.cn/n/169371.html

相关文章

7.docker入门到精通—DockerFile解析与案例

一、是什么?Dockerfile 是用来构建 Docker 镜像的文本文件,是由一条条构建镜像所需的指 令和参数构成的脚本。官网https://docs.docker.com/engine/reference/builder/构建三步骤编写 Dockerfile 文件 docker build 命令构建镜像 docker run 依镜像运行容…

RHEL8.7操作系统安装详解,配置yum源

RHEL8.7镜像下载: 官方网站:https://www.redhat.com/zh 在vmware 中点击“创建新的虚拟机” 一、安装虚拟机指导 1、第一步选择典型类型配置 2、选择稍后安装系统 3、客户机操作系统选择RHEL8 64位,这一步很重要 4、下一步命名虚拟机&#…

哈夫曼编码、哈夫曼树

已知一个文件中出现的各字符及其对应的率如下表所示。若采用定长编码,则该文件中字符的码长应为( )。若采用Huffman编码,则字符序列face的编码应为( ) 字符abcdef频率4513121695码长决定了可以显示几位字符,题中一共有6位&#x…

我的 System Verilog 学习记录(11)

引言 本文简单介绍 SystemVerilog 的其他程序结构。 前文链接: 我的 System Verilog 学习记录(1) 我的 System Verilog 学习记录(2) 我的 System Verilog 学习记录(3) 我的 System Verilo…

rtthread中使用sqlite

一、简介 SQLite是一款嵌入式、轻量级的关系型数据库系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它。它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它也可以支持互联网上的小型服务器…

redis的对象(如何将redis的数据结构和数据类型联合起来)

引言 Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象 通过这五种不同类型的对象,Redis可以在执行命令…

基于Java+SpringBoot+vue的毕业生信息招聘平台设计和实现【源码+论文+演示视频+包运行成功】

博主介绍:专注于Java技术领域和毕业项目实战 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案例(200套) 目录 一、效果演示 二、…

Lazada、速卖通、Shopee、阿里国际如何提升流量?测评自养号优势。

Lazada、Shopee、速卖通、阿里国际跨境电商平台上面每天都会上架很多新品,新品是没什么数据支撑的,所以热度会比较低,这就需要卖家好好思考一下该怎么提升? 1、优化标题关键词 标题关键词可以在很大程度上影响产品的显示&#x…