公司动态
CLIP 完整上手教程:用一句文字看懂图片里的内容
CLIP 完整上手教程用一句文字看懂图片里的内容【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIPCLIPContrastive Language-Image Pretraining是 OpenAI 开源的图文匹配模型给它一张图片和几条文字候选它直接告诉你哪条文字和图片最对得上不需要针对具体任务重新训练。这篇 CLIP 安装教程面向没有机器学习背景的运营、学生和自学者全程跟着走一遍你就能在自己电脑上跑通第一次图片识别。 一句话搞懂把 CLIP 想成一位阅图无数的老编辑它事先看过十几亿组图片配文已经学会了把图和文字在同一个空间里对齐。比如你递给它一张架构图再递上三个选项a diagram、a dog、a cat它会果断圈出 a diagram——而且你从没告诉过它答案。 动手前自查先花一分钟对照电脑配置三行看够配置项要求说明Python3.8 及以上用 conda 建环境时一条命令就能指定版本内存4GB 起步推荐 8GB模型本身不大主要占用在推理过程显卡可选有 NVIDIA 显卡装 GPU 版 PyTorch速度快很多没有独显、只有 4GB 内存的办公本也能完整跑通本文所有例子只是同一步推理要等几十秒而不是几秒。 安装主流程全程 4 步Windows、macOS、Linux 通用只有第 2 步按显卡情况二选一。用 conda 创建并激活一个独立环境环境隔离可以避免依赖互相打架conda create -n clip-env python3.8 -y conda activate clip-env安装 PyTorch 和 torchvision。有 NVIDIA 显卡CUDA 11.0 环境的机器用conda install --yes -c pytorch pytorch1.7.1 torchvision cudatoolkit11.0没有显卡的纯 CPU 机器把cudatoolkit11.0换成cpuonlyconda install --yes -c pytorch pytorch1.7.1 torchvision cpuonly装齐剩下的小依赖并把 CLIP 源码下载到本地pip install ftfy regex tqdm packaging git clone https://gitcode.com/GitHub_Trending/cl/CLIP进入目录把它安装成一个可 import 的 Python 包cd CLIP pip install .装完之后在任何目录执行import clip都不报错说明安装成功。 跑通第一次在 clone 下来的 CLIP 目录里新建test_clip.py粘贴下面代码然后运行python test_clip.pyimport torch import clip from PIL import Image device cuda if torch.cuda.is_available() else cpu model, preprocess clip.load(ViT-B/32, device) # 首次会自动下载约 300MB 权重 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(): image_features model.encode_image(image) text_features model.encode_text(text) probs model(image, text)[0].softmax(dim-1).cpu().numpy() print(Label probs:, probs)预期输出形如[[0.9927937 0.00421068 0.00299572]]三个数字对应三条候选文字第一个约 0.99说明模型有 99% 的把握认为这张图是 a diagram示意图图文匹配已经生效。ViT-B/32是默认模型名嫌它占资源可以换成更小的RN50拿不准还有哪些可选运行时打印clip.available_models()就能看全部。 踩坑速查第一次跑基本都会撞上下面这几条对号入座报错现象可能原因一行解决法ImportError: No module named torchPyTorch 没装或装到了别的环境在 clip-env 里重装conda install -c pytorch pytorch cpuonly首次运行卡在下载模型权重约 300MB网络慢或中断直接重跑脚本即可续传CUDA out of memory显存不够把模型名换小clip.load(RN50, device)ModuleNotFoundError: No module named ftfy小依赖没装全pip install ftfy regex tqdm实战一下2 个例子跑通之后把模型用到两个真实场景里。例子一零样本分类——不给任何训练数据直接用文字给 100 个候选类别排序import clip, torch, os from torchvision.datasets import CIFAR100 device cuda if torch.cuda.is_available() else cpu model, preprocess clip.load(ViT-B/32, device) data CIFAR100(rootos.path.expanduser(~/.cache), downloadTrue, trainFalse) image, _ data[3637] img preprocess(image).unsqueeze(0).to(device) txt torch.cat([clip.tokenize(fa photo of a {c}) for c in data.classes]).to(device) with torch.no_grad(): a model.encode_image(img) b model.encode_text(txt) sim 100.0 * a / a.norm(-1, keepdimTrue) b / b.norm(-1, keepdimTrue) top sim.T.softmax(-1)[0].topk(5) print([data.classes[i] for i in top.indices]) # 最可能的 5 个类别预期输出 5 个类别名第一个通常就是这张图编号 3637的真实类别把握在 80% 上下。例子二文字和图片比相似度——写两句描述看哪句更像这张图在 CLIP 仓库目录里运行import clip, torch from PIL import Image device cuda if torch.cuda.is_available() else cpu model, preprocess clip.load(ViT-B/32, device) img preprocess(Image.open(CLIP.png)).unsqueeze(0).to(device) txt clip.tokenize([a flowchart made of boxes and arrows, a photo of a cat]).to(device) with torch.no_grad(): a model.encode_image(img) / model.encode_image(img).norm(-1, keepdimTrue) b model.encode_text(txt) / model.encode_text(txt).norm(-1, keepdimTrue) print(100.0 * (a b.T).softmax(-1).cpu().numpy()) # 两条描述的匹配概率预期输出两个概率第一句流程图描述会明显更高——说明 CLIP 做的是语义匹配而不是关键词命中。延伸入口核心模型代码clip/clip.py官方文档与 API 说明README.md依赖清单requirements.txt可交互示例 notebooknotebooks/Interacting_with_CLIP.ipynb模型背景介绍model-card.md下一步把验证代码里的三条候选文字换成你自己的业务比如商品主图对类目名观察概率排序会怎么变。【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考