Transformers 4.37 中文文档(六十六)(4)

简介: Transformers 4.37 中文文档(六十六)

Transformers 4.37 中文文档(六十六)(3)https://developer.aliyun.com/article/1564108


DETR

原文链接:huggingface.co/docs/transformers/v4.37.2/en/model_doc/detr

概述

DETR 模型是由 Nicolas Carion、Francisco Massa、Gabriel Synnaeve、Nicolas Usunier、Alexander Kirillov 和 Sergey Zagoruyko 在使用变压器进行端到端目标检测中提出的。DETR  由一个卷积主干后面跟着一个编码器-解码器变压器组成,可以进行端到端的目标检测训练。它极大地简化了像 Faster-R-CNN 和  Mask-R-CNN 这样的模型的复杂性,这些模型使用区域提议、非极大值抑制程序和锚点生成等技术。此外,DETR  还可以自然地扩展到执行全景分割,只需在解码器输出之上添加一个蒙版头。

论文摘要如下:

我们提出了一种将目标检测视为直接集合预测问题的新方法。我们的方法简化了检测流程,有效地消除了许多手工设计的组件,如非极大值抑制程序或明确编码我们对任务的先验知识的锚点生成。新框架  DEtection TRansformer 或 DETR  的主要组成部分是通过二部匹配强制唯一预测的基于集合的全局损失,以及一个变压器编码器-解码器架构。给定一组固定的学习目标查询,DETR  推理对象之间的关系和全局图像上下文,直接并行输出最终的预测集。这个新模型在概念上简单,不需要专门的库,不像许多其他现代检测器。DETR  在具有挑战性的 COCO 目标检测数据集上表现出与经过充分优化的 Faster RCNN 基线相当的准确性和运行时性能。此外,DETR  可以轻松推广为以统一方式产生全景分割。我们展示它明显优于竞争基线。

这个模型是由nielsr贡献的。原始代码可以在这里找到。

DETR 的工作原理

以下是解释 DetrForObjectDetection 工作原理的 TLDR:

首先,将图像通过预训练的卷积主干(在论文中,作者使用 ResNet-50/ResNet-101)。假设我们也添加了一个批处理维度。这意味着主干的输入是一个形状为(batch_size, 3, height, width)的张量,假设图像有 3 个颜色通道(RGB)。CNN 主干输出一个新的低分辨率特征图,通常形状为(batch_size, 2048, height/32, width/32)。然后,将其投影到 DETR 变压器的隐藏维度,该维度默认为256,使用nn.Conv2D层。现在,我们有一个形状为(batch_size, 256, height/32, width/32)的张量。接下来,特征图被展平并转置,以获得形状为(batch_size, seq_len, d_model) = (batch_size, width/32*height/32, 256)的张量。因此,与 NLP 模型的一个区别是,序列长度实际上比通常更长,但d_model较小(在 NLP 中通常为 768 或更高)。

接下来,这通过编码器发送,输出相同形状的encoder_hidden_states(您可以将这些视为图像特征)。接下来,所谓的对象查询通过解码器发送。这是一个形状为(batch_size, num_queries, d_model)的张量,其中num_queries通常设置为 100,并用零初始化。这些输入嵌入是学习的位置编码,作者将其称为对象查询,类似于编码器,它们被添加到每个注意力层的输入中。每个对象查询将在图像中寻找特定对象。解码器通过多个自注意力和编码器-解码器注意力层更新这些嵌入,以输出相同形状的decoder_hidden_states(batch_size, num_queries, d_model)。接下来,顶部添加了两个头用于对象检测:一个线性层用于将每个对象查询分类为对象或“无对象”之一,以及一个 MLP 用于预测每个查询的边界框。

该模型使用二部匹配损失进行训练:实际上我们比较每个 N = 100 个对象查询的预测类别+边界框与地面真实注释,填充到相同长度 N(因此如果图像仅包含 4 个对象,则 96 个注释将只有一个“无对象”作为类别和一个“无边界框”作为边界框)。使用匈牙利匹配算法找到每个 N 查询与每个 N 注释的最佳一对一映射。接下来,使用标准交叉熵(用于类别)和 L1 的线性组合以及广义 IoU 损失(用于边界框)来优化模型的参数。

