Transformers 文档
Mask2Former
并获得增强的文档体验
开始使用
该模型于 2021-12-02 发布在 HF 论文中,并于 2023-01-16 贡献给 Hugging Face Transformers。
Mask2Former
概述
Mask2Former 模型是在 Bowen Cheng、Ishan Misra、Alexander G. Schwing、Alexander Kirillov、Rohit Girdhar 所著的《Masked-attention Mask Transformer for Universal Image Segmentation》(用于通用图像分割的掩码注意力掩码 Transformer)中提出的。Mask2Former 是一个统一的全景、实例和语义分割框架,与 MaskFormer 相比,在性能和效率上有显著提升。
论文摘要如下:
图像分割根据不同的语义对像素进行分组,例如类别或实例归属。每种语义选择定义了一个任务。虽然各任务仅在语义上有所不同,但目前的研究重点是为每个任务设计专门的架构。我们提出了掩码注意力掩码 Transformer(Mask2Former),这是一种能够处理任何图像分割任务(全景、实例或语义)的新型架构。其关键组件包括掩码注意力(masked attention),它通过将交叉注意力约束在预测的掩码区域内来提取局部特征。除了能将研究精力减少至少三倍外,它在四个流行数据集上的表现也显著优于最佳的专用架构。最值得注意的是,Mask2Former 在全景分割(COCO 上 57.8 PQ)、实例分割(COCO 上 50.1 AP)和语义分割(ADE20K 上 57.7 mIoU)方面均刷新了纪录。
Mask2Former 架构。摘自原始论文。该模型由 Shivalika Singh 和 Alara Dirik 贡献。原始代码可以在这里找到。
使用技巧
- Mask2Former 使用与 MaskFormer 相同的预处理和后处理步骤。使用 Mask2FormerImageProcessor 或 AutoImageProcessor 来为模型准备图像和可选的目标(targets)。
- 要获得最终的分割结果,根据任务的不同,您可以调用 post_process_semantic_segmentation()、post_process_instance_segmentation() 或 post_process_panoptic_segmentation()。这三项任务都可以使用 Mask2FormerForUniversalSegmentation 的输出来解决,其中全景分割接受一个可选的
label_ids_to_fuse参数,用于将目标对象(例如天空)的实例融合在一起。
资源
以下是官方 Hugging Face 和社区(由 🌎 标记)提供的资源列表,可帮助您上手使用 Mask2Former。
- 关于在自定义数据上推理和微调 Mask2Former 的演示笔记本可以在这里找到。
- 使用 Trainer 或 Accelerate 微调
Mask2Former的脚本可以在这里找到。
如果您有兴趣提交资源以供此处收录,请随时发起拉取请求,我们将对其进行审查。理想情况下,资源应展示新内容,而非重复现有资源。
Mask2FormerConfig
class transformers.Mask2FormerConfig
< source >( transformers_version: str | None = None architectures: list[str] | None = None output_hidden_states: bool | None = False return_dict: bool | None = True dtype: typing.Union[str, ForwardRef('torch.dtype'), NoneType] = None chunk_size_feed_forward: int = 0 is_encoder_decoder: bool = False id2label: dict[int, str] | dict[str, str] | None = None label2id: dict[str, int] | dict[str, str] | None = None problem_type: typing.Optional[typing.Literal['regression', 'single_label_classification', 'multi_label_classification']] = None backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None feature_size: int = 256 mask_feature_size: int = 256 hidden_dim: int = 256 encoder_feedforward_dim: int = 1024 activation_function: str = 'relu' encoder_layers: int = 6 decoder_layers: int = 10 num_attention_heads: int = 8 dropout: float | int = 0.0 dim_feedforward: int = 2048 pre_norm: bool = False enforce_input_projection: bool = False common_stride: int = 4 ignore_value: int = 255 num_queries: int = 100 no_object_weight: float = 0.1 class_weight: float = 2.0 mask_weight: float = 5.0 dice_weight: float = 5.0 train_num_points: int = 12544 oversample_ratio: float = 3.0 importance_sample_ratio: float = 0.75 init_std: float = 0.02 init_xavier_std: float = 1.0 use_auxiliary_loss: bool = True feature_strides: list[int] | tuple[int, ...] = (4, 8, 16, 32) output_auxiliary_logits: bool | None = None )
参数
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 可选) — 骨干模型的配置。 - feature_size (
int, 可选, 默认为 256) — 生成的特征图的特征(通道)数。 - mask_feature_size (
int, 可选, 默认为 256) — 掩码的特征大小,该值也将用于指定特征金字塔网络(Feature Pyramid Network)的特征大小。 - hidden_dim (
int, 可选, 默认为256) — 隐藏表示的维度。 - encoder_feedforward_dim (
int, 可选, 默认为 1024) — 作为像素解码器一部分的可变形 detr 编码器的前馈网络维度。 - activation_function (
str, 可选, 默认为relu) — 解码器中的非线性激活函数(函数或字符串)。例如"gelu"、"relu"、"silu"等。 - encoder_layers (
int, 可选, 默认为6) — Transformer 编码器中的隐藏层数量。如果未设置,将使用与num_layers相同的值。 - decoder_layers (
int, 可选, 默认为10) — Transformer 解码器中的隐藏层数量。如果未设置,将使用与num_layers相同的值。 - num_attention_heads (
int, 可选, 默认为8) — Transformer 解码器中每个注意力层的注意力头数。 - dropout (
Union[float, int], 可选, 默认为0.0) — 所有 dropout 层的比率。 - dim_feedforward (
int, 可选, 默认为 2048) — Transformer 解码器前馈网络中的特征维度。 - pre_norm (
bool, 可选, 默认为False) — Transformer 解码器是否使用 pre-LayerNorm。 - enforce_input_projection (
bool, 可选, 默认为False) — 即使 Transformer 解码器中的输入通道和隐藏维度相同,是否仍添加输入投影 1x1 卷积。 - common_stride (
int, 可选, 默认为 4) — 用于确定像素解码器中使用的 FPN 层级的参数。 - ignore_value (
int, 可选, 默认为 255) — 训练期间要忽略的类别 ID。 - num_queries (
int, 可选, 默认为 100) — 解码器的查询(queries)数量。 - no_object_weight (
float, 可选, 默认为0.1) — 目标检测损失中“无对象”类别的相对分类权重。 - class_weight (
float, 可选, 默认为2.0) — 匈牙利匹配成本中分类误差的相对权重。 - mask_weight (
float, 可选, 默认为5.0) — 全景分割损失中 focal loss 的相对权重。 - dice_weight (
float, 可选, 默认为5.0) — 全景分割损失中 dice loss 的相对权重。 - train_num_points (
str或function, 可选, 默认为 12544) — 计算损失时用于采样的点数。 - oversample_ratio (
float, 可选, 默认为 3.0) — 用于计算采样点数的过采样参数。 - importance_sample_ratio (
float, 可选, 默认为 0.75) — 通过重要性采样抽取的点的比例。 - init_std (
float, 可选, 默认为0.02) — 用于初始化所有权重矩阵的截断正态初始化器(truncated_normal_initializer)的标准差。 - init_xavier_std (
float, 可选, 默认为1.0) — 用于交叉注意力权重 Xavier 初始化的缩放因子。 - use_auxiliary_loss (
bool, 可选, 默认为True) — 是否使用 Transformer 解码器的中间预测来计算损失。 - feature_strides (
list[int], 可选, 默认为[4, 8, 16, 32]) — 与骨干网络生成的特征相对应的特征步幅。 - output_auxiliary_logits (
bool, 可选) — 模型是否应该输出其auxiliary_logits。
这是用于存储 Mask2FormerModel 配置的配置类。它用于根据指定的参数实例化 Mask2Former 模型,定义模型架构。使用默认值实例化配置将产生与 facebook/mask2former-swin-small-coco-instance 相似的配置。
配置对象继承自 PreTrainedConfig,可用于控制模型输出。阅读 PreTrainedConfig 的文档以获取更多信息。
示例
>>> from transformers import Mask2FormerConfig, Mask2FormerModel
>>> # Initializing a Mask2Former facebook/mask2former-swin-small-coco-instance configuration
>>> configuration = Mask2FormerConfig()
>>> # Initializing a model (with random weights) from the facebook/mask2former-swin-small-coco-instance style configuration
>>> model = Mask2FormerModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configMaskFormer 特定输出
class transformers.models.mask2former.modeling_mask2former.Mask2FormerModelOutput
< source >( encoder_last_hidden_state: torch.FloatTensor | None = None pixel_decoder_last_hidden_state: torch.FloatTensor | None = None transformer_decoder_last_hidden_state: torch.FloatTensor | None = None encoder_hidden_states: tuple[torch.FloatTensor] | None = None pixel_decoder_hidden_states: tuple[torch.FloatTensor] | None = None transformer_decoder_hidden_states: tuple[torch.FloatTensor] | None = None transformer_decoder_intermediate_states: tuple[torch.FloatTensor] | None = None masks_queries_logits: tuple[torch.FloatTensor] | None = None attentions: tuple[torch.FloatTensor] | None = None )
参数
- encoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor,可选) — 编码器模型(骨干网络)最后一个阶段的最后隐藏状态(最终特征图)。当传入output_hidden_states=True时返回。 - pixel_decoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor,可选) — 像素解码器模型最后一个阶段的最后隐藏状态(最终特征图)。 - transformer_decoder_last_hidden_state (
tuple(torch.FloatTensor)) — Transformer 解码器的最终输出(batch_size, sequence_length, hidden_size)。 - encoder_hidden_states (
tuple(torch.FloatTensor),可选) —torch.FloatTensor的元组(一个用于嵌入层的输出 + 一个用于每个阶段的输出),形状为(batch_size, num_channels, height, width)。编码器模型在每个阶段输出的隐藏状态(也称为特征图)。当传入output_hidden_states=True时返回。 - pixel_decoder_hidden_states (
tuple(torch.FloatTensor), , 可选, 当传入output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个用于嵌入层的输出 + 一个用于每个阶段的输出),形状为(batch_size, num_channels, height, width)。像素解码器模型在每个阶段输出的隐藏状态(也称为特征图)。当传入output_hidden_states=True时返回。 - transformer_decoder_hidden_states (
tuple(torch.FloatTensor),可选) —torch.FloatTensor的元组(一个用于嵌入层的输出 + 一个用于每个阶段的输出),形状为(batch_size, sequence_length, hidden_size)。Transformer 解码器在每个阶段输出的隐藏状态(也称为特征图)。当传入output_hidden_states=True时返回。 - transformer_decoder_intermediate_states (形状为
(num_queries, 1, hidden_size)的tuple(torch.FloatTensor)) — 中间解码器激活值,即每个解码器层的输出,且每个输出都经过了 layernorm 处理。 - masks_queries_logits (形状为
(batch_size, num_queries, height, width)的tuple(torch.FloatTensor)) — Transformer 解码器中每一层预测的掩码。 - attentions (
tuple(tuple(torch.FloatTensor)), 可选, 当传入output_attentions=True时返回) —tuple(torch.FloatTensor)的元组(每一层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。Transformer 解码器的自注意力权重。 - attentions (
tuple[torch.FloatTensor], 可选, 当传入output_attentions=True或config.output_attentions=True时返回) —torch.FloatTensor的元组(每一层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
- encoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor,可选) — 编码器模型(骨干网络)最后一个阶段的最后隐藏状态(最终特征图)。当传入output_hidden_states=True时返回。 - pixel_decoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor,可选) — 像素解码器模型最后一个阶段的最后隐藏状态(最终特征图)。 - transformer_decoder_last_hidden_state (
tuple(torch.FloatTensor)) — Transformer 解码器的最终输出(batch_size, sequence_length, hidden_size)。 - encoder_hidden_states (
tuple(torch.FloatTensor),可选) —torch.FloatTensor的元组(一个用于嵌入层的输出 + 一个用于每个阶段的输出),形状为(batch_size, num_channels, height, width)。编码器模型在每个阶段输出的隐藏状态(也称为特征图)。当传入output_hidden_states=True时返回。 - pixel_decoder_hidden_states (
tuple(torch.FloatTensor), , 可选, 当传入output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个用于嵌入层的输出 + 一个用于每个阶段的输出),形状为(batch_size, num_channels, height, width)。像素解码器模型在每个阶段输出的隐藏状态(也称为特征图)。当传入output_hidden_states=True时返回。 - transformer_decoder_hidden_states (
tuple(torch.FloatTensor),可选) —torch.FloatTensor的元组(一个用于嵌入层的输出 + 一个用于每个阶段的输出),形状为(batch_size, sequence_length, hidden_size)。Transformer 解码器在每个阶段输出的隐藏状态(也称为特征图)。当传入output_hidden_states=True时返回。 - transformer_decoder_intermediate_states (形状为
(num_queries, 1, hidden_size)的tuple(torch.FloatTensor)) — 中间解码器激活值,即每个解码器层的输出,且每个输出都经过了 layernorm 处理。 - masks_queries_logits (形状为
(batch_size, num_queries, height, width)的tuple(torch.FloatTensor)) — Transformer 解码器中每一层预测的掩码。 - attentions (
tuple(tuple(torch.FloatTensor)), 可选, 当传入output_attentions=True时返回) —tuple(torch.FloatTensor)的元组(每一层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。Transformer 解码器的自注意力权重。 - attentions (
tuple[torch.FloatTensor], 可选, 当传入output_attentions=True或config.output_attentions=True时返回) —torch.FloatTensor的元组(每一层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
Mask2FormerModel 的输出类。此类返回计算 logits 所需的所有隐藏状态。
class transformers.models.mask2former.modeling_mask2former.Mask2FormerForUniversalSegmentationOutput
< source >( loss: torch.FloatTensor | None = None class_queries_logits: torch.FloatTensor | None = None masks_queries_logits: torch.FloatTensor | None = None auxiliary_logits: list[dict[str, torch.FloatTensor]] | None = None encoder_last_hidden_state: torch.FloatTensor | None = None pixel_decoder_last_hidden_state: torch.FloatTensor | None = None transformer_decoder_last_hidden_state: torch.FloatTensor | None = None encoder_hidden_states: tuple[torch.FloatTensor] | None = None pixel_decoder_hidden_states: tuple[torch.FloatTensor] | None = None transformer_decoder_hidden_states: torch.FloatTensor | None = None attentions: tuple[torch.FloatTensor] | None = None )
参数
- loss (
torch.Tensor, 可选) — 计算出的损失,在提供标签(labels)时返回。 - class_queries_logits (
torch.FloatTensor, 可选) — 一个形状为(batch_size, num_queries, num_labels + 1)的张量,表示每个查询(query)的候选类别。注意这里需要+ 1是因为我们引入了空类别(null class)。 - masks_queries_logits (
torch.FloatTensor, 可选) — 一个形状为(batch_size, num_queries, height, width)的张量,表示每个查询候选的掩码。 - auxiliary_logits (
list[Dict(str, torch.FloatTensor)], 可选) — Transformer 解码器各层预测的类别和掩码列表。 - encoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor) — 编码器模型(骨干网络)最后一个阶段的最后隐藏状态(最终特征图)。 - pixel_decoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor) — 像素解码器模型最后一个阶段的最后隐藏状态(最终特征图)。 - transformer_decoder_last_hidden_state (
tuple(torch.FloatTensor)) — Transformer 解码器的最终输出,形状为(batch_size, sequence_length, hidden_size)。 - encoder_hidden_states (
tuple(torch.FloatTensor),可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, num_channels, height, width)。编码器模型在每个阶段输出的隐藏状态(也称为特征图)。 - pixel_decoder_hidden_states (
tuple(torch.FloatTensor),可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, num_channels, height, width)。像素解码器模型在每个阶段输出的隐藏状态(也称为特征图)。 - transformer_decoder_hidden_states (
tuple(torch.FloatTensor),可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, sequence_length, hidden_size)。Transformer 解码器在每个阶段输出的隐藏状态(也称为特征图)。 - attentions (
tuple(tuple(torch.FloatTensor)),可选,当传递output_attentions=True或config.output_attentions=True时返回) —tuple(torch.FloatTensor)的元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。来自 Transformer 解码器的自注意力和交叉注意力权重。 - loss (
torch.Tensor, 可选) — 计算出的损失,在提供标签(labels)时返回。 - class_queries_logits (
torch.FloatTensor,可选,默认为None) — 形状为(batch_size, num_queries, num_labels + 1)的张量,表示每个查询(query)对应的提议类别。注意,因为我们结合了空类别(null class),所以需要+ 1。 - masks_queries_logits (
torch.FloatTensor,可选,默认为None) — 形状为(batch_size, num_queries, height, width)的张量,表示每个查询对应的提议掩码。 - auxiliary_logits (
list[Dict(str, torch.FloatTensor)], 可选) — Transformer 解码器各层预测的类别和掩码列表。 - encoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor) — 编码器模型(骨干网络)最后一个阶段的最后隐藏状态(最终特征图)。 - pixel_decoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor) — 像素解码器模型最后一个阶段的最后隐藏状态(最终特征图)。 - transformer_decoder_last_hidden_state (
tuple(torch.FloatTensor)) — Transformer 解码器的最终输出,形状为(batch_size, sequence_length, hidden_size)。 - encoder_hidden_states (
tuple(torch.FloatTensor),可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, num_channels, height, width)。编码器模型在每个阶段输出的隐藏状态(也称为特征图)。 - pixel_decoder_hidden_states (
tuple(torch.FloatTensor),可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, num_channels, height, width)。像素解码器模型在每个阶段输出的隐藏状态(也称为特征图)。 - transformer_decoder_hidden_states (
tuple(torch.FloatTensor),可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, sequence_length, hidden_size)。Transformer 解码器在每个阶段输出的隐藏状态(也称为特征图)。 - attentions (
tuple(tuple(torch.FloatTensor)),可选,当传递output_attentions=True或config.output_attentions=True时返回) —tuple(torch.FloatTensor)的元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。来自 Transformer 解码器的自注意力和交叉注意力权重。
用于 Mask2FormerForUniversalSegmentationOutput 输出的类。
此输出可以直接传递给 post_process_semantic_segmentation()、post_process_instance_segmentation() 或 post_process_panoptic_segmentation() 以计算最终的分割图。有关使用的详细信息,请参见 [`~Mask2FormerImageProcessor]。
Mask2FormerModel
class transformers.Mask2FormerModel
< source >( config: Mask2FormerConfig )
参数
- config (Mask2FormerConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法来加载模型权重。
基础的 Mask2Former 模型,输出原始隐藏状态,上方没有特定的头(head)。
该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。
forward
< source >( pixel_values: Tensor pixel_mask: torch.Tensor | None = None output_hidden_states: bool | None = None output_attentions: bool | None = None return_dict: bool | None = None **kwargs ) → Mask2FormerModelOutput 或 tuple(torch.FloatTensor)
参数
- pixel_values (形状为
(batch_size, num_channels, image_size, image_size)的torch.Tensor) — 对应于输入图像的张量。像素值可以使用 Mask2FormerImageProcessor 获取。有关详细信息,请参阅Mask2FormerImageProcessor.__call__()(processor_class使用 Mask2FormerImageProcessor 处理图像)。 - pixel_mask (形状为
(batch_size, height, width)的torch.Tensor,可选) — 避免在填充像素值上执行注意力的掩码。掩码值选在[0, 1]之间:- 1 表示真实的像素(即 未被掩码),
- 0 表示填充像素(即 被掩码)。
- output_hidden_states (
bool,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states。 - output_attentions (
bool,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions。 - return_dict (
bool,可选) — 是否返回 ModelOutput 而不是简单的元组。
返回
Mask2FormerModelOutput 或 tuple(torch.FloatTensor)
一个 Mask2FormerModelOutput 或由 torch.FloatTensor 组成的元组(如果传递了 return_dict=False 或 config.return_dict=False),包含取决于配置 (Mask2FormerConfig) 和输入的各种元素。
Mask2FormerModel 的前向传播方法,覆盖了 __call__ 特殊方法。
虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用
Module实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。
encoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor,可选) — 编码器模型(骨干网络)最后一个阶段的最后隐藏状态(最终特征图)。当传递output_hidden_states=True时返回。pixel_decoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor,可选) — 像素解码器模型最后一个阶段的最后隐藏状态(最终特征图)。transformer_decoder_last_hidden_state (
tuple(torch.FloatTensor)) — Transformer 解码器的最终输出,形状为(batch_size, sequence_length, hidden_size)。encoder_hidden_states (
tuple(torch.FloatTensor),可选) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, num_channels, height, width)。编码器模型在每个阶段输出的隐藏状态(也称为特征图)。当传递output_hidden_states=True时返回。pixel_decoder_hidden_states (
tuple(torch.FloatTensor),可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, num_channels, height, width)。像素解码器模型在每个阶段输出的隐藏状态(也称为特征图)。当传递output_hidden_states=True时返回。transformer_decoder_hidden_states (
tuple(torch.FloatTensor),可选) —torch.FloatTensor的元组(一个是嵌入层的输出,另一个是每个阶段的输出),形状为(batch_size, sequence_length, hidden_size)。Transformer 解码器在每个阶段输出的隐藏状态(也称为特征图)。当传递output_hidden_states=True时返回。transformer_decoder_intermediate_states (形状为
(num_queries, 1, hidden_size)的tuple(torch.FloatTensor)) — 中间解码器激活,即每个解码器层的输出,每个输出都经过了层归一化(layernorm)。masks_queries_logits (形状为
(batch_size, num_queries, height, width)的tuple(torch.FloatTensor)) — Transformer 解码器中每一层的掩码预测。attentions (tuple(tuple(torch.FloatTensor)),可选,当传递output_attentions=True时返回) —tuple(torch.FloatTensor)的元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。来自 Transformer 解码器的自注意力权重。attentions (
tuple[torch.FloatTensor],可选,在传入output_attentions=True或config.output_attentions=True时返回) —torch.FloatTensor元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。
Mask2FormerForUniversalSegmentation
class transformers.Mask2FormerForUniversalSegmentation
< source >( config: Mask2FormerConfig )
参数
- config (Mask2FormerConfig) — 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法来加载模型权重。
Mask2Former 模型,上方带有用于实例/语义/全景分割的头(head)。
该模型继承自 PreTrainedModel。请查看超类文档以了解该库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝头部等)。
此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。
forward
< source >( pixel_values: Tensor mask_labels: list[torch.Tensor] | None = None class_labels: list[torch.Tensor] | None = None pixel_mask: torch.Tensor | None = None output_hidden_states: bool | None = None output_auxiliary_logits: bool | None = None output_attentions: bool | None = None return_dict: bool | None = None **kwargs ) → Mask2FormerForUniversalSegmentationOutput 或 tuple(torch.FloatTensor)
参数
- pixel_values (形状为
(batch_size, num_channels, image_size, image_size)的torch.Tensor) — 对应于输入图像的张量。像素值可以使用 Mask2FormerImageProcessor 获取。有关详细信息,请参阅Mask2FormerImageProcessor.__call__()(processor_class使用 Mask2FormerImageProcessor 处理图像)。 - mask_labels (
list[torch.Tensor],可选) — 形状为(num_labels, height, width)的掩码标签列表,用于输入模型。 - class_labels (
list[torch.LongTensor],可选) — 形状为(num_labels, height, width)的目标类别标签列表,用于输入模型。它们标识mask_labels的标签,例如,如果是class_labels[i][j],则对应mask_labels[i][j]的标签。 - pixel_mask (形状为
(batch_size, height, width)的torch.Tensor,可选) — 避免在填充像素值上执行注意力的掩码。掩码值选在[0, 1]之间:- 1 表示真实的像素(即 未被掩码),
- 0 表示填充像素(即 被掩码)。
- output_hidden_states (
bool,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states。 - output_auxiliary_logits (
bool,可选) — 是否输出辅助 logits。 - output_attentions (
bool,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions。 - return_dict (
bool,可选) — 是否返回 ModelOutput 而不是简单的元组。
返回
Mask2FormerForUniversalSegmentationOutput 或 tuple(torch.FloatTensor)
一个 Mask2FormerForUniversalSegmentationOutput 或由 torch.FloatTensor 组成的元组(如果传递了 return_dict=False 或 config.return_dict=False),包含取决于配置 (Mask2FormerConfig) 和输入的各种元素。
Mask2FormerForUniversalSegmentation 的前向传播方法,覆盖了 __call__ 特殊方法。
虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用
Module实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。
- loss (
torch.Tensor, 可选) — 计算出的损失,当存在标签时返回。 - class_queries_logits (
torch.FloatTensor,可选,默认为None) — 形状为(batch_size, num_queries, num_labels + 1)的张量,表示每个查询(query)的候选类别。注意,之所以需要+ 1,是因为我们合并了空类别(null class)。 - masks_queries_logits (
torch.FloatTensor, 可选, 默认为None) — 形状为(batch_size, num_queries, height, width)的张量,表示每个查询的建议掩码。 - auxiliary_logits (
list[Dict(str, torch.FloatTensor)],可选) — 来自 Transformer 解码器每一层的类别和掩码预测列表。 - encoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor) — 编码器模型(骨干网络)最后一个阶段的最后隐藏状态(最终特征图)。 - pixel_decoder_last_hidden_state (形状为
(batch_size, num_channels, height, width)的torch.FloatTensor) — 像素解码器模型最后一个阶段的最后隐藏状态(最终特征图)。 - transformer_decoder_last_hidden_state (
tuple(torch.FloatTensor)) — Transformer 解码器的最终输出,形状为(batch_size, sequence_length, hidden_size)。 - encoder_hidden_states (
tuple(torch.FloatTensor), 可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor元组(一个用于嵌入输出 + 每个阶段输出一个),形状为(batch_size, num_channels, height, width)。编码器模型在每个阶段输出的隐藏状态(也称为特征图)。 - pixel_decoder_hidden_states (
tuple(torch.FloatTensor), 可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor元组(一个用于嵌入输出 + 每个阶段输出一个),形状为(batch_size, num_channels, height, width)。像素解码器模型在每个阶段输出的隐藏状态(也称为特征图)。 - transformer_decoder_hidden_states (
tuple(torch.FloatTensor), 可选,当传递output_hidden_states=True或config.output_hidden_states=True时返回) —torch.FloatTensor元组(一个用于嵌入输出 + 每个阶段输出一个),形状为(batch_size, sequence_length, hidden_size)。Transformer 解码器在每个阶段输出的隐藏状态(也称为特征图)。 - attentions (
tuple(tuple(torch.FloatTensor)), 可选, 当传递output_attentions=True或config.output_attentions=True时返回) —tuple(torch.FloatTensor)元组(每层一个),形状为(batch_size, num_heads, sequence_length, sequence_length)。来自 transformer 解码器的自注意力和交叉注意力权重。
示例
实例分割示例
>>> from transformers import AutoImageProcessor, Mask2FormerForUniversalSegmentation
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> import torch
>>> # Load Mask2Former trained on COCO instance segmentation dataset
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/mask2former-swin-small-coco-instance")
>>> model = Mask2FormerForUniversalSegmentation.from_pretrained(
... "facebook/mask2former-swin-small-coco-instance"
... )
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> # Model predicts class_queries_logits of shape `(batch_size, num_queries)`
>>> # and masks_queries_logits of shape `(batch_size, num_queries, height, width)`
>>> class_queries_logits = outputs.class_queries_logits
>>> masks_queries_logits = outputs.masks_queries_logits
>>> # Perform post-processing to get instance segmentation map
>>> pred_instance_map = image_processor.post_process_instance_segmentation(
... outputs, target_sizes=[(image.height, image.width)]
... )[0]
>>> print(pred_instance_map.shape)
torch.Size([480, 640])语义分割示例
>>> from transformers import AutoImageProcessor, Mask2FormerForUniversalSegmentation
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> import torch
>>> # Load Mask2Former trained on ADE20k semantic segmentation dataset
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/mask2former-swin-small-ade-semantic")
>>> model = Mask2FormerForUniversalSegmentation.from_pretrained("facebook/mask2former-swin-small-ade-semantic")
>>> url = (
... "https://huggingface.co/datasets/hf-internal-testing/fixtures_ade20k/resolve/main/ADE_val_00000001.jpg"
... )
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> # Model predicts class_queries_logits of shape `(batch_size, num_queries)`
>>> # and masks_queries_logits of shape `(batch_size, num_queries, height, width)`
>>> class_queries_logits = outputs.class_queries_logits
>>> masks_queries_logits = outputs.masks_queries_logits
>>> # Perform post-processing to get semantic segmentation map
>>> pred_semantic_map = image_processor.post_process_semantic_segmentation(
... outputs, target_sizes=[(image.height, image.width)]
... )[0]
>>> print(pred_semantic_map.shape)
torch.Size([512, 683])全景分割示例
>>> from transformers import AutoImageProcessor, Mask2FormerForUniversalSegmentation
>>> from PIL import Image
>>> import httpx
>>> from io import BytesIO
>>> import torch
>>> # Load Mask2Former trained on CityScapes panoptic segmentation dataset
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/mask2former-swin-small-cityscapes-panoptic")
>>> model = Mask2FormerForUniversalSegmentation.from_pretrained(
... "facebook/mask2former-swin-small-cityscapes-panoptic"
... )
>>> url = "https://cdn-media.huggingface.co/Inference-API/Sample-results-on-the-Cityscapes-dataset-The-above-images-show-how-our-method-can-handle.png"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> inputs = image_processor(image, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> # Model predicts class_queries_logits of shape `(batch_size, num_queries)`
>>> # and masks_queries_logits of shape `(batch_size, num_queries, height, width)`
>>> class_queries_logits = outputs.class_queries_logits
>>> masks_queries_logits = outputs.masks_queries_logits
>>> # Perform post-processing to get panoptic segmentation map
>>> pred_panoptic_map = image_processor.post_process_panoptic_segmentation(
... outputs, target_sizes=[(image.height, image.width)]
... )[0]["segmentation"]
>>> print(pred_panoptic_map.shape)
torch.Size([338, 676])Mask2FormerImageProcessor
class transformers.Mask2FormerImageProcessor
< source >( **kwargs: typing_extensions.Unpack[transformers.models.mask2former.image_processing_mask2former.Mask2FormerImageProcessorKwargs] )
参数
- pad_size (
SizeDict,关键字参数,可选) — 填充图像的目标大小。必须大于为预处理提供的任何图像大小。如果未提供pad_size,图像将填充到批处理中的最大高度和宽度。 - ignore_index (
int,关键字参数,可选) — 分割图中分配给背景像素的标签。如果提供,分割图中标记为 0(背景)的像素将被替换为ignore_index。 - do_reduce_labels (
bool,关键字参数,可选,默认为False) — 是否将分割图的所有标签值减 1。通常用于 0 代表背景,且背景本身不包含在数据集所有类别中的数据集(例如 ADE20k)。背景标签将被ignore_index替换。 - num_labels (
int,关键字参数,可选) — 分割图中的标签数量。 - size_divisor (
int,关键字参数,可选,默认为32) — 某些骨干网络需要图像大小能被特定数字整除。如果未传递,则默认为 Swin Transformer 中使用的值。 - **kwargs (ImagesKwargs,可选) — 其他图像预处理选项。上面列出了特定于模型的关键字参数;有关受支持参数的完整列表,请参见 TypedDict 类。
构造一个 Mask2FormerImageProcessor 图像处理器。
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None instance_id_to_semantic_id: list[dict[int, int]] | dict[int, int] | None = None **kwargs: typing_extensions.Unpack[transformers.models.mask2former.image_processing_mask2former.Mask2FormerImageProcessorKwargs] ) → ~image_processing_base.BatchFeature
参数
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 要预处理的图像。需要单张或一批像素值范围在 0 到 255 之间的图像。如果传递像素值在 0 到 1 之间的图像,请设置do_rescale=False。 - segmentation_maps (
ImageInput,可选) — 分割图。 - instance_id_to_semantic_id (
Union[list[dict[int, int]], dict[int, int]],可选) — 实例 ID 到语义 ID 的映射。 - pad_size (
SizeDict,关键字参数,可选) — 填充图像的目标大小。必须大于为预处理提供的任何图像大小。如果未提供pad_size,图像将填充到批处理中的最大高度和宽度。 - ignore_index (
int,关键字参数,可选) — 分割图中分配给背景像素的标签。如果提供,分割图中标记为 0(背景)的像素将被替换为ignore_index。 - do_reduce_labels (
bool, kwargs, optional, 默认为False) — 是否将分割图的所有标签值减 1。通常用于 0 表示背景,且背景本身不包含在数据集所有类别中的数据集(例如 ADE20k)。背景标签将被替换为ignore_index。 - num_labels (
int, kwargs, optional) — 分割图中的标签数量。 - size_divisor (
int, kwargs, optional, 默认为32) — 某些主干网络需要图像大小能被特定数字整除。如果未传递,则默认为 Swin Transformer 中使用的值。 - return_tensors (
str或 TensorType, optional) — 如果设置为'pt',则返回堆叠的张量,否则返回张量列表。 - **kwargs (ImagesKwargs, optional) — 其他图像预处理选项。上面列出了特定于模型的关键字参数;有关受支持参数的完整列表,请参阅 TypedDict 类。
返回
~image_processing_base.BatchFeature
- data (
dict) — 由 call 方法返回的列表/数组/张量字典(“pixel_values”等)。 - tensor_type (
Union[None, str, TensorType], optional) — 您可以在此处提供 tensor_type 以在初始化时将整数列表转换为 PyTorch/Numpy 张量。
post_process_semantic_segmentation
< 源码 >( outputs target_sizes: list[tuple[int, int]] | None = None ) → List[torch.Tensor]
参数
- outputs (Mask2FormerForUniversalSegmentation) — 模型的原始输出。
- target_sizes (
List[Tuple[int, int]], optional) — 长度为 (batch_size) 的列表,其中每个列表项 (Tuple[int, int]]) 对应于每个预测请求的最终尺寸(高度,宽度)。如果保持为 None,则不会调整预测的大小。
返回
List[torch.Tensor]
一个长度为 batch_size 的列表,其中每个元素都是一个形状为 (height, width) 的语义分割图,对应于 target_sizes 条目(如果指定了 target_sizes)。每个 torch.Tensor 的条目对应一个语义类别 ID。
将 Mask2FormerForUniversalSegmentation 的输出转换为语义分割图。仅支持 PyTorch。
post_process_instance_segmentation
< 源码 >( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 target_sizes: list[tuple[int, int]] | None = None return_coco_annotation: bool | None = False return_binary_maps: bool | None = False ) → List[Dict]
参数
- outputs (Mask2FormerForUniversalSegmentation) — 模型的原始输出。
- threshold (
float, optional, 默认为 0.5) — 保留预测实例掩码的概率得分阈值。 - mask_threshold (
float, optional, 默认为 0.5) — 将预测掩码转换为二进制值时使用的阈值。 - overlap_mask_area_threshold (
float, optional, 默认为 0.8) — 用于合并或丢弃每个二进制实例掩码中细小不连通部分的重叠掩码面积阈值。 - target_sizes (
List[Tuple], optional) — 长度为 (batch_size) 的列表,其中每个列表项 (Tuple[int, int]]) 对应于每个预测请求的最终尺寸(高度,宽度)。如果保持为 None,则不会调整预测的大小。 - return_coco_annotation (
bool, optional, 默认为False) — 如果设置为True,分割图将以 COCO 游程编码 (RLE) 格式返回。 - return_binary_maps (
bool, optional, 默认为False) — 如果设置为True,分割图将作为二进制分割图的拼接张量返回(每个检测到的实例一个)。
返回
List[Dict]
字典列表,每个图像一个,每个字典包含两个键
- segmentation — 形状为
(height, width)的张量,其中每个像素代表一个segment_id;或者如果 return_coco_annotation 设置为True,则为分割图的List[List]游程编码 (RLE);或者如果 return_binary_maps 设置为True,则为形状为(num_instances, height, width)的张量。如果在threshold以上未找到掩码,则设置为None。 - segments_info — 包含每个段的附加信息的字典。
- id — 表示
segment_id的整数。 - label_id — 表示与
segment_id对应的标签/语义类 ID 的整数。 - score — 具有
segment_id的段的预测分数。
- id — 表示
将 Mask2FormerForUniversalSegmentationOutput 的输出转换为实例分割预测。仅支持 PyTorch。如果实例可能重叠,请将 return_coco_annotation 或 return_binary_maps 设置为 True 以获得正确的分割结果。
post_process_panoptic_segmentation
< 源码 >( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 label_ids_to_fuse: set[int] | None = None target_sizes: list[tuple[int, int]] | None = None ) → List[Dict]
参数
- outputs (
Mask2FormerForUniversalSegmentationOutput) — 来自 Mask2FormerForUniversalSegmentation 的输出。 - threshold (
float, optional, 默认为 0.5) — 保留预测实例掩码的概率得分阈值。 - mask_threshold (
float, optional, 默认为 0.5) — 将预测掩码转换为二进制值时使用的阈值。 - overlap_mask_area_threshold (
float, optional, 默认为 0.8) — 用于合并或丢弃每个二进制实例掩码中细小不连通部分的重叠掩码面积阈值。 - label_ids_to_fuse (
Set[int], optional) — 此状态下的标签将使其所有实例融合在一起。例如,我们可以说一张图像中只能有一个天空,但可以有多个人,因此天空的标签 ID 会在该集合中,但人的标签 ID 则不会。 - target_sizes (
List[Tuple], optional) — 长度为 (batch_size) 的列表,其中每个列表项 (Tuple[int, int]]) 对应于批次中每个预测请求的最终尺寸(高度,宽度)。如果保持为 None,则不会调整预测的大小。
返回
List[Dict]
字典列表,每个图像一个,每个字典包含两个键
- segmentation — 形状为
(height, width)的张量,其中每个像素代表一个segment_id,如果未找到高于threshold的掩码,则设置为None。如果指定了target_sizes,则分割大小会调整为相应的target_sizes条目。 - segments_info — 包含每个段的附加信息的字典。
- id — 表示
segment_id的整数。 - label_id — 表示与
segment_id对应的标签/语义类 ID 的整数。 - was_fused — 一个布尔值,如果
label_id在label_ids_to_fuse中则为True,否则为False。同一类别/标签的多个实例已融合并分配了一个单独的segment_id。 - score — 具有
segment_id的段的预测分数。
- id — 表示
将 Mask2FormerForUniversalSegmentationOutput 的输出转换为图像全景分割预测。仅支持 PyTorch。
Mask2FormerImageProcessorPil
class transformers.Mask2FormerImageProcessorPil
< 源码 >( **kwargs: typing_extensions.Unpack[transformers.models.mask2former.image_processing_pil_mask2former.Mask2FormerImageProcessorKwargs] )
preprocess
< 源码 >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']] segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None instance_id_to_semantic_id: list[dict[int, int]] | dict[int, int] | None = None **kwargs: typing_extensions.Unpack[transformers.models.mask2former.image_processing_pil_mask2former.Mask2FormerImageProcessorKwargs] ) → ~image_processing_base.BatchFeature
参数
- images (
Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 要预处理的图像。需要单张图像或一批图像,像素值范围在 0 到 255 之间。如果传入像素值在 0 到 1 之间的图像,请设置do_rescale=False。 - segmentation_maps (
ImageInput, optional) — 分割图。 - instance_id_to_semantic_id (
Union[list[dict[int, int]], dict[int, int]], optional) — 实例 ID 到语义 ID 的映射。 - pad_size (
SizeDict, kwargs, optional) — 填充图像的尺寸。必须大于提供的任何预处理图像尺寸。如果未提供pad_size,图像将填充到批次中的最大高度和宽度。 - ignore_index (
int, kwargs, optional) — 分割图中分配给背景像素的标签。如果提供,标记为 0(背景)的分割图像素将被替换为ignore_index。 - do_reduce_labels (
bool, kwargs, optional, 默认为False) — 是否将分割图的所有标签值减 1。通常用于 0 表示背景,且背景本身不包含在数据集所有类别中的数据集(例如 ADE20k)。背景标签将被替换为ignore_index。 - num_labels (
int, kwargs, optional) — 分割图中的标签数量。 - size_divisor (
int, kwargs, optional, 默认为32) — 某些主干网络需要图像大小能被特定数字整除。如果未传递,则默认为 Swin Transformer 中使用的值。 - return_tensors (
str或 TensorType, optional) — 如果设置为'pt',则返回堆叠的张量,否则返回张量列表。 - **kwargs (ImagesKwargs, optional) — 其他图像预处理选项。上面列出了特定于模型的关键字参数;有关受支持参数的完整列表,请参阅 TypedDict 类。
返回
~image_processing_base.BatchFeature
- data (
dict) — 由 call 方法返回的列表/数组/张量字典(“pixel_values”等)。 - tensor_type (
Union[None, str, TensorType], optional) — 您可以在此处提供 tensor_type 以在初始化时将整数列表转换为 PyTorch/Numpy 张量。
post_process_semantic_segmentation
< 源码 >( outputs target_sizes: list[tuple[int, int]] | None = None ) → List[torch.Tensor]
参数
- outputs (Mask2FormerForUniversalSegmentation) — 模型的原始输出。
- target_sizes (
List[Tuple[int, int]], optional) — 长度为 (batch_size) 的列表,其中每个列表项 (Tuple[int, int]]) 对应于每个预测请求的最终尺寸(高度,宽度)。如果保持为 None,则不会调整预测的大小。
返回
List[torch.Tensor]
一个长度为 batch_size 的列表,其中每个元素都是一个形状为 (height, width) 的语义分割图,对应于 target_sizes 条目(如果指定了 target_sizes)。每个 torch.Tensor 的条目对应一个语义类别 ID。
将 Mask2FormerForUniversalSegmentation 的输出转换为语义分割图。仅支持 PyTorch。
post_process_instance_segmentation
< 源码 >( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 target_sizes: list[tuple[int, int]] | None = None return_coco_annotation: bool | None = False return_binary_maps: bool | None = False ) → List[Dict]
参数
- outputs (Mask2FormerForUniversalSegmentation) — 模型的原始输出。
- threshold (
float, optional, 默认为 0.5) — 保留预测实例掩码的概率得分阈值。 - mask_threshold (
float, optional, 默认为 0.5) — 将预测掩码转换为二进制值时使用的阈值。 - overlap_mask_area_threshold (
float, optional, 默认为 0.8) — 用于合并或丢弃每个二进制实例掩码中细小不连通部分的重叠掩码面积阈值。 - target_sizes (
List[Tuple], optional) — 长度为 (batch_size) 的列表,其中每个列表项 (Tuple[int, int]]) 对应于每个预测请求的最终尺寸(高度,宽度)。如果保持为 None,则不会调整预测的大小。 - return_coco_annotation (
bool, optional, 默认为False) — 如果设置为True,分割图将以 COCO 游程编码 (RLE) 格式返回。 - return_binary_maps (
bool, optional, 默认为False) — 如果设置为True,分割图将作为二进制分割图的拼接张量返回(每个检测到的实例一个)。
返回
List[Dict]
字典列表,每个图像一个,每个字典包含两个键
- segmentation — 形状为
(height, width)的张量,其中每个像素代表一个segment_id;或者如果 return_coco_annotation 设置为True,则为分割图的List[List]游程编码 (RLE);或者如果 return_binary_maps 设置为True,则为形状为(num_instances, height, width)的张量。如果在threshold以上未找到掩码,则设置为None。 - segments_info — 包含每个段的附加信息的字典。
- id — 表示
segment_id的整数。 - label_id — 表示与
segment_id对应的标签/语义类 ID 的整数。 - score — 具有
segment_id的段的预测分数。
- id — 表示
将 Mask2FormerForUniversalSegmentationOutput 的输出转换为实例分割预测。仅支持 PyTorch。如果实例可能重叠,请将 return_coco_annotation 或 return_binary_maps 设置为 True 以获得正确的分割结果。
post_process_panoptic_segmentation
< 源码 >( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 label_ids_to_fuse: set[int] | None = None target_sizes: list[tuple[int, int]] | None = None ) → List[Dict]
参数
- outputs (
Mask2FormerForUniversalSegmentationOutput) — 来自 Mask2FormerForUniversalSegmentation 的输出。 - threshold (
float, 可选, 默认为 0.5) — 保留预测实例掩码的概率分数阈值。 - mask_threshold (
float, 可选, 默认为 0.5) — 将预测掩码转换为二值时使用的阈值。 - overlap_mask_area_threshold (
float, 可选, 默认为 0.8) — 重叠掩码面积阈值,用于合并或丢弃每个二值实例掩码中较小的断开部分。 - label_ids_to_fuse (
Set[int], 可选) — 处于此状态的标签将使其所有实例被合并。例如,我们可以规定图像中只能有一个天空,但可以有多个人,因此天空的标签 ID 会在该集合中,而人的标签 ID 则不在。 - target_sizes (
List[Tuple], 可选) — 长度为 (batch_size) 的列表,其中每个列表项 (Tuple[int, int]]) 对应于批次中每个预测结果要求的最终尺寸(高度,宽度)。如果设为 None,则不对预测结果进行缩放。
返回
List[Dict]
字典列表,每个图像一个,每个字典包含两个键
- segmentation — 形状为
(height, width)的张量,其中每个像素代表一个segment_id,如果未找到高于threshold的掩码,则设置为None。如果指定了target_sizes,则分割大小会调整为相应的target_sizes条目。 - segments_info — 包含每个段的附加信息的字典。
- id — 表示
segment_id的整数。 - label_id — 表示与
segment_id对应的标签/语义类 ID 的整数。 - was_fused — 一个布尔值,如果
label_id在label_ids_to_fuse中则为True,否则为False。同一类别/标签的多个实例已融合并分配了一个单独的segment_id。 - score — 具有
segment_id的段的预测分数。
- id — 表示
将 Mask2FormerForUniversalSegmentationOutput 的输出转换为图像全景分割预测。仅支持 PyTorch。