【人工智能】Transformers之Pipeline(七):图像分割(image-segmentation)
创始人
2024-11-16 05:35:25
0

目录

一、引言 

二、图像分割(image-segmentation)

2.1 概述

2.2 技术原理

2.3 应用场景

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

2.4.2 pipeline对象使用参数 

2.4 pipeline实战

2.5 模型排名

三、总结


一、引言 

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

今天介绍CV计算机视觉的第三篇,图像分割(image-segmentation),在huggingface库内有800个图像分类模型。

二、图像分割(image-segmentation)

2.1 概述

图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像素赋予相同的编号。

2.2 技术原理

图像分割(image-segmentation)的默认模型为facebook/detr-resnet-50-panoptic,全称为:DEtection TRansformer(DETR)-resnet-50-全景。其中有3个要素:

  • DEtection TRansformer (DETR):于2020年5月由Facebook AI发布于《End-to-End Object Detection with Transformers》,提出了一种基于transformer的端到端目标检测方法,相比于YOLO具有更高的准确性,但速度不及YOLO,可以应用于医疗影像等不追求实时性的目标检测场景,对于追求实时性的目标检测场景,还是得YOLO,关于YOLOv10,可以看我之前的文章。
  • ResNet-50:ResNet-50是一种深度残差网络(Residual Network),是ResNet系列中的一种经典模型。它由微软研究院的Kaiming He等人于2015年提出,被广泛应用于计算机视觉任务,如图像分类、目标检测和图像分割等。ResNet-50是一种迁移学习模型,迁移学习的核心思想是将源领域的知识迁移到目标领域中,可以采用样本迁移、特征迁移、模型迁移、关系迁移等手段。
  • 全景分割panoptic: DETR在COCO2017全景图(118k 带注释图像)上进行端到端训练,全景分割即可以将图片全景分割成多个区域,每个区域使用同一编号。

DEtection TRansformer(DETR)主体结构:

由三个主要部分组成:用于特征提取的CNN后端(ResNet)、transformer编码器-解码器和用于最终检测预测的前馈网络(FFN)。后端处理输入图像并生成激活图。transformer编码器降低通道维度并应用多头自注意力和前馈网络。transformer解码器使用N个物体嵌入的并行解码,并独立预测箱子坐标和类别标签,使用物体查询。DETR利用成对关系,从整个图像上下文中受益,共同推理所有物体。

 

 DEtection TRansformer(DETR)应用于全景分割:

将图片内的box进行embedding后输入至MHA中提取每个box中的图片信息,采用Resnet生成激活图,采用pixel-wise(像素级别)的损失函数进行学习。pixel-wise损失函数是计算预测图像与目标图像的像素间的损失。属于像素间类型的损失函数,常见的有:MSE(L2损失),MAE(L1损失)和交叉熵等。计算机视觉领域的损失函数有3类:pixel-wise(像素级别),patch-wise(块级别),image-wise(图片级别)。

2.3 应用场景

  • 医学影像分析:在医疗领域,图像分割用于识别和分割肿瘤、器官等,帮助医生进行诊断和手术规划。
  • 自动驾驶:车辆需要识别道路、行人、其他车辆等,图像分割技术可以辅助车辆理解周围环境,提高安全性和导航准确性。
  • 遥感与地图制作:通过分割卫星或无人机图像,可以自动识别水体、森林、建筑物等,用于城市规划、环境监测和自然资源管理。
  • 增强现实:在AR应用中,分割技术用于区分前景和背景,使得虚拟物体能够自然地融入真实世界场景中。
  • 时尚与零售:用于服装分割,帮助自动识别和分类衣物,用于在线购物的虚拟试穿或商品推荐。
  • 自然资源管理:如森林火灾监测,通过分割图像识别火源区域。
  • 体育分析:分析运动员动作,通过分割跟踪特定运动员或球的运动轨迹。

2.4 pipeline参数

2.4.1 pipeline对象实例化参数

  • model(PreTrainedModel或TFPreTrainedModel)— 管道将使用其进行预测的模型。 对于 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_parser(ArgumentHandler,可选) - 引用负责解析提供的管道参数的对象。
  • 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对象使用参数 

  • imagesstrList[str]PIL.ImageList[PIL.Image]——管道处理三种类型的图像:
    • 包含指向图像的 HTTP(S) 链接的字符串
    • 包含图像本地路径的字符串
    • 直接在 PIL 中加载的图像

    管道可以接受单张图片或一批图片。一批图片中的图片必须全部采用相同的格式:全部为 HTTP(S) 链接、全部为本地路径或全部为 PIL 图片。

  • subtaskstr可选)— 要执行的分割任务,根据模型功能 选择 [ semanticinstance和]。如果未设置,管道将尝试按以下顺序解析: ,,。panopticpanopticinstancesemantic
  • thresholdfloat可选,默认为 0.9)— 用于过滤预测掩码的概率阈值。
  • mask_thresholdfloat可选,默认为 0.5)— 将预测掩码转换为二进制值时使用的阈值。
  • overlap_mask_area_thresholdfloat可选,默认为 0.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_segmentation = pipeline(task="image-segmentation",model="facebook/detr-resnet-50-panoptic") output = image_segmentation("http://images.cocodataset.org/val2017/000000039769.jpg") print(output) """ [{'score': 0.994096, 'label': 'cat', 'mask': }, {'score': 0.998669, 'label': 'remote', 'mask': }, {'score': 0.999476, 'label': 'remote', 'mask': }, {'score': 0.972207, 'label': 'couch', 'mask': }, {'score': 0.999423, 'label': 'cat', 'mask': }] """ output[0]["mask"].save(output[0]["label"]+".png")

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

图像分割后的结果会存入字典list中,将图片Image保存后,打开可见分割出的图片:

2.5 模型排名

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

三、总结

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

期待您的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)

相关内容

热门资讯

古雷曼格服务器直升时间确定了吗... 古雷曼格服务器的直升时间尚未公布。游戏开发者会提前通过官方渠道如社交媒体、官网或邮件列表通知玩家相关...
为何原神游戏中缺少服务器选择功... 《原神》没有提供选择服务器的选项,因为游戏采用了全球同服的设计。这意味着所有玩家都在同一个服务器上游...
Unity的旋转实现一些方法总... 目录1. Transform.Rotate 方法使用2. Transform.rotation 或 ...
小牛圈服务器的构造与功能特性解... 小牛圈的服务器是高性能、高稳定性的硬件设备,具备强大的处理能力和存储容量。这些服务器通常配置有先进的...
如何充分利用购买的云服务器和域... 购买云服务器和域名主要用于搭建网站或应用,提供在线服务。云服务器作为数据存储和处理的中心,保证网站稳...
【制作100个unity游戏之... 最终效果系列导航制作100个unity游戏之27】使用unity复刻经典游戏《植物大战僵尸》...
曙光服务器电源持续报警的原因是... 曙光服务器电源持续报警可能由多个因素引起,包括电源单元故障、电压不稳定、过载或内部连接问题。建议检查...
选择搭建FRP时,应考虑哪些服... 搭建frp(fast reverse proxy)通常需要租用一台具有公网IP地址的服务器,以便能够...
【UE5/UE4】超详细教程接... 【UE5/UE4】超详细教程接入科大讯飞语音唤醒SDK并初始持久监听(10102错误码...
Unity接入IAP内购(An... 从0开始接入Unity IAP欢迎进入Unity内购系列整体流程介绍第一篇(内购接入)接入环境一、创...