DETR 可以自然扩展以执行全景分割(将语义分割和实例分割统一起来)。DetrForSegmentation 在  DetrForObjectDetection 的顶部添加了一个分割掩码头。掩码头可以同时训练,或者在两个步骤的过程中训练,首先训练一个  DetrForObjectDetection  模型来检测“事物”(实例)和“物品”(背景物品,如树木、道路、天空)周围的边界框,然后冻结所有权重,仅训练掩码头 25  个时代。实验上,这两种方法给出了类似的结果。请注意,为了使训练成为可能,预测框是必需的,因为匈牙利匹配是使用框之间的距离计算的。

使用提示

  • DETR 使用所谓的对象查询来检测图像中的对象。查询的数量确定了单个图像中可以检测到的对象的最大数量,默认设置为 100(请参阅 DetrConfig 的参数num_queries)。请注意,最好有一些余地(在 COCO 中,作者使用了 100,而 COCO 图像中的最大对象数量约为 70)。
  • DETR 的解码器并行更新查询嵌入。这与像 GPT-2 这样使用自回归解码而不是并行的语言模型不同。因此,不使用因果关注掩码。
  • 在将隐藏状态投影到查询和键之前,DETR 在每个自注意力和交叉注意力层中添加位置嵌入。对于图像的位置嵌入,可以在固定正弦或学习的绝对位置嵌入之间进行选择。默认情况下,DetrConfig 的参数position_embedding_type设置为"sine"
  • 在训练期间,DETR 的作者确实发现在解码器中使用辅助损失是有帮助的,特别是为了帮助模型输出每个类别的正确对象数量。如果将 DetrConfig 的参数auxiliary_loss设置为True,则在每个解码器层之后添加预测前馈神经网络和匈牙利损失(FFN 共享参数)。
  • 如果您想在跨多个节点的分布式环境中训练模型,则应该在modeling_detr.py中的DetrLoss类中更新num_boxes变量。在多个节点上训练时,应将其设置为所有节点上目标框的平均数量,可以在原始实现中看到这里
  • DetrForObjectDetection 和 DetrForSegmentation 可以使用timm 库中可用的任何卷积骨干进行初始化。例如,可以通过将 DetrConfig 的backbone属性设置为"tf_mobilenetv3_small_075",然后使用该配置初始化模型来使用 MobileNet 骨干。
  • DETR  调整输入图像的大小,使最短边至少为一定数量的像素,而最长边至多为 1333 像素。在训练时,使用尺度增强,使最短边随机设置为至少 480  像素,最多 800 像素。在推断时,最短边设置为 800。可以使用 DetrImageProcessor 为模型准备图像(以及可选的以 COCO  格式的注释)。由于这种调整大小,批处理中的图像可能具有不同的大小。DETR  通过将图像填充到批处理中的最大大小,并创建一个像素掩码来指示哪些像素是真实的/哪些是填充来解决这个问题。另外,也可以定义一个自定义的collate_fn来批处理图像,使用~transformers.DetrImageProcessor.pad_and_create_pixel_mask
  • 图像的大小将决定所使用的内存量,从而确定batch_size。建议每个 GPU 使用批量大小为 2。有关更多信息,请参阅此 Github 线程

有三种实例化 DETR 模型的方法(取决于您的偏好):

选项 1:使用整个模型的预训练权重实例化 DETR

>>> from transformers import DetrForObjectDetection
>>> model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")

选项 2:使用随机初始化的 Transformer 权重实例化 DETR,但使用骨干的预训练权重

>>> from transformers import DetrConfig, DetrForObjectDetection
>>> config = DetrConfig()
>>> model = DetrForObjectDetection(config)

选项 3:使用随机初始化的骨干+Transformer 实例化 DETR

>>> config = DetrConfig(use_pretrained_backbone=False)
>>> model = DetrForObjectDetection(config)

总之,请参考以下表格:

任务 目标检测 实例分割 全景分割
描述 预测图像中物体周围的边界框和类标签 预测图像中物体(即实例)周围的掩模 预测图像中物体(即实例)以及“物质”(即背景物品如树木和道路)周围的掩模
模型 DetrForObjectDetection DetrForSegmentation DetrForSegmentation
示例数据集 COCO 检测 COCO 检测,COCO 全景 COCO 全景
提供给 DetrImageProcessor 的注释格式 {‘image_id’: int, ‘annotations’: List[Dict]},每个 Dict 是一个 COCO 对象注释 {‘image_id’: int, ‘annotations’: List[Dict]}(在 COCO 检测的情况下)或{‘file_name’: str, ‘image_id’: int, ‘segments_info’: List[Dict]}(在 COCO 全景的情况下) {‘file_name’: str, ‘image_id’: int, ‘segments_info’: List[Dict]}和 masks_path(包含 PNG 文件的掩模目录的路径)
后处理(即将模型输出转换为 Pascal VOC 格式) post_process() post_process_segmentation() post_process_segmentation(), post_process_panoptic()
评估器 CocoEvaluator with iou_types="bbox" CocoEvaluator with iou_types="bbox" or "segm" CocoEvaluator with iou_tupes="bbox" or "segm", PanopticEvaluator

