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

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

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


TFDeiTForImageClassification

class transformers.TFDeiTForImageClassification

<来源>

( config: DeiTConfig )

参数

  • config(DeiTConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained() 方法以加载模型权重。

DeiT 模型变压器,顶部带有图像分类头部(在 [CLS] 标记的最终隐藏状态之上的线性层),例如用于 ImageNet。

此模型是一个 TensorFlow tf.keras.layers.Layer。将其用作常规 TensorFlow 模块,并参考 TensorFlow 文档以获取与一般用法和行为相关的所有事项。

call

<来源>

( pixel_values: tf.Tensor | None = None head_mask: tf.Tensor | None = None labels: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFImageClassifierOutput or tuple(tf.Tensor)

参数

  • pixel_values(形状为 (batch_size, num_channels, height, width)tf.Tensor)— 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 DeiTImageProcessor.call()。
  • head_mask(形状为 (num_heads,)(num_layers, num_heads)tf.Tensor可选)— 用于使自注意力模块的选定头部失效的掩码。掩码值选定在 [0, 1] 范围内:
  • 1 表示头部未被遮罩,
  • 0 表示头部被遮罩。
  • output_attentionsbool可选)— 是否返回所有注意力层的注意力张量。有关更多详细信息,请查看返回张量下的 attentions
  • output_hidden_statesbool可选)— 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回张量下的 hidden_states
  • return_dictbool可选)— 是否返回 ModelOutput 而不是普通元组。
  • labels(形状为 (batch_size,)tf.Tensor可选)— 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失),如果 config.num_labels > 1,则计算分类损失(交叉熵)。

返回

transformers.modeling_tf_outputs.TFImageClassifierOutputtuple(tf.Tensor)

transformers.modeling_tf_outputs.TFImageClassifierOutputtuple(tf.Tensor)(如果传递了 return_dict=False 或当 config.return_dict=False 时)包含各种元素,取决于配置(DeiTConfig)和输入。

  • loss(形状为 (1,)tf.Tensor可选,当提供 labels 时返回)— 分类(或如果 config.num_labels==1 则为回归)损失。
  • logits(形状为 (batch_size, config.num_labels)tf.Tensor)— 分类(或如果 config.num_labels==1 则为回归)分数(SoftMax 之前)。
  • hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组(如果模型具有嵌入层的输出,则为嵌入的输出+每个阶段的输出)。模型在每个阶段的输出的隐藏状态(也称为特征图)。
  • attentionstuple(tf.Tensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, patch_size, sequence_length)tf.Tensor元组(每层一个)。
    注意权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。

TFDeiTForImageClassification 前向方法,覆盖__call__特殊方法。

虽然前向传递的配方需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoImageProcessor, TFDeiTForImageClassification
>>> import tensorflow as tf
>>> from PIL import Image
>>> import requests
>>> tf.keras.utils.set_random_seed(3)
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> # note: we are loading a TFDeiTForImageClassificationWithTeacher from the hub here,
>>> # so the head will be randomly initialized, hence the predictions will be random
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/deit-base-distilled-patch16-224")
>>> model = TFDeiTForImageClassification.from_pretrained("facebook/deit-base-distilled-patch16-224")
>>> inputs = image_processor(images=image, return_tensors="tf")
>>> outputs = model(**inputs)
>>> logits = outputs.logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_class_idx = tf.math.argmax(logits, axis=-1)[0]
>>> print("Predicted class:", model.config.id2label[int(predicted_class_idx)])
Predicted class: little blue heron, Egretta caerulea

TFDeiTForImageClassificationWithTeacher

class transformers.TFDeiTForImageClassificationWithTeacher

<来源>

( config: DeiTConfig )

参数

  • config(DeiTConfig)- 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

DeiT 模型变压器,顶部带有图像分类头(在[CLS]令牌的最终隐藏状态顶部有一个线性层,在蒸馏令牌的最终隐藏状态顶部有一个线性层),例如用于 ImageNet。

… 警告::

此模型仅支持推断。尚不支持使用蒸馏(即与教师一起)进行微调。

此模型是一个 TensorFlow tf.keras.layers.Layer。将其用作常规的 TensorFlow 模块,并参考 TensorFlow 文档以获取有关一般用法和行为的所有相关信息。

call

<来源>

