拓冰建站拓冰建站
首页 / 资讯中心 / 正文

OpenCLIP:10分钟给图片库加上零样本图文检索

OpenCLIP10分钟给图片库加上零样本图文检索【免费下载链接】open_clipAn open source implementation of CLIP.项目地址: https://gitcode.com/GitHub_Trending/op/open_clipOpenCLIP是用对比学习训练CLIP的开源图文模型。适合想快速跑通零样本分类和语义检索的开发者。读完本文你能在10分钟内完成安装、加载预训练模型并完成第一次图文检索。它解决什么问题你有一批商品图想按红色跑鞋这样的文字直接搜索但自建搜索引擎门槛太高。OpenCLIP让你不训练模型就能做到加载一个预训练模型把图片和文字编码到同一向量空间按相似度即可检索。它还能做零样本分类给一组类别名直接输出分类结果。官方在LAION-2B等大规模数据集上训练最强ViT模型ImageNet零样本准确率超过80%见README模型表。想自己训练仓库内置了完整的训练流水线。环境准备最快上手路径pip install open_clip_torchimport open_clip, torch from PIL import Image model, _, preprocess open_clip.create_model_and_transforms(ViT-B-32, pretrainedlaion2b_s34b_b79k) tokenizer open_clip.get_tokenizer(ViT-B-32) with torch.no_grad(): img model.encode_image(preprocess(Image.open(docs/CLIP.png)).unsqueeze(0)) txt model.encode_text(tokenizer([a diagram, a dog, a cat])) print((100.0 * img txt.T).softmax(dim-1))这是最小路径一条pip命令一个加载调用就能得到图片与三段文字的相似度。示例来自README的Usage章节模型名与权重名都能用open_clip.list_pretrained()查询。核心能力拆解上面几个函数是最小单位加载、编码、点积。下面四个能力都是它们的组合。零样本图像分类模型把类别名当作提示文本直接输出图像分类概率不需要标注数据集。适合类别经常变动、来不及攒数据的场景比如新增几十种UI类型识别。官方提供了现成的工具函数from open_clip import build_zero_shot_classifier, IMAGENET_CLASSNAMES, SIMPLE_IMAGENET_TEMPLATES weights build_zero_shot_classifier(model, tokenizer, IMAGENET_CLASSNAMES, SIMPLE_IMAGENET_TEMPLATES) pred (img weights.T).argmax(dim-1)源码在 src/open_clip/zero_shot_classifier.py它会自动用多模板包装类名再取平均比手写单模板更稳。图文检索把库内文字批量编码成向量存好查询时图像向量与文档向量做点积排序即可。适合给图片库建语义搜索也适合图文自动匹配校验docs model.encode_text(tokenizer([a diagram, a dog, a cat])) top2 (img docs.T).topk(2, dim-1).indicesREADME建议亿级规模的embedding计算搭配clip-retrieval项目使用。预训练模型浏览与选型open_clip.list_pretrained()可列出全部可用模型与权重版本docs/PRETRAINED.md 给出每个模型的训练数据、分辨率与零样本精度。选型口径显存小选ViT-B-32精度优先选ViT-L-14或ViT-H-14多语言需求选roberta文本塔版本这些都有对应权重。训练自己的CLIP入口是python -m open_clip_train.main数据支持带图片路径和captions的CSV或分片webdataset.tar。README给了可直接照抄的单卡示例命令多卡用torchrun扩展常调参数见下表。关键参数速查参数含义建议值影响--model模型架构名从list_pretrained()选决定参数量与输入分辨率--train-dataCSV或.tar路径多数据源用::分隔指向真实数据大数据集用分片webdataset--batch-size每GPU批大小默认6464~320越大对比效果越好显存越高--lr学习率1e-3README单卡示例过高初期loss不稳--precision训练精度默认amp_bf16amp_bf16bf16比fp16数值更稳--local-loss --gather-with-grad对比损失按GPU切分一起开启多卡logit矩阵显存从O(n²)降到近线性--grad-checkpointing梯度检查点大模型开启用算力换显存--accum-freq梯度累积步数默认11~4显存有限时模拟大batch新手避坑指南加载convnext/siglip模型报Unknown model。原因这类图像编码器来自timm库版本过旧。解决pip install -U timmREADME有明确说明。精度明显低于官方指标。原因很多预训练权重用QuickGELU激活训练你用非-quickgelu后缀的定义加载会掉点。解决优先选-quickgelu后缀模型名加载对应权重README NOTE。训练时CUDA out of memory。原因模型大、batch过大。解决按顺序试--grad-checkpointing、调小--batch-size并加大--accum-freq、多卡时加--local-loss --gather-with-grad。旧训练脚本报错。原因main分支已切换到新训练栈TrainingTask包装、dict批次默认精度改为amp_bf16。解决需要旧稳定训练API时固定安装最新的3.x版本README顶部通知。roberta/xlm-roberta模型加载报错。原因文本塔依赖transformers库。解决安装transformersREADME同样有提示。进阶方向微调分类微调README指引WiSE-FT项目CoCa图文生成模型可用自己的标注数据集微调。分布式训练torchrun起单节点多卡SLURM起多节点README称该代码已在1024张A100上验证。生产部署INT8量化推理参考 tutorials/int8_tutorial.ipynb 教程批量推理建议配合torch.inference_mode()。学习路径与资源docs/PRETRAINED.md全部预训练模型清单含训练数据、计算量与精度。docs/openclip_results.csv38个数据集的零样本评测分数选型对比直接查表。docs/Interacting_with_open_clip.ipynb加载模型、推理、零样本分类的交互式示例。docs/script_examples/不同规模与分辨率下的真实训练命令。【免费下载链接】open_clipAn open source implementation of CLIP.项目地址: https://gitcode.com/GitHub_Trending/op/open_clip创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门