CLIP 零样本图像分类实战:无需训练的多类别识别流程
CLIP 零样本图像分类实战无需训练的多类别识别流程这篇教程根据我复现 OpenAI CLIP 分类流程时整理重点演示依赖安装、分类数据准备、文本 prompt 配置和零样本推理。本文整理自我的学习和项目复现过程尽量按实操顺序保留 notebook 的关键步骤同时把数据集获取方式调整为适合中文教程发布的写法。本文会重点跑通以下流程安装 CLIP 依赖从数据集后台获取分类或检测数据整理类别名和候选文本 prompt运行 CLIP 零样本推理查看不同 prompt 对分类效果的影响如果你正在系统学习目标检测、实例分割、OCR、多目标跟踪或视觉大模型建议收藏本文配套 notebook、示例图片和运行环境说明后续会继续整理。如果环境配置卡住可以在评论区说明具体报错。 文章目录CLIP 零样本图像分类实战无需训练的多类别识别流程⚙️ 安装 CLIP 依赖 从数据集后台获取数据️ 整理类别与 Prompt 运行 CLIP 推理 结束说明 小结 同系列教程汇总⚙️ 安装 CLIP 依赖先安装 CLIP 运行所需依赖并确认 CUDA 环境。#installing some dependencies, CLIP was release in PyTorchimportsubprocess CUDA_version[sforsinsubprocess.check_output([nvcc,--version]).decode(UTF-8).split(, )ifs.startswith(release)][0].split( )[-1]print(CUDA version:,CUDA_version)ifCUDA_version10.0:torch_version_suffixcu100elifCUDA_version10.1:torch_version_suffixcu101elifCUDA_version10.2:torch_version_suffixelse:torch_version_suffixcu110!pip install torch1.7.1{torch_version_suffix}torchvision0.8.2{torch_version_suffix}-f https://download.pytorch.org/whl/torch_stable.html ftfy regeximportnumpyasnpimporttorchimportosprint(Torch version:,torch.__version__)os.kill(os.getpid(),9)#Your notebook process will restart after these installs# 克隆 CLIP 仓库!git clone https://github.com/openai/CLIP.git%cd CLIP 从数据集后台获取数据准备分类或检测图片数据用于后续零样本推理测试。fromtypesimportSimpleNamespace# 从数据集后台下载 CLIP 分类 格式数据集后修改 DATASET_DIR 指向解压目录。DATASET_DIR/content/dataset# 修改为数据集后台导出的数据集目录datasetSimpleNamespace(locationDATASET_DIR,version1,namecustom-dataset)# 数据集已在上一单元配置如需更换数据请修改 DATASET_DIR。print(dataset.location)dataset.location️ 整理类别与 Prompt读取类别目录并编辑候选文本描述。Prompt 质量会直接影响 CLIP 分类效果。importos#our the classes and images we want to test are stored in folders in the test setclass_namesos.listdir(dataset.location/test/)class_names.remove(_tokenization.txt)class_names# 可以先准备一份默认 prompt 文件再根据自己的类别逐步优化文本描述。#CLIP gets a lot better with the right prompting!#be sure the tokenizations are in the same order as your class_names above!%cat{dataset.location}/test/_tokenization.txt# 按需编辑 prompt并确保顺序与类别列表一致%%writefile{dataset.location}/test/_tokenization.txt The paper signinrock paper scissors The rock signinrock paper scissors The scissors signinrock paper scissorscandidate_captions[]withopen(dataset.location/test/_tokenization.txt)asf:candidate_captionsf.read().splitlines() 运行 CLIP 推理加载图片和候选文本计算图文相似度并输出预测类别。importtorchimportclipfromPILimportImageimportglobdefargmax(iterable):returnmax(enumerate(iterable),keylambdax:x[1])[0]devicecudaiftorch.cuda.is_available()elsecpumodel,transformclip.load(ViT-B/32,devicedevice)correct[]#define our target classificaitons, you can should experiment with these strings of text as you see fit, though, make sure they are in the same order as your class names abovetextclip.tokenize(candidate_captions).to(device)forclsinclass_names:class_correct[]test_imgsglob.glob(dataset.location/test/cls/*.jpg)forimgintest_imgs:#print(img)imagetransform(Image.open(img)).unsqueeze(0).to(device)withtorch.no_grad():image_featuresmodel.encode_image(image)text_featuresmodel.encode_text(text)logits_per_image,logits_per_textmodel(image,text)probslogits_per_image.softmax(dim-1).cpu().numpy()predclass_names[argmax(list(probs)[0])]#print(pred)ifpredcls:correct.append(1)class_correct.append(1)else:correct.append(0)class_correct.append(0)print(accuracy on class cls is :str(sum(class_correct)/len(class_correct)))print(accuracy on all is : str(sum(correct)/len(correct))) 结束说明这里保留 notebook 原有结束单元实际发布时重点看前面的推理结果。# 本单元作为 notebook 结束占位。print(CLIP zero-shot classification workflow completed.) 小结这篇教程完整整理了CLIP 零样本图像分类的核心复现流程。实际操作时建议先确认 GPU、依赖版本、数据集路径和模型权重路径再逐段运行 notebook。后续我会继续按源项目顺序整理同系列中的目标检测、实例分割、OCR、多目标跟踪和视觉大模型教程。 同系列教程汇总Google Gemini 3.5 Flash 零样本目标检测教程从提示词到可视化结果GLM-OCR 文档识别实战教程从验证码、公式到车牌 OCRRF-DETR ByteTrack 多目标跟踪实战教程从命令行到 Python 视频轨迹可视化SAM 3 图像分割实战教程文本、框和点提示的多种分割方式SAM 3 视频分割实战教程用文本提示分割并跟踪视频中的目标CLIP 零样本图像分类实战无需训练的多类别识别流程-本文