( pixel_values: tf.Tensor | None = None head_mask: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) → export const metadata = 'undefined';transformers.models.deit.modeling_tf_deit.TFDeiTForImageClassificationWithTeacherOutput or tuple(tf.Tensor)

参数

  • pixel_values(形状为(batch_size, num_channels, height, width)tf.Tensor)- 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 DeiTImageProcessor.call()。
  • head_mask(形状为(num_heads,)(num_layers, num_heads)tf.Tensor可选)- 用于使自注意力模块中选择的头部失效的掩码。掩码值选择在[0, 1]中:
  • 1 表示头部未被masked
  • 0 表示头部被masked
  • output_attentionsbool可选)- 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_statesbool可选)- 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dictbool可选)- 是否返回 ModelOutput 而不是普通元组。

返回

transformers.models.deit.modeling_tf_deit.TFDeiTForImageClassificationWithTeacherOutputtuple(tf.Tensor)

一个transformers.models.deit.modeling_tf_deit.TFDeiTForImageClassificationWithTeacherOutput或一个tf.Tensor元组(如果传递return_dict=Falseconfig.return_dict=False时)包含根据配置(DeiTConfig)和输入的不同元素。

  • logits(形状为(batch_size, config.num_labels)tf.Tensor)- 预测分数,作为 cls_logits 和 distillation logits 的平均值。
  • cls_logits(形状为(batch_size, config.num_labels)tf.Tensor)- 分类头部的预测分数(即在类令牌的最终隐藏状态之上的线性层)。
  • distillation_logits(形状为(batch_size, config.num_labels)tf.Tensor)- 蒸馏头部的预测分数(即在蒸馏令牌的最终隐藏状态之上的线性层)。
  • hidden_statestuple(tf.Tensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回)- 形状为(batch_size, sequence_length, hidden_size)tf.Tensor元组。模型在每一层输出的隐藏状态加上初始嵌入输出。
  • attentionstuple(tf.Tensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回)- 形状为(batch_size, num_heads, sequence_length, sequence_length)tf.Tensor元组。注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

TFDeiTForImageClassificationWithTeacher 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是这个,因为前者会处理运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoImageProcessor, TFDeiTForImageClassificationWithTeacher
>>> import tensorflow as tf
>>> from datasets import load_dataset
>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]
>>> image_processor = AutoImageProcessor.from_pretrained("facebook/deit-base-distilled-patch16-224")
>>> model = TFDeiTForImageClassificationWithTeacher.from_pretrained("facebook/deit-base-distilled-patch16-224")
>>> inputs = image_processor(image, return_tensors="tf")
>>> logits = model(**inputs).logits
>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = int(tf.math.argmax(logits, axis=-1))
>>> print(model.config.id2label[predicted_label])
tabby, tabby cat

DETA

原始文本:huggingface.co/docs/transformers/v4.37.2/en/model_doc/deta

概述

DETA 模型是由 Jeffrey Ouyang-Zhang、Jang Hyun Cho、Xingyi Zhou、Philipp Krähenbühl 在NMS Strikes Back中提出的。DETA(Detection  Transformers with  Assignment)通过将传统检测器中使用的一对一二部匹配损失替换为使用非极大值抑制(NMS)的一对多标签分配来改进 Deformable  DETR,从而实现了高达 2.5 mAP 的显着增益。

论文摘要如下:

检测变换器(DETR)在训练期间通过一对一的二部匹配直接将查询转换为唯一对象,并实现端到端的目标检测。最近,这些模型在 COCO  上超越了传统的检测器,具有不可否认的优雅。然而,它们在多个设计方面与传统检测器不同,包括模型架构和训练计划,因此一对一匹配的有效性尚未完全理解。在这项工作中,我们在  DETR  中进行了一项严格的比较,与传统检测器中的一对多标签分配相比,传统检测器使用非极大值抑制(NMS)。令人惊讶的是,我们观察到在相同设置下,NMS  中的一对多分配始终优于标准的一对一匹配,获得了高达 2.5 mAP 的显着增益。我们的检测器使用传统的 IoU-based 标签分配训练  Deformable-DETR,在 ResNet50 骨干网络下在 12 个时期(1x 计划)内实现了 50.2 的 COCO  mAP,优于此设置中的所有现有传统或基于变换器的检测器。在多个数据集、计划和架构上,我们始终表明二部匹配对于高性能检测变换器是不必要的。此外,我们将检测变换器的成功归因于其富有表现力的变换器架构。

