Transformers documentation
HGNet-V2
このモデルは2025年4月29日にHugging Face Transformersに貢献されました。
HGNet-V2
HGNetV2 は、NVIDIA GPU 上で精度とレイテンシの最適なトレードオフを実現するために構築された次世代の畳み込みニューラルネットワーク(CNN)バックボーンです。オリジナルのHGNet を基盤として、HGNetV2 は高速な推論速度で高い精度を達成し、画像分類、物体検出、セグメンテーションなどのタスクで優れたパフォーマンスを発揮します。そのため、GPU ベースのコンピュータビジョンアプリケーションにおいて実用的な選択肢となります。
すべてのオリジナルのHGNet V2モデルは、USTC組織の下で確認できます。
このモデルは VladOS95-cyber によって提供されました。 HGNet V2 をさまざまなコンピュータビジョンタスクに適用する方法の例については、右側のサイドバーにある HGNet V2 モデルをクリックしてください。
以下の例では、PipelineまたはAutoModelクラスを使用して画像を分類する方法を示しています。
from transformers import pipeline
pipeline = pipeline(
task="image-classification",
model="ustc-community/hgnet-v2",
device=0
)
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")import requests
import torch
from PIL import Image
from transformers import AutoImageProcessor, HGNetV2ForImageClassification
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(requests.get(url, stream=True).raw)
model = HGNetV2ForImageClassification.from_pretrained("ustc-community/hgnet-v2", device_map="auto")
processor = AutoImageProcessor.from_pretrained("ustc-community/hgnet-v2")
inputs = processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
logits = model(**inputs).logits
predicted_class_id = logits.argmax(dim=-1).item()
class_labels = model.config.id2label
predicted_class_label = class_labels[predicted_class_id]
print(f"The predicted class label is: {predicted_class_label}")HGNetV2Config
class transformers.HGNetV2Config
< source >( 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 = 64depths: list[int] | tuple[int, ...] = (3, 4, 6, 3)hidden_sizes: list[int] | tuple[int, ...] = (256, 512, 1024, 2048)hidden_act: str = 'relu'_out_features: list[str] | None = None_out_indices: list[int] | None = Nonestem_channels: list[int] | tuple[int, ...] = (3, 32, 48)stem_strides: Sequence = (2, 1, 1, 2, 1)stage_in_channels: list[int] | tuple[int, ...] = (48, 128, 512, 1024)stage_mid_channels: list[int] | tuple[int, ...] = (48, 96, 192, 384)stage_out_channels: list[int] | tuple[int, ...] = (128, 512, 1024, 2048)stage_num_blocks: list[int] | tuple[int, ...] = (1, 1, 3, 1)stage_downsample: list[bool] | tuple[bool, ...] = (False, True, True, True)stage_downsample_strides: Sequence = (2, 2, 2, 2)stage_light_block: list[bool] | tuple[bool, ...] = (False, False, True, True)stage_kernel_size: list[int] | tuple[int, ...] = (3, 3, 5, 5)stage_numb_of_layers: list[int] | tuple[int, ...] = (6, 6, 6, 6)use_learnable_affine_block: bool = Falseinitializer_range: float = 0.02 )
パラメータ
- num_channels (
int、任意、デフォルトは3) — 入力チャネル数。 - embedding_size (
int、任意、デフォルトは64) — 埋め込みおよび隠れ状態の次元数。 - depths (
Union[list[int], tuple[int, ...]]、任意、デフォルトは(3, 4, 6, 3)) — Transformer の各層の深さです。 - hidden_sizes (
Union[list[int], tuple[int, ...]]、任意、デフォルトは(256, 512, 1024, 2048)) — モデルの各ステージにおける次元数(隠れサイズ)。 - hidden_act (
str、任意、デフォルトはrelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - stem_channels (
list[int], 省略可, デフォルトは[3, 32, 48]) — stem 層のチャネル次元:- 最初の数値(3)は入力画像のチャネル数です
- 2番目の数値(32)は、中間ステムのチャネル数を表します。
- 3番目の数値(48)は出力ステムのチャネル数です
- stem_strides (
Sequence[int | list[int] | tuple[int, ...]]、任意、デフォルトは(2, 1, 1, 2, 1)) — stem 層のストライドパターンです。 - stage_in_channels (
list[int]、任意、デフォルトは[48, 128, 512, 1024]) — バックボーンの各ステージにおける入力チャネルの次元です。 各ステージへの入力が持つチャネル数を定義します。 - stage_mid_channels (
list[int]、任意、デフォルトは[48, 96, 192, 384]) — バックボーンの各ステージにおける中間チャネルの次元です。 各ステージの中間層で使用するチャネル数を定義します。 - stage_out_channels (
list[int]、任意、デフォルトは[128, 512, 1024, 2048]) — バックボーンの各ステージの出力チャネル次元です。 各ステージの出力が持つチャネル数を定義します。 - stage_num_blocks (
list[int]、任意、デフォルトは[1, 1, 3, 1]) — バックボーンの各ステージで使用するブロックの数です。 畳み込みブロックを何段積み重ねるかによって、各ステージの深さを制御します。 - stage_downsample (
list[bool]、任意、デフォルトは[False, True, True, True]) — 各ステージで特徴マップをダウンサンプルするかどうかを示します。Trueの場合、特徴マップの空間次元が縮小されます。 - stage_downsample_strides (
Sequence[int | list[int] | tuple[int, ...]]、任意、デフォルトは(2, 2, 2, 2)) — 各ステージ層のストライドパターンです。 - stage_light_block (
list[bool]、任意、デフォルトは[False, False, True, True]) — 各ステージでライトブロックを使用するかどうかを示します。 ライトブロックは、パラメータ数が少ない場合のある畳み込みブロックのバリアントです。 - stage_kernel_size (
list[int]、任意、デフォルトは[3, 3, 5, 5]) — 各ステージの畳み込み層におけるカーネルサイズです。 - stage_numb_of_layers (
list[int]、任意、デフォルトは[6, 6, 6, 6]) — ステージの各ブロックで使用するレイヤー数です。 - use_learnable_affine_block (
bool、任意、デフォルトはFalse) — ネットワーク内で Learnable Affine Blocks (LAB) を使用するかどうかを指定します。 LAB は、特定の操作の後に学習可能なスケールとバイアスのパラメータを追加します。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
これは HGNetV2Backbone の設定を保存するための設定クラスです。指定された引数に従って Hgnet V2 モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、ustc-community/dfine_x_coco と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
HGNetV2Backbone
forward
< source >( pixel_values: Tensoroutput_hidden_states: bool | None = Nonereturn_dict: bool | None = None**kwargs ) → BackboneOutput 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 を返すかどうかを指定します。詳細は、返されるテンソルのhidden_statesを参照してください。 - return_dict (
bool, 任意) — プレーンなタプルではなく ModelOutput を返すかどうか。
戻り値
BackboneOutput または tuple(torch.FloatTensor)
BackboneOutput、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(HGNetV2Config)と入力に応じて、さまざまな要素で構成されます。
HGNetV2Backboneのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
feature_maps (
tuple(torch.FloatTensor)、形状(batch_size, num_channels, height, width)) — 各ステージのフィーチャマップ。hidden_states (
tuple(torch.FloatTensor)、任意、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます)—torch.FloatTensorのタプル(埋め込みの出力用 1 つ + 各層の出力用 1 つ)。形状は(batch_size, sequence_length, hidden_size)または(batch_size, num_channels, height, width)で、バックボーンによって異なります。各ステージの出力におけるモデルのHidden-states、および初期の埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返される) —torch.FloatTensorのタプル(レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。バックボーンがアテンションを使用する場合にのみ適用されます。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from transformers import HGNetV2Config, HGNetV2Backbone
>>> import torch
>>> config = HGNetV2Config()
>>> model = HGNetV2Backbone(config)
>>> pixel_values = torch.randn(1, 3, 224, 224)
>>> with torch.no_grad():
... outputs = model(pixel_values)
>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 2048, 7, 7]HGNetV2ForImageClassification
class transformers.HGNetV2ForImageClassification
< source >( config: HGNetV2Config )
パラメータ
- config (HGNetV2Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連付けられた重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
画像分類ヘッド(プーリングされた特徴量の上に線形層を配置したもの)を備えたHGNetV2モデル。ImageNetなどでの使用例です。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( 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)、任意) — 入力画像に対応するテンソルです。ピクセル値はimage_processor_classを使用して取得できます。詳細はimage_processor_class.__call__を参照してください(processor_classは画像の処理にimage_processor_classを使用します)。 - 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.FloatTensor)
torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)、または ImageClassifierOutputWithNoAttention。設定(HGNetV2Config)や入力に応じて、さまざまな要素で構成されます。
HGNetV2ForImageClassification の 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)です。各ステージの出力におけるモデルの隠れ状態(特徴マップとも呼ばれる)です。
例:
>>> import torch
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from transformers import HGNetV2ForImageClassification, AutoImageProcessor
>>> from PIL import Image
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> with httpx.stream("GET", url) as response:
... image = Image.open(BytesIO(response.read()))
>>> model = HGNetV2ForImageClassification.from_pretrained("ustc-community/hgnet-v2")
>>> processor = AutoImageProcessor.from_pretrained("ustc-community/hgnet-v2")
>>> inputs = processor(images=image, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> outputs.logits.shape
torch.Size([1, 2])