Transformers 文档

卷积视觉 Transformer (CvT)

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

PyTorch TensorFlow

卷积视觉 Transformer (CvT)

卷积视觉 Transformer (CvT) 是一种结合了卷积神经网络 (CNN) 和视觉 Transformer 的优势的模型,用于计算机视觉任务。它在视觉 Transformer 架构中引入了卷积层,使其能够在保持自注意力机制提供的全局上下文的同时,捕获图像中的局部模式。

您可以在 Microsoft 组织下找到所有 CvT 检查点。

此模型由 anujunj 贡献。

单击右侧边栏中的 CvT 模型,了解如何将 CvT 应用于不同计算机视觉任务的更多示例。

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

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

pipeline = pipeline(
    task="image-classification",
    model="microsoft/cvt-13",
    torch_dtype=torch.float16,
    device=0 
)
pipeline(images="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/pipeline-cat-chonk.jpeg")

资源

请参阅此 ViT notebooks 集,了解在自定义数据集上进行推理和微调的示例。将这些 notebook 中的 ViTFeatureExtractorViTForImageClassification 替换为 AutoImageProcessorCvtForImageClassification

CvtConfig

class transformers.CvtConfig

< >

( num_channels = 3 patch_sizes = [7, 3, 3] patch_stride = [4, 2, 2] patch_padding = [2, 1, 1] embed_dim = [64, 192, 384] num_heads = [1, 3, 6] depth = [1, 2, 10] mlp_ratio = [4.0, 4.0, 4.0] attention_drop_rate = [0.0, 0.0, 0.0] drop_rate = [0.0, 0.0, 0.0] drop_path_rate = [0.0, 0.0, 0.1] qkv_bias = [True, True, True] cls_token = [False, False, True] qkv_projection_method = ['dw_bn', 'dw_bn', 'dw_bn'] kernel_qkv = [3, 3, 3] padding_kv = [1, 1, 1] stride_kv = [2, 2, 2] padding_q = [1, 1, 1] stride_q = [1, 1, 1] initializer_range = 0.02 layer_norm_eps = 1e-12 **kwargs )

