pipeline(管道)是huggingface transformers库中一种极简方式使用大模型推理的抽象,将所有大模型分为音频(Audio)、计算机视觉(Computer vision)、自然语言处理(NLP)、多模态(Multimodal)等4大类,28小类任务(tasks)。共计覆盖32万个模型
今天介绍CV计算机视觉的第七篇,零样本图像分类(zero-shot-image-classification),在huggingface库内有500个零样本图像分类模型。
零样本图像分类是指模型对以前未见过的图片类别进行分类的任务,它要求模型能够在没有看到特定类别样本的情况下,对这些类别进行分类。这通常通过学习类别之间的语义表示(如从文本描述中学习)来实现,并将图像特征与这些语义表示相匹配。
比较典型的模型是openai发布的clip-vit-base-patch16,曾被应用于Stable Diffusion文生图模型中,用于文本与图片间的信息关联。关于文生图/图生图可参考我之前的文章
str
或ModelCard
,可选)— 属于此管道模型的模型卡。str
,可选)— 要使用的框架,"pt"
适用于 PyTorch 或"tf"
TensorFlow。必须安装指定的框架。
如果未指定框架,则默认为当前安装的框架。如果未指定框架且安装了两个框架,则默认为 的框架model
,如果未提供模型,则默认为 PyTorch。
str
,默认为""
)— 管道的任务标识符。int
,可选,默认为 8)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的工作者数量。int
,可选,默认为 1)— 当管道将使用DataLoader(传递数据集时,在 Pytorch 模型的 GPU 上)时,要使用的批次的大小,对于推理来说,这并不总是有益的,请阅读使用管道进行批处理。int
,可选,默认为 -1)— CPU/GPU 支持的设备序号。将其设置为 -1 将利用 CPU,设置为正数将在关联的 CUDA 设备 ID 上运行模型。您可以传递本机torch.device
或str
太str
或torch.dtype
,可选) - 直接发送model_kwargs
(只是一种更简单的快捷方式)以使用此模型的可用精度(torch.float16
,,torch.bfloat16
...或"auto"
)bool
,可选,默认为False
)——标志指示管道的输出是否应以序列化格式(即 pickle)或原始输出数据(例如文本)进行。str
、List[str]
或PIL.Image
)List[PIL.Image]
——管道处理三种类型的图像: List[str]
) — 该图像的候选标签str
,可选,默认为)— 与候选标签"This is a photo of {}"
结合使用的句子,通过用候选标签替换占位符来尝试图像分类。然后使用 logits_per_image 估计可能性float
,默认为 None)— 等待从网络获取图像的最长时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。分别采用google/siglip-so400m-patch14-384和openai/clip-vit-base-patch16对以下图片进行分类
图片一:
图片二:
采用pipeline代码如下
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)
执行后,自动下载模型文件并进行识别:
在huggingface上,我们将零样本图片分类(zero-shot-image-classification)模型按下载量从高到低排序:
本文对transformers之pipeline的零样本图片分类(zero-shot-image-classification)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的2行代码极简的使用计算机视觉中的零样本图片分类(zero-shot-image-classification)模型。