简而言之,应该准备数据以 COO 检测或 COO 全景格式,然后使用 DetrImageProcessor 创建pixel_valuespixel_mask和可选的labels,然后可以用于训练(或微调)模型。对于评估,应该首先使用 DetrImageProcessor 的其中一种后处理方法转换模型的输出。这些可以提供给CocoEvaluatorPanopticEvaluator,这些评估器允许您计算像平均精度(mAP)和全景质量(PQ)这样的指标。后者对象在原始存储库中实现。有关评估的更多信息,请参见示例笔记本

资源

一个官方 Hugging Face 和社区(由🌎表示)资源列表,可帮助您开始使用 DETR。

目标检测

  • 所有示例笔记本说明在自定义数据集上对 DetrForObjectDetection 和 DetrForSegmentation 进行微调的示例可以在此处找到。
  • 参见:目标检测任务指南

如果您有兴趣提交资源以包含在此处,请随时打开一个 Pull Request,我们将进行审查!资源应该展示一些新东西,而不是重复现有资源。

DetrConfig

class transformers.DetrConfig

<来源>

( use_timm_backbone = True backbone_config = None num_channels = 3 num_queries = 100 encoder_layers = 6 encoder_ffn_dim = 2048 encoder_attention_heads = 8 decoder_layers = 6 decoder_ffn_dim = 2048 decoder_attention_heads = 8 encoder_layerdrop = 0.0 decoder_layerdrop = 0.0 is_encoder_decoder = True activation_function = 'relu' d_model = 256 dropout = 0.1 attention_dropout = 0.0 activation_dropout = 0.0 init_std = 0.02 init_xavier_std = 1.0 auxiliary_loss = False position_embedding_type = 'sine' backbone = 'resnet50' use_pretrained_backbone = True dilation = False class_cost = 1 bbox_cost = 5 giou_cost = 2 mask_loss_coefficient = 1 dice_loss_coefficient = 1 bbox_loss_coefficient = 5 giou_loss_coefficient = 2 eos_coefficient = 0.1 **kwargs )