相关新闻

Subdomain3性能优化指南:低资源消耗下实现百万级子域名爆破的配置方案

Subdomain3性能优化指南:低资源消耗下实现百万级子域名爆破的配置方案

Subdomain3性能优化指南:低资源消耗下实现百万级子域名爆破的配置方案 【免费下载链接】subdomain3 A new generation of tool for discovering subdomains( ip , cdn and so on) 项目地址: https://gitcode.com/gh_mirrors/su/subdomain3 Subdomain3是新一代…

2026/7/22 21:36:55 阅读更多 →
fontations与Chrome集成:启用内存安全字体渲染的完整步骤

fontations与Chrome集成:启用内存安全字体渲染的完整步骤

fontations与Chrome集成:启用内存安全字体渲染的完整步骤 【免费下载链接】fontations Reading and writing font files 项目地址: https://gitcode.com/gh_mirrors/fo/fontations fontations是一个专注于字体文件读写的开源项目,通过与Chrome浏览…

2026/7/22 21:36:55 阅读更多 →
laravel-url-signer安全最佳实践:如何设置安全的签名密钥与防范攻击

laravel-url-signer安全最佳实践:如何设置安全的签名密钥与防范攻击

laravel-url-signer安全最佳实践:如何设置安全的签名密钥与防范攻击 【免费下载链接】laravel-url-signer Create and validate signed URLs with a limited lifetime 项目地址: https://gitcode.com/gh_mirrors/la/laravel-url-signer laravel-url-signer是…

2026/7/22 21:36:55 阅读更多 →

最新新闻

Linus Torvalds谈开源技术:Linux、Git、Rust与AI,开源世界如何应对新技术浪潮?

Linus Torvalds谈开源技术:Linux、Git、Rust与AI,开源世界如何应对新技术浪潮?

Linus Torvalds谈开源技术:Linux、Git、Rust与AI,开源世界如何应对新技术浪潮?如果只看技术履历,Linus Torvalds是Linux和Git的创造者,是过去三十多年开源世界绕不开的人物。但在这场对谈里,更值得看的并不…

2026/7/22 22:21:11 阅读更多 →
上海如韵 CN3300 4.5-32V/40W PFM升压型多节电池充电控制器 SOT23-6 技术解析

上海如韵 CN3300 4.5-32V/40W PFM升压型多节电池充电控制器 SOT23-6 技术解析

在多节锂电池、磷酸铁锂电池或铅酸电池的充电应用中,当输入电压低于电池组电压时,需要一款升压型充电控制器来实现高效充电。CN3300是一款工作于4.5V至32V的PFM升压型多节电池充电控制集成电路,采用SOT23-6封装,通过外部N沟道MOSF…

2026/7/22 22:21:11 阅读更多 →
5分钟掌握OBS Studio专业级色彩校正:从新手到高手的完整指南

5分钟掌握OBS Studio专业级色彩校正:从新手到高手的完整指南

5分钟掌握OBS Studio专业级色彩校正:从新手到高手的完整指南 【免费下载链接】obs-studio OBS Studio - Free and open source software for live streaming and screen recording 项目地址: https://gitcode.com/GitHub_Trending/ob/obs-studio OBS Studio作…

2026/7/22 22:21:11 阅读更多 →
NocoBase开发实战:从零构建你的第一个AI+无代码业务系统

NocoBase开发实战:从零构建你的第一个AI+无代码业务系统

NocoBase开发实战:从零构建你的第一个AI无代码业务系统 【免费下载链接】nocobase NocoBase is an open-source AI no-code platform for building business systems fast. Instead of generating everything from scratch, AI works on top of production-proven …

2026/7/22 22:21:11 阅读更多 →
PY32 定时器中断回调不执行的解决办法

PY32 定时器中断回调不执行的解决办法

一,发现问题 我在调试 PY32 的定时器中断时,按 HAL 库的流程配好了定时器,也写了回调函数,但全速运行后回调就是不执行。 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {if (htim->Instance TIM14) {// 这里…

2026/7/22 22:21:11 阅读更多 →
【线性代数实战】向量组等价与 B=AK 矩阵乘法的深度解析(附 Python 代码实现)

【线性代数实战】向量组等价与 B=AK 矩阵乘法的深度解析(附 Python 代码实现)

前言 在机器学习和数据科学的面试或实战中,我们常常听到“向量空间”、“降维”、“基向量”等词汇。很多初学者在死记硬背线性代数的定理时,往往忽略了一个关键事实:线性代数是计算机处理高维数据的底层语言。 今天,我们就深入剖析线性代数中 “向量组等价” 与核心矩阵…

2026/7/22 22:20:10 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