Transformers documentation

RegNet

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

and get access to the augmented documentation experience

to get started

このモデルは2020年3月30日にHF papersで公開され、2022年4月7日にHugging Face Transformersに貢献されました。

RegNet

概要

RegNetモデルは、Ilija Radosavovic、Raj Prateek Kosaraju、Ross Girshick、Kaiming He、Piotr Dollár による Designing Network Design Spaces で提案されました。

著者らは、ニューラルアーキテクチャサーチ(NAS)を実行するための探索空間を設計しています。まず高次元の探索空間から始め、現在の探索空間によってサンプリングされた最も性能の高いモデルに基づいて経験的に制約を適用することで、探索空間を反復的に縮小していきます。

論文の抄録は以下の通りです。

本研究では、新しいネットワーク設計のパラダイムを提案します。私たちの目標は、ネットワーク設計に関する理解を深め、さまざまな設定で汎用性のある設計原則を発見することです。個々のネットワークインスタンスの設計に焦点を当てるのではなく、ネットワークの集団をパラメータ化するネットワーク設計空間を設計します。全体のプロセスは、ネットワークの従来の手動設計に類似していますが、設計空間レベルにまで拡張されています。当社の手法を用いてネットワーク設計の構造の側面を探索し、RegNet と呼ばれる単純で規則的なネットワークからなる低次元の設計空間に到達しました。RegNet パラメータ化のコアとなる洞察は驚くほどシンプルです。優れたネットワークの幅と深さは、量子化された線形関数で説明できます。RegNet の設計空間を分析した結果、現在のネットワーク設計の実践と一致しない興味深い知見が得られました。RegNet の設計空間は、幅広い FLOP レジームで良好に動作する、シンプルで高速なネットワークを提供します。同様のトレーニング設定と FLOP 数において、RegNet モデルは人気のある EfficientNet モデルよりも高性能であり、GPU 上では最大 5 倍高速です。

このモデルはFrancescoによって提供されました。元のコードはこちらで確認できます。

The huge 10B model from Self-supervised Pretraining of Visual Features in the Wild, trained on one billion Instagram images, is available on the hub

リソース

RegNetの入門を支援するための、Hugging Face公式およびコミュニティ(🌎で示す)のリソースのリストです。

Image Classification

ここにリソースを掲載していただくことを希望される場合は、Pull Request を開いてください。レビューいたします。リソースは、既存のリソースと重複するのではなく、新しいものを示すことが望ましいです。

RegNetConfig

クラス transformers.RegNetConfig

< >

( 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 = 3embedding_size: int = 32hidden_sizes: list[int] | tuple[int, ...] = (128, 192, 512, 1088)depths: list[int] | tuple[int, ...] = (2, 6, 12, 2)groups_width: int = 64layer_type: str = 'y'hidden_act: str = 'relu'downsample_in_first_stage: bool = True )

パラメータ

  • num_channels (int、任意、デフォルトは3) — 入力チャネル数。
  • embedding_size (int、任意、デフォルトは 32) — 埋め込みおよび隠れ状態の次元数。
  • hidden_sizes (Union[list[int], tuple[int, ...]]、任意、デフォルトは(128, 192, 512, 1088)) — モデルの各ステージにおける次元数(隠れサイズ)。
  • depths (Union[list[int], tuple[int, ...]]、任意、デフォルトは (2, 6, 12, 2)) — Transformer の各層の深さです。
  • groups_width (int、省略可、デフォルトは 64) — 各ステージのグループの幅です。
  • layer_type (str, optional, defaults to "y") — The layer to use, it can be either "x" or “y”. An xlayer is a ResNet's BottleNeck layer withreductionfixed to1. While a ylayer is ax` but with squeeze and excitation. Please refer to the paper for a detailed explanation of how these layers were constructed.
  • hidden_act (str、任意、デフォルトは relu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • downsample_in_first_stage (bool、省略可、デフォルトはFalse) — Trueの場合、最初のステージではstrideが2のダウンサンプリングによって入力を縮小します。

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

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

例:

>>> from transformers import RegNetConfig, RegNetModel

>>> # Initializing a RegNet regnet-y-40 style configuration
>>> configuration = RegNetConfig()
>>> # Initializing a model from the regnet-y-40 style configuration
>>> model = RegNetModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.config

RegNetModel

クラス transformers.RegNetModel

< >

( config: RegNetConfig )

パラメータ

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

特定のヘッドを付加せず、生のhidden-statesを出力する素のRegnetモデル。

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

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

forward

< >

( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BaseModelOutputWithPoolingAndNoAttention or tuple(torch.FloatTensor)

パラメータ

  • 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 を返すかどうか。

戻り値

BaseModelOutputWithPoolingAndNoAttention または tuple(torch.FloatTensor)

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

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

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

  • last_hidden_state (torch.FloatTensor、shape (batch_size, num_channels, height, width)) — モデルの最終層の出力における隠れ状態のシーケンス。

  • pooler_output (torch.FloatTensor、shape (batch_size, hidden_size)) — 空間次元に対するプーリング操作を行った後の、最終層の隠れ状態です。

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

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

例:

RegNetForImageClassification

class transformers.RegNetForImageClassification

< >

( config: RegNetConfig )

パラメータ

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

画像分類ヘッド(プーリングされた特徴量の上に線形層を配置したもの)を備えたRegNetモデル。例えば、ImageNet向けに使用します。

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

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

forward

< >

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

パラメータ

  • pixel_values (torch.FloatTensor、形状 (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 の場合、分類損失(Cross-Entropy)が計算されます。
  • output_hidden_states (bool, 省略可) — すべての層の hidden states を返すかどうかを指定します。詳細は、返されるテンソルの hidden_states を参照してください。
  • return_dict (bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。

戻り値

ImageClassifierOutputWithNoAttention または tuple(torch.FloatTensor)

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

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

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

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

例:

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

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

>>> image_processor = AutoImageProcessor.from_pretrained("facebook/regnet-y-040")
>>> model = RegNetForImageClassification.from_pretrained("facebook/regnet-y-040")

>>> 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