参数

  • use_timm_backbonebool可选,默认为True)— 是否使用timm库作为骨干。如果设置为False,将使用AutoBackbone API。
  • backbone_configPretrainedConfigdict可选)— 骨干模型的配置。仅在use_timm_backbone设置为False时使用,默认为ResNetConfig()
  • num_channelsint可选,默认为 3)— 输入通道的数量。
  • num_queriesint可选,默认为 100)— 对象查询的数量,即检测槽的数量。这是 DetrModel 在单个图像中可以检测的对象的最大数量。对于 COCO,我们建议使用 100 个查询。
  • d_modelint可选,默认为 256)— 层的维度。
  • encoder_layersint可选,默认为 6)— 编码器层数。
  • decoder_layersint可选,默认为 6)— 解码器层数。
  • encoder_attention_headsint可选,默认为 8)— Transformer 编码器中每个注意力层的注意力头数。
  • decoder_attention_heads (int, optional, defaults to 8) — Transformer 解码器中每个注意力层的注意力头数。
  • decoder_ffn_dim (int, optional, defaults to 2048) — 解码器中“中间”(通常称为前馈)层的维度。
  • encoder_ffn_dim (int, optional, defaults to 2048) — 解码器中“中间”(通常称为前馈)层的维度。
  • activation_function (str or function, optional, defaults to "relu") — 编码器和池化器中的非线性激活函数(函数或字符串)。如果是字符串,支持"gelu""relu""silu""gelu_new"
  • dropout (float, optional, defaults to 0.1) — 嵌入层、编码器和池化器中所有全连接层的 dropout 概率。
  • attention_dropout (float, optional, defaults to 0.0) — 注意力概率的 dropout 比率。
  • activation_dropout (float, optional, defaults to 0.0) — 全连接层内激活的 dropout 比率。
  • init_std (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • init_xavier_std (float, optional, defaults to 1) — 用于 HM Attention map 模块中 Xavier 初始化增益的缩放因子。
  • encoder_layerdrop (float, optional, defaults to 0.0) — 编码器的 LayerDrop 概率。更多细节请参阅LayerDrop paper
  • decoder_layerdrop (float, optional, defaults to 0.0) — 解码器的 LayerDrop 概率。更多细节请参阅LayerDrop paper
  • auxiliary_loss (bool, optional, defaults to False) — 是否使用辅助解码损失(每个解码器层的损失)。
  • position_embedding_type (str, optional, defaults to "sine") — 在图像特征之上使用的位置嵌入的类型。可以是"sine""learned"之一。
  • backbone (str, optional, defaults to "resnet50") — 在use_timm_backbone = True时要使用的卷积骨干网络的名称。支持 timm 包中的任何卷积骨干网络。有关所有可用模型的列表,请参阅此页面
  • use_pretrained_backbone (bool, optional, defaults to True) — 是否在骨干网络中使用预训练权重。仅在use_timm_backbone = True时支持。
  • dilation (bool, optional, defaults to False) — 是否在最后的卷积块(DC5)中用扩张替换步幅。仅在use_timm_backbone = True时支持。
  • class_cost (float, optional, defaults to 1) — 匈牙利匹配成本中分类错误的相对权重。
  • bbox_cost (float, optional, defaults to 5) — 相对于匈牙利匹配成本中边界框坐标的 L1 误差的权重。
  • giou_cost (float, optional, defaults to 2) — 相对于匈牙利匹配成本中边界框广义 IoU 损失的权重。
  • mask_loss_coefficient (float, optional, defaults to 1) — 泛光分割损失中 Focal 损失的相对权重。
  • dice_loss_coefficient (float, optional, defaults to 1) — 泛光分割损失中 DICE/F-1 损失的相对权重。
  • bbox_loss_coefficient (float, optional, defaults to 5) — 目标检测损失中 L1 边界框损失的相对权重。
  • giou_loss_coefficient (float, optional, defaults to 2) — 目标检测损失中广义 IoU 损失的相对权重。
  • eos_coefficient (float, optional, defaults to 0.1) — 目标检测损失中“无对象”类别的相对分类权重。

这是一个配置类,用于存储 DetrModel 的配置。它用于根据指定的参数实例化一个 DETR 模型,定义模型架构。使用默认值实例化配置将产生类似于 DETR facebook/detr-resnet-50架构的配置。

配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读来自 PretrainedConfig 的文档以获取更多信息。

示例:

>>> from transformers import DetrConfig, DetrModel
>>> # Initializing a DETR facebook/detr-resnet-50 style configuration
>>> configuration = DetrConfig()
>>> # Initializing a model (with random weights) from the facebook/detr-resnet-50 style configuration
>>> model = DetrModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config
from_backbone_config

< source >

( backbone_config: PretrainedConfig **kwargs ) → export const metadata = 'undefined';DetrConfig

参数

  • backbone_config (PretrainedConfig) — 骨干配置。

返回

DetrConfig

配置对象的实例

从预训练的骨干模型配置实例化一个 DetrConfig(或派生类)。

DetrImageProcessor

class transformers.DetrImageProcessor

< source >

( format: Union = <AnnotationFormat.COCO_DETECTION: 'coco_detection'> do_resize: bool = True size: Dict = None resample: Resampling = <Resampling.BILINEAR: 2> do_rescale: bool = True rescale_factor: Union = 0.00392156862745098 do_normalize: bool = True image_mean: Union = None image_std: Union = None do_pad: bool = True **kwargs )

参数

  • format (str, optional, 默认为"coco_detection") — 注释的数据格式。可以是"coco_detection"或“coco_panoptic”之一。
  • do_resize (bool, optional, 默认为 True) — 控制是否将图像的(height, width)维度调整为指定的size。可以被preprocess方法中的do_resize参数覆盖。
  • size (Dict[str, int] optional, 默认为 {"shortest_edge" -- 800, "longest_edge": 1333}): 调整大小后的图像的(height, width)维度大小。可以被preprocess方法中的size参数覆盖。
  • resample (PILImageResampling, optional, 默认为 PILImageResampling.BILINEAR) — 如果调整图像大小,则要使用的重采样滤波器。
  • do_rescale (bool, optional, 默认为 True) — 控制是否按指定比例因子rescale_factor重新缩放图像。可以被preprocess方法中的do_rescale参数覆盖。
  • rescale_factor (intfloat, optional, 默认为 1/255) — 如果重新调整图像,则要使用的比例因子。可以被preprocess方法中的rescale_factor参数覆盖。do_normalize — 控制是否对图像进行归一化。可以被preprocess方法中的do_normalize参数覆盖。
  • image_mean (floatList[float], optional, 默认为 IMAGENET_DEFAULT_MEAN) — 在归一化图像时使用的均值。可以是单个值或每个通道的值列表。可以被preprocess方法中的image_mean参数覆盖。
  • image_std (floatList[float], optional, 默认为 IMAGENET_DEFAULT_STD) — 在归一化图像时使用的标准差值。可以是单个值或每个通道的值列表。可以被preprocess方法中的image_std参数覆盖。
  • do_pad (bool, optional, 默认为 True) — 控制是否将图像填充到批处理中最大的图像并创建像素掩码。可以被preprocess方法中的do_pad参数覆盖。

构造一个 Detr 图像处理器。

preprocess

< source >

( images: Union annotations: Union = None return_segmentation_masks: bool = None masks_path: Union = None do_resize: Optional = None size: Optional = None resample = None do_rescale: Optional = None rescale_factor: Union = None do_normalize: Optional = None image_mean: Union = None image_std: Union = None do_pad: Optional = None format: Union = None return_tensors: Union = None data_format: Union = <ChannelDimension.FIRST: 'channels_first'> input_data_format: Union = None **kwargs )

参数

  • images (ImageInput) — 要预处理的图像或图像批次。期望单个或批量像素值范围从 0 到 255 的图像。如果传入像素值在 0 到 1 之间的图像,请设置do_rescale=False
  • annotations (AnnotationType or List[AnnotationType], optional) — 与图像或图像批次相关联的注释列表。如果注释是用于对象检测的,则注释应该是一个带有以下键的字典:
  • “image_id” (int): 图像 id。
  • “annotations” (List[Dict]): 图像的注释列表。每个注释应该是一个字典。一个图像可以没有注释,此时列表应为空。如果注释是用于分割的,注释应该是一个带有以下键的字典:
  • “image_id” (int): 图像 id。
  • “segments_info” (List[Dict]): 图像的段列表。每个段应该是一个字典。一个图像可以没有段,此时列表应为空。
  • “file_name” (str): 图像的文件名。
  • return_segmentation_masks (bool, optional, 默认为 self.return_segmentation_masks) — 是否返回分割蒙版。
  • masks_path (str or pathlib.Path, optional) — 包含分割蒙版的目录路径。
  • do_resize (bool, optional, 默认为 self.do_resize) — 是否调整图像大小。
  • size (Dict[str, int], optional, 默认为 self.size) — 调整大小后的图像尺寸。
  • resample (PILImageResampling, optional, 默认为 self.resample) — 调整图像大小时使用的重采样滤波器。
  • do_rescale (bool, optional, 默认为 self.do_rescale) — 是否重新缩放图像。
  • rescale_factor (float, optional, 默认为 self.rescale_factor) — 调整图像时使用的缩放因子。
  • do_normalize (bool, optional, 默认为 self.do_normalize) — 是否规范化图像。
  • image_mean (float or List[float], optional, 默认为 self.image_mean) — 在规范化图像时使用的均值。
  • image_std (float or List[float], optional, 默认为 self.image_std) — 在规范化图像时使用的标准差。
  • do_pad (bool, optional, 默认为 self.do_pad) — 是否填充图像。
  • format (str or AnnotationFormat, optional, 默认为 self.format) — 注释的格式。
  • return_tensors (str or TensorType, optional, 默认为 self.return_tensors) — 要返回的张量类型。如果为None,将返回图像列表。
  • data_format (ChannelDimension or str, optional, 默认为ChannelDimension.FIRST) — 输出图像的通道维度格式。可以是以下之一:
  • "channels_first"ChannelDimension.FIRST: 图像以(通道数,高度,宽度)格式。
  • "channels_last"ChannelDimension.LAST: 图像以(高度,宽度,通道数)格式。
  • 未设置:使用输入图像的通道维度格式。
  • input_data_format (ChannelDimension or str, optional) — 输入图像的通道维度格式。如果未设置,将从输入图像中推断通道维度格式。可以是以下之一:
  • "channels_first"ChannelDimension.FIRST: 图像以(通道数,高度,宽度)格式。
  • "channels_last"ChannelDimension.LAST: 图像以(高度,宽度,通道数)格式。
  • "none"ChannelDimension.NONE: 图像以(高度,宽度)格式。

预处理图像或图像批次,以便模型可以使用。

post_process_object_detection

<来源>

( outputs threshold: float = 0.5 target_sizes: Union = None ) → export const metadata = 'undefined';List[Dict]

参数

  • outputs (DetrObjectDetectionOutput) — 模型的原始输出。
  • threshold (float, optional) — 保留对象检测预测的分数阈值。
  • target_sizes (torch.Tensor列表[元组[int, int]], 可选) — 形状为(batch_size, 2)的张量或包含每个图像的目标大小(高度,宽度)的元组列表(元组[int, int])。如果未设置,预测将不会被调整大小。

返回

列表[字典]

一个字典列表,每个字典包含模型预测的批次中图像的分数、标签和框。

将 DetrForObjectDetection 的原始输出转换为最终的边界框,格式为(左上角 _x,左上角 _y,右下角 _x,右下角 _y)。仅支持 PyTorch。

后处理语义分割

<来源>

( outputs target_sizes: List = None ) → export const metadata = 'undefined';List[torch.Tensor]

参数

  • outputs (DetrForSegmentation) — 模型的原始输出。
  • target_sizes (列表[元组[int, int]], 可选) — 一个元组列表(元组[int, int]),包含批次中每个图像的目标大小(高度,宽度)。如果未设置,预测将不会被调整大小。

返回

列表[torch.Tensor]

一个长度为batch_size的列表,其中每个项是一个形状为(高度,宽度)的语义分割地图,对应于目标大小条目(如果指定了target_sizes)。每个torch.Tensor的每个条目对应于一个语义类别 id。

将 DetrForSegmentation 的输出转换为语义分割地图。仅支持 PyTorch。

后处理实例分割

<来源>

( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 target_sizes: Optional = None return_coco_annotation: Optional = False ) → export const metadata = 'undefined';List[Dict]

参数

  • outputs (DetrForSegmentation) — 模型的原始输出。
  • threshold (float, 可选, 默认为 0.5) — 保留预测实例掩模的概率分数阈值。
  • mask_threshold (float, 可选, 默认为 0.5) — 将预测的掩模转换为二进制值时使用的阈值。
  • overlap_mask_area_threshold (float, 可选, 默认为 0.8) — 合并或丢弃每个二进制实例掩模中的小不连续部分的重叠掩模区域阈值。
  • target_sizes (列表[元组], 可选) — 长度为(batch_size)的列表,其中每个列表项(元组[int, int]])对应于每个预测的请求最终大小(高度,宽度)。如果未设置,预测将不会被调整大小。
  • return_coco_annotation (bool, 可选) — 默认为False。如果设置为True,则以 COCO 运行长度编码(RLE)格式返回分割地图。

