Transformers 文档

ResNet

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

该模型于 2015-12-10 发布,并于 2022-03-14 添加到 Hugging Face Transformers。

ResNet

PyTorch

概述

ResNet 模型由 Kaiming He、Xiangyu Zhang、Shaoqing Ren 和 Jian Sun 在 Deep Residual Learning for Image Recognition 中提出。我们的实现遵循了 Nvidia 所做的小改动,我们在 bottleneck 的 3x3 conv 中应用了 stride=2 进行下采样,而不是在第一个 1x1 conv 中。这通常被称为“ResNet v1.5”。

ResNet 引入了残差连接,它们允许训练具有前所未有数量层(最多 1000 层)的网络。ResNet 赢得了 2015 年 ILSVRC & COCO 竞赛,这是深度计算机视觉领域的一个重要里程碑。

论文摘要如下:

更深层的神经网络更难训练。我们提出了一种残差学习框架,以简化比以往更深层的网络的训练。我们明确地将层重塑为学习相对于层输入的残差函数,而不是学习无引用的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以通过显著增加的深度来提高精度。在 ImageNet 数据集上,我们评估了深度高达 152 层的残差网络——比 VGG 网络深 8 倍,但复杂度却更低。这些残差网络的集成在 ImageNet 测试集上实现了 3.57% 的错误率。这项成果赢得了 ILSVRC 2015 分类任务的第一名。我们还对 100 层和 1000 层的 CIFAR-10 进行了分析。表示的深度对许多视觉识别任务至关重要。仅仅因为我们极深的表示,我们在 COCO 对象检测数据集上获得了 28% 的相对改进。深度残差网络是我们提交给 ILSVRC & COCO 2015 竞赛的基础,我们在 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割任务上也获得了第一名。

下图展示了 ResNet 的架构。摘自 原始论文

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

资源

Hugging Face 官方和社区 (🌎 标识) 资源的列表,以帮助您开始使用 ResNet。

图像分类

如果您有兴趣在此处提交资源,请随时开启 Pull Request,我们将对其进行审查!该资源最好能展示一些新内容,而不是重复现有资源。

ResNetConfig

class transformers.ResNetConfig

< >

( num_channels = 3 embedding_size = 64 hidden_sizes = [256, 512, 1024, 2048] depths = [3, 4, 6, 3] layer_type = 'bottleneck' hidden_act = 'relu' downsample_in_first_stage = False downsample_in_bottleneck = False out_features = None out_indices = None **kwargs )

参数

  • num_channels (int, optional, 默认值为 3) — 输入通道数。
  • embedding_size (int, optional, 默认值为 64) — 嵌入层的大小(隐藏大小)。
  • hidden_sizes (list[int], optional, 默认值为 [256, 512, 1024, 2048]) — 每个阶段的大小(隐藏大小)。
  • depths (list[int], optional, 默认值为 [3, 4, 6, 3]) — 每个阶段的深度(层数)。
  • layer_type (str, optional, 默认值为 "bottleneck") — 要使用的层,可以是 "basic"(用于较小的模型,如 resnet-18 或 resnet-34)或 "bottleneck"(用于较大的模型,如 resnet-50 及以上)。
  • hidden_act (str, optional, 默认值为 "relu") — 每个块中的非线性激活函数。如果为字符串,则支持 "gelu""relu""selu""gelu_new"
  • downsample_in_first_stage (bool, optional, 默认值为 False) — 如果为 True,则第一阶段将使用 stride 为 2 来下采样输入。
  • downsample_in_bottleneck (bool, optional, 默认值为 False) — 如果为 True,则 ResNetBottleNeckLayer 中的第一个 conv 1x1 将使用 stride 为 2 来下采样输入。
  • 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 属性中定义的顺序相同。

这是用于存储 ResNetModel 配置的配置类。它用于根据指定的参数实例化 ResNet 模型,定义模型架构。使用默认值实例化配置将产生与 ResNet microsoft/resnet-50 架构相似的配置。

配置对象继承自 PreTrainedConfig,可用于控制模型输出。有关更多信息,请阅读 PreTrainedConfig 的文档。

示例

>>> from transformers import ResNetConfig, ResNetModel

>>> # Initializing a ResNet resnet-50 style configuration
>>> configuration = ResNetConfig()

>>> # Initializing a model (with random weights) from the resnet-50 style configuration
>>> model = ResNetModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

ResNetModel

class transformers.ResNetModel

< >

