CLIP 完整上手教程:用一句文字看懂图片里的内容
2026/8/24 3:09:22 网站建设 项目流程

CLIP 完整上手教程:用一句文字看懂图片里的内容

【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP

CLIP(Contrastive 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 步按显卡情况二选一。

  1. 用 conda 创建并激活一个独立环境(环境隔离可以避免依赖互相打架):
conda create -n clip-env python=3.8 -y conda activate clip-env
  1. 安装 PyTorch 和 torchvision。有 NVIDIA 显卡(CUDA 11.0 环境)的机器用:
conda install --yes -c pytorch pytorch=1.7.1 torchvision cudatoolkit=11.0

没有显卡的纯 CPU 机器,把cudatoolkit=11.0换成cpuonly

conda install --yes -c pytorch pytorch=1.7.1 torchvision cpuonly
  1. 装齐剩下的小依赖,并把 CLIP 源码下载到本地:
pip install ftfy regex tqdm packaging git clone https://gitcode.com/GitHub_Trending/cl/CLIP
  1. 进入目录,把它安装成一个可 import 的 Python 包:
cd CLIP pip install .

装完之后,在任何目录执行import clip都不报错,说明安装成功。

🏁 跑通第一次

在 clone 下来的 CLIP 目录里新建test_clip.py,粘贴下面代码,然后运行python test_clip.py

import 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 'torch'PyTorch 没装或装到了别的环境在 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(root=os.path.expanduser("~/.cache"), download=True, train=False) image, _ = data[3637] img = preprocess(image).unsqueeze(0).to(device) txt = torch.cat([clip.tokenize(f"a 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, keepdim=True) @ b / b.norm(-1, keepdim=True) 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, keepdim=True) b = model.encode_text(txt) / model.encode_text(txt).norm(-1, keepdim=True) print(100.0 * (a @ b.T).softmax(-1).cpu().numpy()) # 两条描述的匹配概率

预期输出两个概率,第一句(流程图描述)会明显更高——说明 CLIP 做的是语义匹配,而不是关键词命中。

延伸入口

  • 核心模型代码:clip/clip.py
  • 官方文档与 API 说明:README.md
  • 依赖清单:requirements.txt
  • 可交互示例 notebook:notebooks/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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询