DETA 概述。摘自原始论文

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

资源

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

  • DETA 的演示笔记本可以在这里找到。
  • 另请参阅:目标检测任务指南

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

DetaConfig

class transformers.DetaConfig

<来源>

( backbone_config = None num_queries = 900 max_position_embeddings = 2048 encoder_layers = 6 encoder_ffn_dim = 2048 encoder_attention_heads = 8 decoder_layers = 6 decoder_ffn_dim = 1024 decoder_attention_heads = 8 encoder_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 return_intermediate = True auxiliary_loss = False position_embedding_type = 'sine' num_feature_levels = 5 encoder_n_points = 4 decoder_n_points = 4 two_stage = True two_stage_num_proposals = 300 with_box_refine = True assign_first_stage = True assign_second_stage = True 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 focal_alpha = 0.25 **kwargs )

参数

  • backbone_configPretrainedConfigdict可选,默认为ResNetConfig())—骨干模型的配置。
  • num_queriesint可选,默认为 900)—对象查询的数量,即检测槽位。这是 DetaModel 在单个图像中可以检测到的对象的最大数量。如果two_stage设置为True,则使用two_stage_num_proposals
  • d_modelint可选,默认为 256)—层的维度。
  • encoder_layersint可选,默认为 6)—编码器层数。
  • decoder_layersint可选,默认为 6)—解码器层数。
  • encoder_attention_headsint可选,默认为 8)—变换器编码器中每个注意力层的注意力头数。
  • 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) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • init_xavier_std (float, optional, defaults to 1) — 用于 HM Attention map 模块中 Xavier 初始化增益的缩放因子。
  • encoder_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"之一。
  • 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 loss 在全景分割损失中的相对权重。
  • 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) — 目标检测损失中“无对象”类的相对分类权重。
  • num_feature_levels (int, optional, defaults to 5) — 输入特征级别的数量。
  • encoder_n_points (int, optional, defaults to 4) — 编码器中每个注意力头的每个特征级别中采样的键的数量。
  • decoder_n_points (int, optional, defaults to 4) — 解码器中每个注意力头的每个特征级别中采样的键的数量。
  • two_stage (bool, optional, defaults to True) — 是否应用两阶段可变形 DETR,其中区域提议也是由 DETA 的变体生成的,然后进一步馈入解码器进行迭代边界框细化。
  • two_stage_num_proposals (int, optional, defaults to 300) — 要生成的区域提议数量,如果two_stage设置为True
  • with_box_refine (bool, optional, defaults to True) — 是否应用迭代边界框细化,其中每个解码器层根据前一层的预测对边界框进行细化。
  • focal_alpha (float, optional, defaults to 0.25) — Focal loss 中的 Alpha 参数。
  • assign_first_stage (bool, optional, defaults to True) — 如果重叠大于阈值 0.7,则将每个预测 i 分配给最高重叠的地面真实对象。
  • assign_second_stage (bool, optional, defaults to True) — 是否在第二阶段紧随第一阶段分配程序进行第二次分配。

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

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

示例:

>>> from transformers import DetaConfig, DetaModel
>>> # Initializing a DETA SenseTime/deformable-detr style configuration
>>> configuration = DetaConfig()
>>> # Initializing a model (with random weights) from the SenseTime/deformable-detr style configuration
>>> model = DetaModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

DetaImageProcessor

class transformers.DetaImageProcessor

