【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

目录

一、引言

二、零样本图像分类(zero-shot-image-classification)

[2.1 概述](#2.1 概述)

[2.2 技术原理](#2.2 技术原理)

[2.3 应用场景](#2.3 应用场景)

[2.4 pipeline参数](#2.4 pipeline参数)

[2.4.1 pipeline对象实例化参数](#2.4.1 pipeline对象实例化参数)

[2.4.2 pipeline对象使用参数](#2.4.2 pipeline对象使用参数)

[2.4 pipeline实战](#2.4 pipeline实战)

[2.5 模型排名](#2.5 模型排名)

三、总结


一、引言

pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。共计覆盖32万个模型

今天介绍CV计算机视觉的第七篇,零样本图像分类(zero-shot-image-classification),在huggingface库内有500个零样本图像分类模型。

二、零样本图像分类(zero-shot-image-classification)

2.1 概述

零样本图像分类是指模型对以前未见过的图片类别进行分类的任务,它要求模型能够在没有看到特定类别样本的情况下,对这些类别进行分类。这通常通过学习类别之间的语义表示(如从文本描述中学习)来实现,并将图像特征与这些语义表示相匹配。

2.2 技术原理

比较典型的模型是openai发布的clip-vit-base-patch16,曾被应用于Stable ​​​​​​​Diffusion文生图模型中,用于文本与图片间的信息关联。关于文生图/图生图可参考我之前的文章

  • 首先,采用对比学习方法,基于vit(Vision Transformer)对文本与图片的语义关系进行学习
  • 其次,创建用于分类任务的数据集
  • 最后,对于未曾见过的图片进行分类。

2.3 应用场景

  • 多领域识别:在需要识别新出现或罕见类别的场景中,如生物学的物种识别、新出现的商品分类、或者在没有直接训练样本的艺术作品分类,ZSL能通过预先定义的语义描述来识别新类别。
  • 智能检索:用户可以使用自然语言描述来检索特定的图像内容,即使该图像类别未在训练集中出现,例如在大规模图像库中的视觉搜索应用。
  • 多语种支持的图像标签:在多语言环境下,ZSL技术可以利用文本描述的语义来为图像自动标注,无需针对每种语言的标签进行单独训练。
  • 交互式系统:在AI助手或聊天机器人中,用户可以描述一个未见过的物体,系统通过零样本学习能力理解并识别这类物体,提供相关信息。
  • 监控与安全:在监控系统中,可以识别新类型的安全威胁或异常行为,即使这些行为或对象在训练期间未被预先学习。

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

  • modelPreTrainedModelTFPreTrainedModel)--- 管道将使用其进行预测的模型。 对于 PyTorch,这需要从PreTrainedModel继承;对于 TensorFlow,这需要从TFPreTrainedModel继承。

  • image_processor ( BaseImageProcessor ) --- 管道将使用的图像处理器来为模型编码数据。此对象继承自 BaseImageProcessor

  • modelcardstrModelCard可选)--- 属于此管道模型的模型卡。

  • frameworkstr可选 )--- 要使用的框架,"pt"适用于 PyTorch 或"tf"TensorFlow。必须安装指定的框架。

    如果未指定框架,则默认为当前安装的框架。如果未指定框架且安装了两个框架,则默认为 的框架model,如果未提供模型,则默认为 PyTorch。

  • taskstr,默认为"")--- 管道的任务标识符。

  • num_workersint可选 ,默认为 8)--- 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。

  • batch_sizeint可选 ,默认为 1)--- 当管道将使用DataLoader (传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理

  • args_parserArgumentHandler可选) - 引用负责解析提供的管道参数的对象。

  • deviceint可选 ,默认为 -1)--- CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。您可以传递本机torch.devicestr

  • torch_dtypestrtorch.dtype可选 ) - 直接发送model_kwargs(只是一种更简单的快捷方式)以使用此模型的可用精度(torch.float16,,torch.bfloat16...或"auto"

  • binary_outputbool可选 ,默认为False)------标志指示管道的输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。

2.4.2 pipeline对象使用参数

  • imagestrList[str]PIL.ImageList[PIL.Image]------管道处理三种类型的图像:
    • 包含指向图像的 http 链接的字符串
    • 包含图像本地路径的字符串
    • 直接在 PIL 中加载的图像
  • candidates_labels ( List[str]) --- 该图像的候选标签
  • hypothesis_templatestr可选 ,默认为)--- 与候选标签 "This is a photo of {}"结合使用的句子,通过用候选标签替换占位符来尝试图像分类。然后使用 logits_per_image 估计可能性
  • timeout可选 float,默认为 None)--- 等待从网络获取图像的最长时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。

2.4 pipeline实战

