尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
CLIP 零样本文本匹配完整教程:不标数据、不训模型,3 分钟让一万张图变成“文字可检索“
CLIP 零样本文本匹配完整教程不标数据、不训模型3 分钟让一万张图变成文字可检索【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP先说它跑通了是什么样子你手里有一堆图片输入一句话比如a photo of a dog模型就从你给的候选文字里挑出和图最贴的那条概率接近 1——不用标注一张数据不用训练一分钟模型。CLIPContrastive Language-Image Pretraining对比语言-图像预训练干的就是这件零样本文本匹配的事它把图片和文字放进同一个坐标系里比较距离所以用文字捞图片对它来说是基本功。这篇指南带你先搞懂它为什么能匹配再一条动线装环境、跑示例最后把候选标签换成你自己的。装之前先花 2 分钟CLIP 为什么能看图识文结论先给CLIP 能匹配靠的不是训练时见过你的图而是它把图片和文字统一编码成了同一种向量匹配就变成了比距离。打个比方。普通分类器像一台只认固定按键的机器要识别狗就得先喂它一万张贴着狗标签的图。CLIP 更像一位通情达理的图书管理员——上架时它见过海量图配文的对照样本论文里是 4 亿组网络图文对每来一对它就把配对的图片和文字往同一个位置挪近把不配对的推远。久而久之图片和文字都被翻译到同一套坐标里。到了用的时候它把你给的每条候选文字也翻译成坐标和图片坐标比远近最近的那条胜出。所以零样本不是魔法而是预训练阶段已经把活干完了。上图就是这套流程的官方示意左半边是预训练时把图文对拉近推远右半边是推理时把标签文字过一遍文本编码器、和图像向量比相似度。理解到这一层后面所有代码你都能看明白——它们都只是编码 比距离。一条动线跑通 CLIP装环境、下权重、出第一个结果整条动线只有两个真正的决定要做你机器有没有 CUDA GPU以及用哪个模型。其余都是机械操作命令里都写了注释从上到下执行即可。# 1. 独立环境防止依赖污染其他项目Python 3.8 conda create -n clip-env python3.8 -y conda activate clip-env # 2. PyTorch 1.7.1 与 torchvision # 有 CUDA GPU → 用 conda 装带 cudatoolkit 的轮子版本对齐本机 CUDA conda install -y -c pytorch pytorch torchvision cudatoolkit11.3 # 纯 CPU 或 macOS → 跳过上一行改用 pip 安装 PyTorch 官方 CPU 轮子 # 3. 文本清洗与进度条小依赖与 requirements.txt 一致缺一个都可能报错 pip install ftfy regex tqdm packaging # 4. 以包形式安装本仓库之后任意目录都能 import clip git clone https://gitcode.com/GitHub_Trending/cl/CLIP cd CLIP pip install .权重不随包安装首次clip.load时才自动下载到~/.cache/clip/ViT-B/32 约 350MB第一次会卡几分钟别中断。跑最小示例在仓库根目录下执行示例直接复用仓库自带的CLIP.pngimport torch import clip from PIL import Image device cuda if torch.cuda.is_available() else cpu model, preprocess clip.load(ViT-B/32, devicedevice) # preprocess 是模型配套的固定预处理流程缩放、裁剪、归一化图片必须走它 image preprocess(Image.open(CLIP.png)).unsqueeze(0).to(device) text clip.tokenize([a diagram, a dog, a cat]).to(device) with torch.no_grad(): logits_per_image, _ model(image, text) probs logits_per_image.softmax(dim-1).cpu().numpy() print(probs)跑通的样子是一行三个数[[0.9927937 0.00421068 0.00299572]]。第一个数对应 a diagram几乎为 1后两个接近 0。这说明环境、权重、推理链路全通了。如果三个数均分在 0.33 左右多半是权重没加载对回去查下载日志。CPU 机器上这次推理要几秒到几十秒正常权重下过一次后走本地缓存第二次起快很多。关于模型选择仓库里用clip.available_models()可以列出全部可用型号初学只需认识两个模型特点适合场景ViT-B/32默认示例用的型号精度高一些常规使用、单图/小批量RN50体积更小显存占用低显存吃紧、批量检索换成你自己的标签CLIP 零样本分类的最小可用示例验证通过之后才是真正的使用方式把候选文字换成你自己的标签让模型从中挑最匹配的一个。import torch import clip from PIL import Image device cuda if torch.cuda.is_available() else cpu model, preprocess clip.load(ViT-B/32, devicedevice) image preprocess(Image.open(CLIP.png)).unsqueeze(0).to(device) # 候选集换成你自己的业务标签分类任务惯用 a photo of a ... 句式 labels [a diagram, a photo of a dog, a photo of a cat, a screenshot] text torch.cat([clip.tokenize(t) for t in labels]).to(device) with torch.no_grad(): img_f model.encode_image(image) txt_f model.encode_text(text) # L2 归一化让点积等价于余弦相似度 img_f / img_f.norm(dim-1, keepdimTrue) txt_f / txt_f.norm(dim-1, keepdimTrue) # 相似度乘 100 拉大量程softmax 后得到概率分布 sim (100.0 * img_f txt_f.T).softmax(dim-1) print(labels[sim.argmax().item()], sim[0])预期 top-1 是a diagram概率接近 1。这里 a diagram 和 a screenshot 语义很接近还能选对说明区分度是真的。model(image, text)直接返回的 logits 其实就是同样的余弦相似度乘 100所以上一节这一节的写法结果一致选顺手的用。三个自然的扩展点扩候选集直接往labels里加字符串即可几百上千条标签也照常吃批量时用 DataLoader 分批喂。省资源显存不够就把ViT-B/32换成RN50改动一个字符串的事。抠提示词同样的标签a photo of a dog 和 a dog 排出来的顺序可能不同。想系统研究措辞对排序的影响看 notebooks/Prompt_Engineering_for_ImageNet.ipynb里面用 ImageNet 做了完整演示。跑挂了别慌三种最常见的翻车现场现象一首次运行长时间卡住、没有任何输出。多半是权重正在从远程下载几百 MB 不是几 KB。网络慢就配代理或者直接离线把权重文件放进~/.cache/clip/文件名和校验逻辑见 clip/clip.py 里的_download放好后再跑即可。现象二No module named clip。说明仓库没以包形式装进当前环境或者你压根没激活那个环境。确认conda activate clip-env已执行然后回到仓库目录重跑一次pip install .两条命令解决。现象三CUDA out of memory或FileNotFoundError: CLIP.png。前者是显存不够换RN50或减小每批图片数后者是因为示例用相对路径读图而你的终端不在仓库根目录——把脚本挪到根目录跑或把路径改成绝对路径。排错时如果怀疑权重本身有问题tests/test_consistency.py 提供了现成的行为基线可以参考。继续深挖源码、API 与示例入口完整 API 说明与 CIFAR-100 零样本预测案例README.mdclip.load/clip.tokenize/clip.available_models的实现clip/clip.py模型结构与权重下载、校验逻辑clip/model.py交互式图文打分输入图片 文本实时看相似度notebooks/Interacting_with_CLIP.ipynb提示词工程对分类排序的影响notebooks/Prompt_Engineering_for_ImageNet.ipynb模型选型与能力边界说明model-card.md下一步建议先照 README 里的 CIFAR-100 零样本案例复现一次 top-5 预测再把cifar100.classes换成你业务的标签看相似度排序是否符合预期——符合就说明这套流程可以直接搬进你的场景了。【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

