Transformers 文档

HGNet-V2

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

该模型于 2024-07-01 发布,并于 2025-04-29 添加到 Hugging Face Transformers。

PyTorch

HGNet-V2

HGNetV2 是一款下一代卷积神经网络(CNN)骨干网络,专为 NVIDIA GPU 上的最佳精度-延迟权衡而设计。在原有HGNet的基础上,HGNetV2 在快速推理速度下实现了高精度,并在图像分类、目标检测和分割等任务上表现强劲,使其成为基于 GPU 的计算机视觉应用的实用选择。

您可以在 USTC 组织下找到所有原始 HGNet V2 模型。

此模型由 VladOS95-cyber 贡献。点击右侧边栏的 HGNet V2 模型,了解更多关于如何将 HGNet V2 应用于不同计算机视觉任务的示例。

下面的示例演示了如何使用 PipelineAutoModel 类来对图像进行分类。

流水线
自动模型
import torch
from transformers import pipeline

pipeline = pipeline(
    task="image-classification",
    model="ustc-community/hgnet-v2",
    dtype=torch.float16,
    device=0
)
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")

HGNetV2Config

class transformers.HGNetV2Config

< >

( num_channels = 3 embedding_size = 64 depths = [3, 4, 6, 3] hidden_sizes = [256, 512, 1024, 2048] hidden_act = 'relu' out_features = None out_indices = None stem_channels = [3, 32, 48] stage_in_channels = [48, 128, 512, 1024] stage_mid_channels = [48, 96, 192, 384] stage_out_channels = [128, 512, 1024, 2048] stage_num_blocks = [1, 1, 3, 1] stage_downsample = [False, True, True, True] stage_light_block = [False, False, True, True] stage_kernel_size = [3, 3, 5, 5] stage_numb_of_layers = [6, 6, 6, 6] use_learnable_affine_block = False initializer_range = 0.02 **kwargs )

参数

  • num_channels (int, optional, defaults to 3) — 输入通道数。
  • embedding_size (int, optional, defaults to 64) — 嵌入层的维度(隐藏大小)。
  • depths (list[int], optional, defaults to [3, 4, 6, 3]) — 每个阶段的深度(层数)。
  • hidden_sizes (list[int], optional, defaults to [256, 512, 1024, 2048]) — 每个阶段的维度(隐藏大小)。
  • hidden_act (str, optional, defaults to "relu") — 每个块中的非线性激活函数。如果为字符串,则支持“gelu”、“relu”、“selu”和“gelu_new”。
  • out_features (list[str], optional) — 如果用作骨干网络,则为要输出的特征列表。可以是 "stem""stage1""stage2" 等(取决于模型有多少个阶段)。如果未设置且 out_indices 已设置,则默认为相应的阶段。如果未设置且 out_indices 也未设置,则默认为最后一个阶段。必须与 stage_names 属性中定义的顺序相同。
  • out_indices (list[int], optional) — 如果用作骨干网络,则为要输出的特征索引列表。可以是 0、1、2 等(取决于模型有多少个阶段)。如果未设置且 out_features 已设置,则默认为相应的阶段。如果未设置且 out_features 也未设置,则默认为最后一个阶段。必须与 stage_names 属性中定义的顺序相同。
  • stem_channels (list[int], optional, defaults to [3, 32, 48]) — stem 层的通道维度:
    • 第一个数字(3)是输入图像通道数
    • 第二个数字(32)是中间 stem 通道数
    • 第三个数字(48)是输出 stem 通道数
  • stage_in_channels (list[int], optional, defaults to [48, 128, 512, 1024]) — 骨干网每个阶段的输入通道维度。这定义了每个阶段的输入将具有多少通道。
  • stage_mid_channels (list[int], optional, defaults to [48, 96, 192, 384]) — 主干网络的每个阶段的中间通道维度。这定义了每个阶段中间层使用的通道数。
  • stage_out_channels (list[int], optional, defaults to [128, 512, 1024, 2048]) — 主干网络的每个阶段的输出通道维度。这定义了每个阶段输出的通道数。
  • stage_num_blocks (list[int], optional, defaults to [1, 1, 3, 1]) — 主干网络每个阶段使用的块数。这通过指定要堆叠的卷积块的数量来控制每个阶段的深度。
  • stage_downsample (list[bool], optional, defaults to [False, True, True, True]) — 指示是否在每个阶段对特征图进行下采样。如果为 True,则会减小特征图的空间尺寸。
  • stage_light_block (list[bool], optional, defaults to [False, False, True, True]) — 指示是否在每个阶段使用轻量级块。轻量级块是卷积块的一种变体,可能具有更少的参数。
  • stage_kernel_size (list[int], optional, defaults to [3, 3, 5, 5]) — 每个阶段卷积层的核大小。
  • stage_numb_of_layers (list[int], optional, defaults to [6, 6, 6, 6]) — 每个阶段的块中使用的层数。
  • use_learnable_affine_block (bool, optional, defaults to False) — 是否在网络中使用可学习仿射块(LAB)。LAB 在某些操作后添加可学习的缩放和偏置参数。
  • initializer_range (float, optional, defaults to 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。

这是用于存储 HGNetV2Backbone 配置的配置类。它用于根据指定的参数实例化一个 HGNet-V2 模型,定义了模型的架构。使用默认值实例化一个配置将得到一个类似于 D-FINE-X-COCO B4 “ustc-community/dfine_x_coco” 的配置。配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PreTrainedConfig 的文档。

HGNetV2Backbone

class transformers.HGNetV2Backbone

< >

( config: HGNetV2Config )

forward

< >

( pixel_values: Tensor output_hidden_states: bool | None = None return_dict: bool | None = None **kwargs ) transformers.modeling_outputs.BackboneOutput or tuple(torch.FloatTensor)

参数

  • pixel_values (torch.Tensor, shape (batch_size, num_channels, image_size, image_size)) — 对应于输入图像的张量。可以使用 image_processor_class 获取像素值。有关详细信息,请参阅 image_processor_class.__call__processor_class 使用 image_processor_class 来处理图像)。
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_outputs.BackboneOutputtuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BackboneOutput 或一个 torch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),根据配置(HGNetV2Config)和输入而包含各种元素。

  • feature_maps (tuple(torch.FloatTensor) of shape (batch_size, num_channels, height, width)) — 阶段的特征图。

  • hidden_states (tuple(torch.FloatTensor), optional, returned when output_hidden_states=True is passed or when config.output_hidden_states=True) — torch.FloatTensor 元组(一个用于嵌入输出 + 每个层输出一个)的形状为 (batch_size, sequence_length, hidden_size)(batch_size, num_channels, height, width),具体取决于主干网络。

    模型在每个阶段输出的隐藏状态以及初始嵌入输出。

  • attentions (tuple(torch.FloatTensor), optional, returned when output_attentions=True is passed or when config.output_attentions=True) — torch.FloatTensor 元组(每个层一个)的形状为 (batch_size, num_heads, sequence_length, sequence_length)。仅当主干网络使用注意力时适用。

    注意力 softmax 后的注意力权重,用于计算自注意力头中的加权平均值。

