使用clip模型计算图文相似度

使用clip模型计算图文相似度

  • clip模型
    • 模型架构
    • 训练过程
    • 应用场景
    • clip安装
  • 计算图文相似度

clip模型

CLIP (Contrastive Language-Image Pretraining) 是由 OpenAI 开发的一种深度学习模型,旨在将自然语言处理和计算机视觉任务结合起来。它通过一种名为对比学习(Contrastive Learning)的训练方法,将图像和文本映射到一个共同的向量空间中,从而可以计算图文之间的相似度

模型架构

  • 文本编码器: 通常使用基于 Transformer 的架构(如 BERT 或 GPT),将文本输入编码为向量表示。
  • 图像编码器: 通常使用卷积神经网络(如 ResNet)或视觉 Transformer,将图像输入编码为向量表示。

训练过程

  • CLIP 使用了一个巨大的图文对数据集进行训练,每对数据包含一张图像及其相应的描述文本。
  • 训练的目标是使图像和对应描述的文本在向量空间中尽可能靠近,而非对应的图像-文本对则尽可能远离。
  • 损失函数采用对比损失(Contrastive Loss),通过最大化图像和其描述文本之间的相似度,最小化其他图文对之间的相似度。

应用场景

  • 图文检索:给定一个查询图像,找到与之描述相匹配的文本,反之亦然。
  • 图像分类:通过输入文本标签,找到最匹配该标签的图像。
  • 图文相似度计算:评估图像与文本描述之间的相似度。

clip安装

clip不能直接通过pip安装,可以使用以下命令进行安装

pip install git+https://github.com/openai/CLIP.git

计算图文相似度

请添加图片描述
判断这张图片与标签[“a car”, “a bus”, “a bicycle”]对应的分数。

import torch
import clip
from PIL import Imagedevice = "cuda" if torch.cuda.is_available() else "cpu"
model, preprocess = clip.load("ViT-B/32", device=device)image = preprocess(Image.open("car.jpg")).unsqueeze(0).to(device)
text = clip.tokenize(["a car", "a bus", "a bicycle"]).to(device)with torch.no_grad():image_features = model.encode_image(image)text_features = model.encode_text(text)logits_per_image, logits_per_text = model(image, text)probs = logits_per_image.softmax(dim=-1).cpu().numpy()print("Label probs:", probs)

程序输出:

Label probs: [[0.9781556 0.02080377 0.00104056]]

识别成功,汽车的分数远高于其他两项!

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

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

相关文章

Springboot+vue二手房交易管理系统

Springbootvue二手房交易管理系统,项目用mybatis与数据库,数据库为mysql,16个表结构。有问题直接加我询问,我会一直在线哒。 功能如下: 房东管理 用户管理 房源信息管理(可预约和查看评论) 看房…

【LLM第7篇】transformer跟bert、gpt、大模型的联系

上一篇讲了transformer的原理,接下来,看看它的衍生物们。 Transformer基本架构 Transformer模型主要由两部分组成:编码器(Encoder)和解码器(Decoder)。编码器负责处理输入序列,将其…

Java 编程思想:深入探索与实际应用

Java 编程思想:深入探索与实际应用 Java 编程,作为一门历史悠久且广泛应用于各个领域的编程语言,其背后蕴含着丰富的编程思想。本文将围绕四个方面、五个方面、六个方面和七个方面,对 Java 编程思想进行深入探讨,旨在…

iOS Hittest 机制和实际应用

Hittest 机制原理 hitTest的原理就是,当我们点击的时候,会触发 window的 hittest方法,在该方法中会首先使用point inside方法判断 点击的地方是否在window范围内,如果在的话,就倒序遍历姿子视图,然后将poi…

MiniMax公司介绍

MiniMax是一家专注于通用人工智能技术的科技公司,成立于2021年12月。公司致力于成为通用人工智能时代基础设施建设者和内容应用创造者,积极投身于中国人工智能技术高速发展的时代大潮。MiniMax的团队由多位在人工智能领域有着丰富经验的专家组成&#xf…

NKCTF 2024 webshell_pro

