尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

CLIP零样本图像识别实战:9款模型变体一次对比,选型不再纠结

CLIP零样本图像识别实战:9款模型变体一次对比,选型不再纠结 CLIP零样本图像识别实战9款模型变体一次对比选型不再纠结【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP还在为CLIP模型选型纠结吗RN50、ViT-B/32、ViT-L/14……9个型号到底差在哪本文用官方数据把规格、准确率、适用场景一次讲清读完即可对着自己的场景直接选型。CLIP是什么用自然语言指挥图片识别的模型CLIPContrastive Language-Image Pre-training对比式语言-图像预训练是一个看图 读文字都能做的神经网络。它的核心能力是零样本识别你不用为某个任务标注一张图、不用单独训练只要给它一句自然语言描述它就能判断图片内容。按官方说法CLIP在ImageNet上零样本识别时没有使用任何一条标注数据就达到了传统ResNet-50约22.8万条标注、常规训练的水平。对使用者来说这意味着新任务上线不用等标注、不用重新训练改一句提示词就行。上面是官方给出的架构示意左边一个视觉编码器把图片变成向量右边一个文本编码器把文字变成向量两个向量被拉到同一个空间里比对相似度。核心原理为什么改一句提示词就能换任务CLIP的训练方式很直接拿数亿对图片 配文让同一对的图文向量尽量靠近不同对的尽量远离这叫对比学习。训练完成后一张猫的照片这句话和一张猫图在向量空间里就天然挨得很近。所以推理时它做的事只有一件算图片和候选文本的相似度谁高选谁。任务类别完全由你给的文本列表决定——这就是改提示词换任务的原理。相似度计算逻辑可以直接看 clip/model.py 中CLIP类的forward方法特征先做归一化再点积乘以温度系数100得到logits。这里有个实用推论提示词写得好不好直接影响识别上限。比如a photo of a cat和a cat给出的结果可能不同。仓库里 data/prompts.md 收集了论文中26个数据集的类别名和提示词模板写分类提示词前值得翻一翻。9个型号全对比规格、零样本准确率与发布时间下表数据来自 clip/clip.py 的_MODELS定义、model-card.md 的版本说明以及官方论文arXiv:2103.00020的ImageNet零样本Top-1结果模型视觉编码器输入分辨率ImageNet零样本Top-1发布时间RN50ResNet-50224×22476.2%2021.01RN101ResNet-101224×22477.9%2021.01ViT-B/32ViT基础版32px分块224×22476.3%2021.01RN50x4ResNet-50按4倍宽度扩展384×38478.1%2021.07RN50x16ResNet-50按16倍宽度扩展512×51279.6%2021.07ViT-B/16ViT基础版16px分块384×38478.3%2021.07RN50x64ResNet-50按64倍宽度扩展640×64080.7%2022.01ViT-L/14ViT大版本14px分块224×22481.3%2022.01ViT-L/14336pxViT大版本14px分块336×33685.3%2022.04三个规律可以帮你省掉逐个研究的时间同架构下分块/分辨率越大越准ViT-B/1678.3%比ViT-B/3276.3%高2个点因为16px分块让模型看得更细ViT-L/14336px是目前上限85.3%比RN50高9.1个百分点代价是更大的显存和更慢的推理ResNet系列的宽版x4/x16/x64是分辨率换精度路线输入从224一路加到640适合关注图像细节的场景按场景选型三类用户各选哪款具体建议要精度、不在乎显存直接 ViT-L/14336px。它是目前官方模型里的精度天花板医学影像、细粒度商品识别这类看细节的任务首选常规分类服务ViT-L/1481.3%是精度和成本的平衡点显存紧张就退回 ViT-B/3276.3%它224×224的输入是最省的一档关注图中小物体或远距离目标选高输入分辨率的型号RN50x16512×512、RN50x64640×640或 ViT-B/16384×384分辨率高意味着小目标占比更大想先跑通流程验证想法RN50 或 ViT-B/32 下载快、加载快验证完再换大模型快速上手安装并跑通第一次推理安装只需三步依赖为PyTorch 1.7.1与少量Python包见 requirements.txt$ pip install ftfy regex tqdm $ git clone https://gitcode.com/GitHub_Trending/cl/CLIP $ pip install ./CLIP装完后跑这段最小示例首次运行会自动下载模型到~/.cache/clip并校验SHA256防止损坏import torch, 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) # 输出: [[0.9927937 0.00421068 0.00299572]]这段代码在做的事把一张图和一个候选标签列表分别编码成向量模型返回每张图与每个标签的相似度得分softmax之后就是概率——对这张架构图模型给出a diagram约99.3%的置信度。想要更多花样零样本分类完整流程、线性探针评测可以直接打开 notebooks/Interacting_with_CLIP.ipynb 跟着做。上线前的三个提醒官方在模型卡里明确写了适用范围部署前建议对照自查只支持英文模型未在英语以外的语言上训练和评估中文提示词效果没有保证细粒度和计数是弱项官方承认它在细粒度分类比如区分两个相近的鸟种和数物体个数时表现挣扎这两类任务建议加标注数据做二次训练类别设计影响公平性模型在不同类别划分下表现差异明显论文中测出了与种族、性别相关的偏差涉及人的场景务必做专项测试总结CLIP用图文向量对齐一招把图像分类从每个任务都要训练变成每个任务写一句提示词9个模型变体覆盖了从224×224轻量推理到640×640高分辨率的完整需求谱。从2021年1月的RN50/ViT-B/32起步到2022年4月的ViT-L/14336px达到85.3%官方按能力分批次放出了全系列模型。选型的决策路径很简单精度优先选ViT-L/14336px成本优先选ViT-B/32中间档按分辨率需求在ViT-L/14、ViT-B/16、RN50x系列里挑。你实际项目中用的是哪款CLIP模型遇到过提示词效果不稳定或者显存不够的问题吗欢迎在评论区聊聊你的配置和踩坑经历。【免费下载链接】CLIPCLIP (Contrastive Language-Image Pretraining), Predict the most relevant text snippet given an image项目地址: https://gitcode.com/GitHub_Trending/cl/CLIP创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表