返回

列表[字典]

一个字典列表,每个图像一个字典,每个字典包含两个键:

  • segmentation — 形状为(高度,宽度)的张量,其中每个像素代表segment_id列表[列表]的运行长度编码(RLE)的分割地图,如果 return_coco_annotation 设置为True。如果未找到高于threshold的掩模,则设置为None
  • segments_info — 包含每个段的附加信息的字典。
  • id — 代表segment_id的整数。
  • label_id — 代表与segment_id对应的标签/语义类别 id 的整数。
  • score — 具有segment_id的段的预测分数。

将 DetrForSegmentation 的输出转换为实例分割预测。仅支持 PyTorch。

后处理全景分割

<来源>

( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 label_ids_to_fuse: Optional = None target_sizes: Optional = None ) → export const metadata = 'undefined';List[Dict]

参数

  • outputs (DetrForSegmentation) — 来自 DetrForSegmentation 的输出。
  • 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]])对应于批次中每个预测的请求最终大小(高度、宽度)。如果未设置,预测将不会被调整大小。

返回

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_idlabel_ids_to_fuse中,则为True,否则为False。同一类别/标签的多个实例被融合并分配一个单独的segment_id
  • score — 带有segment_id的段的预测分数。

将 DetrForSegmentation 的输出转换为图像全景分割预测。仅支持 PyTorch。

