Transformers documentation

Swin Transformer

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月25日にHF papersで公開され、2022年1月21日にHugging Face Transformersに貢献されました。

Swin Transformer

Swin Transformer は階層型ビジョン・トランスフォーマーです。画像はパッチ単位で処理され、ウィンドウ付き自己注意機構を用いて局所情報を捉えます。これらのウィンドウは画像上でシフトされることでウィンドウ間の接続を可能にし、より効率的にグローバル情報を捉えます。このシフト付きウィンドウを用いた階層型アプローチにより、Swin Transformer は異なるスケールで画像を効果的に処理でき、画像サイズに対する線形計算複雑性を達成します。これにより、画像分類や物体検出など、さまざまなビジョンタスクに適用可能な多用途なバックボーンとして機能します。

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

右側のサイドバーにあるSwin Transformerモデルをクリックすると、Swin Transformerをさまざまな画像タスクに適用する方法の追加例を確認できます。

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

パイプライン
AutoModel
from transformers import pipeline


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

注記

  • Swin は、32で割り切れる任意の幅と高さのインプットに対して、パディングを適用できます。
  • Swin は backbone として使用できます。output_hidden_states = True の場合、hidden_states と reshaped_hidden_states の両方を出力します。reshaped_hidden_states の形状は (batch_size, sequence_length, num_channels) ではなく、(batch, num_channels, height, width) になります。

SwinConfig

class transformers.SwinConfig

< >

( 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 = Noneimage_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 4num_channels: int = 3embed_dim: int = 96depths: list[int] | tuple[int, ...] = (2, 2, 6, 2)num_heads: list[int] | tuple[int, ...] = (3, 6, 12, 24)window_size: int = 7mlp_ratio: float | int = 4.0qkv_bias: bool = Truehidden_dropout_prob: float | int = 0.0attention_probs_dropout_prob: float | int = 0.0drop_path_rate: float | int = 0.1hidden_act: str = 'gelu'use_absolute_embeddings: bool = Falseinitializer_range: float = 0.02layer_norm_eps: float = 1e-05encoder_stride: int = 32_out_features: list[str] | None = None_out_indices: list[int] | None = None )

