Transformers 文档

ConvNeXt V2

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始使用

ConvNeXt V2

PyTorch TensorFlow

概述

ConvNeXt V2 模型由 Sanghyun Woo, Shoubhik Debnath, Ronghang Hu, Xinlei Chen, Zhuang Liu, In So Kweon, Saining Xie 在 ConvNeXt V2: Co-designing and Scaling ConvNets with Masked Autoencoders 中提出。 ConvNeXt V2 是一个纯卷积模型 (ConvNet),其设计灵感来源于 Vision Transformers,并且是 ConvNeXT 的后继者。

论文摘要如下:

在改进的架构和更好的表征学习框架的驱动下,视觉识别领域在 2020 年代初期经历了快速的现代化和性能提升。例如,以 ConvNeXt 为代表的现代 ConvNets 在各种场景中都表现出了强大的性能。虽然这些模型最初是为使用 ImageNet 标签进行监督学习而设计的,但它们也可能从自监督学习技术(如掩码自动编码器 (MAE))中受益。然而,我们发现简单地将这两种方法结合起来会导致次优的性能。在本文中,我们提出了一个完全卷积的掩码自动编码器框架和一个新的全局响应归一化 (GRN) 层,可以将其添加到 ConvNeXt 架构中,以增强通道间特征竞争。自监督学习技术和架构改进的这种协同设计产生了一个名为 ConvNeXt V2 的新模型系列,该模型系列显着提高了纯 ConvNets 在各种识别基准上的性能,包括 ImageNet 分类、COCO 检测和 ADE20K 分割。我们还提供了各种尺寸的预训练 ConvNeXt V2 模型,范围从高效的 3.7M 参数 Atto 模型(在 ImageNet 上实现了 76.7% 的 top-1 准确率)到 650M Huge 模型(仅使用公共训练数据就实现了最先进的 88.9% 准确率)。

drawing ConvNeXt V2 架构。摘自原始论文

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

资源

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

图像分类

如果您有兴趣提交资源并在此处收录,请随时打开 Pull Request,我们将对其进行审核!该资源应理想地展示一些新的内容,而不是重复现有资源。

ConvNextV2Config

class transformers.ConvNextV2Config

< >

( num_channels = 3 patch_size = 4 num_stages = 4 hidden_sizes = None depths = None hidden_act = 'gelu' initializer_range = 0.02 layer_norm_eps = 1e-12 drop_path_rate = 0.0 image_size = 224 out_features = None out_indices = None **kwargs )

参数

  • num_channels (int, 可选, 默认为 3) — 输入通道数。
  • patch_size (int, 可选, 默认为 4) — 在 patch 嵌入层中使用的 patch 大小。
  • num_stages (int, 可选, 默认为 4) — 模型中的阶段数。
  • hidden_sizes (List[int], 可选, 默认为 [96, 192, 384, 768]) — 每个阶段的维度(隐藏大小)。
  • depths (List[int], 可选, 默认为 [3, 3, 9, 3]) — 每个阶段的深度(块数)。
  • hidden_act (strfunction, 可选, 默认为 "gelu") — 每个块中的非线性激活函数(函数或字符串)。如果为字符串,则支持 "gelu", "relu", "selu""gelu_new"
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的 truncated_normal_initializer 的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-12) — layer normalization 层使用的 epsilon 值。
  • drop_path_rate (float, 可选, 默认为 0.0) — 随机深度 的 dropout 率。
  • image_size (int, optional, defaults to 224) — 每个图像的大小(分辨率)。
  • 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 属性中定义的顺序相同。

这是用于存储 ConvNextV2Model 配置的配置类。它用于根据指定的参数实例化 ConvNeXTV2 模型,定义模型架构。使用默认值实例化配置将产生与 ConvNeXTV2 facebook/convnextv2-tiny-1k-224 架构类似的配置。

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

示例

>>> from transformers import ConvNeXTV2Config, ConvNextV2Model

>>> # Initializing a ConvNeXTV2 convnextv2-tiny-1k-224 style configuration
>>> configuration = ConvNeXTV2Config()

>>> # Initializing a model (with random weights) from the convnextv2-tiny-1k-224 style configuration
>>> model = ConvNextV2Model(configuration)

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

ConvNextV2Model

class transformers.ConvNextV2Model

< >

( config )

参数

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

裸 ConvNextV2 模型输出原始特征,顶部没有任何特定的头部。此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档,了解与常规用法和行为相关的所有事项。

forward

< >