DetrFeatureExtractor

class transformers.DetrFeatureExtractor

< source >

( *args **kwargs )
__call__

< source >

( images **kwargs )

预处理一张图像或一批图像。

post_process_object_detection

< source >

( outputs threshold: float = 0.5 target_sizes: Union = None ) → export const metadata = 'undefined';List[Dict]

参数

  • outputs (DetrObjectDetectionOutput) — 模型的原始输出。
  • threshold (float, 可选) — 保留对象检测预测的分数阈值。
  • target_sizes (torch.TensorList[Tuple[int, int]], 可选) — 形状为(batch_size, 2)的张量或包含批次中每个图像的目标大小(height, width)的元组列表(Tuple[int, int])。如果未设置,预测将不会被调整大小。

返回

List[Dict]

一个字典列表,每个字典包含模型预测的批次中每个图像的分数、标签和框。

将 DetrForObjectDetection 的原始输出转换为(top_left_x, top_left_y, bottom_right_x, bottom_right_y)格式的最终边界框。仅支持 PyTorch。

post_process_semantic_segmentation

< source >

( outputs target_sizes: List = None ) → export const metadata = 'undefined';List[torch.Tensor]

参数

  • outputs (DetrForSegmentation) — 模型的原始输出。
  • target_sizesList[Tuple[int, int]]可选) - 一个元组列表(Tuple[int, int]),包含批处理中每个图像的目标大小(高度,宽度)。如果未设置,预测将不会被调整大小。