分别采用google/siglip-so400m-patch14-384和openai/clip-vit-base-patch16对以下图片进行分类

图片一:

图片二:

采用pipeline代码如下

python 复制代码
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
from transformers import pipeline

classifier = pipeline(model="google/siglip-so400m-patch14-384")
output=classifier(
    "./sd-xl.png",
    candidate_labels=["animals", "humans", "landscape"],
)
print(output)
classifier = pipeline(model="openai/clip-vit-base-patch16")
output=classifier(
    "http://images.cocodataset.org/val2017/000000039769.jpg",
    candidate_labels=["black and white", "photorealist", "painting"],
)
print(output)

执行后,自动下载模型文件并进行识别:

2.5 模型排名

在huggingface上,我们将零样本图片分类(zero-shot-image-classification)模型按下载量从高到低排序:​​​​​​​

三、总结

本文对transformers之pipeline的零样本图片分类(zero-shot-image-classification)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的2行代码极简的使用计算机视觉中的零样本图片分类(zero-shot-image-classification)模型。

期待您的3连+关注,如何还有时间,欢迎阅读我的其他文章:

《Transformers-Pipeline概述》

【人工智能】Transformers之Pipeline(概述):30w+大模型极简应用

《Transformers-Pipeline 第一章:音频(Audio)篇》

【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)

【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)

【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)

【人工智能】Transformers之Pipeline(四):零样本音频分类(zero-shot-audio-classification)

《Transformers-Pipeline 第二章:计算机视觉(CV)篇》

【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)

【人工智能】Transformers之Pipeline(六):图像分类(image-classification)

【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)

【人工智能】Transformers之Pipeline(八):图生图(image-to-image)

【人工智能】Transformers之Pipeline(九):物体检测(object-detection)

【人工智能】Transformers之Pipeline(十):视频分类(video-classification)​​​​​​​

【人工智能】Transformers之Pipeline(十一):零样本图片分类(zero-shot-image-classification)

【人工智能】Transformers之Pipeline(十二):零样本物体检测(zero-shot-object-detection)

《Transformers-Pipeline 第三章:自然语言处理(NLP)篇》

【人工智能】Transformers之Pipeline(十三):填充蒙版(fill-mask)

【人工智能】Transformers之Pipeline(十四):问答(question-answering)

【人工智能】Transformers之Pipeline(十五):总结(summarization)

【人工智能】Transformers之Pipeline(十六):表格问答(table-question-answering)

【人工智能】Transformers之Pipeline(十七):文本分类(text-classification)

【人工智能】Transformers之Pipeline(十八):文本生成(text-generation)

【人工智能】Transformers之Pipeline(十九):文生文(text2text-generation)

【人工智能】Transformers之Pipeline(二十):令牌分类(token-classification)

【人工智能】Transformers之Pipeline(二十一):翻译(translation)

【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)

《Transformers-Pipeline 第四章:多模态(Multimodal)篇》

【人工智能】Transformers之Pipeline(二十三):文档问答(document-question-answering)

【人工智能】Transformers之Pipeline(二十四):特征抽取(feature-extraction)

【人工智能】Transformers之Pipeline(二十五):图片特征抽取(image-feature-extraction)

【人工智能】Transformers之Pipeline(二十六):图片转文本(image-to-text)

【人工智能】Transformers之Pipeline(二十七):掩码生成(mask-generation)

【人工智能】Transformers之Pipeline(二十八):视觉问答(visual-question-answering)

相关推荐
Leinwin6 分钟前
Microsoft Azure 服务4月更新告示
人工智能·azure
胡耀超9 分钟前
霍夫圆变换全面解析(OpenCV)
人工智能·python·opencv·算法·计算机视觉·数据挖掘·数据安全
jndingxin17 分钟前
OpenCV CUDA 模块中用于在 GPU 上计算两个数组对应元素差值的绝对值函数absdiff(
人工智能·opencv·计算机视觉
jerry60917 分钟前
LLM笔记(五)概率论
人工智能·笔记·学习·概率论
硅谷秋水19 分钟前
学习以任务为中心的潜动作,随地采取行动
人工智能·深度学习·计算机视觉·语言模型·机器人
doupoa21 分钟前
Fabric 服务端插件开发简述与聊天事件监听转发
运维·python·fabric
How_doyou_do33 分钟前
备战菊厂笔试4
python·算法·leetcode
Tiny番茄1 小时前
Multimodal models —— CLIP,LLava,QWen
人工智能
Wnq100721 小时前
工业场景轮式巡检机器人纯视觉识别导航的优势剖析与前景展望
人工智能·算法·计算机视觉·激光雷达·视觉导航·人形机器人·巡检机器人
(・Д・)ノ1 小时前
python打卡day27
开发语言·python