☰
CLIP 模型卡全解析:架构、能力边界与安全使用指南
2026/9/30 2:06:50 网站建设 项目流程
  • 人工智能
  • 基础模型
  • 大模型
  • 多模态
  • 计算机视觉

【免费下载链接】CLIP

CLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image

项目地址:https://gitcode.com/GitHub_Trending/cl/CLIP
点击查看免费下载

本篇指南以 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 的三大差异:

  1. 三段式 stem:原来 1 个卷积改为 3 个卷积,且用平均池化替代最大池化;
  2. 抗混叠步长卷积:当卷积 stride > 1 时,先在前面接一个平均池化(见Bottleneck中的avgpool);
  3. 注意力池化:最后一层池化改为 QKV 注意力(AttentionPool2d,见 model.py),而不是平均池化。

模型版本

官方分阶段发布了多组模型,按发布时间线整理如下:

发布时间模型版本架构说明
初始发布ViT-B/32、RN50分别对应 Vision Transformer 与 ResNet-50 架构
随阶段发布RN101、RN50x4RN50x4 按 EfficientNet 缩放规则放大 4 倍
2021 年 7 月RN50x16、ViT-B/16—
2022 年 1 月RN50x64、ViT-L/14—
2022 年 4 月ViT-L/14@336px336 像素输入分辨率的 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)配对数据上训练,数据通过两种途径获得:

  1. 爬取少数几个网站;
  2. 使用已有的常用图像数据集,如 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 的若干局限:

  1. 细粒度分类与物体计数:CLIP 在这两类任务上表现挣扎;
  2. 公平性与偏见问题:论文中有专门讨论;
  3. 评估方法的低估风险:许多情况下官方使用线性探针(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

项目地址:https://gitcode.com/GitHub_Trending/cl/CLIP
点击查看免费下载

相关推荐

上一篇:Unexpected information v2.3新特性详解:双向检测与灰色高亮功能实战
下一篇:[自定义脚本] 打造原神自动化任务:开源工具Better Genshin Impact开发指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

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

立即咨询