( pixel_values: FloatTensor = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 ConvNextImageProcessor 获得。有关详细信息,请参阅 ConvNextImageProcessor.call()
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。

返回值

transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontuple(torch.FloatTensor)

一个 transformers.modeling_outputs.BaseModelOutputWithPoolingAndNoAttentiontorch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (ConvNextV2Config) 和输入。

  • 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=True 或当 config.output_hidden_states=True 时返回) — torch.FloatTensor 元组(如果模型具有嵌入层,则为嵌入输出 + 每个层的输出各一个),形状为 (batch_size, num_channels, height, width)

    模型在每个层输出处的隐藏状态,加上可选的初始嵌入输出。

ConvNextV2Model forward 方法,覆盖了 __call__ 特殊方法。

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

示例

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
>>> model = ConvNextV2Model.from_pretrained("facebook/convnextv2-tiny-1k-224")

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

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

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 768, 7, 7]

ConvNextV2ForImageClassification

class transformers.ConvNextV2ForImageClassification

< >

( config )

参数

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

ConvNextV2 模型,顶部带有图像分类头(池化特征顶部的线性层),例如用于 ImageNet。

此模型是 PyTorch torch.nn.Module 子类。将其用作常规 PyTorch 模块,并参阅 PyTorch 文档,了解与常规用法和行为相关的所有事项。

forward

< >