< 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, defaults to "coco_detection") — 注释的数据格式。其中之一为"coco_detection"或“coco_panoptic”。
  • do_resize (bool, optional, defaults to True) — 控制是否将图像的(高度,宽度)尺寸调整为指定的 size。可以被 preprocess 方法中的 do_resize 参数覆盖。
  • size (Dict[str, int] optional, defaults to {"shortest_edge" -- 800, "longest_edge": 1333}): 调整大小后的图像(高度,宽度)尺寸。可以被 preprocess 方法中的 size 参数覆盖。
  • resample (PILImageResampling, optional, defaults to PILImageResampling.BILINEAR) — 如果调整图像大小,则使用的重采样滤波器。
  • do_rescale (bool, optional, defaults to True) — 控制是否按指定的比例 rescale_factor 对图像进行重新缩放。可以被 preprocess 方法中的 do_rescale 参数覆盖。
  • rescale_factor (int or float, optional, defaults to 1/255) — 如果重新缩放图像,则使用的比例因子。可以被 preprocess 方法中的 rescale_factor 参数覆盖。 do_normalize — 控制是否对图像进行归一化。可以被 preprocess 方法中的 do_normalize 参数覆盖。
  • image_mean (float or List[float], optional, defaults to IMAGENET_DEFAULT_MEAN) — 在归一化图像时使用的均值。可以是单个值或每个通道的值列表。可以被 preprocess 方法中的 image_mean 参数覆盖。
  • image_std (float or List[float], optional, defaults to IMAGENET_DEFAULT_STD) — 在归一化图像时使用的标准差值。可以是单个值或每个通道的值列表。可以被 preprocess 方法中的 image_std 参数覆盖。
  • do_pad (bool, optional, defaults to 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
  • annotationsList[Dict]List[List[Dict]]可选)- 与图像或一批图像相关联的注释列表。如果注释用于目标检测,则注释应该是一个带有以下键的字典:
  • “image_id”(int):图像 ID。
  • “annotations”(List[Dict]):图像的注释列表。每个注释应该是一个字典。一个图像可能没有注释,此时列表应为空。如果注释用于分割,注释应该是一个带有以下键的字典:
  • “image_id”(int):图像 ID。
  • “segments_info”(List[Dict]):图像的段列表。每个段应该是一个字典。一个图像可能没有段,此时列表应为空。
  • “file_name”(str):图像的文件名。
  • return_segmentation_masksbool可选,默认为 self.return_segmentation_masks)- 是否返回分割掩模。
  • masks_pathstrpathlib.Path可选)- 包含分割掩模的目录路径。
  • do_resizebool可选,默认为 self.do_resize)- 是否调整图像大小。
  • sizeDict[str, int]可选,默认为 self.size)- 调整大小后的图像大小。
  • resamplePILImageResampling可选,默认为 self.resample)- 调整图像大小时使用的重采样滤波器。
  • do_rescalebool可选,默认为 self.do_rescale)- 是否重新缩放图像。
  • rescale_factorfloat可选,默认为 self.rescale_factor)- 重新缩放图像时使用的重新缩放因子。
  • do_normalizebool可选,默认为 self.do_normalize)- 是否对图像进行归一化。
  • image_meanfloatList[float]可选,默认为 self.image_mean)- 在归一化图像时使用的均值。
  • image_stdfloatList[float]可选,默认为 self.image_std)- 在归一化图像时使用的标准差。
  • do_padbool可选,默认为 self.do_pad)- 是否对图像进行填充。
  • formatstrAnnotationFormat可选,默认为 self.format)- 注释的格式。
  • return_tensorsstrTensorType可选,默认为 self.return_tensors)- 要返回的张量类型。如果为None,将返回图像列表。
  • data_formatChannelDimensionstr可选,默认为ChannelDimension.FIRST)- 输出图像的通道维度格式。可以是以下之一:
  • "channels_first"ChannelDimension.FIRST:图像以(num_channels,height,width)格式。
  • "channels_last"ChannelDimension.LAST:图像以(height,width,num_channels)格式。
  • 未设置:使用输入图像的通道维度格式。
  • input_data_formatChannelDimensionstr可选)- 输入图像的通道维度格式。如果未设置,将从输入图像中推断通道维度格式。可以是以下之一:
  • "channels_first"ChannelDimension.FIRST:图像以(num_channels,height,width)格式。
  • "channels_last"ChannelDimension.LAST:图像以(height,width,num_channels)格式。
  • "none"ChannelDimension.NONE:图像以(height,width)格式。

对图像或一批图像进行预处理,以便模型可以使用。

post_process_object_detection

<来源>

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

参数

  • outputsDetrObjectDetectionOutput)- 模型的原始输出。
  • thresholdfloat可选,默认为 0.5)- 保留目标检测预测的分数阈值。
  • target_sizestorch.TensorList[Tuple[int, int]]可选)- 形状为(batch_size, 2)的张量或包含每个图像批次中目标大小(高度,宽度)的元组列表(Tuple[int, int])。如果设置为 None,预测将不会被调整大小。
  • nms_thresholdfloat可选,默认为 0.7)- NMS 阈值。