返回

List[torch.Tensor]

一个长度为batch_size的列表,其中每个项目都是一个形状为(高度,宽度)的语义分割地图,对应于target_sizes条目(如果指定了target_sizes)。每个torch.Tensor的条目对应于一个语义类别 id。

将 DetrForSegmentation 的输出转换为语义分割地图。仅支持 PyTorch。

post_process_instance_segmentation

<来源>

( outputs threshold: float = 0.5 mask_threshold: float = 0.5 overlap_mask_area_threshold: float = 0.8 target_sizes: Optional = None return_coco_annotation: Optional = False ) → export const metadata = 'undefined';List[Dict]

参数

  • outputs(DetrForSegmentation) - 模型的原始输出。
  • thresholdfloat可选,默认为 0.5) - 保留预测实例掩码的概率分数阈值。
  • mask_thresholdfloat可选,默认为 0.5) - 在将预测的掩码转换为二进制值时使用的阈值。
  • overlap_mask_area_thresholdfloat可选,默认为 0.8) - 合并或丢弃每个二进制实例掩码中的小断开部分的重叠掩码区域阈值。
  • target_sizesList[Tuple]可选) - 长度为(batch_size)的列表,其中每个列表项(Tuple[int, int])对应于每个预测的请求最终大小(高度,宽度)。如果未设置,预测将不会被调整大小。
  • return_coco_annotationbool可选) - 默认为False。如果设置为True,则以 COCO 运行长度编码(RLE)格式返回分割地图。

返回

List[Dict]

一个字典列表,每个图像一个字典,每个字典包含两个键:

  • segmentation - 一个形状为(高度,宽度)的张量,其中每个像素表示segment_id或分割地图的List[List]运行长度编码(RLE),如果return_coco_annotation设置为True。如果未找到高于threshold的掩码,则设置为None
  • segments_info - 包含每个段的附加信息的字典。
  • id - 表示segment_id的整数。
  • label_id - 表示与segment_id对应的标签/语义类别 id 的整数。
  • score - 具有segment_id的段的预测分数。

将 DetrForSegmentation 的输出转换为实例分割预测。仅支持 PyTorch。

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: Optional = None target_sizes: Optional = None ) → export const metadata = 'undefined';List[Dict]

参数

  • outputs(DetrForSegmentation) - 来自 DetrForSegmentation 的输出。
  • thresholdfloat可选,默认为 0.5) - 保留预测实例掩码的概率分数阈值。
  • mask_thresholdfloat可选,默认为 0.5) - 在将预测的掩码转换为二进制值时使用的阈值。
  • overlap_mask_area_thresholdfloat可选,默认为 0.8) - 合并或丢弃每个二进制实例掩码中的小断开部分的重叠掩码区域阈值。
  • label_ids_to_fuseSet[int]可选) - 此状态中的标签将使其所有实例被融合在一起。例如,我们可以说图像中只能有一个天空,但可以有几个人,因此天空的标签 ID 将在该集合中,但人的标签 ID 不在其中。
  • target_sizes (List[Tuple], optional) — 长度为(batch_size)的列表,每个列表项(Tuple[int, int]])对应于批处理中每个预测的请求最终大小(高度,宽度)。如果未设置,预测将不会被调整大小。

