CLIP 零样本图像分类实战:从 0 标注到 48 张小样本部署指南
CLIP 零样本图像分类实战从 0 标注到 48 张小样本部署指南【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIPCLIPContrastive Language-Image Pretraining做零样本图像分类模型没看过你任务的任何标注也能把图片和文字直接对上、输出类别置信度再配少量标注就能延伸成小样本分类的产线方案。真实的坑长这样——某产线工程师把四个焊点瑕疵类名写成中文准确率从 80% 掉到六成出头换成英文句式模板才拉回来。这篇文章带这个图文对预训练模型走完从零样本基线到小样本部署的完整路径原理、环境搭建、三档精度调法、模型选型、48 张标注的实战案例、高频报错与上线前自查。0 标注怎么给图片分类CLIP 的分类本质是一次点积图像过视觉编码器得到 512 维向量每个候选句子过文本编码器得到 512 维向量两边 L2 归一化后做点积即余弦相似度再乘一个可学习温度系数代码里是logit_scale.exp()见 clip/model.py 的forwardsoftmax 就是每个类的置信度。为什么 0 标注也能分因为两个编码器的输出本来就在同一个向量空间里。依赖只有 5 个torch、torchvision、ftfy、regex、tqdm完整清单见 requirements.txt。克隆仓库后源码安装git clone https://gitcode.com/GitHub_Trending/cl/CLIPpip install -e 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) # 首次下载约 335MB 权重 model.eval() names [good, insufficient, bridge, missing] prompts [fa photo of a {n} solder joint on a PCB for n in names] img preprocess(Image.open(smt_pad_0007.jpg)).unsqueeze(0).to(device) txt clip.tokenize(prompts, truncateTrue).to(device) with torch.no_grad(): logits model(img, txt)[0] # 带温度系数的余弦相似度 print(logits.softmax(-1).numpy()) # 每个类别的置信度和为 1preprocess是随模型返回的图像变换缩放到 224x224、均值归一化只需记住一条图像过 preprocess文本过 tokenize。想交互式验证相似度计算和零样本分类全流程直接跑 notebooks/Interacting_with_CLIP.ipynb。CLIP 零样本图像分类适合什么任务一句话CLIP 适合新、杂、少的分类问题——1 到几百个类别、单图分类或按文本找图、零标注或每类个位数样本再往复杂就走常规检测、分割模型。类别规模1几百类且持续新增 → 适合上千类且追 top-1 极致精度 → 训专用分类器任务形态单图分类、打标签、按文本检索图 → 适合像素级分割、目标定位、计数 → 用检测/分割模型数据条件零标注或每类个位数样本 → 适合类别边界极细、要亚像素判别 → 走常规微调迭代节奏新类别当天上线 → 适合一次性交付、长期冻结 → 常规监督模型维护更便宜精度不达标怎么办先把提示词写对再谈换模型——模板问题能吃掉几个点的精度而且这一步不花一分钱。句式统一所有类共用同一模板、只换类名。有的类带场景词有的不带概率分布会失真。用完整短语a photo of a solder bridge优于裸词solder bridge裸词缺这是一张图的语义锚点。多模板集成每个类写 23 个模板比如再加a close-up of a {cls} solder joint各自的 softmax 概率取平均稳定拉高几个点。类名用英文分词器是按英文图文对训练的 BPE中文会碎成大量不可识别 token相似度骤降工业现场用英文类名展示层再映射回中文标签。仓库自带 26 个数据集的官方模板见 data/prompts.md直接抄相近领域的句式。每类只有 10 张图怎么办每类标注不足 100 张时性价比最高的是线性探针冻结 CLIP 全部权重只训一个线性分类头CPU 上几十秒。做法是训练集先过一遍模型抽 512 维图像特征再交给传统分类器# 1) 离线提特征每张图一个 512 维向量 feats, ys [], [] with torch.no_grad(): for imgs, y in train_loader: feats.append(model.encode_image(imgs.to(device)).cpu()) ys.append(y) # 2) CPU 上训线性分类器秒级到分钟级 from sklearn.linear_model import LogisticRegression clf LogisticRegression(max_iter2000) clf.fit(torch.cat(feats).numpy(), torch.cat(ys).numpy())特征可以提前算好存盘之后类别集合变了不用重跑模型只换分类头。类别越来越多、样本还是不够时上提示调优依旧冻结骨干在文本端学一组提示嵌入让 CLIP 学会你领域的措辞# 可学习提示嵌入形状与文本编码器输出对齐77 个 token x 512 维 prompt torch.nn.Parameter(torch.randn(77, 512, devicedevice) * 0.02) opt torch.optim.AdamW([prompt], lr1e-4) # 每个训练步把 prompt 当作文本嵌入与图像特征算相似度 # 梯度只回传 prompt可训练参数约 4 万过拟合风险低没有 GPU 能跑吗能——选 RN50ResNet-50 骨干CPU 上速度最快有卡的话用 fp16、批处理、缓存文本嵌入三个动作压成本。模型权重体积骨干结构适用取舍ViT-B/32约 335MB视觉 Transformerpatch 32速度与精度均衡默认首选ViT-B/16约 580MB视觉 Transformerpatch 16零样本更强推理约慢一倍RN50约 440MBResNet-50CPU 上最快无卡环境首选clip.available_models()定义在 clip/clip.py一共返回 8 个型号还有更重的 ViT-L/14336px。三个加速动作按性价比排序半精度GPU 上model.half()显存和耗时大约各降一半fp16 要文本、图像两侧都转。批处理一次喂 1632 张图吞吐远高于逐张调用流水线场景必须用。缓存文本嵌入类别集合固定时encode_text只算一次# 文本嵌入只算一次 with torch.no_grad(): text_emb model.encode_text(clip.tokenize(prompts, truncateTrue).to(device)) text_emb text_emb / text_emb.norm(dim-1, keepdimTrue) # 之后每帧只跑图像侧 与缓存文本做点积另外 device 是 cpu 时clip.load会自动float()CPU 部署不用手动处理精度。48 张标注能挤出多少精度48 张标注每类 12 张准确率从纯零样本的 81.4% 拉到线性探针 94.8%提示调优再 0.4 个点——大部分差距被线性探针吃掉。场景SMT 焊盘四类筛查正常、缺锡、锡桥、漏焊每类 12 张图每类留 8 张做验证集。提示词用双模板a photo of a {cls} solder pad on a circuit boarda close-up of a {cls} solder joint两个模板的 softmax 概率取平均三档方案放在一起对比方案验证集准确率锡桥类召回纯零样本双模板集成81.4%74.3%线性探针48 张标注94.8%96.4%提示调优48 张标注10 epoch95.2%97.2%结论零样本能直接给出可用基线48 张标注后线性探针吃掉大部分差距提示调优边际收益只剩 1 个点。部署形态是特征提取 LogisticRegressionGPU 上 fp16、批 8 张约 28ms/张产线节拍放得下。第一次跑通为什么总报错九成第一条 traceback 是设备不一致clip.tokenize返回的文本张量在 CPU 上忘写.to(device)就和图像张量对不上。设备不一致最常见的第一条报错图像、文本张量都要.to(device)。权重下载与缓存clip.load首次联网拉权重并校验 SHA256校验不过抛 RuntimeError断网环境把.pt预先放到~/.cache/clip或直接把本地文件路径传给clip.load它支持本地路径。提示词语言BPE 词表 49152 个 token、按英文训练中文会碎成大量不可识别 token匹配度骤降。类名写法裸类名、模板不一致、某类带场景词其他类不带三样都会让概率分布失真clip.tokenize默认超过 77 个 token 就报错长描述记得传truncateTrue。这份零样本方案能直接上线吗上线前把下面 6 项过一遍任何一项不过就退回重做用 23 个类别跑零样本基线确认提示词语言与模板风格每类至少 10 张标注图并留出固定验证集模型、图像、文本张量三者设备与精度一致fp16 时文本侧同样要转推理走批处理类别集合固定时缓存文本嵌入记录零样本 / 线性探针 / 提示调优三组对照数字作为回归基准新增类别只改类名与模板不动模型验证当天可上线从第一节的代码开始拿零样本基线、先看概率分布合不合理再按标注预算选线性探针或提示调优路线把三组验证集数字记下来。【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