返回

List[Dict]

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

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

DetaModel

class transformers.DetaModel

<来源>

( config: DetaConfig )

参数

  • config (DetaConfig) — 模型配置类,包含模型的所有参数。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。

裸的 DETA 模型(由骨干和编码器-解码器 Transformer 组成),输出原始隐藏状态,没有特定的头部。

此模型继承自 PreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。

此模型还是一个 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( pixel_values: FloatTensor pixel_mask: Optional = None decoder_attention_mask: Optional = None encoder_outputs: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.deta.modeling_deta.DetaModelOutput or tuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为(batch_size, num_channels, height, width)) — 像素值。默认情况下将忽略填充。
    像素值可以使用 AutoImageProcessor 获得。有关详细信息,请参阅AutoImageProcessor.__call__()
  • pixel_mask (torch.LongTensor,形状为(batch_size, height, width)可选) — 用于避免在填充像素值上执行注意力的掩码。掩码值选择在[0, 1]范围内:
  • 对于真实像素(即未屏蔽)为 1,
  • 对于填充像素(即屏蔽)为 0。
  • 什么是注意力掩码?
  • decoder_attention_mask (torch.FloatTensor,形状为(batch_size, num_queries)可选) — 默认情况下不使用。可用于屏蔽对象查询。
  • encoder_outputs (tuple(tuple(torch.FloatTensor), 可选) — 元组包含(last_hidden_state可选hidden_states可选attentions) last_hidden_state的形状为(batch_size, sequence_length, hidden_size)可选) 是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • inputs_embeds (torch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选) — 可选地,您可以选择直接传递图像的扁平化表示,而不是传递扁平化特征图(骨干网络和投影层的输出)。
  • decoder_inputs_embeds (torch.FloatTensor,形状为(batch_size, num_queries, hidden_size)可选) — 可选地,您可以选择直接传递嵌入表示,而不是使用零张量初始化查询。
  • output_attentions (bool, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请查看返回张量下的attentions
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请查看返回张量下的hidden_states
  • return_dictbool可选)— 是否返回一个 ModelOutput 而不是一个普通元组。

返回值

transformers.models.deta.modeling_deta.DetaModelOutputtuple(torch.FloatTensor)

一个transformers.models.deta.modeling_deta.DetaModelOutput或一个torch.FloatTensor元组(如果传递了return_dict=False或当config.return_dict=False时)包括根据配置(DetaConfig)和输入的不同元素。

  • init_reference_points(形状为(batch_size, num_queries, 4)torch.FloatTensor)— 通过 Transformer 解码器发送的初始参考点。
  • last_hidden_state(形状为(batch_size, num_queries, hidden_size)torch.FloatTensor)— 模型解码器最后一层的隐藏状态序列。
  • intermediate_hidden_states(形状为(batch_size, config.decoder_layers, num_queries, hidden_size)torch.FloatTensor)— 堆叠的中间隐藏状态(解码器每层的输出)。
  • intermediate_reference_points(形状为(batch_size, config.decoder_layers, num_queries, 4)torch.FloatTensor)— 堆叠的中间参考点(解码器每层的参考点)。
  • decoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回)— 形状为(batch_size, num_queries, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出 + 一个用于每层的输出)。解码器在每层输出的隐藏状态加上初始嵌入输出。
  • decoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_heads, num_queries, num_queries)torch.FloatTensor元组(每层一个)。解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
  • cross_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_queries, num_heads, 4, 4)torch.FloatTensor元组(每层一个)。解码器交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
  • encoder_last_hidden_state(形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor可选)— 模型编码器最后一层的隐藏状态序列。
  • encoder_hidden_statestuple(torch.FloatTensor)可选,当传递output_hidden_states=True或当config.output_hidden_states=True时返回)— 形状为(batch_size, sequence_length, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出 + 一个用于每层的输出)。编码器在每层输出的隐藏状态加上初始嵌入输出。
  • encoder_attentionstuple(torch.FloatTensor)可选,当传递output_attentions=True或当config.output_attentions=True时返回)— 形状为(batch_size, num_queries, num_heads, 4, 4)torch.FloatTensor元组(每层一个)。编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
  • enc_outputs_class(形状为(batch_size, sequence_length, config.num_labels)torch.FloatTensor可选,当config.with_box_refine=Trueconfig.two_stage=True时返回)— 预测的边界框分数,其中选择前config.two_stage_num_proposals个得分最高的边界框作为第一阶段的区域提议。边界框二元分类的输出(即前景和背景)。
  • enc_outputs_coord_logitstorch.FloatTensor,形状为(batch_size, sequence_length, 4)可选,当config.with_box_refine=Trueconfig.two_stage=True时返回)— 第一阶段中预测的边界框坐标的 logits。
  • output_proposalstorch.FloatTensor,形状为(batch_size, sequence_length, 4)可选,当config.two_stage=True时返回)— 在 gen_encoder_output_proposals 中提议边界框坐标的 logits。

