- 人工智能
- 基础模型
- 大模型
- 多模态
- 计算机视觉
【免费下载链接】CLIP
CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image
本篇指南以 OpenAI 官方发布的 model-card.md 为骨架,结合本仓库 clip/model.py、clip/clip.py 等源码,系统拆解 CLIP(Contrastive Language-Image Pre-Training)多模态模型的模型细节、发布版本、预期用途、训练数据、性能表现与已知局限。读完本文,你将能够正确评估 CLIP 在零样本图像分类研究中的适用场景,理解其类目设计敏感性带来的公平性风险,并掌握部署前必须进行的领域内测试要求。
一、模型详情:CLIP 是什么
CLIP 由 OpenAI 的研究者开发,核心目标是研究"计算机视觉任务的鲁棒性从何而来",并检验模型是否能在零样本(zero-shot)方式下泛化到任意图像分类任务。它并非为通用模型部署而设计——要部署类似 CLIP 的模型,研究者必须先在具体部署上下文中仔细研究其能力边界。
从实现看,仓库中的 CLIP 类 是一个双编码器结构:图像编码器 + 文本编码器,两者通过对比损失(contrastive loss)联合训练,目标是最大化 (image, text) 匹配对的相似度。这正是 README.md 中所述"通过自然语言指令,给定一张图片预测最相关文本片段"能力的来源。
模型日期
2021 年 1 月。
模型类型
基础模型使用经过多处修改的 ResNet50作为图像编码器,使用带掩码自注意力的 Transformer作为文本编码器。此外还有将 ResNet 图像编码器替换为 Vision Transformer(ViT)的变体。
从 model.py 的ModifiedResNet类可以看到与 torchvision 标准 ResNet 的三大差异:
- 三段式 stem:原来 1 个卷积改为 3 个卷积,且用平均池化替代最大池化;
- 抗混叠步长卷积:当卷积 stride > 1 时,先在前面接一个平均池化(见
Bottleneck中的avgpool); - 注意力池化:最后一层池化改为 QKV 注意力(
AttentionPool2d,见 model.py),而不是平均池化。
模型版本
官方分阶段发布了多组模型,按发布时间线整理如下:
| 发布时间 | 模型版本 | 架构说明 |
|---|---|---|
| 初始发布 | ViT-B/32、RN50 | 分别对应 Vision Transformer 与 ResNet-50 架构 |
| 随阶段发布 | RN101、RN50x4 | RN50x4 按 EfficientNet 缩放规则放大 4 倍 |
| 2021 年 7 月 | RN50x16、ViT-B/16 | — |
| 2022 年 1 月 | RN50x64、ViT-L/14 | — |
| 2022 年 4 月 | ViT-L/14@336px | 336 像素输入分辨率的 ViT-L/14 |
这些版本名与 clip/clip.py 中_MODELS字典的键完全对应,clip.available_models()返回的正是这 8 个模型名。ViT-B/32中的32表示 patch size,@336px表示输入分辨率,其余 ViT 模型默认输入 224×224。
相关文档
- Blog Post
- CLIP Paper
二、模型用途:预期场景与越界场景
预期用途
该模型定位为面向研究社区的研究产出。官方希望它帮助研究者理解并探索零样本、任意图像分类,同时支持对这类模型潜在影响的跨学科研究(论文中包含了对潜在下游影响的讨论示例)。
主要预期用户是 AI 研究者,主要用途是理解视觉模型的鲁棒性、泛化能力以及其他能力、偏见和约束。
越界使用场景
模型卡对越界场景的界定非常严格:
- 任何部署场景(无论商业与否)目前均属越界;
- 受约束环境下的非部署用例(如受限环境中的图像搜索),除非用特定的、固定的类目体系做了彻底的领域内测试,否则也不推荐;
- 安全评估表明,鉴于 CLIP 在不同类目体系下性能波动显著,任何未经测试、不受约束的部署都可能造成潜在危害;
- 监控(surveillance)与人脸识别类用例无论模型表现如何都始终越界——此类 AI 应用目前缺乏公平使用的测试规范和检查机制;
- 模型未针对英语以外的语言进行专门训练或评估,使用应限于英语场景。
这一"研究优先、部署审慎"的边界,与 model-card.md 开篇"不是为通用部署开发"的定位一致。
三、训练数据:公开图文对与数据使命
数据来源
模型在公开的图像-标题(image-caption)配对数据上训练,数据通过两种途径获得:
- 爬取少数几个网站;
- 使用已有的常用图像数据集,如 YFCC100M(见 data/yfcc100m.md)。
其中很大一部分来自互联网爬取,因此数据对"与互联网连接最密切的人群和社会"更有代表性——这往往偏向发达国家、年轻人和男性用户。
数据使命声明
构建该数据集的目标是检验视觉任务的鲁棒性和泛化性,因此重点是从不同公开互联网数据源收集大量数据,采集过程基本采取非干预式(non-interventionist)方式。不过,爬取时只选择有政策禁止过度暴力和成人图像、且允许过滤此类内容的网站。
关键约束:该数据集不打算作为任何商业或部署模型的基础,官方也不会发布该数据集。
四、性能表现与局限性
性能评估
CLIP 在大量计算机视觉基准上接受过评估,覆盖从 OCR、纹理识别到细粒度分类的广泛任务。论文中报告的评估数据集包括:
细粒度与通用图像分类:Food101、CIFAR10、CIFAR100、Birdsnap、SUN397、Stanford Cars、FGVC Aircraft、VOC2007、DTD、Oxford-IIIT Pet dataset、Caltech101、Flowers102、STL-10、ImageNet。
OCR 与字符识别:MNIST、SVHN、IIIT5K、Flickr30。
地理定位与计数:Country211、CLEVR Counting、KITTI Distance。
鲁棒性基准:ImageNet-A、ImageNet-R、ImageNet Sketch、ObjectNet (ImageNet Overlap)。
视频与多模态:UCF101、Kinetics700、Youtube-BB、ImageNet-Vid。
社会影响类:Hateful Memes、SST-2、RareAct、MSCOCO。
其中 Country211 是专门用于评估地理定位能力的基准,从 YFCC100M 中筛选出带 GPS 坐标(对应 ISO-3166 国家代码)的图像,为每个国家采样 150 张训练图、50 张验证图、100 张测试图构建均衡数据集,详见 data/country211.md。此外,data/prompts.md 提供了论文中用于收集零样本分类分数的 26 个数据集的类名与提示模板(如 CIFAR10 的 18 个模板、Caltech101 的 34 个模板),ImageNet 的提示工程方案则记录在 notebooks/Prompt_Engineering_for_ImageNet.ipynb 中。
已知局限
模型卡明确列出了 CLIP 的若干局限:
- 细粒度分类与物体计数:CLIP 在这两类任务上表现挣扎;
- 公平性与偏见问题:论文中有专门讨论;
- 评估方法的低估风险:许多情况下官方使用线性探针(linear probe)评估 CLIP,而有证据表明线性探针可能低估模型真实性能。
关于第三点,仓库中的 tests/test_consistency.py 恰好展示了另一种评估思路:它同时加载 JIT 版本与非 JIT 版本模型,断言两者在相同输入上的 softmax 概率在atol=0.01, rtol=0.1容差内一致,验证了两种加载路径的输出一致性——这也说明在正式评估前,先确认推理管线本身的确定性是必要的。
偏见与公平性
模型卡披露了针对 Fairface 数据集的系统性测试:
- 污名化风险测试:将人物图像分类到"犯罪相关"和"非人类动物"类目时,发现种族和性别方面存在显著差异,且这些差异会随类目构造方式变化而改变;
- 人口统计分类测试:性别分类在所有种族上准确率 >96%('Middle Eastern' 最高 98.4%,'White' 最低 96.5%);种族分类平均约 93%;年龄分类平均约 63%。
需要强调的是,模型卡声明这些测试只是为了评估模型在不同人群上的表现、暴露潜在风险,绝不代表对这类任务的认可或热衷。核心结论是:CLIP 的性能与具体偏见高度依赖于类目设计和类别取舍,这直接呼应了前文"未经测试的部署可能有害"的警告。
五、从模型卡到实践:源码视角的关键验证
为了让模型卡中的描述与本仓库实现相互印证,这里补充几个源码级观测点:
- 对比学习的对数尺度:
CLIP.forward()中logit_scale = self.logit_scale.exp(),初始值为np.log(1 / 0.07)(见 model.py),对应 README 中"余弦相似度乘以 100"的表述(1/0.07 ≈ 14.29,exp 后约 100 量级); - 零样本分类的标准流程:加载模型后使用
model.encode_image/model.encode_text提取特征,归一化后计算余弦相似度,这一流程在 README 的 Zero-Shot Prediction 示例(CIFAR-100,top-5 输出如snake: 65.31%)中完整演示; - 线性探针评估:README 提供了用 scikit-learn 的 LogisticRegression(
C=0.316,需在验证集上通过超参数扫描确定)在 CLIP 图像特征上训练分类器的完整代码,与模型卡中"线性探针可能低估性能"的讨论直接相关。
六、反馈渠道
关于模型的任何问题或评论,官方建议通过 Google Form 提交。
结语
CLIP 模型卡是一份负责任模型报告的代表作:它清晰划定了"研究用途 vs 部署用途"的边界,披露了训练数据的代表性偏差,量化了偏见与公平性风险,也诚实记录了细粒度分类、计数等能力短板。对于任何打算在零样本分类、图文检索等方向使用 CLIP 的研究者,正确理解这份模型卡,意味着同时理解它的能力上限与使用红线——先做领域内测试,再谈其他。
- 人工智能
- 基础模型
- 大模型
- 多模态
- 计算机视觉
【免费下载链接】CLIP
CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image
相关推荐
Numba 安全模型解析:JIT 编译器的信任边界与安全使用指南
Numba 安全模型解析:JIT 编译器的信任边界与安全使用指南 导读 Numba 是一个利用 LLVM 将 Python 函数即时编译(JIT)为原生机器码的
编译器高性能计算FLUX.1 [dev] 模型卡片全解析:12B 整流流 Transformer 的能力边界、本地推理与合规使用
FLUX.1 dev 模型卡片全解析:12B 整流流 Transformer 的能力边界、本地推理与合规使用 FLUX.1 dev 是 Black Forest
人工智能大模型本地部署媒体生成FluentRead 油猴脚本完全指南:安装、能力边界与隐私模型
FluentRead 油猴脚本完全指南:安装、能力边界与隐私模型 导读 FluentRead(流畅阅读)除了提供浏览器扩展形态,还发布了一款独立的油猴(User
前端AI 应用本地部署
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考