前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【人工智能】Transformers之Pipeline(二十七):蒙版生成(mask-generation)

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

作者头像
LDG_AGI
发布2024-12-11 07:36:40
发布2024-12-11 07:36:40
15000
代码可运行
举报
运行总次数:0
代码可运行

​​​​​一、引言

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

今天介绍多模态的第五篇:蒙版生成(mask-generation),在huggingface库内可以使用的蒙版生成(mask-generation)模型有160个。

二、蒙版生成(mask-generation)

2.1 概述

蒙版生成(mask-generation)是生成用于识别给定图像中的特定对象或感兴趣区域的蒙版的任务。蒙版通常用于分割任务,它们提供了一种精确的方法来隔离感兴趣的对象,以便进一步处理或分析。

2.2 facebook/sam-vit-base

facebook推出了Segment Anything (SA) 项目:一种用于图像分割的新任务、模型和数据集。在数据收集循环中使用facebook的高效模型,facebook构建了迄今为止最大的分割数据集,在 1100 万张获得许可且尊重隐私的图像上包含超过 10 亿个掩码。该模型经过设计和训练,可立即使用,因此它可以将零样本转移到新的图像分布和任务中。facebook在众多任务上评估了它的能力,发现它的零样本性能令人印象深刻——通常可以与之前的完全监督结果相媲美甚至更胜一筹。facebook在https://segment-anything.com上发布了Segment Anything 模型 (SAM) 和相应的数据集 (SA-1B),其中包含 1B 个掩码和 1100 万张图像,以促进对计算机视觉基础模型的研究。

SAM 模型由 3 个模块组成:

  • VisionEncoder基于 VIT 的图像编码器。它使用对图像块的注意力来计算图像嵌入。使用相对位置嵌入。
  • PromptEncoder生成点和边界框的嵌入。
  • MaskDecoder双向转换器,在图像嵌入和点嵌入(->)之间以及点嵌入和图像嵌入之间执行交叉注意力机制。

2.3 pipeline参数

2.3.1 pipeline对象实例化参数
  • modelPreTrainedModelTFPreTrainedModel)— 管道将使用其进行预测的模型。 对于 PyTorch,这需要从PreTrainedModel继承;对于 TensorFlow,这需要从TFPreTrainedModel继承。
  • image_processor ( BaseImageProcessor ) — 管道将使用的图像处理器来为模型编码数据。此对象继承自 BaseImageProcessor
  • modelcardstrModelCard可选) — 属于此管道模型的模型卡。
  • frameworkstr可选)— 要使用的框架,"pt"适用于 PyTorch 或"tf"TensorFlow。必须安装指定的框架。
  • 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)或原始输出数据(例如文本)进行。
  • points_per_batch可选,整数,默认为 64)— 设置模型同时运行的点数。数字越大,速度越快,但会占用更多 GPU 内存。
  • output_bboxes_maskbool可选,默认为False)— 是否输出边界框预测。
  • output_rle_masks ( bool可选,默认为False) — 是否以RLE格式输出掩码
2.3.2 pipeline对象使用参数
  • inputsnp.ndarraybytesstrdict)——图像或图像列表。
  • mask_thresholdfloat可选,默认为 0.0)— 将预测掩码转换为二进制值时使用的阈值。
  • pred_iou_threshfloat可选[0,1],默认为 0.88)—应用于模型预测的掩模质量的过滤阈值。
  • stable_score_thresh ( float可选,默认为 0.95) — 中的过滤阈值[0,1],使用在用于二值化模型的掩模预测的截止值变化下的掩模稳定性。
  • stable_score_offsetint可选,默认为 1)— 计算稳定性分数时偏移截止值的量。
  • crops_nms_threshfloat可选,默认为 0.7)— 非最大抑制用于过滤重复蒙版的框 IoU 截止值。
  • crops_n_layersint可选,默认为 0)— 如果是crops_n_layers>0,则将再次对图像的裁剪部分运行掩码预测。设置要运行的层数,其中每层有 2**i_layer 个图像裁剪部分。
  • crop_overlap_ratio ( float可选,默认为512 / 1500) — 设置裁剪重叠的程度。在第一个裁剪层中,裁剪将重叠图像长度的这一部分。后续裁剪较多的层将缩小重叠部分。
  • crop_n_points_downscale_factorint可选,默认为1)— 在第 n 层中采样的每侧点数按 crop_n_points_downscale_factor**n 缩小。
  • timeout可选float,默认为 None)— 等待从网络获取图像的最长时间(以秒为单位)。如果为 None,则不设置超时,并且调用可能会永远阻塞。
2.3.3 pipeline对象返回参数
  • mask ( PIL.Image) — 检测到的对象的二进制掩码,作为(width, height)原始图像形状的 PIL 图像。如果未找到任何对象,则返回用零填充的掩码。
  • score可选 float)——可选,当模型能够估计标签和掩码描述的“对象”的置信度时。

2.4 pipeline实战

基于pipeline的蒙版生成(mask-generation)任务,采用facebook/sam-vit-base进行图片分割并提取蒙版,代码如下:

代码语言:javascript
代码运行次数:0
复制
import os
os.environ["HF_ENDPOINT"] = "https://hf-mirror.com"
os.environ["CUDA_VISIBLE_DEVICES"] = "2"

from transformers import pipeline

generator = pipeline(model="facebook/sam-vit-base", task="mask-generation")
outputs = generator(
    "./parrots.png",
)
print(outputs)

执行后,自动下载模型文件并进行蒙版生成:

2.5 模型排名

在huggingface上,我们将蒙版生成(mask-generation)模型按下载量从高到低排序,共计168个模型中,文中facebook的sam模型以不同尺寸的形式,霸榜。

​​​​​​​

三、总结

本文对transformers之pipeline的蒙版生成(mask-generation)从概述、技术原理、pipeline参数、pipeline实战、模型排名等方面进行介绍,读者可以基于pipeline使用文中的2行代码极简的使用多模态中的蒙版生成(mask-generation)模型。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​​​​​一、引言
  • 二、蒙版生成(mask-generation)
    • 2.1 概述
    • 2.2 facebook/sam-vit-base
    • 2.3 pipeline参数
      • 2.3.1 pipeline对象实例化参数
      • 2.3.2 pipeline对象使用参数
      • 2.3.3 pipeline对象返回参数
    • 2.4 pipeline实战
    • 2.5 模型排名
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档