参数

  • num_channels (int, 可选, 默认为 3) — 输入通道数。
  • patch_sizes (list[int], 可选, 默认为 [7, 3, 3]) — 每个编码器补丁嵌入的核大小。
  • patch_stride (list[int], 可选, 默认为 [4, 2, 2]) — 每个编码器补丁嵌入的步幅大小。
  • patch_padding (list[int], 可选, 默认为 [2, 1, 1]) — 每个编码器补丁嵌入的填充大小。
  • embed_dim (list[int], 可选, 默认为 [64, 192, 384]) — 每个编码器块的维度。
  • num_heads (list[int], 可选, 默认为 [1, 3, 6]) — Transformer 编码器每个块中每个注意力层的注意力头数。
  • depth (list[int], 可选, 默认为 [1, 2, 10]) — 每个编码器块中的层数。
  • mlp_ratios (list[float], 可选, 默认为 [4.0, 4.0, 4.0, 4.0]) — 编码器块中 Mix FFNs 隐藏层与输入层大小的比率。
  • attention_drop_rate (list[float], 可选, 默认为 [0.0, 0.0, 0.0]) — 注意力概率的 dropout 比率。
  • drop_rate (list[float], 可选, 默认为 [0.0, 0.0, 0.0]) — 补丁嵌入概率的 dropout 比率。
  • drop_path_rate (list[float], 可选, 默认为 [0.0, 0.0, 0.1]) — 用于 Transformer 编码器块中的随机深度 dropout 概率。
  • qkv_bias (list[bool], 可选, 默认为 [True, True, True]) — 注意力层中查询、键和值的偏置布尔值。
  • cls_token (list[bool], 可选, 默认为 [False, False, True]) — 是否在最后 3 个阶段的输出中添加分类令牌。
  • qkv_projection_method (list[string], 可选, 默认为 ["dw_bn", "dw_bn", "dw_bn"]`) — 查询、键和值的投影方法。默认为带批量归一化的深度可分离卷积。对于线性投影,使用“avg”。
  • kernel_qkv (list[int], 可选, 默认为 [3, 3, 3]) — 注意力层中查询、键和值的核大小。
  • padding_kv (list[int], 可选, 默认为 [1, 1, 1]) — 注意力层中键和值的填充大小。
  • stride_kv (list[int], 可选, 默认为 [2, 2, 2]) — 注意力层中键和值的步幅大小。
  • padding_q (list[int], 可选, 默认为 [1, 1, 1]) — 注意力层中查询的填充大小。
  • stride_q (list[int], 可选, 默认为 [1, 1, 1]) — 注意力层中查询的步幅大小。
  • initializer_range (float, 可选, 默认为 0.02) — 用于初始化所有权重矩阵的截断正态初始化器的标准差。
  • layer_norm_eps (float, 可选, 默认为 1e-6) — 层归一化层使用的 epsilon 值。

这是用于存储 CvtModel 配置的配置类。它用于根据指定的参数实例化 CvT 模型,定义模型架构。使用默认值实例化配置将生成与 CvT microsoft/cvt-13 架构类似的配置。

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

示例

>>> from transformers import CvtConfig, CvtModel

>>> # Initializing a Cvt msft/cvt style configuration
>>> configuration = CvtConfig()

>>> # Initializing a model (with random weights) from the msft/cvt style configuration
>>> model = CvtModel(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config
Pytorch
隐藏 Pytorch 内容

CvtModel

class transformers.CvtModel

< >

( config add_pooling_layer = True )

参数

  • config (CvtModel) — 包含模型所有参数的模型配置类。使用配置文件初始化并不会加载与模型相关的权重,只加载配置。请查看 from_pretrained() 方法以加载模型权重。
  • add_pooling_layer (bool, 可选, 默认为 True) — 是否添加池化层。

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

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

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

向前

< >

( pixel_values: typing.Optional[torch.Tensor] = None output_hidden_states: typing.Optional[bool] = None return_dict: typing.Optional[bool] = None ) transformers.models.cvt.modeling_cvt.BaseModelOutputWithCLSToken or tuple(torch.FloatTensor)

参数

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

返回

transformers.models.cvt.modeling_cvt.BaseModelOutputWithCLSTokentuple(torch.FloatTensor)

transformers.models.cvt.modeling_cvt.BaseModelOutputWithCLSTokentorch.FloatTensor 的元组(如果传递了 return_dict=Falseconfig.return_dict=False 时),根据配置 (CvtConfig) 和输入包含各种元素。

  • last_hidden_state (形状为 (batch_size, sequence_length, hidden_size)torch.FloatTensor, 可选,默认为 None) — 模型最后一层输出的隐藏状态序列。

  • cls_token_value (torch.FloatTensor,形状为 (batch_size, 1, hidden_size)) — 模型最后一层的分类令牌输出。

  • hidden_states (tuple[torch.FloatTensor, ...], 可选,当传递 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — torch.FloatTensor 的元组(如果模型有嵌入层,则为嵌入层输出一个,每个层输出一个)的形状为 (batch_size, sequence_length, hidden_size)

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

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

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

CvtForImageClassification

class transformers.CvtForImageClassification

< >

( config )

参数

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

Cvt 模型转换器,其顶部带有一个图像分类头([CLS] 标记的最终隐藏状态顶部的一个线性层),例如用于 ImageNet。

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

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

向前

< >

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

参数

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

返回

transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontuple(torch.FloatTensor)

一个 transformers.modeling_outputs.ImageClassifierOutputWithNoAttentiontorch.FloatTensor 的元组(如果传入 return_dict=Falseconfig.return_dict=False 时),根据配置 (CvtConfig) 和输入包含各种元素。

  • 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)可选,当传入 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, num_channels, height, width)torch.FloatTensor 元组(一个用于嵌入层输出,如果模型有嵌入层,+ 一个用于每个阶段的输出)。模型在每个阶段输出的隐藏状态(也称为特征图)。

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

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

示例

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/cvt-13")
>>> model = CvtForImageClassification.from_pretrained("microsoft/cvt-13")

>>> 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])
...
TensorFlow
隐藏 TensorFlow 内容

TFCvtModel

class transformers.TFCvtModel

< >

( config: CvtConfig *inputs **kwargs )

参数

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

裸的 Cvt 模型转换器,输出原始隐藏状态,不带任何特定头部。

此模型继承自 TFPreTrainedModel。有关库为其所有模型实现的一般方法(例如下载或保存、调整输入嵌入大小、修剪头部等),请查看超类文档。

此模型也是 keras.Model 子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档了解所有与一般用法和行为相关的事项。

TF 2.0 模型接受两种输入格式

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

当使用 keras.Model.fit 方法时,此第二个选项很有用,该方法目前要求将所有张量放在模型调用函数的第一个参数中:model(inputs)

调用

< >

( pixel_values: tf.Tensor | None = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = None training: Optional[bool] = False ) transformers.models.cvt.modeling_tf_cvt.TFBaseModelOutputWithCLSTokentuple(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 获取。有关详细信息,请参阅 CvtImageProcessor.__call__
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states。此参数仅在即时模式下可用,在图模式下将使用配置中的值。
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通的元组。此参数在即时模式下可用,在图模式下该值将始终设置为 True。
  • training (bool可选,默认为 ``False“) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。

返回

transformers.models.cvt.modeling_tf_cvt.TFBaseModelOutputWithCLSTokentuple(tf.Tensor)

一个 transformers.models.cvt.modeling_tf_cvt.TFBaseModelOutputWithCLSTokentf.Tensor 的元组(如果传入 return_dict=Falseconfig.return_dict=False 时),根据配置 (CvtConfig) 和输入包含各种元素。

  • last_hidden_state (tf.Tensor of shape (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。
  • cls_token_value (形状为 (batch_size, 1, hidden_size)tf.Tensor) — 模型最后一层输出的分类标记。
  • hidden_states (tuple(tf.Tensor)可选,当传入 output_hidden_states=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, sequence_length, hidden_size)tf.Tensor 元组(一个用于嵌入输出 + 一个用于每层输出)。模型在每层输出的隐藏状态以及初始嵌入输出。

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

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

示例

>>> from transformers import AutoImageProcessor, TFCvtModel
>>> 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("microsoft/cvt-13")
>>> model = TFCvtModel.from_pretrained("microsoft/cvt-13")

>>> inputs = image_processor(images=image, return_tensors="tf")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state

TFCvtForImageClassification

class transformers.TFCvtForImageClassification

< >

( config: CvtConfig *inputs **kwargs )

参数

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

Cvt 模型转换器,其顶部带有一个图像分类头([CLS] 标记的最终隐藏状态顶部的一个线性层),例如用于 ImageNet。

此模型继承自 TFPreTrainedModel。有关库为其所有模型实现的一般方法(例如下载或保存、调整输入嵌入大小、修剪头部等),请查看超类文档。

此模型也是 keras.Model 子类。将其用作常规的 TF 2.0 Keras 模型,并参考 TF 2.0 文档了解所有与一般用法和行为相关的事项。

TF 2.0 模型接受两种输入格式

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

当使用 keras.Model.fit 方法时,此第二个选项很有用,该方法目前要求将所有张量放在模型调用函数的第一个参数中:model(inputs)

调用

< >

( pixel_values: tf.Tensor | None = None labels: tf.Tensor | None = None output_hidden_states: Optional[bool] = None return_dict: Optional[bool] = 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 获取。有关详细信息,请参阅 CvtImageProcessor.__call__
  • output_hidden_states (bool可选) — 是否返回所有层的隐藏状态。有关更多详细信息,请参阅返回张量下的 hidden_states。此参数仅在即时模式下可用,在图模式下将使用配置中的值。
  • return_dict (bool可选) — 是否返回 ModelOutput 而不是普通的元组。此参数在即时模式下可用,在图模式下该值将始终设置为 True。
  • training (bool可选,默认为 ``False“) — 是否在训练模式下使用模型(某些模块,如 dropout 模块,在训练和评估之间有不同的行为)。
  • labels (形状为 (batch_size,)tf.Tensornp.ndarray可选) — 用于计算图像分类/回归损失的标签。索引应在 [0, ..., config.num_labels - 1] 范围内。如果 config.num_labels == 1,则计算回归损失(均方损失);如果 config.num_labels > 1,则计算分类损失(交叉熵)。

返回

transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttentiontuple(tf.Tensor)

一个 transformers.modeling_tf_outputs.TFImageClassifierOutputWithNoAttentiontf.Tensor 的元组(如果传入 return_dict=Falseconfig.return_dict=False 时),根据配置 (CvtConfig) 和输入包含各种元素。

  • loss (形状为 (1,)tf.Tensor可选,当提供 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=Trueconfig.output_hidden_states=True 时返回) — 形状为 (batch_size, num_channels, height, width)tf.Tensor 元组(一个用于嵌入层输出,如果模型有嵌入层,+ 一个用于每个阶段的输出)。模型在每个阶段输出的隐藏状态(也称为特征图)。

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

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

示例

>>> from transformers import AutoImageProcessor, TFCvtForImageClassification
>>> import tensorflow as tf
>>> 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("microsoft/cvt-13")
>>> model = TFCvtForImageClassification.from_pretrained("microsoft/cvt-13")

>>> 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)])
< > 在 GitHub 上更新