Transformers documentation

畳み込みビジョントランスフォーマー(CvT)

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2021年3月29日にHF papersで公開され、2022年5月18日にHugging Face Transformersに貢献されました。

畳み込みビジョントランスフォーマー(CvT)

Convolutional Vision Transformer (CvT)は、コンピュータビジョンタスクにおいて、CNN(畳み込みニューラルネットワーク)とVision Transformerの強みを組み合わせたモデルです。Vision Transformerのアーキテクチャに畳み込み層を導入することで、自己注意機構が提供するグローバルなコンテキストを維持しながら、画像内のローカルなパターンを捉えることを可能にしています。

すべてのCvTチェックポイントは、Microsoft組織の下で確認できます。

このモデルは anujunj によって提供されました。

CvTを異なるコンピュータビジョンタスクに適用する方法の例については、右側のサイドバーにあるCvTモデルをクリックしてください。

以下の例では、PipelineまたはAutoModelクラスを使用して画像を分類する方法を示しています。

パイプライン
AutoModel
from transformers import pipeline


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

リソース

カスタムデータセットでの推論とファインチューニングの例については、ViTのノートブックのセットを参照してください。これらのノートブック内のViTFeatureExtractorとViTForImageClassificationを、それぞれAutoImageProcessorとCvtForImageClassificationに置き換えてください。

CvtConfig

クラス transformers.CvtConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonenum_channels: int = 3patch_sizes: list[int] | tuple[int, ...] = (7, 3, 3)patch_stride: list[int] | tuple[int, ...] = (4, 2, 2)patch_padding: list[int] | tuple[int, ...] = (2, 1, 1)embed_dim: list[int] | tuple[int, ...] = (64, 192, 384)num_heads: list[int] | tuple[int, ...] = (1, 3, 6)depth: list[int] | tuple[int, ...] = (1, 2, 10)mlp_ratio: list[float] | tuple[float, ...] = (4.0, 4.0, 4.0)attention_drop_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.0)drop_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.0)drop_path_rate: list[float] | tuple[float, ...] = (0.0, 0.0, 0.1)qkv_bias: list[bool] | tuple[bool, ...] = (True, True, True)cls_token: list[bool] | tuple[bool, ...] = (False, False, True)qkv_projection_method: list[str] | tuple[str, ...] = ('dw_bn', 'dw_bn', 'dw_bn')kernel_qkv: list[int] | tuple[int, ...] = (3, 3, 3)padding_kv: list[int] | tuple[int, ...] = (1, 1, 1)stride_kv: list[int] | tuple[int, ...] = (2, 2, 2)padding_q: list[int] | tuple[int, ...] = (1, 1, 1)stride_q: list[int] | tuple[int, ...] = (1, 1, 1)initializer_range: float = 0.02layer_norm_eps: float = 1e-12 )

