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 上更新

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