51单片机驱动LCD1602与矩阵键盘的底层时序实战

51单片机驱动LCD1602与矩阵键盘的底层时序实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/9/15 12:15:39
AI内容优化API实战:降低朱雀AI检测率的技术方案

AI内容优化API实战:降低朱雀AI检测率的技术方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/2 11:34:43
Krokiet/Czkawka 跨平台视频查重:相似视频查找与重复文件清理上手指南

Krokiet/Czkawka 跨平台视频查重:相似视频查找与重复文件清理上手指南

Krokiet/Czkawka 跨平台视频查重:相似视频查找与重复文件清理上手指南 【免费下载链接】czkawka Multi functional app to find duplicates, empty folders, similar images etc. 项目地址: https://gitcode.com/GitHub_Trending/cz/czkawka 整理手机备份时&…

📅 2026/9/16 19:28:49
MORE NEWS

更多资讯

📰

2026—10-27

递归三部曲&#xff1a;1.确定递归函数的参数和返回值2.确定终止条件3.确定单层递归的逻辑例&#xff1a;中序遍历&#xff1a;void oreTraversal(TreeNode* cur,vector<int>& v){if(curnullptr){return;}oreTraversal(cur->left,v);v.push_back(cur->val);ore…

📰

OpenClaw 龙虾ai 实操手册,从零搭建电脑自动执行智能体

&#x1f4d6; 前言 本文面向 Windows 系统用户&#xff0c;系统梳理 OpenClaw 的标准化部署流程。全程无需输入任何命令行&#xff0c;所有操作均依托可视化向导完成&#xff0c;即便是零基础用户也能独立走完整套部署。文中同时汇总了高频报错的对应解决方案&#xff0c;力求…

📰

I2C/SPI 仿真:PGY-I2C/SPI-EX-PD 使用教程

I2C/SPI 仿真:PGY-I2C/SPI-EX-PD 使用教程 目录 1. 简述 2. 环境配置 3. 设备基本介绍 3.1. 前面板与状态指示灯 4. 软件功能基本介绍 4.1. 基本框架示意图 4.2. 基本功能说明 4.2.1. Toolbar(工具栏) 4.2.2. Setup View(设置视图) 4.2.3. Plot View(波形视图…

📰

中小批量 PCB 打样 + 量产一体化,这几个选厂标准一定要记牢-ZXHPCB

做硬件的朋友都懂这个痛&#xff1a;打样随便找家快厂&#xff0c;板子试通了&#xff1b;等要批量做换了厂&#xff0c;材料、工艺参数全对不上&#xff0c;之前调了半天的阻抗和信号完整性得重来&#xff0c;小半个月就没了。所以现在越来越多人直接打样阶段就把量产厂一起定…

📰

ubuntu系统安装和卸载软件常用指令

1、介绍ubuntu系统几种安装软件的形式Ubuntu 系统安装软件主要有以下几种方式&#xff1a;apt 包管理器&#xff1a;通过 apt install 包名 从软件源安装&#xff0c;是最常用的方式。dpkg 命令&#xff1a;用于安装本地 .deb 安装包&#xff0c;通过 dpkg -i 包名.deb 安装。源…

📰

我的电视(my-tv):免注册、开箱即用的电视直播软件,把老电视变成直播入口

我的电视&#xff08;my-tv&#xff09;&#xff1a;免注册、开箱即用的电视直播软件&#xff0c;把老电视变成直播入口 【免费下载链接】my-tv 我的电视 电视直播软件&#xff0c;安装即可使用 项目地址: https://gitcode.com/GitHub_Trending/my/my-tv 家里只想看央视…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