Transformers 4.37 中文文档(七十一)(1)https://developer.aliyun.com/article/1564220
SegformerForSemanticSegmentation
class transformers.SegformerForSemanticSegmentation
( config )
参数
config
(SegformerConfig)— 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
SegFormer 模型变换器,顶部带有全 MLP 解码头,例如用于 ADE20k、CityScapes。此模型是 PyTorch torch.nn.Module子类。将其用作常规 PyTorch 模块,并参考 PyTorch 文档以获取有关一般用法和行为的所有相关信息。
forward
( pixel_values: FloatTensor labels: Optional = None output_attentions: Optional = None output_hidden_states: Optional = None return_dict: Optional = None ) → export const metadata = 'undefined';transformers.modeling_outputs.SemanticSegmenterOutput or tuple(torch.FloatTensor)
参数
pixel_values
(torch.FloatTensor
of shape(batch_size, num_channels, height, width)
) — 像素值。默认情况下将忽略填充。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 SegformerImageProcessor.call
()。output_attentions
(bool
, optional) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。output_hidden_states
(bool
, optional) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。return_dict
(bool
, optional) — 是否返回 ModelOutput 而不是普通元组。labels
(torch.LongTensor
of shape(batch_size, height, width)
, optional) — 用于计算损失的地面真实语义分割地图。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels > 1
,则计算分类损失(交叉熵)。
返回
transformers.modeling_outputs.SemanticSegmenterOutput 或 tuple(torch.FloatTensor)
transformers.modeling_outputs.SemanticSegmenterOutput 或一个torch.FloatTensor
元组(如果传递return_dict=False
或config.return_dict=False
时)包含各种元素,取决于配置(SegformerConfig)和输入。
loss
(torch.FloatTensor
of shape(1,)
, optional, 当提供labels
时返回) — 分类(如果config.num_labels==1
则为回归)损失。logits
(torch.FloatTensor
of shape(batch_size, config.num_labels, logits_height, logits_width)
) — 每个像素的分类分数。
返回的 logits 不一定与传入的pixel_values
具有相同的大小。这是为了避免进行两次插值并在用户需要将 logits 调整为原始图像大小时丢失一些质量。您应该始终检查您的 logits 形状并根据需要调整大小。hidden_states
(tuple(torch.FloatTensor)
, optional, 当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, patch_size, hidden_size)
的torch.FloatTensor
元组(如果模型有嵌入层,则为嵌入输出的一个 + 每个层的输出的一个)。
模型在每个层的输出的隐藏状态以及可选的初始嵌入输出。attentions
(tuple(torch.FloatTensor)
, optional, 当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, patch_size, sequence_length)
的torch.FloatTensor
元组(每个层一个)。
在注意力 softmax 之后的注意力权重,用于计算自注意力头中的加权平均值。
SegformerForSemanticSegmentation 的前向方法,覆盖__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoImageProcessor, SegformerForSemanticSegmentation >>> from PIL import Image >>> import requests >>> image_processor = AutoImageProcessor.from_pretrained("nvidia/segformer-b0-finetuned-ade-512-512") >>> model = SegformerForSemanticSegmentation.from_pretrained("nvidia/segformer-b0-finetuned-ade-512-512") >>> url = "http://images.cocodataset.org/val2017/000000039769.jpg" >>> image = Image.open(requests.get(url, stream=True).raw) >>> inputs = image_processor(images=image, return_tensors="pt") >>> outputs = model(**inputs) >>> logits = outputs.logits # shape (batch_size, num_labels, height/4, width/4) >>> list(logits.shape) [1, 150, 128, 128]
TensorFlow 隐藏了 TensorFlow 内容
TFSegformerDecodeHead
class transformers.TFSegformerDecodeHead
( config: SegformerConfig **kwargs )
call
( encoder_hidden_states: tf.Tensor training: bool = False )
TFSegformerModel
class transformers.TFSegformerModel
( config: SegformerConfig *inputs **kwargs )
参数
config
(SegformerConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained() 方法以加载模型权重。
裸的 SegFormer 编码器(Mix-Transformer)输出原始隐藏状态,没有特定的头部。此模型继承自 TFPreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个 tf.keras.Model 的子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有相关信息。
call
( pixel_values: tf.Tensor 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.TFBaseModelOutput or tuple(tf.Tensor)
参数
pixel_values
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
``Dict[str, tf.Tensor]或
Dict[str, np.ndarray],每个示例的形状必须为
(batch_size, num_channels, height, width)) — 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参见 SegformerImageProcessor.
call`()。output_attentions
(bool
, 可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参见返回张量下的attentions
。此参数仅在急切模式下可用,在图模式下将使用配置中的值。output_hidden_states
(bool
, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参见返回张量下的hidden_states
。此参数仅在急切模式下可用,在图模式下将使用配置中的值。return_dict
(bool
, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可以在急切模式下使用,在图模式下该值将始终设置为 True。training
(bool
, 可选,默认为 `False“) — 是否在训练模式下使用模型(一些模块,如 dropout 模块,在训练和评估之间有不同的行为)。
返回
transformers.modeling_tf_outputs.TFBaseModelOutput 或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFBaseModelOutput 或一个 tf.Tensor
元组(如果传递了 return_dict=False
或当 config.return_dict=False
时)包含各种元素,具体取决于配置(SegformerConfig)和输入。
last_hidden_state
(tf.Tensor
,形状为(batch_size, sequence_length, hidden_size)
) — 模型最后一层的隐藏状态序列。hidden_states
(tuple(tf.FloatTensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出 + 一个用于每个层的输出)。
模型在每个层的输出隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每个层一个)。
注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
TFSegformerModel 的前向方法,覆盖了__call__
特殊方法。
虽然前向传递的步骤需要在此函数内定义,但应该在此之后调用Module
实例,而不是在此处调用,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoImageProcessor, TFSegformerModel >>> from datasets import load_dataset >>> dataset = load_dataset("huggingface/cats-image") >>> image = dataset["test"]["image"][0] >>> image_processor = AutoImageProcessor.from_pretrained("nvidia/mit-b0") >>> model = TFSegformerModel.from_pretrained("nvidia/mit-b0") >>> inputs = image_processor(image, return_tensors="tf") >>> outputs = model(**inputs) >>> last_hidden_states = outputs.last_hidden_state >>> list(last_hidden_states.shape) [1, 256, 16, 16]
TFSegformerForImageClassification
class transformers.TFSegformerForImageClassification
( config: SegformerConfig *inputs **kwargs )
参数
config
(SegformerConfig) — 具有模型所有参数的模型配置类。使用配置文件初始化不会加载与模型关联的权重,只会加载配置。查看 from_pretrained()方法以加载模型权重。
SegFormer 模型变压器,顶部带有图像分类头(最终隐藏状态顶部的线性层),例如用于 ImageNet。
此模型继承自 TFPreTrainedModel。检查超类文档以获取库为其所有模型实现的通用方法(例如下载或保存、调整输入嵌入、修剪头等)。
此模型也是tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取有关一般用法和行为的所有相关信息。
call
( pixel_values: 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 ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFSequenceClassifierOutput or tuple(tf.Tensor)
参数
pixel_values
(np.ndarray
、tf.Tensor
、List[tf.Tensor]
、Dict[str, tf.Tensor]
或Dict[str, np.ndarray]
,每个示例必须具有形状(batch_size, num_channels, height, width)
) — 像素值。像素值可以使用 AutoImageProcessor 获取。有关详细信息,请参阅 SegformerImageProcessor.call
()。output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。此参数仅在急切模式下使用,在图模式下将使用配置中的值。return_dict
(bool
,可选)— 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。training
(bool
,可选,默认为False
)— 是否在训练模式下使用模型(一些模块如 dropout 模块在训练和评估之间有不同的行为)。
返回
transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFSequenceClassifierOutput 或一个tf.Tensor
元组(如果传递了return_dict=False
或当config.return_dict=False
时)包括根据配置(SegformerConfig)和输入的各种元素。
loss
(形状为(batch_size, )
的tf.Tensor
,可选,当提供labels
时返回)— 分类(如果config.num_labels==1
则为回归)损失。logits
(形状为(batch_size, config.num_labels)
的tf.Tensor
)— 分类(如果config.num_labels==1
则为回归)得分(SoftMax 之前)。hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或当config.output_hidden_states=True
时返回)— 形状为(batch_size, sequence_length, hidden_size)
的tf.Tensor
元组(一个用于嵌入的输出+一个用于每一层的输出)。
模型在每一层输出处的隐藏状态加上初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或当config.output_attentions=True
时返回)— 形状为(batch_size, num_heads, sequence_length, sequence_length)
的tf.Tensor
元组(每层一个)。
注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
TFSegformerForImageClassification 前向方法,覆盖__call__
特殊方法。
虽然前向传递的方法需要在此函数内定义,但应该在此之后调用Module
实例,而不是这个,因为前者负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoImageProcessor, TFSegformerForImageClassification >>> 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("nvidia/mit-b0") >>> model = TFSegformerForImageClassification.from_pretrained("nvidia/mit-b0") >>> 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
TFSegformerForSemanticSegmentation
class transformers.TFSegformerForSemanticSegmentation
( config: SegformerConfig **kwargs )
参数
config
(SegformerConfig)— 包含模型所有参数的模型配置类。使用配置文件初始化不会加载与模型相关的权重,只加载配置。查看 from_pretrained()方法以加载模型权重。
SegFormer 模型变压器,顶部带有全 MLP 解码头,例如用于 ADE20k、CityScapes。此模型继承自 TFPreTrainedModel。检查超类文档以获取库为所有模型实现的通用方法(如下载或保存、调整输入嵌入、修剪头等)。
这个模型也是一个tf.keras.Model子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档以获取与一般用法和行为相关的所有内容。
call
( pixel_values: tf.Tensor labels: tf.Tensor | None = None output_attentions: Optional[bool] = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None ) → export const metadata = 'undefined';transformers.modeling_tf_outputs.TFSemanticSegmenterOutput or tuple(tf.Tensor)
参数
pixel_values
(np.ndarray
,tf.Tensor
,List[tf.Tensor]
``Dict[str, tf.Tensor]或
Dict[str, np.ndarray],每个示例必须具有形状
(batch_size, num_channels, height, width)) — 像素值。可以使用 AutoImageProcessor 获取像素值。有关详细信息,请参阅 SegformerImageProcessor.
call`()。output_attentions
(bool
,可选) — 是否返回所有注意力层的注意力张量。有关更多详细信息,请参阅返回张量下的attentions
。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。output_hidden_states
(bool
,可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的hidden_states
。此参数仅可在急切模式下使用,在图模式下将使用配置中的值。return_dict
(bool
,可选) — 是否返回 ModelOutput 而不是普通元组。此参数可在急切模式下使用,在图模式下该值将始终设置为 True。training
(bool
,可选,默认为 `False“) — 是否在训练模式下使用模型(某些模块如 dropout 模块在训练和评估之间具有不同的行为)。labels
(tf.Tensor
,形状为(batch_size, height, width)
,可选) — 用于计算损失的地面真实语义分割地图。索引应在[0, ..., config.num_labels - 1]
范围内。如果config.num_labels > 1
,则计算(每像素)分类损失(交叉熵)。
返回
transformers.modeling_tf_outputs.TFSemanticSegmenterOutput
或 tuple(tf.Tensor)
一个 transformers.modeling_tf_outputs.TFSemanticSegmenterOutput
或一个 tf.Tensor
元组(如果传递 return_dict=False
或 config.return_dict=False
)包含各种元素,具体取决于配置(SegformerConfig)和输入。
loss
(tf.Tensor
,形状为(1,)
,可选,当提供labels
时返回) — 分类(如果config.num_labels==1
则为回归)损失。logits
(tf.Tensor
,形状为(batch_size, config.num_labels, logits_height, logits_width)
) — 每个像素的分类分数。
返回的对数不一定与作为输入传递的pixel_values
具有相同的大小。这是为了避免进行两次插值并在用户需要将对数调整为原始图像大小时丢失一些质量。您应始终检查您的对数形状并根据需要调整大小。hidden_states
(tuple(tf.Tensor)
,可选,当传递output_hidden_states=True
或config.output_hidden_states=True
时返回) — 形状为(batch_size, patch_size, hidden_size)
的tf.Tensor
元组(如果模型具有嵌入层,则为嵌入的输出 + 每一层的输出)。
模型在每一层输出的隐藏状态以及可选的初始嵌入输出。attentions
(tuple(tf.Tensor)
,可选,当传递output_attentions=True
或config.output_attentions=True
时返回) — 形状为(batch_size, num_heads, patch_size, sequence_length)
的tf.Tensor
元组(每个层一个)。
注意力权重在注意力 softmax 之后,用于计算自注意力头中的加权平均值。
TFSegformerForSemanticSegmentation 的前向方法,覆盖 __call__
特殊方法。
尽管前向传播的配方需要在这个函数内定义,但应该在此之后调用Module
实例,而不是调用此函数,因为前者会负责运行预处理和后处理步骤,而后者会默默地忽略它们。
示例:
>>> from transformers import AutoImageProcessor, TFSegformerForSemanticSegmentation >>> 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("nvidia/segformer-b0-finetuned-ade-512-512") >>> model = TFSegformerForSemanticSegmentation.from_pretrained("nvidia/segformer-b0-finetuned-ade-512-512") >>> inputs = image_processor(images=image, return_tensors="tf") >>> outputs = model(**inputs, training=False) >>> # logits are of shape (batch_size, num_labels, height/4, width/4) >>> logits = outputs.logits >>> list(logits.shape) [1, 150, 128, 128]
SwiftFormer
原文链接:
huggingface.co/docs/transformers/v4.37.2/en/model_doc/swiftformer
概述
SwiftFormer 模型是由 Abdelrahman Shaker、Muhammad Maaz、Hanoona Rasheed、Salman Khan、Ming-Hsuan Yang、Fahad Shahbaz Khan 在SwiftFormer: Efficient Additive Attention for Transformer-based Real-time Mobile Vision Applications中提出的。
SwiftFormer 论文介绍了一种新颖的高效加性注意力机制,有效地用线性逐元素乘法取代了自注意力计算中的二次矩阵乘法运算。基于此构建了一系列名为“SwiftFormer”的模型,其在准确性和移动推理速度方面实现了最先进的性能。即使他们的小型变体在 iPhone 14 上仅具有 0.8 毫秒的延迟,也实现了 78.5%的 ImageNet1K 准确率,比 MobileViT-v2 更准确且快 2 倍。
论文摘要如下:
自注意力已成为各种视觉应用中捕获全局上下文的事实选择。然而,相对于图像分辨率,其二次计算复杂度限制了其在实时应用中的使用,特别是在资源受限的移动设备上部署。尽管已经提出了混合方法来结合卷积和自注意力的优势,以获得更好的速度-准确度权衡,但自注意力中昂贵的矩阵乘法运算仍然是一个瓶颈。在这项工作中,我们引入了一种新颖的高效加性注意力机制,有效地用线性逐元素乘法取代了二次矩阵乘法运算。我们的设计表明,键-值交互可以用线性层替换,而不会牺牲任何准确性。与先前的最先进方法不同,我们对自注意力的高效公式使其可以在网络的所有阶段使用。使用我们提出的高效加性注意力,我们构建了一系列名为“SwiftFormer”的模型,在准确性和移动推理速度方面实现了最先进的性能。我们的小型变体在 iPhone 14 上仅具有 0.8 毫秒的延迟,ImageNet-1K 准确率达到 78.5%,比 MobileViT-v2 更准确且快 2 倍。
SwiftFormerConfig
class transformers.SwiftFormerConfig
( num_channels = 3 depths = [3, 3, 6, 4] embed_dims = [48, 56, 112, 220] mlp_ratio = 4 downsamples = [True, True, True, True] hidden_act = 'gelu' down_patch_size = 3 down_stride = 2 down_pad = 1 drop_path_rate = 0.0 use_layer_scale = True layer_scale_init_value = 1e-05 batch_norm_eps = 1e-05 **kwargs )
参数
num_channels
(int
,可选,默认为 3)— 输入通道数depths
(List[int]
,可选,默认为[3, 3, 6, 4]
) — 每个阶段的深度embed_dims
(List[int]
,可选,默认为[48, 56, 112, 220]
) — 每个阶段的嵌入维度mlp_ratio
(int
,可选,默认为 4)— MLP 隐藏维度大小与其输入维度大小的比率。downsamples
(List[bool]
,可选,默认为[True, True, True, True]
) — 两个阶段之间是否下采样输入。hidden_act
(str
,可选,默认为"gelu"
) — 非线性激活函数(字符串)。支持"gelu"
、"relu"
、"selu"
和"gelu_new"
。down_patch_size
(int
,可选,默认为 3)— 下采样层中补丁的大小。down_stride
(int
,可选,默认为 2)— 下采样层中卷积核的步幅。down_pad
(int
,可选,默认为 1)— 下采样层中的填充。drop_path_rate
(float
,可选,默认为 0.0)— 在 DropPath 中增加 dropout 概率的速率。use_layer_scale
(bool
,可选,默认为True
)— 是否对令牌混合器的输出进行缩放。layer_scale_init_value
(float
, optional, 默认为 1e-05) — 从令牌混合器输出的因子。batch_norm_eps
(float
, optional, 默认为 1e-05) — 批量归一化层使用的 epsilon。
这是用于存储 SwiftFormerModel 配置的配置类。它用于根据指定的参数实例化 SwiftFormer 模型,定义模型架构。使用默认值实例化配置将产生类似于 SwiftFormer MBZUAI/swiftformer-xs架构的配置。
配置对象继承自 PretrainedConfig,可用于控制模型输出。阅读 PretrainedConfig 的文档以获取更多信息。
示例:
>>> from transformers import SwiftFormerConfig, SwiftFormerModel >>> # Initializing a SwiftFormer swiftformer-base-patch16-224 style configuration >>> configuration = SwiftFormerConfig() >>> # Initializing a model (with random weights) from the swiftformer-base-patch16-224 style configuration >>> model = SwiftFormerModel(configuration) >>> # Accessing the model configuration >>> configuration = model.config
Transformers 4.37 中文文档(七十一)(3)https://developer.aliyun.com/article/1564223