DetaModel 的前向方法覆盖了__call__特殊方法。

虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module实例,而不是在此处调用,因为前者会负责运行前后处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoImageProcessor, DetaModel
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> image_processor = AutoImageProcessor.from_pretrained("jozhang97/deta-swin-large-o365")
>>> model = DetaModel.from_pretrained("jozhang97/deta-swin-large-o365", two_stage=False)
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 900, 256]

DetaForObjectDetection

class transformers.DetaForObjectDetection

<来源>

( config: DetaConfig )

参数

  • config(DetaConfig)— 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。

DETA 模型(由骨干和编码器-解码器 Transformer 组成),顶部带有目标检测头,用于诸如 COCO 检测之类的任务。

这个模型继承自 PreTrainedModel。查看超类文档以了解库实现的所有模型的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。

这个模型也是 PyTorch 的torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。

forward

<来源>

( pixel_values: FloatTensor pixel_mask: Optional = None decoder_attention_mask: Optional = None encoder_outputs: Optional = None inputs_embeds: Optional = None decoder_inputs_embeds: Optional = None labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.models.deta.modeling_deta.DetaObjectDetectionOutput or tuple(torch.FloatTensor)

参数

  • pixel_valuestorch.FloatTensor,形状为(batch_size, num_channels, height, width))— 像素值。默认情况下将忽略填充。
    像素值可以使用 AutoImageProcessor 获得。查看AutoImageProcessor.__call__()以获取详细信息。
  • pixel_masktorch.LongTensor,形状为(batch_size, height, width)可选)— 用于避免在填充像素值上执行注意力的掩码。掩码值选在[0, 1]之间:
  • 1 表示真实像素(即未被掩码),
  • 0 表示填充像素(即已掩码)。
  • 什么是注意力掩码?
  • decoder_attention_masktorch.FloatTensor,形状为(batch_size, num_queries)可选)— 默认情况下不使用。可用于屏蔽对象查询。
  • encoder_outputstuple(tuple(torch.FloatTensor)可选)— 元组包含(last_hidden_state可选hidden_states可选attentionslast_hidden_state形状为(batch_size, sequence_length, hidden_size)可选)是编码器最后一层输出的隐藏状态序列。用于解码器的交叉注意力。
  • inputs_embedstorch.FloatTensor,形状为(batch_size, sequence_length, hidden_size)可选)— 可选地,可以直接传递图像的扁平特征图(骨干+投影层的输出),而不是传递图像的扁平表示。
  • decoder_inputs_embeds (torch.FloatTensor of shape (batch_size, num_queries, hidden_size), optional) — 可选,可以选择直接传递嵌入表示,而不是用零张量初始化查询。
  • output_attentions (bool, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。
  • labels (List[Dict] of len (batch_size,), optional) — 用于计算二分匹配损失的标签。字典列表,每个字典至少包含以下 2 个键:‘class_labels’和’boxes’(分别是批处理中图像的类标签和边界框)。类标签本身应该是长度为(图像中边界框数量,)torch.LongTensor,而边界框是形状为(图像中边界框数量, 4)torch.FloatTensor

返回

transformers.models.deta.modeling_deta.DetaObjectDetectionOutputtuple(torch.FloatTensor)

transformers.models.deta.modeling_deta.DetaObjectDetectionOutputtorch.FloatTensor的元组(如果传递了return_dict=Falseconfig.return_dict=False时)包括各种元素,具体取决于配置(DetaConfig)和输入。

  • loss (torch.FloatTensor of shape (1,), optional, 当提供labels时返回) — 总损失,作为负对数似然(交叉熵)和边界框损失的线性组合。后者被定义为 L1 损失和广义尺度不变 IoU 损失的线性组合。
  • loss_dict (Dict, optional) — 包含各个损失的字典。用于记录。
  • logits (torch.FloatTensor of shape (batch_size, num_queries, num_classes + 1)) — 所有查询的分类 logits(包括无对象)。
  • pred_boxes (torch.FloatTensor of shape (batch_size, num_queries, 4)) — 所有查询的标准化框坐标,表示为(中心 _x,中心 _y,宽度,高度)。这些值在[0, 1]范围内标准化,相对于批处理中每个单独图像的大小(忽略可能的填充)。您可以使用~DetaProcessor.post_process_object_detection来检索未标准化的边界框。
  • auxiliary_outputs (list[Dict], optional) — 可选,仅在辅助损失被激活时返回(即config.auxiliary_loss设置为True)并提供标签时返回。这是一个包含每个解码器层的上述两个键(logitspred_boxes)的字典列表。
  • last_hidden_state (torch.FloatTensor of shape (batch_size, num_queries, hidden_size), optional) — 模型解码器最后一层的隐藏状态序列的输出。
  • decoder_hidden_states (tuple(torch.FloatTensor), optional, 当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 形状为(batch_size, num_queries, hidden_size)torch.FloatTensor元组(一个用于嵌入的输出 + 一个用于每层的输出)。解码器在每层输出的隐藏状态加上初始嵌入输出。
  • decoder_attentions (tuple(torch.FloatTensor), optional, 当传递output_attentions=Trueconfig.output_attentions=True时返回) — 形状为(batch_size, num_heads, num_queries, num_queries)torch.FloatTensor元组(每层一个)。解码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
  • cross_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 元组的torch.FloatTensor(每一层一个)的形状为(batch_size, num_queries, num_heads, 4, 4)。解码器的交叉注意力层的注意力权重,在注意力 softmax 之后,用于计算交叉注意力头中的加权平均值。
  • encoder_last_hidden_state (torch.FloatTensor of shape (batch_size, sequence_length, hidden_size)可选) — 模型编码器最后一层的隐藏状态序列。
  • encoder_hidden_states (tuple(torch.FloatTensor)可选,当传递output_hidden_states=Trueconfig.output_hidden_states=True时返回) — 元组的torch.FloatTensor(一个用于嵌入的输出 + 一个用于每一层的输出)的形状为(batch_size, sequence_length, hidden_size)。编码器在每一层输出的隐藏状态加上初始嵌入输出。
  • encoder_attentions (tuple(torch.FloatTensor)可选,当传递output_attentions=Trueconfig.output_attentions=True时返回) — 元组的torch.FloatTensor(每一层一个)的形状为(batch_size, sequence_length, num_heads, 4, 4)。编码器的注意力权重,在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
  • intermediate_hidden_states (torch.FloatTensor of shape (batch_size, config.decoder_layers, num_queries, hidden_size)) — 堆叠的中间隐藏状态(解码器每一层的输出)。
  • intermediate_reference_points (torch.FloatTensor of shape (batch_size, config.decoder_layers, num_queries, 4)) — 堆叠的中间参考点(解码器每一层的参考点)。
  • init_reference_points (torch.FloatTensor of shape (batch_size, num_queries, 4)) — 通过 Transformer 解码器发送的初始参考点。
  • enc_outputs_class (torch.FloatTensor of shape (batch_size, sequence_length, config.num_labels)可选,当config.with_box_refine=Trueconfig.two_stage=True时返回) — 预测的边界框分数,其中选择前config.two_stage_num_proposals个得分最高的边界框作为第一阶段的区域提议。边界框二元分类的输出(即前景和背景)。
  • enc_outputs_coord_logits (torch.FloatTensor of shape (batch_size, sequence_length, 4)可选,当config.with_box_refine=Trueconfig.two_stage=True时返回) — 第一阶段中预测的边界框坐标的 logits。
  • output_proposals (torch.FloatTensor of shape (batch_size, sequence_length, 4)可选,当config.two_stage=True时返回) — 在 gen_encoder_output_proposals 中的提议边界框坐标的 logits。

DetaForObjectDetection 的前向方法,覆盖了__call__特殊方法。

虽然前向传递的步骤需要在这个函数中定义,但应该在之后调用Module实例,而不是这个函数,因为前者会处理运行前后的处理步骤,而后者会默默地忽略它们。

示例:

>>> from transformers import AutoImageProcessor, DetaForObjectDetection
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> image_processor = AutoImageProcessor.from_pretrained("jozhang97/deta-swin-large")
>>> model = DetaForObjectDetection.from_pretrained("jozhang97/deta-swin-large")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.5, target_sizes=target_sizes)[
...     0
... ]
>>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
...     box = [round(i, 2) for i in box.tolist()]
...     print(
...         f"Detected {model.config.id2label[label.item()]} with confidence "
...         f"{round(score.item(), 3)} at location {box}"
...     )
Detected cat with confidence 0.683 at location [345.85, 23.68, 639.86, 372.83]
Detected cat with confidence 0.683 at location [8.8, 52.49, 316.93, 473.45]
Detected remote with confidence 0.568 at location [40.02, 73.75, 175.96, 117.33]
Detected remote with confidence 0.546 at location [333.68, 77.13, 370.12, 187.51]


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

相关文章
|
缓存 自然语言处理 物联网
LLama Factory+ModelScope实战——使用 Web UI 进行监督微调
LLaMA Factory 是一个高效的大语言模型训练和推理框架,它通过提供一站式的 Web UI 界面和集成多种训练方法,简化了大模型的微调过程,并能够适配多种开源模型。
|
5月前
|
数据采集 人工智能 供应链
2025年适合汽车行业与互联网企业的BI产品选型指南
2025年,数字化转型加速,BI工具成企业决策核心。本文对比瓴羊Quick BI、Power BI、Tableau、永洪科技、Domo五大主流产品,从能力、行业适配、案例等维度解析,重点推荐阿里云旗下瓴羊Quick BI,其在汽车与互联网行业表现突出,兼具AI分析、高性能计算与信创合规优势,助力企业实现数据价值最大化。
conda常用操作和配置镜像源
conda常用操作和配置镜像源
33377 0
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
53_多模态LLM:图像理解的新范式
在人工智能技术快速发展的今天,单一模态的语言模型已经无法满足日益复杂的应用需求。2025年,多模态大型语言模型(MLLM)的崛起标志着AI技术进入了一个新的发展阶段,特别是在图像理解与文本生成的结合方面取得了突破性进展。本文将深入剖析多模态LLM的技术原理、架构设计、性能评估及实际应用案例,探讨视觉-语言融合技术如何重塑AI应用的边界,以及在未来发展中面临的挑战与机遇。
839 0
|
编解码 JSON 自然语言处理
Qwen2-VL 全链路模型体验、下载、推理、微调实战!
经过了一年的不懈努力,今天通义千问团队对 Qwen-VL 模型进行重大更新——推出 Qwen2-VL。那么Qwen2-VL 有什么新功能呢?一起来看一下吧
Qwen2-VL 全链路模型体验、下载、推理、微调实战!
|
编解码 人工智能 并行计算
阿里妈妈技术开源FLUX图像修复&蒸馏加速模型
本文介绍了阿里妈妈技术团队基于FLUX开发的Controlnet修复模型和蒸馏加速模型,填补了社区空白并提升了FLUX的实用性和效率。
|
存储 缓存 PyTorch
Transformers 4.37 中文文档(十四)(4)
Transformers 4.37 中文文档(十四)
500 4
|
监控 数据可视化 项目管理
WBS任务分解拆解:项目管理中的效率秘诀探讨
WBS(Work Breakdown Structure)是项目管理中将大型复杂项目分解为可管理的小任务的方法。它帮助清晰定义项目目标,确保100%覆盖所有工作,并遵循任务独立性及适当工作包大小原则。WBS通过简化项目、明确责任人、制定工作清单、估算时间和分配资源,促进项目跟踪与控制。使用工具如Zoho Projects,可按阶段创建任务,细化子任务,设定依赖关系,分配资源,以及设置提醒和里程碑,从而有效管理项目执行。
2076 1
|
固态存储 Ubuntu Linux
Linux(29) 多线程快速解压缩|删除|监视大型文件
Linux(29) 多线程快速解压缩|删除|监视大型文件
2207 1
|
机器学习/深度学习 编解码 Unix
超分数据集概述和超分经典网络模型总结
超分数据集概述和超分经典网络模型总结
884 1

热门文章

最新文章