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

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

目录

一、引言 

二、蒙版生成(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 模型排名

三、总结


一、引言 

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 ) — 管道将使用的图像处理器来为模型编码数据。此对象继承自 BaseImageProcessormodelcardstrModelCard可选) — 属于此管道模型的模型卡。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.devicestrtorch_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进行图片分割并提取蒙版,代码如下:

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)模型。

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

Read more

【算法】双指针(三)[快慢指针]-快乐数

【算法】双指针(三)[快慢指针]-快乐数

目录 一、题目介绍 二、快慢指针原理 三、提交代码 一、题目介绍 202. 快乐数 - 力扣(LeetCode) 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: * 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 * 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 * 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。 示例 1: 输入:n = 19 输出:true 解释: 12 + 92

By Ne0inhk
HDFS数据传输速度调优完全指南:原理、手段与实践

HDFS数据传输速度调优完全指南:原理、手段与实践

HDFS数据传输速度调优完全指南:原理、手段与实践 * 引言 * 一、HDFS数据传输性能的影响因素 * 1.1 性能瓶颈全景图 * 1.2 性能指标解析 * 二、硬件层面优化 * 2.1 存储介质升级 * 2.2 网络升级 * 2.3 内存扩容 * 三、核心配置参数调优 * 3.1 调优参数一览表 * 3.2 块大小优化 * 3.3 数据包大小优化 * 3.4 副本因子优化 * 3.5 短路读取优化 * 3.6 RPC线程数优化 * 四、数据压缩优化 * 4.1 压缩算法对比 * 4.2

By Ne0inhk
设计五种算法精确的身份证号匹配

设计五种算法精确的身份证号匹配

问题定义与数据准备 我们有两个Excel文件: * small.xlsx: 包含约5,000条记录。 * large.xlsx: 包含约140,000条记录。 目标:快速、高效地从large.xlsx中找出所有其“身份证号”字段存在于small.xlsx“身份证号”字段中的记录,并将这些匹配的记录保存到一个新的Excel文件result.xlsx中。 假设:身份证号字段名在两个表中都是id_card。 首先,我们进行准备工作,安装必要的库并模拟一些数据用于测试和性能估算。 pip install pandas openpyxl import pandas as pd import time import random # 为演示和测试,我们可以创建一些模拟数据(实际中使用pd.read_excel读取你的文件)defgenerate_id_card():"""

By Ne0inhk
【数据结构】八大排序之快速排序:分而治之的艺术

【数据结构】八大排序之快速排序:分而治之的艺术

文章目录 * 快速排序 * 1.hoare版本 * 算法优化 * 三数取中法 * 小区间优化 * 完整代码如下 * 算法分析 * 时间复杂度 * 空间复杂度 * 2.前后指针法 * 排序过程 * 3.非递归(栈模拟) * 实现思路 * 总结 快速排序 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。 1.hoare版本 简单来说就是选某个元素为基准值(这里先默认第一个),然后把比基准值小的都放到基准值的左边,比基准值大的都放到基准值的右边 以下图为例 先以6为基准 然后左边找大,右边找小,之后互换 进行这么一趟后,6左边就都比它小,右边都比它大 然后以6为分界线,再分成两个区间,类似于二叉树 vo

By Ne0inhk