HGNetV2Backbone 的 forward 方法,覆盖了 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> from transformers import HGNetV2Config, HGNetV2Backbone
>>> import torch

>>> config = HGNetV2Config()
>>> model = HGNetV2Backbone(config)

>>> pixel_values = torch.randn(1, 3, 224, 224)

>>> with torch.no_grad():
...     outputs = model(pixel_values)

>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 2048, 7, 7]

HGNetV2ForImageClassification

class transformers.HGNetV2ForImageClassification

< >

( config: HGNetV2Config )

参数

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

HGNetV2 模型,顶部有一个图像分类头(一个位于池化特征之上的线性层),例如用于 ImageNet。

此模型继承自 PreTrainedModel。查看其父类文档,了解库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、修剪头等)。

此模型也是一个 PyTorch torch.nn.Module 子类。像普通的 PyTorch Module 一样使用它,并参考 PyTorch 文档了解一般用法和行为的所有相关信息。

forward

< >

( pixel_values: torch.FloatTensor | None = None labels: torch.LongTensor | None = None output_hidden_states: bool | None = None return_dict: bool | None = None **kwargs ) transformers.modeling_outputs.ImageClassifierOutputWithNoAttention or tuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor, shape (batch_size, num_channels, image_size, image_size), optional) — 对应于输入图像的张量。可以使用 image_processor_class 获取像素值。有关详细信息,请参阅 image_processor_class.__call__processor_class 使用 image_processor_class 来处理图像)。
  • labels (torch.LongTensor, shape (batch_size,), optional) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵)。
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是普通元组。

返回

transformers.modeling_outputs.ImageClassifierOutputWithNoAttention or tuple(torch.FloatTensor)

一个 transformers.modeling_outputs.ImageClassifierOutputWithNoAttention 对象,或者一个 torch.FloatTensor 的元组(如果传入 return_dict=False 或当 config.return_dict=False 时)。具体包含的元素取决于配置 (HGNetV2Config) 和输入。

  • loss (形状为 (1,)torch.FloatTensor可选,当提供 labels 时返回) — 分类损失(如果 config.num_labels==1,则为回归损失)。
  • logits (形状为 (batch_size, config.num_labels)torch.FloatTensor) — 分类(如果 config.num_labels==1,则为回归)分数(SoftMax 之前)。
  • hidden_states (tuple(torch.FloatTensor), optional, 当传入 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含一个嵌入层输出,加上每阶段的一个输出),形状为 (batch_size, num_channels, height, width)。模型在每个阶段输出的隐藏状态(也称为特征图)。

HGNetV2ForImageClassification 的前向(forward)方法会覆盖 __call__ 特殊方法。

虽然 forward pass 的实现需要在此函数中定义,但你应该在之后调用 Module 实例而不是这个,因为前者负责运行预处理和后处理步骤,而后者会静默地忽略它们。

示例

>>> import torch
>>> import httpx
>>> from io import BytesIO
>>> from transformers import HGNetV2ForImageClassification, AutoImageProcessor
>>> from PIL import Image

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> model = HGNetV2ForImageClassification.from_pretrained("ustc-community/hgnet-v2")
>>> processor = AutoImageProcessor.from_pretrained("ustc-community/hgnet-v2")

>>> inputs = processor(images=image, return_tensors="pt")
>>> with torch.no_grad():
...     outputs = model(**inputs)
>>> outputs.logits.shape
torch.Size([1, 2])
在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.