返回值

List[Dict]

一个字典列表,每个图像一个字典,每个字典包含两个键:

  • segmentation — 形状为(height, width)的张量,每个像素代表一个segment_id,如果找不到遮罩,则为None。如果指定了target_sizes,则将分割调整为相应的target_sizes条目。
  • segments_info — 包含每个段的附加信息的字典。
  • id — 代表segment_id的整数。
  • label_id — 代表与segment_id对应的标签/语义类别 id 的整数。
  • was_fused — 一个布尔值,如果label_idlabel_ids_to_fuse中,则为True,否则为False。相同类别/标签的多个实例被融合并分配一个单一的segment_id
  • score — 具有segment_id的段的预测分数。

将 DetrForSegmentation 的输出转换为图像全景分割预测。仅支持 PyTorch。


Transformers 4.37 中文文档(六十六)(5)https://developer.aliyun.com/article/1564110

相关文章
|
机器学习/深度学习 编解码 数据可视化
YOLOv5改进 | 主干篇 | 12月份最新成果TransNeXt特征提取网络(全网首发)
YOLOv5改进 | 主干篇 | 12月份最新成果TransNeXt特征提取网络(全网首发)
597 0
|
存储 数据采集 缓存
海量数据去重的Hash、bitmap、BloomFilter、分布式一致性hash
海量数据去重的Hash、bitmap、BloomFilter、分布式一致性hash
497 1
|
8月前
|
传感器 人工智能 监控
开发一套智慧工地系统需要多少钱?
开发智慧工地系统费用在数万元至数百万元不等,取决于功能需求、开发方式及项目规模。基础模块如人员管理、环境监测、视频监控费用约5万至20万元;扩展功能如无人机巡检、人脸识别等按需添加。开发方式包括模板开发(低成本但个性化差)、定制开发(高成本高适配)及系统源码二开(性价比高)。大型项目、复杂功能及高配硬件将显著提升成本。建议明确核心需求,分阶段建设,选用开放架构系统以降低维护成本。
772 7
|
10月前
|
运维 监控 安全
JumpServer基本功能和使用介绍。
以上就是JumpServer的全部介绍。其功能丰富,使用方便,无论你处在何种角色,无论你面临何种问题,JumpServer总能为你提供解决方案。所以,不妨试试看,让JumpServer帮你打造企业级的运维管理模式。
325 0
|
机器学习/深度学习 测试技术 计算机视觉
RT-DETR改进策略【Conv和Transformer】| ICCV-2023 iRMB 倒置残差移动块 轻量化的注意力模块
RT-DETR改进策略【Conv和Transformer】| ICCV-2023 iRMB 倒置残差移动块 轻量化的注意力模块
369 14
RT-DETR改进策略【Conv和Transformer】| ICCV-2023 iRMB 倒置残差移动块 轻量化的注意力模块
|
编译器
html动态爱心代码【三】(附源码)
html动态爱心代码【三】(附源码)
1056 0
|
开发者
C 标准库 - <stdio.h>详解
`&lt;stdio.h&gt;` 是 C 标准库中用于处理输入和输出(I/O)的头文件,提供了多种功能,如格式化输入输出、文件操作等。
1347 1
|
Linux 数据处理
Linux命令reset详解
`reset`命令在Linux中用于修复终端显示异常,它是`tset`的软链接。通过重置显示属性和参数,恢复终端正常状态。特点包括自动检测终端类型、多参数支持及恢复显示设置。常用参数有 `-e`, `-i`, `-k` 用于设置控制字符,`-V` 显示ncurses版本。在终端出现问题时,简单运行`reset`即可重置,定期使用可维护终端整洁。记得确保已安装ncurses库。
|
机器学习/深度学习 编解码 运维
在12个视频理解任务中,Mamba先打败了Transformer
【5月更文挑战第13天】Mamba,一种状态空间模型,在12个视频理解任务中超越Transformer,显示其在视频编码、解码、生成和分类等角色上的高效性能。研究发现Mamba在视频分类任务中的准确率超出Transformer 2%,并在视频描述生成和问答任务中表现出色。然而,Mamba的训练复杂,需要更多资源,且在处理复杂场景时效果不佳。[查看论文:https://arxiv.org/abs/2403.09626]
514 2
|
缓存
基于AutoJs的今日头条极速版清理缓存
基于AutoJs的今日头条极速版清理缓存
447 0

热门文章

最新文章