パラメータ

  • image_size (Union[int, list[int], tuple[int, int]]、任意、デフォルトは224) — 各画像のサイズ(解像度)。
  • patch_size (Union[int, list[int], tuple[int, int]]、省略可、デフォルトは4) — 各パッチのサイズ(解像度)です。
  • num_channels (int、任意、デフォルトは3) — 入力チャネル数。
  • embed_dim (int、任意、デフォルトは96) — 埋め込みおよび隠れ状態の次元数。
  • depths (list(int)、任意、デフォルトは [2, 2, 6, 2]) — Transformerエンコーダーの各層の深さです。
  • num_heads (list(int)、任意、デフォルトは [3, 6, 12, 24]) — Transformerエンコーダーの各層におけるアテンションヘッドの数です。
  • window_size (int、任意、デフォルトは 7) — ウィンドウのサイズ。
  • mlp_ratio (Union[float, int]、任意、デフォルトは 4.0) — MLP の隠れ層次元と埋め込み次元の比率。
  • qkv_bias (bool、省略可、デフォルトは True) — クエリ、キー、バリューにバイアスを追加するかどうか。
  • hidden_dropout_prob (Union[float, int]、任意、デフォルト値は0.0) — embeddings、encoder、pooler 内のすべての全結合層における dropout 確率です。
  • attention_probs_dropout_prob (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • drop_path_rate (Union[float, int]、省略可、デフォルトは 0.1) — パッチ融合におけるドロップパス率。
  • hidden_act (str、任意、デフォルトは gelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • use_absolute_embeddings (bool、任意、デフォルトは False) — 絶対位置埋め込みを使用するかどうか。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • layer_norm_eps (float、任意、デフォルトは 1e-05) — レイヤーノーマル層で使用する epsilon です。
  • encoder_stride (int、任意、デフォルトは 32) — マスクドイメージモデリングにおいて、デコーダーヘッドで空間解像度を上げるための倍率。

これは SwinModel の設定を保存するための設定クラスです。指定された引数に基づいて Swin モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、microsoft/swin-tiny-patch4-window7-224 と同様の設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

例:

>>> from transformers import SwinConfig, SwinModel

>>> # Initializing a Swin microsoft/swin-tiny-patch4-window7-224 style configuration
>>> configuration = SwinConfig()

>>> # Initializing a model (with random weights) from the microsoft/swin-tiny-patch4-window7-224 style configuration
>>> model = SwinModel(configuration)

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

SwinModel

クラス transformers.SwinModel

< >

( config: SwinConfigadd_pooling_layer = Trueuse_mask_token = False )

パラメータ

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

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

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonebool_masked_pos: typing.Optional[torch.BoolTensor] = Noneinterpolate_pos_encoding: bool = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SwinModelOutput or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は ViTImageProcessor を使用して取得できます。詳細については ViTImageProcessor.call() を参照してください(processor_class は画像の処理に ViTImageProcessor を使用します)。
  • bool_masked_pos (torch.BoolTensor、shape (batch_size, num_patches)、任意) — Boolean masked positions。どの patch がマスクされているか(1)、されていないか(0)を示します。
  • interpolate_pos_encoding (bool、省略可、デフォルトはFalse) — 事前学習済みの位置エンコーディングを補間するかどうかを指定します。

戻り値

SwinModelOutput または tuple(torch.Tensor)

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

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

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

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

  • pooler_output (torch.Tensor、形状 (batch_size, hidden_size)、任意、add_pooling_layer=True が渡された場合に返されます) — 最終層の隠れ状態の平均プーリング。

  • 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、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • reshaped_hidden_states (tuple(torch.Tensor)、任意、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込みの出力用 1 つ + 各ステージの出力用 1 つ)、形状は (batch_size, hidden_size, height, width)。

    各層の出力におけるモデルのHidden-states、および空間次元を含むように整形された初期埋め込み出力。

例:

SwinForMaskedImageModeling

class transformers.SwinForMaskedImageModeling

< >

( config: SwinConfig )

パラメータ

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

SimMIMで提案された、マスクドイメージモデリングのために上部にデコーダーを備えたSwinモデル。

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonebool_masked_pos: typing.Optional[torch.BoolTensor] = Noneinterpolate_pos_encoding: bool = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SwinMaskedImageModelingOutput or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は ViTImageProcessor を使用して取得できます。詳細については ViTImageProcessor.call() を参照してください(processor_class は画像の処理に ViTImageProcessor を使用します)。
  • bool_masked_pos (torch.BoolTensor、shape (batch_size, num_patches)) — Boolean 型のマスク位置。どのパッチがマスクされているか(1)、されていないか(0)を示します。
  • interpolate_pos_encoding (bool、省略可、デフォルトはFalse) — 事前学習済みの位置エンコーディングを補間するかどうかを指定します。

戻り値

SwinMaskedImageModelingOutput または tuple(torch.Tensor)

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

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

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

  • loss (torch.Tensor、形状 (1,)、任意、bool_masked_pos が指定された場合に返されます) — マスクドイメージモデリング (MLM) の損失。

  • reconstruction (torch.Tensor、形状 (batch_size, num_channels, height, width)) — 再構成されたピクセル値。

  • 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、および任意の初期埋め込み出力。

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • reshaped_hidden_states (tuple(torch.Tensor)、任意、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込みの出力用 1 つ + 各ステージの出力用 1 つ)、形状は (batch_size, hidden_size, height, width)。

    各層の出力におけるモデルのHidden-states、および空間次元を含むように整形された初期埋め込み出力。

例:

>>> from transformers import AutoImageProcessor, SwinForMaskedImageModeling
>>> import torch
>>> from PIL import Image
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO

>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
...     image = Image.open(BytesIO(response.read()))

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-base-simmim-window6-192")
>>> model = SwinForMaskedImageModeling.from_pretrained("microsoft/swin-base-simmim-window6-192")

>>> num_patches = (model.config.image_size // model.config.patch_size) ** 2
>>> pixel_values = image_processor(images=image, return_tensors="pt").pixel_values
>>> # create random boolean mask of shape (batch_size, num_patches)
>>> bool_masked_pos = torch.randint(low=0, high=2, size=(1, num_patches)).bool()

>>> outputs = model(pixel_values, bool_masked_pos=bool_masked_pos)
>>> loss, reconstructed_pixel_values = outputs.loss, outputs.reconstruction
>>> list(reconstructed_pixel_values.shape)
[1, 3, 192, 192]

SwinForImageClassification

クラス transformers.SwinForImageClassification

< >

( config: SwinConfig )

パラメータ

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

Swin Modelは、[CLS]トークンの最終的な隠れ状態の上に線形層を配置した画像分類ヘッドを備えたtransformerです(例: ImageNet)。

モデルの forward で interpolate_pos_encoding を True に設定することで、Swin を学習時に使用した解像度よりも高い解像度の画像でファインチューニングすることが可能です。これにより、事前学習済みの位置埋め込みがより高い解像度に補間されます。

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneinterpolate_pos_encoding: bool = False**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SwinImageClassifierOutput or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は ViTImageProcessor を使用して取得できます。詳細については ViTImageProcessor.call() を参照してください(processor_class は画像の処理に ViTImageProcessor を使用します)。
  • labels (torch.LongTensor、shape (batch_size,)、任意) — 画像分類/回帰の損失を計算するためのラベル。インデックスは [0, ..., config.num_labels - 1] の範囲である必要があります。config.num_labels == 1 の場合は回帰損失(平均二乗誤差)が計算され、config.num_labels > 1 の場合は分類損失(クロスエントロピー)が計算されます。
  • interpolate_pos_encoding (bool、省略可、デフォルトはFalse) — 事前学習済みの位置エンコーディングを補間するかどうかを指定します。

戻り値

SwinImageClassifierOutput または tuple(torch.Tensor)

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

SwinForImageClassificationの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, sequence_length, hidden_size) です。

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

  • attentions (tuple[torch.Tensor, ...]、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • reshaped_hidden_states (tuple(torch.Tensor)、任意、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込みの出力用 1 つ + 各ステージの出力用 1 つ)、形状は (batch_size, hidden_size, height, width)。

    各層の出力におけるモデルのHidden-states、および空間次元を含むように整形された初期埋め込み出力。

例:

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")
>>> model = SwinForImageClassification.from_pretrained("microsoft/swin-tiny-patch4-window7-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])
...
Update on GitHub