CLIP:语言-图像表示之间的桥梁

news2024/11/18 15:22:12

最近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的下游任务示例:

1、图像分类

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

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

 fromPILimportImage
 importrequests
 
 fromtransformersimportCLIPProcessor, 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 get the label probabilities

2、图像描述

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

3、文本到图像

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

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

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

总结

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

https://avoid.overfit.cn/post/497e7334429f421394dac28bdefe18b3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/419323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一练——Day 13

前言: 小亭子正在努力的学习编程,接下来将开启编程题的练习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 第一题 题目描述: 刷…

一篇文章搞懂Docker、DockerCompose

文章目录1、初识Docker1.1、项目部署的问题1.2、Docker如何解决依赖的兼容问题的?1.3.Docker解决操作系统环境差异1.4、Docker如何解决不同系统环境的问题?1.5、小总结2、Docker 和虚拟机的区别3、Docker架构3.1、镜像和容器3.2、DockerHub3.3、Docker架…

2023年最强手机远程控制横测:ToDesk、向日葵、Airdroid三款APP免Root版本

前言 随着远程办公和远程协作的日益普及,跨设备、系统互通的远程控制软件已经成为职场人士不可或缺的工具之一。在国内,向日葵和ToDesk是最著名的远程控制软件;而在国外,则有微软远程桌面、AirDroid、TeamViewer、AnyDesk、Parse…

【移动端】fiddler配置及使用

文章目录安装配置桌面端配置移动端配置Android 手机上的配置苹果手机上的配置使用视图功能区域栏图标说明相关问题来源Fiddler是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。当Fiddler退出的时候它会自动注销,这样就不…

linux 消息队列 msgget/msgsnd/msgrecv

专栏内容:linux下并发编程个人主页:我的主页座右铭:天行健,君子以自强不息;地势坤,君子以厚德载物.目录 前言 概述 原理 消息队列的大小 查看资源 接口 代码演示 结尾 前言 本专栏主要…

Git记录

Git日常命令 版本管理 git tag 删除本地tag git tag --delete v4.2.1推送本地标签 git push origin v4.2.1创建本地标签 git tag v4.2.1 分支管理 远程仓库地址管理 远程地址添加 意外着我可以将一个项目添加多个远程的仓库地址,只不过需要注意的一点就是git …

mysql数据表操作

1、alter 修改表名 : alter table 旧表名 rename as 新表名添加字段 : alter table 表名 add字段名 列属性[属性]修改字段 : alter table 表名 modify 字段名 列类型[属性]alter table 表名 change 旧字段名 新字段名 列属性[属性]删除字段 : alter table 表名 drop 字段名2、…

多目标柔性生产作业车间——反世代距离(IGD)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录反世代距离IGD概念收敛性能以及分布性能举例计算反世代距离IGD概念 反世代距离是一个综合性能的评价指标,主要是应用至求解多目标问题中,评价…

Java企业级开发学习笔记(2.3)利用MyBatis实现关联查询

该文章主要为完成实训任务,详细实现过程及结果见【http://t.csdn.cn/ZVEZd】 文章目录一、创建数据库表1.1 创建教师表1.2 创建班级表1.3 创建学生表二、创建于数据库表对应的实体类2.1 创建教师实体类2.2 创建学生实体类2.3 创建班级实体类三、创建班级映射器配置文…

Leetcode394 字符串解码 递归和非递归

字符串解码 https://leetcode.cn/problems/decode-string/ 给定一个经过编码的字符串,返回它解码后的字符串。 编码规则为: k[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。 你可以认为输入字符串总是有效…

你搞清楚了吗?| GET请求方式的长度限制到底是多少?

目录 📍 浏览器限制 📍 服务器限制 在大多数人的一贯认识中,一直认为get请求方式有2048B的长度限制,其实这种说法是有失偏颇的,甚至可以说是错误的。 这个问题一直以来似乎是被N多人误解,其实Http Get方…

2.3-3单链表的查找

按位查找: so easy (1)边界情况 i0 没有循环,直接返回头节点 (2)如果i8 当不合法,返回NULL. (3)普通情况i3;(平均时间复杂度为O(n)) 进行封装:避免重复,更加简洁更…

CRYSTALS-Dilithium

文章目录简介1和2版本区别2和3的区别1.介绍1.1基本方法概述密钥生成算法签名过程验证1.2Dilithium实现注意事项安全性。基础操作环操作模约简。元素的大小NTT域表示2.3 HashingsignatureGenζ ← {0,1}256\{{0, 1\}}^{256}{0,1}256(ρ, ρ, K) ∈ {0,1}256\{{0, 1\}}^{256}{0,1…

【springBoot篇2】springBoot日志篇

目录 一、日志有什么作用 作用1:快速定位问题的所在之处(最主要) 作用2:记录用户的登录日志 作用3:记录系统的操作日志 作用4:记录方法的执行时间 二、日志怎样使用 ①先得到日志对象(slf4j的Logger对象) ​​​编辑 ②根…

Python 无监督学习实用指南:1~5

原文:Hands-on unsupervised learning with Python 协议:CC BY-NC-SA 4.0 译者:飞龙 本文来自【ApacheCN 深度学习 译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。 不要担心自己的形象,只关…

docker运行服务端性能监控系统Prometheus和数据分析系统Grafana

文章目录一、Prometheus的安装和运行1、使用docker拉取镜像2、创建prometheus.yml文件3、启动容器4、查看启动是否成功5、记录安装过程中出现的错误二、Grafana的安装和运行1、使用docker拉取镜像2、创建grafana3、运行grafana4、查看grafana运行日志5、登录grafana一、Prometh…

学会了selenium 模拟鼠标操作,你就可以偷懒点点点了

目录:导读 前言 01.ActionChains 类常用方法 02.ActionChains 类所有方法 03.ActionChains 使用步骤 04.实战 05.总结 前言 我们在做 Web 自动化的时候,有时候页面的元素不需要我们点击,值需要把鼠标移动上去就能展示各种信息。 这个…

云服务器开启声音的办法

云服务器开启声音的办法 淘小云 云计算从业者,架构师 ​关注 云服务器没有声音是一件很烦恼的事情,那么今天小编给大家分享一下服务器开启声音的方法! 首先您需要先拥有一台windows系统的云服务器,小编这里以腾讯云服务器为例…

( “树” 之 DFS) 687. 最长同值路径 ——【Leetcode每日一题】

687. 最长同值路径 给定一个二叉树的 root ,返回 最长的路径的长度 ,这个路径中的 每个节点具有相同值 。 这条路径可以经过也可以不经过根节点。 两个节点之间的路径长度 由它们之间的边数表示。 示例 1: 输入:root [5,4,5,1,1,5] 输出&…

Loki采集Mysql errorlog,你值得拥有的错误日志聚合系统

说到分布式日志存储系统,大家肯定对ELK、EFK这些工具并不陌生。可是它们都基于Elasticsearch存储,搭建复杂,耗资源,上手难。所以,个人非常推崇Grafana Labs开源的Loki 轻量级日志聚合分析系统 Loki使用标签来作为索引…