当前位置: 首页 > news >正文

通俗理解CLIP模型如何实现图搜图乃至文搜图

一、图搜图与文搜图

图搜图和文搜图的场景相信大家并不少见,比如度娘的搜索框就可以直接上传图片找到相似的图片,还有某宝某团都有这种上传图片匹配到相似商品或者商品页的推荐的功能。那比如我想搜一张“正在跳舞的狗”的图片,是不是就能搜出来呢?
在这里插入图片描述
我们可以看到搜是搜出来了,但是基本图片的标题都涵盖了关键字“跳舞”、“狗”等。那么问题来了,度娘的图片搜索用的是图片标签的关键词匹配还是深度学习的文搜图?这个小马目前也不得而知,但丝毫不影响今天的主题。

二、如何实现图搜图与文搜图

关键字匹配的搜索方式显然不是最优解,会面临标签的准确性和图片多样性的问题,从原理上来分析效果就并不会很理想。
那要怎么实现呢?这个得益于“万物皆可向量”的道理。
在这里插入图片描述
通俗地说就是,我们将图片和文本都进行embedding向量化,然后,图像和文本配对进行训练,例如输入pepper the aussie pup(描述一只小狗)和对应的小狗照片。模型的目标是将匹配的图像-文本对在语义空间中拉近,而将不匹配的图像-文本对推远。模型通过对比学习进行预训练,这样我们就能得到一个能表示内容向量的模型。之后,图像和文本就映射到了同一语义空间,使得图像和文本可以直接进行相似性匹配,从而也实现了零样本分类。
没错,你看到的就是CLIP模型算法原理。

三、CLIP开源多模态模型

CLIP(Contrastive Language–Image Pretraining)是 OpenAI 在 2021 年发布的多模态模型,它通过跨模态对比学习,成功地将图像与文本在统一的语义空间中表示,能够让机器同时理解图片和文字,实现了跨模态理解并支持零样本任务,也是采用对比学习的文本-图像预训练模型。这意味着,CLIP 不仅能“看图”,还能理解图像的“文字描述”,帮助我们在图像和文本之间实现更智能的匹配。想进一步了解原理的可以看这里。
CLIP论文:Learning Transferable Visual Models From Natural Language Supervision
Github:https://github.com/OpenAI/CLIP

CLIP惊艳之处在于架构非常简洁且效果好到难以置信,在zero-shot文本-图像检索,zero-shot图像分类,文本→图像生成任务guidance,open-domain 检测分割等任务上均有非常惊艳的表现。

与向量数据库的结合之后,我们就能轻松实现相似度检索的匹配,找到文图或是图图相似匹配的内容。
成熟案例比如,企鹅云的向量数据库和 CLIP(Contrastive Language-Image Pre-Training)图像处理模型,构建一站式的图搜应用解决方案。

图片向量检索技术通过将图片转换为高维向量,并在向量空间内计算相似度,实现高效、精准的图像搜索。向量数据库以其高性能、高可用性、大规模数据处理能力、低成本和简单易用性等优势,为用户提供了强大的向量数据存储和检索能力。结合 CLIP 模型,可实现通过向量相似性检索的方式搜索图片,并提升图像搜索的准确性和效率,适用于电商推荐、内容审核、智能相册等多种图像处理任务。

  • 不要为了彩蛋而彩蛋…

在这里插入图片描述

相关文章:

通俗理解CLIP模型如何实现图搜图乃至文搜图

一、图搜图与文搜图 图搜图和文搜图的场景相信大家并不少见,比如度娘的搜索框就可以直接上传图片找到相似的图片,还有某宝某团都有这种上传图片匹配到相似商品或者商品页的推荐的功能。那比如我想搜一张“正在跳舞的狗”的图片,是不是就能搜…...

谷歌最近放出大招——推出全新“Agent Development Kit(简称ADK)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...