( config model_args: ~utils.generic.ModelArgs | None = None adapter_args: ~utils.generic.AdapterArgs | None = None lora_args: ~utils.generic.LoRAArgs | None = None tokenizer_args: ~utils.generic.TokenizerArgs | None = None dataset_args: ~utils.generic.DatasetArgs | None = None data_args: ~utils.generic.DataArgs | None = None training_args: ~utils.generic.TrainingArgs | None = None generation_args: ~utils.generic.GenerationArgs | None = None vision_tower_args: ~utils.generic.VisionTowerArgs | None = None qlora_args: ~utils.generic.QLoRAArgs | None = None vision_tower_template_args: ~utils.generic.VisionTowerTemplateArgs | None = None video_tower_args: ~utils.generic.VideoTowerArgs | None = None vision_config: ~utils.generic.VisionConfig | None = None video_config: ~utils.generic.VideoConfig | None = None load_dataset: bool | None = None load_data_collator: bool | None = None load_processor: bool | None = None load_lora_adapter: bool | None = None load_adapter: bool | None = None load_qlora_adapter: bool | None = None **kwargs: typing_extensions.Unpack[transformers.modeling_utils.PreTrainedModelKwargs] )

参数

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

Bare Resnet 模型,输出原始隐藏状态,没有任何顶部特定头部。

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

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

forward

< >

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

参数

  • pixel_values (torch.Tensor of shape (batch_size, num_channels, image_size, image_size)) — 对应于输入图像的张量。可以使用 ConvNextImageProcessorFast 获取像素值。有关详细信息,请参阅 ConvNextImageProcessorFast.call()processor_class 使用 ConvNextImageProcessorFast 处理图像)。
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。有关详细信息,请参阅返回张量下的 hidden_states
  • return_dict (bool, optional) — 如果设置为 False,则返回一个元组,否则返回一个 ModelOutput

返回

transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(torch.FloatTensor)

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

  • last_hidden_state (torch.FloatTensor, 形状为 (batch_size, num_channels, height, width)) — 模型最后一层输出的隐藏状态序列。

  • pooler_output (torch.FloatTensor, 形状为 (batch_size, hidden_size)) — 经过空间维度池化操作后的最后一层隐藏状态。

  • hidden_states (tuple(torch.FloatTensor), optional, 当传入 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(如果模型有嵌入层,则包含一个嵌入层输出,加上每层的一个输出),形状为 (batch_size, num_channels, height, width)

    模型在每个层输出的隐藏状态以及可选的初始嵌入输出。

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

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

示例

ResNetForImageClassification

class transformers.ResNetForImageClassification

< >

( config model_args: ~utils.generic.ModelArgs | None = None adapter_args: ~utils.generic.AdapterArgs | None = None lora_args: ~utils.generic.LoRAArgs | None = None tokenizer_args: ~utils.generic.TokenizerArgs | None = None dataset_args: ~utils.generic.DatasetArgs | None = None data_args: ~utils.generic.DataArgs | None = None training_args: ~utils.generic.TrainingArgs | None = None generation_args: ~utils.generic.GenerationArgs | None = None vision_tower_args: ~utils.generic.VisionTowerArgs | None = None qlora_args: ~utils.generic.QLoRAArgs | None = None vision_tower_template_args: ~utils.generic.VisionTowerTemplateArgs | None = None video_tower_args: ~utils.generic.VideoTowerArgs | None = None vision_config: ~utils.generic.VisionConfig | None = None video_config: ~utils.generic.VideoConfig | None = None load_dataset: bool | None = None load_data_collator: bool | None = None load_processor: bool | None = None load_lora_adapter: bool | None = None load_adapter: bool | None = None load_qlora_adapter: bool | None = None **kwargs: typing_extensions.Unpack[transformers.modeling_utils.PreTrainedModelKwargs] )

参数

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

带有图像分类头(在池化特征之上有一个线性层)的 ResNet 模型,例如用于 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.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

参数

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

返回

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

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

  • 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)。模型在每个阶段输出的隐藏状态(也称为特征图)。

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

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

示例

>>> from transformers import AutoImageProcessor, ResNetForImageClassification
>>> import torch
>>> from datasets import load_dataset

>>> dataset = load_dataset("huggingface/cats-image")
>>> image = dataset["test"]["image"][0]

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/resnet-50")
>>> model = ResNetForImageClassification.from_pretrained("microsoft/resnet-50")

>>> inputs = image_processor(image, return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> # model predicts one of the 1000 ImageNet classes
>>> predicted_label = logits.argmax(-1).item()
>>> print(model.config.id2label[predicted_label])
...
在 GitHub 上更新

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