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

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

一、引言

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

今天介绍CV计算机视觉的第二篇,图像分类(image-classification),在huggingface库内有1.3万个图像分类模型

二、图像分类(image-classification)

2.1 概述

图像分类,顾名思义就是将图片分类的模型,给定图片,返回对应的类别概率值,在计算机视觉CV领域模型最多,应用也最广泛,主要应用场景比如人脸识别、色情图片检测、自动驾驶、医疗影像分析等。

2.2 技术原理

以google在2021年6月3日发布的Vision Transformer (ViT)为例,传统的图片识别通过CNN卷机神经网络提取图片信息,ViT将Transformer技术应用到图片分类上,开启了Transformer应用于计算机视觉的先河。该模型也是image-classification任务的默认模型:google/vit-base-patch16-224

ViT(视觉transformer)主要原理:首先将图片切分成大小相等的块序列(分辨率为16*16),对每个图片块进行线性嵌入添加位置信息,通过喂入一个标准的transfromer encoder结构进行特征交叉后,送入到MLP层,通过增加额外的分类标记构建分类任务,完成网络构造。详细论文

2.3 应用场景

  • 社交网络与多媒体管理:自动标记和组织用户上传的照片,如人脸识别、场景识别。
  • 安防监控:实时分析监控视频,识别异常行为、人脸认证、车牌识别等。
  • 医疗影像分析:辅助医生诊断,如癌症细胞检测、病变识别。
  • 自动驾驶:识别道路标志、行人、车辆等,提高安全性和导航准确性。
  • 零售与电商:商品识别,用于快速库存管理、顾客行为分析和推荐系统。

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)或原始输出数据(例如文本)进行。
  • function_to_applystr可选,默认为"default")— 用于检索分数的模型输出函数。接受四个不同的值:
  • "default":如果模型只有一个标签,则在输出上应用 sigmoid 函数。如果模型有多个标签,则在输出上应用 softmax 函数。
  • "sigmoid":在输出上应用 S 型函数。
  • "softmax":在输出上应用 softmax 函数。
  • "none":不对输出应用任何功能。

2.4.2 pipeline对象使用参数

  • imagestrList[str]PIL.ImageList[PIL.Image]——管道处理三种类型的图像:
  • 包含指向图像的 http 链接的字符串
  • 包含图像本地路径的字符串
  • 直接在 PIL 中加载的图像
  • 管道可以接受单张图片或一批图片,然后必须以字符串形式传递。一批图片必须全部采用相同的格式:全部为 http 链接、全部为本地路径或全部为 PIL 图片。
  • function_to_applystr可选,默认为"default")— 用于检索分数的模型输出函数。接受四个不同的值:如果不指定此参数,那么它将根据标签数量应用以下函数:
  • 如果模型只有一个标签,则将在输出上应用 S 型函数。
  • 如果模型有多个标签,将在输出上应用 softmax 函数。
  • 可能的值包括:
  • "sigmoid":在输出上应用 S 型函数。
  • "softmax":在输出上应用 softmax 函数。
  • "none":不对输出应用任何功能。
  • top_kint可选,默认为 5)— 管道将返回的顶部标签数。如果提供的数字高于模型配置中可用的标签数,则将默认为标签数。
  • timeout可选float,默认为 None)— 等待从网络获取图像的最长时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。

2.4 pipeline实战

识别http链接中的物品

采用pipeline代码如下

import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"
 
from transformers import pipeline
image_classification = pipeline(task="image-classification",model="google/vit-base-patch16-224")
output = image_classification("http://images.cocodataset.org/val2017/000000039769.jpg")
print(output)
"""
[{'label': 'Egyptian cat', 'score': 0.9374418258666992}, {'label': 'tabby, tabby cat', 'score': 0.03844244033098221}, {'label': 'tiger cat', 'score': 0.01441137958317995}, {'label': 'lynx, catamount', 'score': 0.0032743141055107117}, {'label': 'Siamese cat, Siamese', 'score': 0.0006795910303480923}]
"""

执行后,自动下载模型文件:

识别结果为:埃及猫

[{'label': 'Egyptian cat', 'score': 0.9374418258666992}, {'label': 'tabby, tabby cat', 'score': 0.03844244033098221}, {'label': 'tiger cat', 'score': 0.01441137958317995}, {'label': 'lynx, catamount', 'score': 0.0032743141055107117}, {'label': 'Siamese cat, Siamese', 'score': 0.0006795910303480923}]

2.5 模型排名

在huggingface上,我们将图像分类(image-classification)模型按下载量从高到低排序:

三、总结

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


目录
相关文章
|
2月前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
79 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)
【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)
46 1
【人工智能】Transformers之Pipeline(三):文本转音频(text-to-audio/text-to-speech)
|
3月前
|
机器学习/深度学习 人工智能 算法
【深度学习】python之人工智能应用篇——图像生成技术(二)
图像生成是计算机视觉和计算机图形学领域的一个重要研究方向,它指的是通过计算机算法和技术生成或合成图像的过程。随着深度学习、生成模型等技术的发展,图像生成领域取得了显著的进步,并在多个应用场景中发挥着重要作用。
105 9
|
3月前
|
机器学习/深度学习 人工智能 自然语言处理
【图像生成技术】人工智能在医疗健康领域的应用实例:图像生成技术的革新实践
在当今医疗健康的前沿阵地,人工智能(AI)技术正以前所未有的速度重塑着医疗服务的面貌,其中图像生成技术尤其在提升诊断精度、优化治疗策略及增强医疗教育方面展现出了巨大潜力。以下将通过一个简化的示例,展示如何利用深度学习模型,特别是生成对抗网络(GANs),来生成医学图像,并讨论其在实际医疗场景中的应用价值。
85 6
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
【图像生成技术】人工智能在广告营销的革新:图像生成技术的应用与实践代码示例
随着人工智能技术的飞速发展,广告营销行业迎来了前所未有的变革。图像生成技术,作为AI领域的一颗璀璨明星,正被广泛应用于创造个性化、高吸引力的产品展示图、海报乃至宣传视频,以精准对接目标受众,显著提升广告的转化率和整体营销效果。本文将深入探讨这一技术的应用场景,并通过一个简单的代码示例,展示如何利用深度学习框架TensorFlow来实现创意图像的自动生成。
67 4
|
3月前
|
机器学习/深度学习 人工智能 算法
【人工智能】机器学习、分类问题和逻辑回归的基本概念、步骤、特点以及多分类问题的处理方法
机器学习是人工智能的一个核心分支,它专注于开发算法,使计算机系统能够自动地从数据中学习并改进其性能,而无需进行明确的编程。这些算法能够识别数据中的模式,并利用这些模式来做出预测或决策。机器学习的主要应用领域包括自然语言处理、计算机视觉、推荐系统、金融预测、医疗诊断等。
55 1
|
3月前
|
人工智能 自然语言处理 物联网
【人工智能】Transformers之Pipeline(八):文生图/图生图(text-to-image/image-to-image)
【人工智能】Transformers之Pipeline(八):文生图/图生图(text-to-image/image-to-image)
60 2
|
3月前
|
人工智能 自动驾驶 PyTorch
【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)
【人工智能】Transformers之Pipeline(五):深度估计(depth-estimation)
55 2
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
【人工智能】Transformers之Pipeline(九):物体检测(object-detection)
【人工智能】Transformers之Pipeline(九):物体检测(object-detection)
57 1
|
3月前
|
人工智能 自然语言处理 PyTorch
【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)
【人工智能】Transformers之Pipeline(二):自动语音识别(automatic-speech-recognition)
55 1