パラメータ

  • num_channels (int、任意、デフォルトは3) — 入力チャネル数。
  • patch_sizes (Union[list[int], tuple[int, ...]]、任意、デフォルトは (7, 3, 3)) — モデルの各ステージにおけるパッチサイズです。
  • patch_stride (list[int]、任意、デフォルトは [4, 2, 2]) — 各エンコーダーの patch embedding の stride サイズです。
  • patch_padding (list[int]、任意、デフォルトは [2, 1, 1]) — 各エンコーダーのパッチ埋め込みのパディングサイズです。
  • embed_dim (Union[list[int], tuple[int, ...]]、任意、デフォルトは(64, 192, 384)) — 埋め込みおよび隠れ状態の次元数。
  • num_heads (Union[list[int], tuple[int, ...]]、任意、デフォルトは (1, 3, 6)) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • depth (list[int]、任意、デフォルトは [1, 2, 10]) — 各エンコーダーブロックの層数です。
  • mlp_ratio (Union[list[float], tuple[float, ...]]、省略可、デフォルトは(4.0, 4.0, 4.0)) — MLPの隠れ層の次元と埋め込み次元の比率です。
  • attention_drop_rate (list[float]、任意、デフォルトは [0.0, 0.0, 0.0]) — アテンション確率のドロップアウト率です。
  • drop_rate (list[float]、任意、デフォルトは [0.0, 0.0, 0.0]) — パッチ埋め込みのドロップアウト率です。
  • drop_path_rate (Union[list[float], tuple[float, ...]]、省略可、デフォルトは(0.0, 0.0, 0.1)) — パッチ融合におけるドロップパス率。
  • qkv_bias (Union[list[bool], tuple[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]) — Attention レイヤーにおける query、key、value のカーネルサイズ
  • padding_kv (list[int]、任意、デフォルトは [1, 1, 1]) — Attention レイヤーにおける key と value の padding サイズです。
  • stride_kv (list[int]、任意、デフォルトは [2, 2, 2]) — アテンション層におけるキーとバリューのストライドサイズです。
  • padding_q (list[int]、任意、デフォルトは [1, 1, 1]) — attention レイヤーにおけるクエリのパディングサイズ
  • stride_q (list[int]、任意、デフォルトは [1, 1, 1]) — アテンション層におけるクエリのストライドサイズ
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • layer_norm_eps (float、任意、デフォルトは 1e-12) — レイヤーノーマル層で使用する epsilon です。

これは CvtModel の設定を保存するための設定クラスです。指定された引数に基づいて 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

CvtModel

class transformers.CvtModel

< >

( config: CvtConfigadd_pooling_layer = True )

パラメータ

  • config (CvtConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
  • add_pooling_layer (bool、省略可、デフォルトはTrue) — プーリング層を追加するかどうか

特定のヘッドを付加せず、生のhidden-statesを出力する素のCvt Model。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithCLSToken or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は ConvNextImageProcessor を使用して取得できます。詳細については ConvNextImageProcessor.call() を参照してください(processor_class は画像の処理に ConvNextImageProcessor を使用します)。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

BaseModelOutputWithCLSToken または tuple(torch.Tensor)

BaseModelOutputWithCLSToken、またはtorch.Tensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(CvtConfig)や入力に応じて、さまざまな要素で構成されます。

CvtModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルの最終層の出力における隠れ状態のシーケンス。

  • cls_token_value (torch.Tensor、形状 (batch_size, 1, hidden_size)) — モデルの最終層の出力にある分類トークン。

  • hidden_states (tuple[torch.Tensor, ...]、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。

CvtForImageClassification

クラス transformers.CvtForImageClassification

< >

( config: CvtConfig )

パラメータ

  • config (CvtConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

Cvt Model は、最終的な隠れ状態の [CLS] トークンの上に線形層を配置した画像分類ヘッドを備えた transformer です。ImageNet などの用途に使用できます。

このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = Noneoutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → ImageClassifierOutputWithNoAttention or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は ConvNextImageProcessor を使用して取得できます。詳細については ConvNextImageProcessor.call() を参照してください(processor_class は画像の処理に ConvNextImageProcessor を使用します)。
  • labels (torch.LongTensor、shape (batch_size,)、任意) — 画像分類/回帰の損失を計算するためのラベル。インデックスは [0, ..., config.num_labels - 1] の範囲である必要があります。config.num_labels == 1 の場合は回帰損失(平均二乗誤差)が計算され、config.num_labels > 1 の場合は分類損失(クロスエントロピー)が計算されます。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

ImageClassifierOutputWithNoAttention または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または ImageClassifierOutputWithNoAttention。設定(CvtConfig)と入力に応じて、さまざまな要素で構成されます。

CvtForImageClassificationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなくModuleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。

  • loss (torch.Tensor、shape (1,)、optional、labels が指定された場合に返されます) — 分類損失(config.num_labels==1 の場合は回帰損失)。
  • logits (torch.Tensor、形状 (batch_size, config.num_labels)) — SoftMax 適用前の分類(または config.num_labels==1 の場合は回帰)スコア。
  • hidden_states (tuple(torch.Tensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各ステージの出力がそれぞれ 1 つずつ)で、形状は (batch_size, num_channels, height, width) です。各ステージの出力におけるモデルの隠れ状態(特徴マップとも呼ばれます)。

例:

>>> 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])
...
Update on GitHub