还是正常的HTTP流量 既然是webshell一定是看POST流量 对每一个进行追踪tcp流 最终发现 在 流9 (tcp.stream eq 9)存在 base32 -->base64的流量的加密逻辑 import base64import libnum from Crypto.PublicKey import RSApubkey """-----BEGIN PUBLIC KEY…

文刻创作ai工具在哪下载

文刻创作ai工具是一种基于人工智能技术开发的软件工具,旨在辅助用户进行文创作品的创作和编辑。 领取激活方式:https://qvfbz6lhqnd.feishu.cn/wiki/HsY4wmoffiNp4FkB2AbcpL4tn6d 该工具通过自然语言处理、机器学习等技术,可以生成具有一定创…

CMS和G1谁是赢家

JVM存在有CMS(Concurrent Mark Sweep)垃圾收集器和G1(Garbage First)垃圾收集器,它们的优缺点对比如下: 一、CMS: 1.特点 1)以获取最短回收停顿时间为目标,适用于对响应性…

MyBatis源码分析--02:SqlSession建立过程

我们再来看看MyBatis使用流程: InputStream inputStream Resources.getResourceAsStream("myBatis_config.xml"); SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); SqlSession session sqlSessionFactory.op…

Linux主机安全可视化运维(免费方案)

本文介绍如何使用免费的主机安全软件,在自有机房或企业网络实现对Linux系统进行可视化“主机安全”管理。 一、适用对象 本文适用于个人或企业内的Linux服务器运维场景,实现免费、高效、可视化的主机安全管理。提前发现主机存在的安全风险,全方位实时监控主机运行时入侵事…

【惯性传感器imu】—— WHEELTEC的惯导模块的imu的驱动安装配置和运行

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、IMU驱动安装1. 安装依赖2. 源码的下载3. 编译源码(1) 配置固定串口设备(2) 修改luanch文件(3) 编译 二、启动IMU1. 运行imu2. 查看imu数据 总结 前言 WHEE…

C#WPF数字大屏项目实战02--主窗体布局

1、主窗体起始属性 设置有关属性如下: WindowStyle"None"-》无边框 AllowsTransparency"True" -》允许透明 WindowStartupLocation"CenterScreen"-》启动时位于屏幕中间 FontFamily"Microsoft YaHei"-》字体微软雅黑 …

JavaScript中sleep()函数的实现及应用

在众多编程语言中,sleep()函数是一个常见的工具,用于使程序暂停执行一段时间。例如,Python中的time.sleep(秒数)可以让程序暂停执行指定的秒数。然而,JavaScript并没有内建的sleep函数,这给开发者带来了不少困扰。因此,本文就来详细探讨如何在JavaScript中实现sleep功能,…

python编程:创建 SQLite 数据库和表的图形用户界面应用程序

在本文中,我将介绍如何使用 wxPython 模块创建一个图形用户界面(GUI)应用程序,该应用程序允许用户选择 SQLite 数据库的存放路径、数据库名称、表名称,并动态添加字段及其类型。以下是具体的实现步骤和代码示例。 C:\p…

Unity实现简单的持久化存储

在Unity中,运行过程中的内容是不会保存的,但是如果我们有些游戏数据需要持久化存储,应该怎么办呢,所以Unity为我们提供了一个简单的数据存储的API。 附上代码片段 //写入数据PlayerPrefs.SetInt("IntType", 1);PlayerPr…

FreeRTOS【13】流缓冲区使用

1.开发背景 基于以上的章节,了解了 FreeRTOS 多线程间的信号量、队列的使用,已经满足了日常使用场景。其中,队列的使用规定了队伍成员的大小,然而现实使用场景下,很多数据不都是定长大小了,例如不定长的通讯…

在AutoDL上部署Yi-34B大模型

在AutoDL上部署Yi-34B大模型 Yi介绍 Yi 系列模型是 01.AI 从零训练的下一代开源大语言模型。Yi 系列模型是一个双语语言模型,在 3T 多语言语料库上训练而成,是全球最强大的大语言模型之一。Yi 系列模型在语言认知、常识推理、阅读理解等方面表现优异。 …

一键AI抠图,证件照换背景,可部署成自己的应用

1 开发背景 AI抠图技术已经非常成熟,并且有效果非常好的开源模型。 日常中可以用于替换证件照背景 但是网上许多的证件照替换背景 竟然需要收费 鉴于此,便将目前最好的(SOTA)开源抠图模型 BRIA Background Removal v1.4 Model …

银行贷款逾期还款流程的功能测试详解

银行贷款在未能按照约定的还款日期和金额进行还款时,即被视为逾期。 一、贷款逾期处理 产生罚息:银行会按照借款合同中的约定,对逾期部分加收罚息,罚息力度各家银行不同,但通常会在原利率的基础上加收一定比例。 影响…

运用函数:素数的判定

题目:编写函数,参数是个正整数n,如果它是个素数,返回1,否则返回0. 这种“判断一个事物是否具有某种性质”的函数还具有一个学术名称——谓词(predicate) #define _CRT_SECURE_NO_WARNINGS #in…