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

如何 10 分钟跑通 CLIP:安装、验证与零样本图文匹配实战

如何 10 分钟跑通 CLIP安装、验证与零样本图文匹配实战【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP不收集训练数据、不训练分类器把一组文字候选丢给一张图片就能得到相似度排名——这就是 CLIPContrastive Language-Image Pre-Training解决的图文匹配问题。这篇 CLIP 安装与使用教程带你做三件事搭好可运行的环境、用十几行脚本验证模型、把候选标签换成自己的文字做零样本分类。全程不需要微调加载预训练权重即可出结果。先睹为快10 行代码跑通图文匹配在仓库根目录保存下面这段代码为verify.py它会对CLIP.png计算三条候选描述的概率。⚠️ 首次调用clip.load会从官方源拉取 ViT-B/32 权重数百 MB属正常现象不是卡死。没有环境的话先跳去下文「安装与环境准备」回来再跑。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) 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(Label probs:, probs)跑对的样子终端打印Label probs: [[0.9927937 0.00421068 0.00299572]]这样的向量——第一个位置对应 a diagram≈0.99其余两项之和不足 0.01。如果三项概率接近均分或报错直接翻到「踩坑问答」。一分钟原理图文为何能算出同一把尺子上的分数CLIP 在海量图像文本配对数据上对比预训练图像编码器和文本编码器各输出一个向量配对的图文被拉近、不配对的被推远。于是同一语义下的图片和文字在共享向量空间里天然余弦相似度高。推理时只需把候选文字编码成文本向量与图像向量逐一算余弦相似度得分最高者胜出——这就是零样本能力的来源不需要针对具体任务再训练。安装与环境准备从干净环境到模型可加载前置条件先自查一遍Python 3.x推荐 3.8PyTorch ≥ 1.7.1 torchvisionREADME.md 的官方要求conda 或 pip 任一可用能访问外网装依赖 首次下载权重创建独立 conda 环境把依赖隔离在专用环境里避免污染其他项目conda create -n clip python3.8 -y conda activate clip跑对的样子提示符前出现(clip)且两条命令均无报错。按硬件配置 PyTorchCUDA 机器用 conda 渠道安装把cudatoolkit后面的版本改成与你显卡驱动匹配的 CUDAconda install --yes -c pytorch pytorch torchvision cudatoolkit11.0纯 CPU 机器含 macOS 默认环境直接装 CPU 轮子pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu跑对的样子python -c import torch; print(torch.version.cuda)在 GPU 环境打印 CUDA 版本号如 11.0CPU 环境打印None都算通过。装齐依赖并以包形式安装 CLIP先补上 requirements.txt 里除 torch 系之外的依赖pip install ftfy regex tqdm packaging再克隆仓库并安装为 Python 包git clone https://gitcode.com/GitHub_Trending/cl/CLIP cd CLIP pip install .跑对的样子python -c import clip; print(clip.__file__)能打印出仓库内的 clip 模块路径且无报错。不同环境的差异点CUDA GPU 机器PyTorch 走 conda cudatoolkit版本对齐驱动纯 CPU / macOSPyTorch 走 pip 的 cpu 轮子不需要 cudatoolkit离线环境先把对应权重文件如ViT-B-32.pt文件名与 clip/clip.py 中映射表一致手动放进~/.cache/clip/再照常装包从示例到真实用法用自己的标签做零样本分类最小示例里模型直接返回 logits换成encode_image/encode_text拿到特征后就能对任意数量的候选标签做检索式分类。下面把三条描述换成贴近实际的候选标签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) labels [ a diagram of a contrastive learning pipeline, a photo of a person working at a desk, a screenshot of a code editor, ] 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) img_f img_f / img_f.norm(dim-1, keepdimTrue) txt_f txt_f / txt_f.norm(dim-1, keepdimTrue) sim (100.0 * img_f txt_f.T).softmax(dim-1) for label, score in zip(labels, sim[0].tolist()): print(f{score:.4f} {label})结果解读标准两路特征都做了 L2 归一化点积即余弦相似度乘 100 再 softmax是把分数拉成温度合适的概率分布每行三个概率之和为 1最大值越接近 1模型越笃定若前两名差距很小例如差值 0.1说明图像在候选之间难以区分应改写标签措辞或换更合适的模型而不是硬选 top-1跑对的样子第一条contrastive learning pipeline 相关描述概率显著领先其余两条接近 0想看更多模型规格运行clip.available_models()可用RN50、ViT-B/16、ViT-L/14等名称传给clip.load。踩坑问答首次运行最容易卡住的 5 个问题问python verify.py直接报ModuleNotFoundError: No module named clip。环境没激活或仓库没以包形式装过。确认处于(clip)环境、位于仓库根目录重新执行pip install .仍失败就用conda env list核对当前环境。问脚本运行后长时间无输出像死机了。首次权重下载中数百 MB。等进度条走完即可网络差就配置代理或手动下载权重放进~/.cache/clip/再运行。问报RuntimeError: CUDA out of memory。显存不够。换更小的模型RN50比 ViT 系列省显存很多或减小批大小⚠️ 显存紧张时优先降模型规格ViT-L 系列对显存要求最高。问FileNotFoundError提示图片文件不存在。相对路径是相对当前工作目录解析的不是相对脚本位置。把图片放到运行目录下或改用绝对路径。问pip install .中途报缺packaging、tqdm之类的包。基础依赖没装全。回到安装一节按顺序补装 PyTorch 与ftfy regex tqdm packaging再重跑pip install .。下一步三个可执行的深入方向复现完整零样本预测README.md 里的 CIFAR-100 示例会从 100 个文本标签中给出 top-5 排序示例输出中 snake 以 65% 概率领先把image和标签集合替换成自己的业务数据即可直接落地。做提示词工程notebooks/Prompt_Engineering_for_ImageNet.ipynb 系统对比同一标签不同措辞对准确率的影响想提升分类精度先看这里。读实现加载与分词逻辑在 clip/clip.py网络结构在 clip/model.py训练数据来源与已知局限见 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),仅供参考
分享:

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

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