UI UX Pro Max 的 banner-design 技能:多格式创意 Banner 系统的完整实战指南

UI UX Pro Max 的 banner-design 技能:多格式创意 Banner 系统的完整实战指南

UI UX Pro Max 的 banner-design 技能:多格式创意 Banner 系统的完整实战指南 【免费下载链接】ui-ux-pro-max-skill An AI skill that provides design intelligence for building professional UI/UX across multiple platforms. 项目地址: https://gitcode.com…

2026/9/22 1:02:06 阅读更多 →
CANN ops-math StridedSlice 算子实战解析:begin/end/strides 子张量提取与掩码机制、aclnn 调用与源码实现

CANN ops-math StridedSlice 算子实战解析:begin/end/strides 子张量提取与掩码机制、aclnn 调用与源码实现

CANN ops-math StridedSlice 算子实战解析:begin/end/strides 子张量提取与掩码机制、aclnn 调用与源码实现 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-ma…

2026/9/21 9:28:40 阅读更多 →
Oracle 11g R2安装失败真相:下载校验与环境预检指南

Oracle 11g R2安装失败真相:下载校验与环境预检指南

1. 为什么Oracle 11g R2安装总卡在“环境检查失败”?——从下载源头开始的真相你是不是也经历过:点开Oracle官网,页面跳转、注册邮箱、勾选协议、等待下载……最后解压发现setup.exe双击没反应,或者刚点下一步就弹出红色警告框&am…