( pixel_values: FloatTensor = None labels: typing.Optional[torch.LongTensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

参数

  • pixel_values (torch.FloatTensor,形状为 (batch_size, num_channels, height, width)) — 像素值。像素值可以使用 ConvNextImageProcessor 获得。有关详细信息,请参阅 ConvNextImageProcessor.call()
  • output_hidden_states (bool, optional) — 是否返回所有层的隐藏状态。 有关更多详细信息,请参见返回张量下的 hidden_states
  • return_dict (bool, optional) — 是否返回 ModelOutput 而不是纯元组。
  • labels (torch.LongTensor,形状为 (batch_size,)optional) — 用于计算图像分类/回归损失的标签。索引应为 [0, ..., config.num_labels - 1]。如果 config.num_labels == 1,则计算回归损失(均方误差损失),如果 config.num_labels > 1,则计算分类损失(交叉熵损失)。

返回值

transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

一个 transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontorch.FloatTensor 元组(如果传递了 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (ConvNextV2Config) 和输入。

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

ConvNextV2ForImageClassification forward 方法,覆盖了 __call__ 特殊方法。

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

示例

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
>>> model = ConvNextV2ForImageClassification.from_pretrained("facebook/convnextv2-tiny-1k-224")

>>> 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])
tabby, tabby cat

TFConvNextV2Model

class transformers.TFConvNextV2Model

< >

( config: ConvNextV2Config *inputs **kwargs )

参数

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

裸 ConvNextV2 模型,输出原始特征,顶部没有任何特定的 head。此模型继承自 TFPreTrainedModel。查看超类文档以获取库为所有模型实现的通用方法(例如下载或保存、调整输入嵌入大小、剪枝 head 等)。

此模型也是 keras.Model 子类。像使用常规 TF 2.0 Keras 模型一样使用它,并参阅 TF 2.0 文档以了解与通用用法和行为相关的所有事项。

transformers 中的 TensorFlow 模型和层接受两种格式作为输入

  • 所有输入都作为关键字参数(如 PyTorch 模型),或
  • 所有输入都作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,当使用像 model.fit() 这样的方法时,事情应该对你“正常工作” - 只需以 model.fit() 支持的任何格式传递你的输入和标签即可!但是,如果你想在 Keras 方法(如 fit()predict())之外使用第二种格式,例如在使用 Keras Functional API 创建你自己的层或模型时,你可以使用三种可能性来收集第一个位置参数中的所有输入张量

  • 仅包含 pixel_values 的单个张量,没有其他内容:model(pixel_values)
  • 长度可变的列表,其中包含一个或多个输入张量,顺序与文档字符串中给出的顺序相同:model([pixel_values, attention_mask])model([pixel_values, attention_mask, token_type_ids])
  • 字典,其中包含一个或多个输入张量,与文档字符串中给出的输入名称相关联:model({"pixel_values": pixel_values, "token_type_ids": token_type_ids})

请注意,当使用 子类化 创建模型和层时,你无需担心任何这些,因为你可以像对待任何其他 Python 函数一样传递输入!

call

< >

( pixel_values: TFModelInputType | None = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: bool = False ) transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndNoAttentiontuple(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 获得。有关详细信息,请参阅 ConvNextImageProcessor.call()
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可以在 eager 模式下使用,在 graph 模式下,该值将始终设置为 True

返回值

transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndNoAttentiontuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFBaseModelOutputWithPoolingAndNoAttention 或一个 tf.Tensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (ConvNextV2Config) 和输入。

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

  • pooler_output (tf.Tensor,形状为 (batch_size, hidden_size)) — 在空间维度上进行池化操作后的最后一层隐藏状态。

  • hidden_states (tuple(tf.Tensor), 可选, 当传递 output_hidden_states=True 或当 config.output_hidden_states=True 时返回) — tf.Tensor 元组(如果模型具有嵌入层,则为嵌入层输出一个,+ 每层输出一个),形状为 (batch_size, num_channels, height, width)

    模型在每个层输出处的隐藏状态,加上可选的初始嵌入输出。

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

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

示例

>>> from transformers import AutoImageProcessor, TFConvNextV2Model
>>> from datasets import load_dataset

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
>>> model = TFConvNextV2Model.from_pretrained("facebook/convnextv2-tiny-1k-224")

>>> inputs = image_processor(image, return_tensors="tf")
>>> outputs = model(**inputs)

>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 768, 7, 7]

TFConvNextV2ForImageClassification

class transformers.TFConvNextV2ForImageClassification

< >

( config: ConvNextV2Config *inputs **kwargs )

参数

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

ConvNextV2 模型,顶部带有图像分类头(池化特征顶部的线性层),例如用于 ImageNet。

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

此模型也是 keras.Model 子类。像使用常规 TF 2.0 Keras 模型一样使用它,并参阅 TF 2.0 文档以了解与通用用法和行为相关的所有事项。

transformers 中的 TensorFlow 模型和层接受两种格式作为输入

  • 所有输入都作为关键字参数(如 PyTorch 模型),或
  • 所有输入都作为列表、元组或字典放在第一个位置参数中。

支持第二种格式的原因是 Keras 方法在将输入传递给模型和层时更喜欢这种格式。由于这种支持,当使用像 model.fit() 这样的方法时,事情应该对你“正常工作” - 只需以 model.fit() 支持的任何格式传递你的输入和标签即可!但是,如果你想在 Keras 方法(如 fit()predict())之外使用第二种格式,例如在使用 Keras Functional API 创建你自己的层或模型时,你可以使用三种可能性来收集第一个位置参数中的所有输入张量

  • 仅包含 pixel_values 的单个张量,没有其他内容:model(pixel_values)
  • 长度可变的列表,其中包含一个或多个输入张量,顺序与文档字符串中给出的顺序相同:model([pixel_values, attention_mask])model([pixel_values, attention_mask, token_type_ids])
  • 字典,其中包含一个或多个输入张量,与文档字符串中给出的输入名称相关联:model({"pixel_values": pixel_values, "token_type_ids": token_type_ids})

请注意,当使用 子类化 创建模型和层时,你无需担心任何这些,因为你可以像对待任何其他 Python 函数一样传递输入!

call

< >

( pixel_values: TFModelInputType | None = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None labels: np.ndarray | tf.Tensor | None = None training: Optional[bool] = False ) transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttentiontuple(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 获得。有关详细信息,请参阅 ConvNextImageProcessor.call()
  • output_hidden_states (bool, 可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states。此参数只能在 eager 模式下使用,在 graph 模式下将使用配置中的值。
  • return_dict (bool, 可选) — 是否返回 ModelOutput 而不是普通元组。此参数可以在 eager 模式下使用,在 graph 模式下,该值将始终设置为 True
  • labels (tf.Tensornp.ndarray,形状为 (batch_size,), 可选) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 中。如果 config.num_labels == 1,则计算回归损失(均方误差损失)。如果 config.num_labels > 1,则计算分类损失(交叉熵)。

返回值

transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttentiontuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttention 或一个 tf.Tensor 元组(如果传递 return_dict=False 或当 config.return_dict=False 时),其中包含各种元素,具体取决于配置 (ConvNextV2Config) 和输入。

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

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

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

示例

>>> from transformers import AutoImageProcessor, TFConvNextV2ForImageClassification
>>> import tensorflow as tf
>>> from datasets import load_dataset

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/convnextv2-tiny-1k-224")
>>> model = TFConvNextV2ForImageClassification.from_pretrained("facebook/convnextv2-tiny-1k-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
< > 在 GitHub 上更新