首页 > 其他分享 >使用clip模型计算图文相似度

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

时间:2024-06-02 15:00:07浏览次数:19  
标签:clip text 模型 图像 文本 image 图文

使用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 Image

device = "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]]

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

标签:clip,text,模型,图像,文本,image,图文
From: https://blog.csdn.net/summerriver1/article/details/139361415

相关文章

  • 算法金 | 机器学习模型评价、模型与算法选择(综述)
    大侠幸会,在下全网同名[算法金]0基础转AI上岸,多个算法赛Top[日更万日,让更多人享受智能乐趣][SebastianRaschka2018]ModelEvaluation,ModelSelection,andAlgorithmSelectioninMachineLearning,https://arxiv.org/abs/1811.12808摘要:本文主要讨论了模型评估......
  • 关于大语言模型的最新综述
    24年2月来自Snap等公司的论文“LargeLanguageModels:ASurvey”。自2022年11月ChatGPT发布以来,大语言模型(LLM)因其在各种自然语言任务中的出色表现而备受关注。正如规模化定律所预测的那样,LLM的通用语言理解和生成能力是通过在大量文本数据上训练数十亿个模型......
  • 感觉是通俗易懂的大模型入门(一)
    最近人工智能非常火爆,大家可能经常听到AI、深度学习、大语言模型等名词。但真正能够将它们拆开来细致讲解的内容并不多。我大学就是学这个的,毕业后一直从事这个领域的工作。所以我打算今年陆续做一些这方面的科普,也借此机会复习巩固一下自己的知识体系。今天就算是第一期,......
  • 大模型备案全网最详细说明【+附件】
    大模型备案安全评估流程详细说明,见下图:大模型安全评估流程图算法备案安全评估流程详细说明,见下图:算法安全评估流程图大模型备案,大模型算法备案一、大模型算法备案的强制性二、生成式人工智能(大语言模型)安全评估要点三、大模型备案必备材料+重点说明四、线上备......
  • 一起学大模型 - 动手写一写langchain调用本地大模型(2)
    文章目录前言一、自动选择1.使用AutoTokenizer和AutoModel的示例2.解释二、怎么实现自动选择的呢总结前言前一篇文章里,fromtransformersimportGPT2LMHeadModel,GPT2Tokenizer如果模型替换了,就得更改代码,很麻烦,那有没有更简单的方法呢?一、自动选择trans......
  • LangChain学习圣经:从0到1精通LLM大模型应用开发的基础框架
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • Transformer 模型完全解读:代码+注释+讲解
    节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对大模型技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。总结链接如下:重磅消息!《大模型面试......
  • 【图解IO与Netty系列】Reactor模型
    Reactor模型Reactor模型简介三类事件与三类角色Reactor模型整体流程各种Reactor模型单Reactor单线程模型单Reactor多线程模型主从Reactor模型Reactor模型简介Reactor模型是服务器端用于处理高并发网络IO请求的编程模型,与传统的一请求一线程的同步式编程模型不同的......
  • GPT-4o大模型分析文档和识图理解能力(6月最新ChatGPT商业运营网站程序源码)
    6月最新ChatGPT商业运营网站程序源码、支持Midjourney绘画,GPT语音对话+DALL-E3文生图+文档分析+suno-ai音乐生成+支持GPTs文章目录一、如何评价GPT-4o?1、GPT-4o大模型(文档分析)2、GPT-4o大模型(识图理解能力)3、SparkAi系统核心能力二、系统功能模块演示1、AI全模型支持/......
  • AI Dify + 大模型+ Agent 详细教程 从0-1教你构建小助手
    前言Dify是一个易于使用的LLMOps平台,提供了多种应用程序类型和模板,包括AI聊天机器人、代码转换器、SQL生成器、新闻内容编写、创意脚本等。团队使用Dify,可以基于GPT-4等模型快速「开发+部署」AI应用程序并进行可视化操作,还可以将程序对外进行发布。Dify这个名字来......