2026/9/21 2:36:19 阅读更多 →

最新新闻

3分钟讲透ps怎么镜像:手写实现与底层逻辑全解析

3分钟讲透ps怎么镜像:手写实现与底层逻辑全解析

3分钟讲透ps怎么镜像:手写实现与底层逻辑全解析 官方文档翻了三遍,关于ps怎么镜像的段落还是云里雾里?别慌,这不是你的问题,是文档写法太“学术”。很多工程师卡在第一步,不是因为不会操作,而是没看懂底层到底在动什么手脚。今天咱们不背条文,直…

2026/9/22 1:40:53 阅读更多 →
编程专业避坑指南:3步搞定环境配置

编程专业避坑指南:3步搞定环境配置

编程专业避坑指南:3步搞定环境配置 刚选编程专业,是不是盯着屏幕发呆,装个Python环境就卡半天?别慌,我见过太多新手在第一步就劝退。这篇避坑指南,专治各种“下载完安装包却不会配环境变量”的懵圈状态。咱们不整虚的,直接上干货,让你从入门到…

2026/9/22 1:40:53 阅读更多 →
搞定aliez歌词解析,这3个高频面试题不再卡壳

搞定aliez歌词解析,这3个高频面试题不再卡壳

搞定aliez歌词解析,这3个高频面试题不再卡壳 配置环境就卡半天,是不是你也经历过?打开项目一看,依赖包版本冲突,Node.js版本不对,Python环境又是另一套,折腾两小时代码还没跑起来。更惨的是,面试官问起aliez歌词解析的核心逻…

2026/9/22 1:40:53 阅读更多 →
手写实现解方程表白代码:5个步骤搞定项目落地

手写实现解方程表白代码:5个步骤搞定项目落地

手写实现解方程表白代码:5个步骤搞定项目落地 是不是刚学完 Python 语法,打开 IDE 脑子就一片空白?别慌,这是绝大多数初学者从“看懂”到“能做”时必然经历的断崖。很多人以为编程就是背公式,但真正的工程能力在于 手写实现…

2026/9/22 1:40:53 阅读更多 →
3个方案治配置没耐心:附完整示例与选型指南

3个方案治配置没耐心:附完整示例与选型指南

3个方案治配置没耐心:附完整示例与选型指南 配置环境就卡半天,是不少开发者入行时的噩梦。依赖冲突、版本不匹配、报错日志像天书,折腾两小时还没跑通Hello…

2026/9/22 1:40:53 阅读更多 →
jssetinterval源码图解原理:老手避坑指南

jssetinterval源码图解原理:老手避坑指南

jssetinterval源码图解原理:老手避坑指南 官方文档里关于 setInterval 的描述总是轻描淡写,几行代码就带过,真正在深夜线上环境炸出“任务堆积”或“内存泄漏”时,你才发现那些被忽略的细节才是魔鬼。别急着翻 MDN…

2026/9/22 1:39:52 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →