
3步跑通CLIPCLIP安装与配置完整指南【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIPCLIPContrastive Language-Image Pre-Training对比式语言-图像预训练是 OpenAI 推出的多模态模型给它一张图片它能用自然语言预测出最匹配的文字片段。不用为某个任务单独训练一句文字描述就能让它做零样本图像分类。本文带你在一台普通电脑上完成 CLIP 的完整安装与配置照做即可在 5 分钟内看到匹配结果。是不是也遇到过这种情况看到 CLIP 的介绍很心动一打开终端就卡住了PyTorch 装哪个版本、模型权重怎么下载、import clip为什么报错这三道坎劝退过不少人。这篇教程把它们压成一条最短路径不需要背景知识按顺序执行就行。读完你将得到一套 4 条命令的最短安装路径Windows / macOS / Linux 分系统给出一段可直接运行的最小验证代码附预期输出2 个完整示例零样本图像分类、图像特征相似度对比4 个高频报错的原因与解法四条命令装好 CLIP分系统前置条件只有两个Python 3.8 以上和 git 工具。硬件上不挑没有显卡也能跑只是 CPU 速度慢一些。Windows# 1. 创建独立虚拟环境隔离系统 Python以后好卸载 python -m venv clip_env # 2. 激活环境提示符开头会多出 (clip_env) 前缀 clip_env\Scripts\activate # 3. 安装 PyTorch 及 CLIP 的其余依赖 pip install torch torchvision ftfy regex tqdm packaging # 4. 克隆仓库并安装为 Python 包 git clone https://gitcode.com/GitHub_Trending/cl/CLIP cd CLIP pip install .最后一条pip install .会读取 requirements.txt 里的依赖清单并把clip注册成可导入的模块执行完会看到Successfully installed clip-1.0。macOS / Linux# 1. 创建虚拟环境 python3 -m venv clip_env # 2. 激活环境注意路径是 bin不是 Scripts source clip_env/bin/activate # 3. 安装 PyTorch 及 CLIP 的其余依赖 pip install torch torchvision ftfy regex tqdm packaging # 4. 克隆仓库并安装 git clone https://gitcode.com/GitHub_Trending/cl/CLIP cd CLIP pip install .有 NVIDIA 显卡的话第 3 步建议改装 CUDA 版到 PyTorch 官网按你的驱动版本选一套命令复制即可没有显卡就保持上面的默认CPU版。✅ 30 秒跑出第一次图文匹配验证安装还在刚才的CLIP目录里新建一个文件verify_clip.py贴入下面代码执行python verify_clip.py。import torch import clip from PIL import Image # 自动选设备有 GPU 用 GPU否则用 CPU device cuda if torch.cuda.is_available() else cpu model, preprocess clip.load(ViT-B/32, devicedevice) # 加载仓库自带的 CLIP.png 作为待测图片 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(匹配概率:, probs)看到类似这样的输出说明安装成功了恭喜你拿下第一关匹配概率: [[0.9927937 0.00421068 0.00299572]]首次运行会自动下载约 350 MB 的模型权重缓存在~/.cache/clip/目录之后clip.load不再重复下载进度条慢一点是正常的别中途打断。它的原理一句话就能讲清CLIP 用海量图片, 文字配对训练学会把图片和描述文字映射到同一个向量空间匹配一张图和一句话就是算两个向量的相似度再取最高分。这也解释了零样本的含义——模型没被专门教过某个类别只要你能用文字描述它它就能判断。核心逻辑在 clip/clip.py 里clip.load、clip.tokenize等入口函数都可以在这一个文件中找到。用一句话给图片分类零样本分类实战刚才的例子是三选一真实任务往往有几十上百个类别。换成你自己的图片把候选类别用文字列出来即可。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(your_photo.jpg)).unsqueeze(0).to(device) # 每个类别写一句话a photo of 前缀能提升准确率 texts clip.tokenize([ a photo of a cat, a photo of a dog, a photo of a cup of coffee, a photo of a bicycle ]).to(device) with torch.no_grad(): image_features model.encode_image(image) # 图片编码为向量 text_features model.encode_text(texts) # 文字编码为向量 # 先做归一化内积即为余弦相似度 image_features / image_features.norm(dim-1, keepdimTrue) text_features / text_features.norm(dim-1, keepdimTrue) similarity (100.0 * image_features text_features.T).softmax(dim-1) print(分类概率:, similarity)输出是一组概率最大的一项就是模型的判断结果。类别多了就照葫芦画瓢多写几句。想跑更完整的流程可以打开官方示例 notebooks/Interacting_with_CLIP.ipynb里面有基于 CIFAR-100 的 100 类分类演示现成的提示词模板在 data/prompts.md。提取图像特征对比两张图的相似度特征向量是 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) # 加载两张图这里故意用同一张验证逻辑 img_a preprocess(Image.open(CLIP.png)).unsqueeze(0).to(device) img_b preprocess(Image.open(CLIP.png)).unsqueeze(0).to(device) with torch.no_grad(): feat_a model.encode_image(img_a) feat_b model.encode_image(img_b) # 归一化后内积即余弦相似度1 表示完全相同 feat_a feat_a / feat_a.norm(dim-1, keepdimTrue) feat_b feat_b / feat_b.norm(dim-1, keepdimTrue) print(相似度:, (feat_a feat_b.T).item()) print(特征维度:, feat_a.shape)预期输出相似度: 1.0 特征维度: torch.Size([1, 512])换成两张不同的图相似度会落在 0 到 1 之间越接近 1 说明内容越接近。ViT-B/32 输出 512 维向量实际做图库检索时把所有图的特征存下来新图进来算一遍内积就能排序。 4个高频安装报错逐个排查报错一ModuleNotFoundError: No module named clip原因克隆了仓库但没执行pip install .或者当前不在激活的虚拟环境里。解决先cd CLIP再执行pip install .确认命令行提示符开头带(clip_env)没有就先激活环境。报错二ModuleNotFoundError: No module named torch原因当前运行的解释器不是虚拟环境里那个PyTorch 实际没装进去。解决在已激活的环境里重新pip install torch torchvision再用python -c import torch; print(torch.__version__)确认能打印版本号。报错三RuntimeError: CUDA out of memory. Tried to allocate ...原因显卡显存不够装下模型或一次处理的图片太多。解决把代码里的ViT-B/32换成更小的RN50同时减少每批处理的图片数量实在不急也可以把device写死为cpu换 CPU 跑。报错四urlopen error [Errno 101] Network is unreachable原因clip.load首次运行要从云端下载权重当前网络访问不到。解决每个模型的下载地址都列在 clip/clip.py 的_MODELS表中手动下载后放入~/.cache/clip/也可以先下载好用clip.load(name, download_root指定目录)指过去。仓库会用 SHA256 校验文件文件名和内容对得上就能正常加载。继续往下走接下来值得做的三件事改提示词看效果变化。同一张图a photo of a cat 和 a cat sitting on the sofa 得分不同措辞直接影响准确率。完整实验见 notebooks/Prompt_Engineering_for_ImageNet.ipynb。跑一遍官方一致性测试。tests/test_consistency.py 验证不同版本模型输出一致是熟悉 API 的好入口。读一遍模型卡片。model-card.md 写清了模型的数据来源、局限和已知偏差正式用之前必读。核心实现都在 clip/ 目录入口函数在 clip/clip.py模型结构在 clip/model.py文字分词器在 clip/simple_tokenizer.py。把这三个文件读通你就能在这个基础上改出属于自己的任务了。【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考