std::string` 类

以下是对 std::string 类中 修改操作 和 字符串操作 的示例代码&#xff0c;帮助你更好地理解这些函数的使用&#xff1a; 5. 修改操作 (1) operator 用于追加字符串、C 风格字符串或字符。 #include <iostream> #include <string>int main() {std::string str …...

Sping Cloud配置和注册中心

1.Nacos实现原理了解吗&#xff1f; Nacos是注册中心&#xff0c;主要是帮助我们管理服务列表。Nacos的实现原理大概可以从下面三个方面来讲&#xff1a; 服务注册与发现&#xff1a;当一个服务实例启动时&#xff0c;它会向Nacos Server发送注册请求&#xff0c;将自己的信息…...

Java基础 - 泛型(常见用法)

文章目录 泛型类泛型方法泛型类派生子类示例 1&#xff1a;子类固定父类泛型类型&#xff08;StringBox 继承自 Box<String>&#xff09;示例 2&#xff1a;子类保留父类泛型类型&#xff08;AdvancedBox<T> 继承自 Box<T>)示例 3&#xff1a;添加子类自己的…...

待排序元素规模较小时,宜选取哪种排序算法效率最高

当待排序元素规模较小时&#xff0c;通常选择以下几种简单高效的排序算法&#xff0c;因为它们在小规模数据下具有更低的常数开销和良好的局部性表现&#xff1a; ✅ 插入排序&#xff08;Insertion Sort&#xff09; 推荐理由&#xff1a;在数据量小、数据部分有序的情况下&a…...

SAQ评级是什么,SAQ评级的意义?对企业发展好处

SAQ评级&#xff08;Supplier Audit Questionnaire&#xff0c;供应商审计问卷评级&#xff09;是供应链管理中常见的一种评估机制&#xff0c;主要用于对供应商的质量、合规性、风险管理能力等进行标准化审核和分级。它常见于汽车、电子、医药等对供应链要求严格的行业&#x…...

嵌入式---电机分类

一、按电流类型分类&#xff08;最基础分类&#xff09; 1. 直流电机&#xff08;DC Motor&#xff09; 工作原理&#xff1a;通过换向器&#xff08;有刷&#xff09;或电子换向&#xff08;无刷&#xff09;将直流电源转换为交变磁场&#xff0c;驱动转子旋转。 核心特点&a…...

定制一款国密浏览器(5):修改浏览器名称

在上一章中,我介绍了如何修改浏览器的 logo,这一章介绍修改浏览器的名称。 浏览器的名称是 AI 帮我想的,英文名 Mojo Browser,中文名墨舟浏览器。 第一步先修改 desktop 文件,desktop 文件支持多语言化,遵循 Freedesktop.org 制定的 Desktop Entry Specification 规范。…...

水库大坝安全监测系统

水库大坝安全监测系统是现代水利管理中至关重要的组成部分&#xff0c;是一种用于实时监控和评估大坝结构安全状况的技术系统&#xff0c;通过多种技术手段实现对水库大坝的全方位、全天候监测&#xff0c;旨在确保大坝的稳定性和安全性&#xff0c;预防潜在风险。 系统构成 …...

文件IO5(JPEG图像原理与应用)

JPEG图像原理与应用 ⦁ 基本概念 JPEG&#xff08;Joint Photographic Experts Group&#xff09;指的是联合图像专家组&#xff0c;是国际标准化组织ISO制订并于1992年发布的一种面向连续色调静止图像的压缩编码标准&#xff0c;所以也被称为JPEG标准。 同样&#xff0c;JP…...

开源Cursor替代品——Void

我原先写过很多关于Cursor文章。 今天分享一个开源的 Cursor 替代方案。 如果你也热爱开源项目,那么这篇文章正是为你准备的! 寻找开源替代的原因 我一直在思考:市面上这类产品层出不穷,但真正的核心技术似乎都依赖于大语言模型(LLM)。于是萌生了一个想法——何不自己…...

DAOS系统架构-组件

如上图所示&#xff0c;一个完整的DAOS系统是由管理节点组件、客户端节点组件、服务端节点组件以及网络通信组件四个部分组成。管理节点组件通过管理网络通道&#xff08;蓝色&#xff09;对DAOS服务管理和监控。客户端节点组件通过数据网络通道&#xff08;红色&#xff09;与…...

论文精读:MSCA-Net:多尺度上下文聚合网络在红外小目标检测中的突破

论文地址:https://arxiv.org/pdf/2503.17193 目录 一、论文结构解析 二、三大创新点详解 1. 多尺度增强检测注意力(MSEDA) 2. 位置卷积块注意力模块(PCBAM) 3. 通道聚合模块(CAB) 三、实验结果对比 定量分析(表I关键数据) 定性对比 四、应用场景展望 五、总…...

LangGraph 使用指南

安装配置 安装依赖 LangGraph 可以通过 pip 安装&#xff1a; pip install langgraph如果您想使用最新的功能和改进&#xff0c;可以从源代码安装&#xff1a; pip install githttps://github.com/langchain-ai/langgraph.git环境配置 LangGraph 与 LangChain 共享许多配置…...

C++指针(四)万字图文详解!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 前言 相关文章&#xff1a;C指针&#xff08;一&#xff09;、C指针&#xff08;二&#xff09;、C指针&#xff08;三&#xff09; 本篇博客是介绍函数指针、函数指针数组、回调函数、指针函数的。 点赞破六…...

【AI提示词】长期主义助手提供规划支持

提示说明 长期主义是一种关注长期利益和持续学习的思维模式&#xff0c;帮助个人和组织在快速变化的环境中保持耐心和系统性思考。 提示词 # Role: Long-termist Assistant## Profile - language: 中文 - description: 长期主义是一种关注长期利益和持续学习的思维模式&…...

JavaScript逆向工程:如何判断对称加密与非对称加密

在现代Web应用安全分析中&#xff0c;加密算法的识别是JavaScript逆向工程的关键环节。本文将详细介绍如何在逆向工程中判断JavaScript代码使用的是对称加密还是非对称加密。 一、加密算法基础概念 1. 对称加密 (Symmetric Encryption) 特点&#xff1a;加密和解密使用相同的…...

制造企业如何通过实现数据统一?

随着生产规模的扩大、供应链的复杂化以及市场需求的快速变化&#xff0c;企业内部的数据管理问题日益凸显。数据孤岛、数据冗余、数据不一致等问题不仅降低了运营效率&#xff0c;还可能导致决策失误。那么&#xff0c;制造企业如何才能打破这些壁垒&#xff0c;实现数据的统一…...

ICRA-2025 | 视觉预测助力机器人自主导航!NavigateDiff:视觉引导的零样本导航助理

论文&#xff1a;Yiran Qin 1 , 2 ^{1,2} 1,2, Ao Sun 2 ^{2} 2, Yuze Hong 2 ^{2} 2, Benyou Wang 2 ^{2} 2, Ruimao Zhang 1 ^{1} 1单位&#xff1a; 1 ^{1} 1中山大学&#xff0c; 2 ^{2} 2香港中文大学深圳校区论文标题&#xff1a;NavigateDiff: Visual Predictors are Ze…...

Java 与 LibreOffice 集成开发指南

1. 引言 Java 与 LibreOffice 的集成开发为开发者提供了一种强大的工具&#xff0c;用于实现文档自动化处理、文档转换、内容编辑等任务。通过 Java 调用 LibreOffice 提供的 API&#xff0c;可以实现跨平台的文档处理功能&#xff0c;满足各种业务需求。本文将详细介绍如何使…...

如果单表数据量大,只能考虑分库分表吗

程序员最怕啥?不是需求改八遍,也不是半夜报警电话,而是数据库突然卡成PPT!尤其是当单表数据冲到几千万行,查询慢得像老牛拉车,这时候团队第一反应往往是:“赶紧分库分表!” 但兄弟,分库分表可不是什么温柔小姐姐,它更像是个浑身带刺的仙人掌——你以为抱上就能解决问…...

3.3.1 spdlog异步日志

文章目录 3.3.1 spdlog异步日志1. spdlog1. 日志作用2 .同步日志和异步日志区别 2. spdlog是什么下载命令&#xff1a;2. spdlog为什么高效3. spdlog特征5. spdlog输出控制6. 处理流程7. 文件io8.问题 2. 如何创建logger3. 如何创建sink4. 如何自定义格式化5. 如何创建异步日志…...

【Web功能测试】注册与登录功能测试用例设计深度解析

1 注册功能测试用例设计 1.1 明确需求与测试范围 必填字段&#xff1a;手机号、验证码、密码 手机号规则&#xff1a;11位手机号 密码规则&#xff1a;6-16位&#xff0c;需包含大小写字母必须同时存在&#xff0c;数字或符号存在其一 协议勾选 提交后跳转登录页或显示成功…...

netstat 查看端口占用、杀死进程

文章目录 查看端口占用强制杀死 报错信息使用 lsof 查看端口占用 netstat -tanlp强制杀死 在安全的情况下&#xff0c;用下面命令杀死端口占用的进程 sudo kill $(sudo lsof -t -i:3128)报错信息 部署程序时&#xff0c;会出现这样的报错&#xff1a; Error response from…...

Windows 11 PowerShell重定向文本文件的编码问题

目录 问题的由来 编码导致的问题 解决办法 VSCode进行转换 记事本进行转换 直接指定输出的文本编码 总结 问题的由来 在我的嵌入式系统的课程中有一个裸机开发的实验&#xff0c;其中需要把图片等文件转换为C语言数组保存在程序中。课程中&#xff0c;我推荐了CodePlea的…...

蓝桥杯冲刺:一维差分

系列文章目录 蓝桥杯系列&#xff1a;一维差分 文章目录 系列文章目录前言一、一维差分&#xff1a; 差分数组的意义&#xff1a; 二、差分的性质&#xff1a; 差分和前缀和的关系 三、一维差分代码实现&#xff1a;四、典型真题&#xff08;利用一维差分来实现&#xff09; 这…...

理解企业内部信息集成

目录 1. 技术平台集成 2. 数据集成 3. 应用集成 4. 业务过程集成 5. 应用集成与企业内部信息集成的区别 企业内部信息集成是将分散的技术、数据、应用和业务流程整合为一个协同的整体&#xff0c;以提高效率、减少冗余和增强决策能力。 企业内部信息集成一般可以分为4个方…...

论文学习:《利用图注意力网络增强单细胞多组学数据的整合》

原文标题&#xff1a;Enhanced Integration ofSingle-Cell Multi-Omics Data Using Graph Attention Networks 原文链接&#xff1a;https://pubs.acs.org/doi/abs/10.1021/acssynbio.4c00864 跨不同组学层的数据集成面临的挑战&#xff1a;高维度、异质性和稀疏性。 变分自编码…...

HumanDil-Ox-LDL:保存:2-8℃保存,避免强光直射,不可冻存

化学试剂的基本介绍&#xff1a; /// 英文名称&#xff1a;HumanDil-Oxidized LowDensityLipoprotein /// 中文名称&#xff1a;人源红色荧光标记氧化型低密度脂蛋白 /// 浓度&#xff1a;1.0-4.0 mg/ml /// 外观&#xff1a;乳状液体 /// 缓冲液组分&#xff1a;PBS&…...

基于3d相机的点云物体检测与路径规划

&#x1f9e9; 代码结构和解释&#xff1a; 点云预处理 (preprocess_point_cloud)&#xff1a; 使用 Voxel 下采样 来减少点云数据量&#xff0c;去除不必要的噪声。 使用 统计滤波器 去除离群点&#xff0c;以提高后续拟合的精度。 V型焊缝路径拟合 (fit_weld_path_v)&…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(2):んです

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(2):んです 1、前言(1)情况说明(2)工程师的信仰2、知识点(1)~んです & ~の(2)意味(いみ)&形(かたち)&使い方(つかいかた)(3)そうなんですか & そうなんだ。(4)何をしているんですか & 何を…...

yolov8在windows系统的C++版本的onnxruntime部署方法

1.各个软件的的环境需要保持在统一的版本。 onnxruntime需要和cuda的版本对应上,版本号:onnxruntime-win-x64-gpu-1.18.1 ,链接: NVIDIA - CUDA | onnxruntime cuda:本机显卡支持的版本,cuda11.7,链接:CUDA Toolkit Archive | NVIDIA Developer cudnn:需要对应到cud…...

AD软件的系统设置

设置 1.自动保存&#xff08;DATA -> backup&#xff09; 2.原理图-复制元器件递增位号 3.原理图-用斜线表示负信号 4.PCB-选择移动重叠的元器件 5.PCB-十字光标全屏大小 6.PCB-选择部分连接网络的走线全亮/显示多个网络的颜色&#xff08;TP&#xff09; 7.PCB-DRC报错的图…...

算法---子序列[动态规划解决](最长递增子序列)

最长递增子序列 说白了&#xff0c;要用到双层循环&#xff01; 用双层循环中的dp[i] class Solution { public:int lengthOfLIS(vector<int>& nums) {vector<int> dp(nums.size(),1);for(int i 0;i<nums.size();i){for(int j0;j<i;j){if(nums[i]>num…...

快速幂(模板)

快速幂 取余运算性质&#xff1a;(a*b*c)%d (a%d * b%d * c%d)%d ; #include <iostream> using namespace std; int main() {long long b,p,k;//b(底数)p(指数)k(取模数)cin>>b>>p>>k;long long ret1;b%k;//防止底数过大//模版&#xff0c;记&#xf…...

蓝桥杯 好数【暴力、基础知识】

题目&#xff1a; AC代码&#xff1a; #include<bits/stdc.h> using namespace std; int ans0; int n; bool check(int x){int cnt1;while(x!0){int tx%10;if(cnt%21){ if(t%20) return false; //奇数位置是偶数} if(cnt%20){if(t%21) return false; //偶数位是奇数}cnt…...

【Kubernetes】Kubernetes中如何实现灰度发布

Kubernetes中实现灰度发布 一、基于Ingress-nginx的流量切分&#xff08;适用中小规模&#xff09; 权重分流 在Ingress资源中通过nginx.ingress.kubernetes.io/canary-weight注解设置新版本流量比例apiVersion: networking.k8s.io/v1 kind: Ingress metadata:annotations:ng…...

【Reinforcement Learning For Quadruped Control】1

强化学习&#xff08;RL&#xff09;是一种机器学习范式&#xff0c;代理通过与环境的互动来学习做出决策。强化学习的核心概念围绕以下几个方面展开&#xff1a;a) 代理agent&#xff0c;做出决策&#xff1b;b) 环境environment&#xff0c;响应代理的决策&#xff1b;c) 状态…...

工程企业如何实现四算联动?预算-核算-决算系统解析

在工程行业&#xff0c;项目管理的高效性直接决定了企业的盈利能力和市场竞争力。尤其是在EPC&#xff08;工程总承包&#xff09;模式下&#xff0c;工程企业面临着复杂的业务场景和多维度的成本管控需求。如何通过“四算联动”&#xff08;概算、预算、核算、决算&#xff09…...

【SpringBoot】处理actuator风险漏洞

最近给系统做渗透测试&#xff0c;扫描出了一个actuator风险漏洞&#xff0c;属于高危级别&#xff0c;通过actuator接口可以拿到用户敏感信息。这个问题处理起来倒也简单&#xff0c;禁用actuator或者限制访问就可以了 # 禁用actuator接口配置 management:server:port: -1# 限…...

MACOS15版本安装 python mysqlclient 以连接mysql 8.0

MACOS14/15 版本安装 python mysqlclient 以连接mysql 8.0 主要用于macos django4 mysql8.0 开发项目 准备材料 macos > 13.0 python > 3.10.0 &#xff08;不强制&#xff09; mysql > 8.0 安装步骤 安装 brew 使用国内源安装brew /bin/zsh -c "$(curl -f…...

KV Cache大模型推理加速功能

KV Cache KV Cache是大模型标配的推理加速功能&#xff0c;也是推理过程中&#xff0c;显存资源巨大开销的元凶之一。在模型推理时&#xff0c;KV Cache在显存占用量可达30%以上。 目前大部分针对KV Cache的优化工作&#xff0c;主要集中在工程上。比如著名的VLLM&#xff0c…...

Windows下安装WSL2下的Ubuntu、docker容器的IP地址(上)

既然容器支持多个应用&#xff0c;那么容易想到应该有对应的ip地址和端口&#xff0c;这样才能和Ubuntu主机进行通讯&#xff0c;ubuntu访问外网也应该有ip能连接到外网才行&#xff0c;要搞清楚这些ip地址的关系才行。 前面两篇文章中说了怎么实现windows和wsl2下的ubuntu的文…...

vue实现中英文切换

第一步&#xff1a;安装插件vue-i18n&#xff0c;npm install vue-i18n 第二步&#xff1a;在src下新建locales文件夹&#xff0c;并在locales下新建index.js、EN.js、CN.js文件 第三步&#xff1a;在EN.js和CN.js文件下配置你想要的字段&#xff0c;例如&#xff1a; //CN.js…...

探索 Vue 3 中 vue-router 的 router.resolve () API

一、router.resolve() 是什么 router.resolve() 就好比是一个精准的 “导航参谋”。当我们在 Vue 3 应用里需要明确某个路由地址对应的详细信息时&#xff0c;它就能派上用场。我们给它传入路由信息&#xff0c;像路径、参数等&#xff0c;它会解析出对应的路由对象&#xff0…...

Excel 插件推荐:提升Excel能力的效率神器!

一、Excel玩家的觉醒时刻 在财务部的深夜加班现场&#xff0c;李师傅的咖啡杯上凝结着第3圈水渍。眼前的Excel窗口堆叠如俄罗斯方块&#xff1a;重复值删除进度15%、VLOOKUP公式报错3处、合并单元格序号乱成毛线团…这场景是否也戳中了你的痛点&#xff1f; 每个Excel高手都经…...

leetcode_383. 赎金信_java

383. 赎金信https://leetcode.cn/problems/ransom-note/ 1、题目 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以&#xff0c;返回 true &#xff1b;否则返回 false 。 magazine 中的每个字…...

应用安全系列之四十五:日志伪造(Log_Forging)之三

1、简介 针对Java的日志系统有多种&#xff0c;本文主要描述如何通过修改配置文件来解决logback和log4j的日志伪造问题。 2、logback 2.1、系统提供的解决方案 在logback.xml中配置编码器自动转义特殊字符&#xff1a; 复制 <configuration><appender name"C…...

FTPClient开发遇到的坑

1. 生成文件夹乱序 这里用分隔符把路径划分开&#xff0c;意在一层一层创建目录 这里可能会出现乱序 正确的代码 先换一下分隔符 再一次生成所有路径 2.ftpClient 需要指定被动模式才能绕开端口限制 有些 服务器没有打开指定端口&#xff0c;上传文件会出现 425 Canno…...