Transformers documentation

DETR

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2020年5月26日にHF papersで公開され、2021年6月9日にHugging Face Transformersに貢献されました。

DETR

DETRは、畳み込みバックボーンにエンコーダー・デコーダー型 Transformer を接続した構成で、オブジェクト検出をエンドツーエンドで学習できます。Faster-R-CNN や Mask-R-CNN のようなモデルは、リージョン提案、非最大値抑制、アンカー生成などの複雑な要素を含んでいますが、DETR はこれらを大幅に簡素化します。さらに、デコーダーの出力上にマスクヘッドを付加するだけで、パノプティックセグメンテーションにも自然に拡張できます。

すべてのオリジナルのDETRチェックポイントは、AI at Meta組織の下で確認できます。

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

DETR を異なるオブジェクト検出やセグメンテーションタスクに適用する方法の例については、右側のサイドバーにある DETR モデルをクリックしてください。

use_kernels=True を from_pretrained() に設定すると、対応するレイヤーが Hub からの最適化されたカーネルに置き換えられます。詳細は カーネルの読み込み を参照してください。

以下の例では、PipelineまたはAutoModelクラスを使用してオブジェクト検出を実行する方法を示しています。

パイプライン
AutoModel

from transformers import pipeline


pipeline = pipeline(
    "object-detection",
    model="facebook/detr-resnet-50",
    device_map=0
)

pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")
How DETR works

DetrForObjectDetection の動作を簡単に説明します:

まず、画像は事前学習済みの畳み込みバックボーン(論文では著者がResNet-50/ResNet-101を使用)に送られます。ここでは、バッチ次元も追加したと仮定します。つまり、画像が3つのカラーチャネル(RGB)を持つと仮定すると、バックボーンへの入力は(batch_size, 3, height, width)の形状のテンソルです。CNNバックボーンは、通常(batch_size, 2048, height/32, width/32)の形状の、より低い解像度の新しい特徴マップを出力します。これは、nn.Conv2D層を使用して、DETRのTransformerの隠れ次元(デフォルトでは256)に一致するように射影されます。したがって、現在(batch_size, 256, height/32, width/32).の形状のテンソルを持っています。次に、特徴マップをフラット化して転置し、(batch_size, seq_len, d_model) = (batch_size, width/32*height/32, 256)の形状のテンソルを取得します。したがって、NLPモデルとの違いとして、シーケンス長は通常より長くなりますが、d_modelは小さくなります(NLPでは通常768以上です)。

次に、エンコーダーに送信され、同じ形状のencoder_hidden_states(これらは画像の特徴量とみなすことができます)が出力されます。次に、いわゆるobject queriesがデコーダーに送信されます。これは形状(batch_size, num_queries, d_model)のテンソルで、num_queriesは通常100に設定され、ゼロで初期化されます。これらの入力埋め込みは、著者がobject queriesと呼ぶ学習された位置エンコーディングであり、エンコーダーと同様に、各アテンション層の入力に追加されます。各object queryは、画像内の特定のオブジェクトを探します。デコーダーは、複数の自己アテンション層とエンコーダー-デコーダーアテンション層を通じてこれらの埋め込みを更新し、同じ形状(batch_size, num_queries, d_model)のdecoder_hidden_statesを出力します。次に、オブジェクト検出のために2つのヘッドが追加されます。1つは各object queryをオブジェクトのいずれかまたは「no object」に分類するための線形層、もう1つは各クエリに対するバウンディングボックスを予測するためのMLPです。

モデルは二部マッチング損失を用いて学習されます。具体的には、N = 100 のオブジェクトクエリそれぞれについて、予測されたクラスとバウンディングボックスを、同じ長さ N にパディングされた正解アノテーションと比較します(画像に4つのオブジェクトしか含まれない場合、残りの96件のアノテーションはクラスが「オブジェクトなし」、バウンディングボックスが「バウンディングボックスなし」となります)。ハンガリアンマッチングアルゴリズムを使用して、N 個のクエリと N 個のアノテーションの間の最適な 1 対 1 の対応付けを見つけます。その後、クラスについては標準的なクロスエントロピー、バウンディングボックスについては L1 と汎用 IoU 損失の線形結合を用いて、モデルのパラメータを最適化します。

DETRは、パノプティックセグメンテーション(セマンティックセグメンテーションとインスタンスセグメンテーションを統合する手法)を実行するように自然に拡張できます。DetrForSegmentationは、DetrForObjectDetectionの上にセグメンテーションマスクヘッドを追加します。マスクヘッドは、共同学習するか、2段階のプロセスで学習するかのいずれかの方法で学習できます。2段階のプロセスでは、まず「things」(インスタンス)と「stuff」(木々、道路、空などの背景物)の両方の周りにバウンディングボックスを検出するようにDetrForObjectDetectionモデルを学習し、その後、すべての重みを凍結してマスクヘッドのみを25エポック間学習します。実験的に、これらの2つのアプローチは類似した結果をもたらします。ハンガリアンマッチングはボックス間の距離を使用して計算されるため、ボックスの予測が学習を可能にするために必要である点に注意してください。

注記

  • DETR は、いわゆる object queries を用いて画像内のオブジェクトを検出します。クエリの数は、1 枚の画像で検出できるオブジェクトの最大数を決定し、デフォルトでは 100 に設定されています(DetrConfig のパラメータ num_queries を参照)。COCO では著者が 100 を使用していますが、COCO 画像におけるオブジェクトの最大数は約 70 であるため、ある程度の余裕を持たせておくことが望ましい点に注意してください。
  • DETRのデコーダーは、クエリ埋め込みを並列に更新します。これは、GPT-2のような言語モデルとは異なり、それらは並列ではなく自己回帰デコーディングを使用します。したがって、因果的アテンションマスクは使用されません。
  • DETR は、クエリとキーへ射影する前に、各自己注意層と相互注意層の隠れ状態に位置埋め込みを加えます。画像の位置埋め込みについては、固定の正弦波型または学習された絶対位置埋め込みのいずれかを選択できます。デフォルトでは、DetrConfig のパラメータ position_embedding_type は "sine" に設定されています。
  • 学習中、DETR の著者らは、特に各クラスの正しい数のオブジェクトをモデルが出力するのを助けるために、デコーダーで補助損失を使用することが有効であることを発見しました。DetrConfig のパラメータ auxiliary_loss を True に設定すると、各デコーダー層の後に予測フィードフォワードニューラルネットワークとハンガリー損失が追加されます(FFN はパラメータを共有します)。
  • モデルを複数ノードにまたがる分散環境で学習する場合、modeling_detr.py の DetrLoss クラス内の num_boxes 変数を更新する必要があります。複数ノードでの学習では、こちらの元の実装に示されているように、この値を全ノードにわたるターゲットボックスの平均数に設定します。
  • DetrForObjectDetection と DetrForSegmentation は、timm library で利用可能な任意の畳み込みバックボーンで初期化できます。例えば、MobileNet バックボーンで初期化するには、DetrConfig の backbone 属性を "tf_mobilenetv3_small_075" に設定し、その設定でモデルを初期化します。
  • DETRは、最短辺が一定のピクセル数以上、かつ最長辺が1333ピクセル以下になるように入力画像をリサイズします。学習時にはスケール拡張が使用され、最短辺は480ピクセル以上800ピクセル以下の範囲でランダムに設定されます。推論時には、最短辺は800ピクセルに設定されます。DetrImageProcessorを使用して、モデル用の画像(およびCOCO形式の任意のアノテーション)を準備できます。このリサイズにより、バッチ内の画像サイズが異なる場合があります。DETRは、バッチ内の最大サイズまで画像をパディングし、どのピクセルが実データでどのピクセルがパディングであるかを示すピクセルマスクを作成することで、この問題を解決します。あるいは、~transformers.DetrImageProcessor.pad_and_create_pixel_maskを使用して画像をバッチ化するカスタムのcollate_fnを定義することもできます。
  • 画像のサイズが使用されるメモリ量を決定し、ひいてはbatch_sizeを決定します。GPUあたりバッチサイズ2の使用を推奨します。詳細はこのGithubスレッドを参照してください。

DETRモデルをインスタンス化するには、以下の3つの方法があります(お好みの方法をお選びください):

  • オプション1: 事前学習済み重みを使用して、モデル全体をDETRとしてインスタンス化
from transformers import DetrForObjectDetection


model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", device_map="auto")
  • オプション2: Transformerにはランダム初期化された重みを、バックボーンには事前学習済み重みを設定してDETRをインスタンス化
from transformers import DetrConfig, DetrForObjectDetection


config = DetrConfig()
model = DetrForObjectDetection(config)
  • オプション3: バックボーンとTransformerの重みをランダム初期化してDETRをインスタンス化
config = DetrConfig()
model = DetrForObjectDetection(config)

まとめとして、以下の表を参照してください。

タスクオブジェクト検出インスタンスセグメンテーションパンセグメンテーション
説明画像内のオブジェクトの周囲にバウンディングボックスとクラスラベルを予測します画像内のオブジェクト(つまりインスタンス)の周囲のマスクを予測する画像内の両方のオブジェクト(つまりインスタンス)および「stuff」(つまり木や道路などの背景)の周囲のマスクを予測します
モデルDetrForObjectDetectionDetrForSegmentationDetrForSegmentation
データセットの例COCO検出COCO検出、COCOパンノミックCOCO パノプティック
に渡すアノテーションの形式 DetrImageProcessor{‘image_id’: int, ‘annotations’: list[Dict]} 各 Dict は COCO オブジェクトアノテーションです{‘image_id’: int, ‘annotations’: list[Dict]}(COCO検出の場合)または {‘file_name’: str, ‘image_id’: int, ‘segments_info’: list[Dict]}(COCOパンノプティックの場合){‘file_name’: str、‘image_id’: int、‘segments_info’: list[Dict]} および masks_path(マスクの PNG ファイルを含むディレクトリへのパス)
後処理(モデルの出力をPascal VOC形式に変換すること)~transformers.DetrImageProcessor.post_process~transformers.DetrImageProcessor.post_process_segmentation~transformers.DetrImageProcessor.post_process_segmentation, ~transformers.DetrImageProcessor.post_process_panoptic
評価器iou_types="bbox" を使用した CocoEvaluatorCocoEvaluator を iou_types="bbox" または "segm" でCocoEvaluator(iou_types="bbox"または"segm")、PanopticEvaluator
  • 要するに、データは COCO detection 形式または COCO panoptic 形式で用意し、DetrImageProcessor を使用して pixel_values、pixel_mask および任意の labels を作成します。これらはモデルの学習(またはファインチューニング)に使用できます。
  • 評価を行うには、まずDetrImageProcessorのポストプロセッシングメソッドのいずれかを使用して、モデルの出力を変換する必要があります。変換後の出力は、CocoEvaluatorまたはPanopticEvaluatorに渡すことができ、これらを用いて平均平均精度(mAP)やPanoptic Quality(PQ)などのメトリクスを計算できます。後者のオブジェクトは元のリポジトリに実装されています。評価に関する詳細は、サンプルノートブックを参照してください。

リソース

DetrConfig

クラス transformers.DetrConfig

< >

( 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonenum_channels: int = 3num_queries: int = 100encoder_layers: int = 6encoder_ffn_dim: int = 2048encoder_attention_heads: int = 8decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 8encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0activation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02init_xavier_std: float = 1.0auxiliary_loss: bool = Falseposition_embedding_type: str = 'sine'dilation: bool = Falseclass_cost: int = 1bbox_cost: int = 5giou_cost: int = 2mask_loss_coefficient: int = 1dice_loss_coefficient: int = 1bbox_loss_coefficient: int = 5giou_loss_coefficient: int = 2eos_coefficient: float = 0.1 )

パラメータ

  • is_encoder_decoder (bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。
  • backbone_config (Union[dict, ~configuration_utils.PreTrainedConfig], 任意) — バックボーンモデルの設定です。
  • num_channels (int、任意、デフォルトは3) — 入力チャネル数。
  • num_queries (int、任意、デフォルトは 100)— オブジェクトクエリ数、すなわち検出スロットの数です。これは、ConditionalDetrModel が 1 枚の画像内で検出できるオブジェクトの最大数を示します。COCO の場合は、100 クエリを推奨します。
  • encoder_layers (int、任意、デフォルトは 6) — Transformer エンコーダーの隠れ層の数です。設定されていない場合は、num_layers と同じ値が使用されます。
  • encoder_ffn_dim (int、任意、デフォルトは 2048) — エンコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。
  • encoder_attention_heads (int、任意、デフォルトは 8) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。
  • decoder_layers (int、任意、デフォルトは 6) — Transformer デコーダーの隠れ層の数です。設定されていない場合、num_layers と同じ値が使用されます。
  • decoder_ffn_dim (int、任意、デフォルトは 2048) — デコーダー内の「中間」(feed-forward と呼ばれることが多い) レイヤーの次元数。
  • decoder_attention_heads (int、任意、デフォルトは8) — Transformerデコーダーの各アテンション層におけるアテンションヘッドの数。
  • encoder_layerdrop (Union[float, int]、任意、デフォルトは 0.0) — エンコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • decoder_layerdrop (Union[float, int]、省略可、デフォルト値は 0.0) — デコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • activation_function (str、任意、デフォルトは relu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu" など。
  • d_model (int、省略可、デフォルトは 256) — エンコーダ層とプーラ層のサイズ。
  • dropout (Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • activation_dropout (Union[float, int]、任意、デフォルトは 0.0) — 全結合層内の活性化に対する dropout 率です。
  • init_std (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • init_xavier_std (float、任意、デフォルトは 1.0) — クロスアテンションの重みの Xavier 初期化に使用されるスケーリング係数です。
  • auxiliary_loss (bool、任意、デフォルトは False) — 補助デコーディング損失(各デコーダ層での損失)を使用するかどうかを指定します。
  • position_embedding_type (str, 任意、デフォルトは "sine") — 画像特徴の上に適用する位置埋め込みの種類。"sine" または "learned" のいずれかです。
  • dilation (bool、任意、デフォルトは False) — 最後の畳み込みブロック(DC5)で stride の代わりに dilation を使用するかを指定します。use_timm_backbone = True の場合のみサポートされます。
  • class_cost (int、省略可能、デフォルトは 1) — ハンガリー法によるマッチングコストにおける、分類誤差の相対的な重み。
  • bbox_cost (int、任意、デフォルトは 5) — ハンガリー法によるマッチングコストにおける、L1バウンディングボックス誤差の相対的な重みです。
  • giou_cost (int、任意、デフォルト値は 2) — ハンガリー法によるマッチングコストにおける、汎化 IoU ロスの相対的な重み。
  • mask_loss_coefficient (int、任意、デフォルトは1) — パノプティックセグメンテーション損失におけるfocal lossの相対的な重み。
  • dice_loss_coefficient (int, 任意、デフォルトは 1) — パンノミックセグメンテーション損失における dice loss の相対的な重み。
  • bbox_loss_coefficient (int、任意、デフォルトは 5) — パノプティックセグメンテーション損失における L1 バウンディングボックス損失の相対的な重み。
  • giou_loss_coefficient (int、任意、デフォルトは 2) — パノラミックセグメンテーション損失における汎化 IoU 損失の相対的な重み。
  • eos_coefficient (float、任意、デフォルトは 0.1) — オブジェクト検出の損失における「no-object」クラスの相対的な分類重み。

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

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

例:

>>> from transformers import DetrConfig, DetrModel

>>> # Initializing a DETR facebook/detr-resnet-50 style configuration
>>> configuration = DetrConfig()

>>> # Initializing a model (with random weights) from the facebook/detr-resnet-50 style configuration
>>> model = DetrModel(configuration)

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

DetrImageProcessor

クラス transformers.DetrImageProcessor

< >

( **kwargs: *<class 'transformers.models.detr.image_processing_detr.DetrImageProcessorKwargs'> )

パラメータ

  • do_convert_rgb (bool、kwargs、任意) — 画像を RGB に変換するかどうかを指定します。
  • do_resize (bool、kwargs、任意、デフォルトはTrue) — 画像をリサイズするかどうか。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs、デフォルトは {'shortest_edge' -- 800, 'longest_edge': 1333}): モデルへの最大入力サイズを指定します。
  • default_to_square (bool、kwargs、任意、デフォルトは False) — size が整数の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop を適用した後の出力画像のサイズ。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, デフォルトは 2) — 画像のリサイズ時に使用するリサンプリングフィルタです。PILImageResampling の列挙型のいずれかを使用できます。do_resize が True に設定されている場合のみ、効果が現れます。
  • do_rescale (bool、kwargs、任意、デフォルトはTrue) — 画像をリスケールするかどうかを指定します。
  • rescale_factor (float、kwargs、任意、デフォルト値は 0.00392156862745098) — do_rescale が True に設定されている場合、画像をリスケールするための係数です。
  • do_normalize (bool、kwargs、optional、デフォルトはTrue) — 画像を正規化するかどうかを指定します。
  • image_mean (Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルト値は [0.485, 0.456, 0.406]) — 正規化に使用する画像の平均値。do_normalize が True に設定されている場合のみ有効です。
  • image_std (Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルト値は [0.229, 0.224, 0.225]) — 正規化に使用する画像の標準偏差。do_normalize が True に設定されている場合のみ有効です。
  • do_pad (bool、kwargs、optional、デフォルトは True) — 画像をパディングするかどうか。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 画像をパディングする {"height": int, "width" int} のサイズです。前処理に提供されるすべての画像サイズより大きくなければなりません。pad_size が指定されない場合、バッチ内の最大の幅と高さにパディングされます。do_pad=True. の場合のみ適用されます。
  • do_center_crop (bool, kwargs, optional) — 画像を中央クロップするかどうかを指定します。
  • data_format (Union[str, ~image_utils.ChannelDimension]、kwargs、任意) — サポートされているのは ChannelDimension.FIRST のみです。slow processors との互換性のために追加されました。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 省略可) — 入力画像のチャネル次元の形式です。設定されていない場合、入力画像からチャネル次元の形式が推測されます。次のいずれかになります:
    • "channels_first" または ChannelDimension.FIRST: (num_channels, height, width) 形式の画像。
    • "channels_last" または ChannelDimension.LAST: (高さ, 幅, チャネル数) 形式の画像。
    • "none" または ChannelDimension.NONE: (height, width) 形式の画像。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 動画を処理するデバイスです。未設定の場合、入力動画からデバイスが推論されます。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' に設定されている場合はスタックされたテンソルを返し、それ以外の場合はテンソルのリストを返します。
  • disable_grouping (bool、kwargs、任意) — サイズごとに画像をグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうか。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている経験則に基づいています。
  • image_seq_length (int、kwargs、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。
  • format (str, kwargs, optional, デフォルトは AnnotationFormat.COCO_DETECTION) — アノテーションのデータ形式。“coco_detection” または “coco_panoptic” のいずれかです。
  • do_convert_annotations (bool、kwargs、optional、デフォルトは True) — DETR モデルが期待する形式にアノテーションを変換するかどうかを制御します。バウンディングボックスを (center_x, center_y, width, height) の形式に変換し、値の範囲を [0, 1] にします。preprocess メソッドの do_convert_annotations パラメータによって上書きできます。

DetrImageProcessor画像プロセッサを構築します。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.detr.image_processing_detr.DetrImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

パラメータ

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 前処理対象の画像です。ピクセル値が 0 から 255 の範囲にある単一の画像またはバッチを想定しています。ピクセル値が 0 から 1 の範囲にある画像を渡す場合は、do_rescale=False を設定してください。
  • annotations (AnnotationType または list[AnnotationType]、省略可) — 画像に適用されるパディングに従って変換するアノテーション。
  • return_segmentation_masks (bool、省略可、デフォルトは self.return_segmentation_masks) — セグメンテーションマスクを返すかどうかを指定します。
  • masks_path (str または pathlib.Path、省略可) — セグメンテーションマスクを含むディレクトリへのパス。
  • do_convert_rgb (bool、kwargs、任意) — 画像を RGB に変換するかどうかを指定します。
  • do_resize (bool、kwargs、optional) — 画像をリサイズするかどうか。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — モデルへの最大入力次元を記述します。
  • default_to_square (bool、kwargs、任意) — サイズが整数の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop を適用した後の出力画像のサイズ。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 画像のリサイズ時に使用するリサンプリングフィルタ。PILImageResampling の列挙型のいずれかを使用できます。do_resize が True に設定されている場合のみ有効です。
  • do_rescale (bool、kwargs、optional) — 画像をリスケールするかどうかを指定します。
  • rescale_factor (float、kwargs、任意) — do_rescale が True に設定されている場合、画像をリスケールするための係数。
  • do_normalize (bool, kwargs, optional) — 画像を正規化するかどうかを指定します。
  • image_mean (Union[float, list[float], tuple[float, ...]]、kwargs、optional) — 正規化に使用する画像の平均値。do_normalize が True に設定されている場合のみ有効です。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, optional) — 正規化に使用する画像の標準偏差。do_normalize が True に設定されている場合のみ有効です。
  • do_pad (bool, kwargs, optional) — 画像をパディングするかどうかを指定します。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 画像をパディングする {"height": int, "width" int} のサイズです。前処理に提供されるすべての画像サイズより大きくなければなりません。pad_size が指定されない場合、バッチ内の最大の幅と高さにパディングされます。do_pad=True. の場合のみ適用されます。
  • do_center_crop (bool, kwargs, optional) — 画像を中央クロップするかどうかを指定します。
  • data_format (Union[str, ~image_utils.ChannelDimension]、kwargs、任意) — サポートされているのは ChannelDimension.FIRST のみです。slow processors との互換性のために追加されました。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 省略可) — 入力画像のチャネル次元の形式です。設定されていない場合、入力画像からチャネル次元の形式が推測されます。次のいずれかになります:
    • "channels_first" または ChannelDimension.FIRST: (num_channels, height, width) 形式の画像。
    • "channels_last" または ChannelDimension.LAST: (高さ, 幅, チャネル数) 形式の画像。
    • "none" または ChannelDimension.NONE: (height, width) 形式の画像。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 動画を処理するデバイスです。未設定の場合、入力動画からデバイスが推論されます。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' に設定されている場合はスタックされたテンソルを返し、それ以外の場合はテンソルのリストを返します。
  • disable_grouping (bool、kwargs、任意) — サイズごとに画像をグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうか。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている経験則に基づいています。
  • image_seq_length (int、kwargs、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。
  • format (str, kwargs, optional, デフォルトは AnnotationFormat.COCO_DETECTION) — アノテーションのデータ形式。“coco_detection” または “coco_panoptic” のいずれかです。
  • do_convert_annotations (bool、kwargs、optional、デフォルトは True) — DETR モデルが期待する形式にアノテーションを変換するかどうかを制御します。バウンディングボックスを (center_x, center_y, width, height) の形式に変換し、値の範囲を [0, 1] にします。preprocess メソッドの do_convert_annotations パラメータによって上書きできます。

戻り値

~image_processing_base.BatchFeature

  • data (dict) — call メソッド(‘pixel_values’ など)によって返される、リスト/配列/テンソルの辞書。
  • tensor_type (Union[None, str, TensorType]、省略可) — 初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換するために、ここで tensor_type を指定できます。

post_process_object_detection

< >

( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[Dict]

パラメータ

  • outputs (DetrObjectDetectionOutput) — モデルの生出力です。
  • threshold (float, 任意) — オブジェクト検出の予測を保持するためのスコアしきい値。
  • target_sizes (torch.Tensor または list[tuple[int, int]]、任意) — (batch_size, 2) の形状を持つ Tensor、または各画像のターゲットサイズ (height, width) を含むタプルのリスト (tuple[int, int])。 未設定の場合、予測結果はリサイズされません。

戻り値

list[Dict]

モデルが予測したバッチ内の各画像のスコア、ラベル、ボックスを含む辞書のリスト

DetrForObjectDetectionの生出力を、(top_left_x, top_left_y, bottom_right_x, bottom_right_y)形式の最終的なバウンディングボックスに変換します。PyTorchのみサポートしています。

post_process_semantic_segmentation

< >

( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]

パラメータ

  • outputs (DetrForSegmentation) — モデルの生出力です。
  • target_sizes (list[tuple[int, int]], 省略可) — バッチ内の各画像のターゲットサイズ(高さ、幅)を含むタプルのリスト(tuple[int, int])です。設定されていない場合、予測結果はリサイズされません。
  • return_segmentation_scores (bool、省略可、デフォルトは False) — セグメンテーションマップとともにセグメンテーションスコアを返すかどうか。True の場合、返されるリストの各要素は、segmentation(クラス ID、形状 (height, width))と segmentation_scores(形状 (num_classes, height, width))というフィールドを持つ SemanticSegmentationPostProcessorOutput です。

戻り値

list[torch.Tensor] または list[SemanticSegmentationPostProcessorOutput]

return_segmentation_scores=False(デフォルト)の場合、各要素がクラス ID を持つ (height, width) の形状のセグメンテーションマップである、長さ batch_size のリストが返されます。return_segmentation_scores=True の場合、フィールド segmentation(クラス ID、形状 (height, width))と segmentation_scores(形状 (num_classes, height, width))を持つ SemanticSegmentationPostProcessorOutput のリストが返されます。どちらの場合も、(height, width) はターゲットサイズ(target_sizes が指定されている場合)に対応します。

DetrForSegmentationの出力をセマンティックセグメンテーションマップに変換します。PyTorchのみサポートしています。

post_process_instance_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = False ) → list[Dict]

パラメータ

  • outputs (DetrForSegmentation) — モデルの生出力です。
  • threshold (float、任意、デフォルト値は 0.5) — 予測されたインスタンスマスクを保持するための確率スコアの閾値です。
  • mask_threshold (float、任意、デフォルトは 0.5) — 予測されたマスクをバイナリ値に変換する際に使用する閾値。
  • overlap_mask_area_threshold (float、任意、デフォルト値は 0.8) — 各バイナリインスタンスマスク内の小さな非連結部分をマージまたは破棄するための、オーバーラップマスクの面積しきい値です。
  • target_sizes (list[Tuple]、任意) — 長さ (batch_size) のリストで、各リストの要素 (tuple[int, int]]) は、各予測の要求される最終サイズ (高さ、幅) に対応します。設定されていない場合、予測はリサイズされません。
  • return_coco_annotation (bool, 省略可) — デフォルト値は False です。True に設定すると、セグメンテーションマップは COCO のランレングスエンコーディング (RLE) 形式で返されます。

戻り値

list[Dict]

画像ごとに1つずつの辞書のリストで、各辞書には2つのキーが含まれます:

  • segmentation — 各ピクセルがsegment_idを表す(height, width)の形状を持つテンソル。return_coco_annotationがTrueに設定されている場合は、セグメンテーションマップのlist[List]形式のランレングス符号化(RLE)になります。thresholdを超えるマスクが見つからない場合はNoneに設定されます。
  • segments_info — 各セグメントに関する追加情報を含む辞書。
    • id — segment_idを表す整数。
    • label_id — segment_idに対応するラベル/セマンティッククラスIDを表す整数。
    • score — segment_idを持つセグメントの予測スコア。

DetrForSegmentationの出力をインスタンスセグメンテーションの予測に変換します。PyTorchのみサポートしています。

post_process_panoptic_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]

パラメータ

  • outputs (DetrForSegmentation) — DetrForSegmentationからの出力です。
  • threshold (float、任意、デフォルト値は 0.5) — 予測されたインスタンスマスクを保持するための確率スコアの閾値です。
  • mask_threshold (float、任意、デフォルトは 0.5) — 予測されたマスクをバイナリ値に変換する際に使用する閾値。
  • overlap_mask_area_threshold (float、任意、デフォルト値は 0.8) — 各バイナリインスタンスマスク内の小さな非連結部分をマージまたは破棄するための、オーバーラップマスクの面積しきい値です。
  • label_ids_to_fuse (Set[int]、省略可) — この状態にあるラベルは、すべてのインスタンスが融合されます。例えば、画像には空が1つしか存在しませんが、人物は複数存在し得るため、空のラベル ID はこのセットに含まれますが、人物のラベル ID は含まれません。
  • target_sizes (list[Tuple]、任意) — 長さ (batch_size) のリストで、各リストの要素 (tuple[int, int]]) は、バッチ内の各予測の要求される最終サイズ (高さ、幅) に対応します。設定されていない場合、予測はリサイズされません。

戻り値

list[Dict]

画像ごとに1つずつの辞書のリストで、各辞書には2つのキーが含まれます:

  • segmentation — 各ピクセルがsegment_idを表す、またはthresholdを超えるマスクが見つからない場合はNoneとなる、(height, width)の形状を持つテンソル。target_sizesが指定されている場合、segmentation は対応するtarget_sizesの要素にリサイズされます。
  • segments_info — 各セグメントに関する追加情報を含む辞書。
    • id — segment_idを表す整数。
    • label_id — segment_idに対応するラベル/セマンティッククラスIDを表す整数。
    • was_fused — 論理値。label_idがlabel_ids_to_fuseに含まれていた場合はTrue、それ以外の場合はFalse。 同一クラス/ラベルの複数のインスタンスが融合され、単一のsegment_idが割り当てられました。
    • score — segment_idを持つセグメントの予測スコア。

DetrForSegmentationの出力を、画像のパンノセグメンテーション予測に変換します。PyTorchのみサポートしています。

DetrImageProcessorPil

class transformers.DetrImageProcessorPil

< >

( **kwargs: *<class 'transformers.models.detr.image_processing_pil_detr.DetrImageProcessorKwargs'> )

パラメータ

  • do_convert_rgb (bool、kwargs、任意) — 画像を RGB に変換するかどうかを指定します。
  • do_resize (bool、kwargs、任意、デフォルトはTrue) — 画像をリサイズするかどうか。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs、デフォルトは {'shortest_edge' -- 800, 'longest_edge': 1333}): モデルへの最大入力サイズを指定します。
  • default_to_square (bool、kwargs、任意、デフォルトは False) — size が整数の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop を適用した後の出力画像のサイズ。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs, デフォルトは 2) — 画像のリサイズ時に使用するリサンプリングフィルタです。PILImageResampling の列挙型のいずれかを使用できます。do_resize が True に設定されている場合のみ、効果が現れます。
  • do_rescale (bool、kwargs、任意、デフォルトはTrue) — 画像をリスケールするかどうかを指定します。
  • rescale_factor (float、kwargs、任意、デフォルト値は 0.00392156862745098) — do_rescale が True に設定されている場合、画像をリスケールするための係数です。
  • do_normalize (bool、kwargs、optional、デフォルトはTrue) — 画像を正規化するかどうかを指定します。
  • image_mean (Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルト値は [0.485, 0.456, 0.406]) — 正規化に使用する画像の平均値。do_normalize が True に設定されている場合のみ有効です。
  • image_std (Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルト値は [0.229, 0.224, 0.225]) — 正規化に使用する画像の標準偏差。do_normalize が True に設定されている場合のみ有効です。
  • do_pad (bool、kwargs、optional、デフォルトは True) — 画像をパディングするかどうか。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 画像をパディングする {"height": int, "width" int} のサイズです。前処理に提供されるすべての画像サイズより大きくなければなりません。pad_size が指定されない場合、バッチ内の最大の幅と高さにパディングされます。do_pad=True. の場合のみ適用されます。
  • do_center_crop (bool, kwargs, optional) — 画像を中央クロップするかどうかを指定します。
  • data_format (Union[str, ~image_utils.ChannelDimension]、kwargs、任意) — サポートされているのは ChannelDimension.FIRST のみです。slow processors との互換性のために追加されました。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 省略可) — 入力画像のチャネル次元の形式です。設定されていない場合、入力画像からチャネル次元の形式が推測されます。次のいずれかになります:
    • "channels_first" または ChannelDimension.FIRST: (num_channels, height, width) 形式の画像。
    • "channels_last" または ChannelDimension.LAST: (高さ, 幅, チャネル数) 形式の画像。
    • "none" または ChannelDimension.NONE: (height, width) 形式の画像。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 動画を処理するデバイスです。未設定の場合、入力動画からデバイスが推論されます。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' に設定されている場合はスタックされたテンソルを返し、それ以外の場合はテンソルのリストを返します。
  • disable_grouping (bool、kwargs、任意) — サイズごとに画像をグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうか。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている経験則に基づいています。
  • image_seq_length (int、kwargs、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。
  • format (str, kwargs, optional, デフォルトは AnnotationFormat.COCO_DETECTION) — アノテーションのデータ形式。“coco_detection” または “coco_panoptic” のいずれかです。
  • do_convert_annotations (bool、kwargs、optional、デフォルトは True) — DETR モデルが期待する形式にアノテーションを変換するかどうかを制御します。バウンディングボックスを (center_x, center_y, width, height) の形式に変換し、値の範囲を [0, 1] にします。preprocess メソッドの do_convert_annotations パラメータによって上書きできます。

DetrImageProcessor画像プロセッサを構築します。

preprocess

< >

( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]annotations: dict[str, int | str | list[dict]] | list[dict[str, int | str | list[dict]]] | None = Nonereturn_segmentation_masks: bool | None = Nonemasks_path: str | pathlib.Path | None = None**kwargs: *<class 'transformers.models.detr.image_processing_pil_detr.DetrImageProcessorKwargs'> ) → ~image_processing_base.BatchFeature

パラメータ

  • images (Union[PIL.Image.Image, numpy.ndarray, torch.Tensor, list[PIL.Image.Image], list[numpy.ndarray], list[torch.Tensor]]) — 前処理対象の画像です。ピクセル値が 0 から 255 の範囲にある単一の画像またはバッチを想定しています。ピクセル値が 0 から 1 の範囲にある画像を渡す場合は、do_rescale=False を設定してください。
  • annotations (AnnotationType または list[AnnotationType]、省略可) — 画像に適用されるパディングに従って変換するアノテーション。
  • return_segmentation_masks (bool、省略可、デフォルトは self.return_segmentation_masks) — セグメンテーションマスクを返すかどうかを指定します。
  • masks_path (str または pathlib.Path、省略可) — セグメンテーションマスクを含むディレクトリへのパス。
  • do_convert_rgb (bool、kwargs、任意) — 画像を RGB に変換するかどうかを指定します。
  • do_resize (bool、kwargs、optional) — 画像をリサイズするかどうか。
  • size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — モデルへの最大入力次元を記述します。
  • default_to_square (bool、kwargs、任意) — サイズが整数の場合、リサイズ時に正方形の画像をデフォルトとするかどうか。
  • crop_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — center_crop を適用した後の出力画像のサイズ。
  • resample (Annotated[Union[int, PILImageResampling, NoneType], None], kwargs) — 画像のリサイズ時に使用するリサンプリングフィルタ。PILImageResampling の列挙型のいずれかを使用できます。do_resize が True に設定されている場合のみ有効です。
  • do_rescale (bool、kwargs、optional) — 画像をリスケールするかどうかを指定します。
  • rescale_factor (float、kwargs、任意) — do_rescale が True に設定されている場合、画像をリスケールするための係数。
  • do_normalize (bool, kwargs, optional) — 画像を正規化するかどうかを指定します。
  • image_mean (Union[float, list[float], tuple[float, ...]]、kwargs、optional) — 正規化に使用する画像の平均値。do_normalize が True に設定されている場合のみ有効です。
  • image_std (Union[float, list[float], tuple[float, ...]], kwargs, optional) — 正規化に使用する画像の標準偏差。do_normalize が True に設定されている場合のみ有効です。
  • do_pad (bool, kwargs, optional) — 画像をパディングするかどうかを指定します。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。
  • pad_size (Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) — 画像をパディングする {"height": int, "width" int} のサイズです。前処理に提供されるすべての画像サイズより大きくなければなりません。pad_size が指定されない場合、バッチ内の最大の幅と高さにパディングされます。do_pad=True. の場合のみ適用されます。
  • do_center_crop (bool, kwargs, optional) — 画像を中央クロップするかどうかを指定します。
  • data_format (Union[str, ~image_utils.ChannelDimension]、kwargs、任意) — サポートされているのは ChannelDimension.FIRST のみです。slow processors との互換性のために追加されました。
  • input_data_format (Union[str, ~image_utils.ChannelDimension], kwargs, 省略可) — 入力画像のチャネル次元の形式です。設定されていない場合、入力画像からチャネル次元の形式が推測されます。次のいずれかになります:
    • "channels_first" または ChannelDimension.FIRST: (num_channels, height, width) 形式の画像。
    • "channels_last" または ChannelDimension.LAST: (高さ, 幅, チャネル数) 形式の画像。
    • "none" または ChannelDimension.NONE: (height, width) 形式の画像。
  • device (Annotated[Union[str, torch.device, NoneType], None], kwargs) — 動画を処理するデバイスです。未設定の場合、入力動画からデバイスが推論されます。
  • return_tensors (Annotated[str | ~utils.generic.TensorType | None, None], kwargs) — 'pt' に設定されている場合はスタックされたテンソルを返し、それ以外の場合はテンソルのリストを返します。
  • disable_grouping (bool、kwargs、任意) — サイズごとに画像をグループ化してバッチ処理するのではなく、個別に処理するためにグループ化を無効にするかどうか。None の場合、画像が CPU にある場合は True、それ以外の場合は False に設定されます。この選択は、https://github.com/huggingface/transformers/pull/38157 に詳しく記載されている経験則に基づいています。
  • image_seq_length (int、kwargs、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。
  • format (str, kwargs, optional, デフォルトは AnnotationFormat.COCO_DETECTION) — アノテーションのデータ形式。“coco_detection” または “coco_panoptic” のいずれかです。
  • do_convert_annotations (bool、kwargs、optional、デフォルトは True) — DETR モデルが期待する形式にアノテーションを変換するかどうかを制御します。バウンディングボックスを (center_x, center_y, width, height) の形式に変換し、値の範囲を [0, 1] にします。preprocess メソッドの do_convert_annotations パラメータによって上書きできます。

戻り値

~image_processing_base.BatchFeature

  • data (dict) — call メソッド(‘pixel_values’ など)によって返される、リスト/配列/テンソルの辞書。
  • tensor_type (Union[None, str, TensorType]、省略可) — 初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換するために、ここで tensor_type を指定できます。

post_process_object_detection

< >

( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = None ) → list[Dict]

パラメータ

  • outputs (DetrObjectDetectionOutput) — モデルの生出力です。
  • threshold (float, 任意) — オブジェクト検出の予測を保持するためのスコアしきい値。
  • target_sizes (torch.Tensor または list[tuple[int, int]]、任意) — (batch_size, 2) の形状を持つ Tensor、または各画像のターゲットサイズ (height, width) を含むタプルのリスト (tuple[int, int])。 未設定の場合、予測結果はリサイズされません。

戻り値

list[Dict]

モデルが予測したバッチ内の各画像のスコア、ラベル、ボックスを含む辞書のリスト

DetrForObjectDetectionの生出力を、(top_left_x, top_left_y, bottom_right_x, bottom_right_y)形式の最終的なバウンディングボックスに変換します。PyTorchのみサポートしています。

post_process_semantic_segmentation

< >

( outputstarget_sizes: list[tuple[int, int]] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]

パラメータ

  • outputs (DetrForSegmentation) — モデルの生出力です。
  • target_sizes (list[tuple[int, int]], 省略可) — バッチ内の各画像のターゲットサイズ(高さ、幅)を含むタプルのリスト(tuple[int, int])です。設定されていない場合、予測結果はリサイズされません。
  • return_segmentation_scores (bool、省略可、デフォルトは False) — セグメンテーションマップとともにセグメンテーションスコアを返すかどうか。True の場合、返されるリストの各要素は、segmentation(クラス ID、形状 (height, width))と segmentation_scores(形状 (num_classes, height, width))というフィールドを持つ SemanticSegmentationPostProcessorOutput です。

戻り値

list[torch.Tensor] または list[SemanticSegmentationPostProcessorOutput]

return_segmentation_scores=False(デフォルト)の場合、各要素がクラス ID を持つ (height, width) の形状のセグメンテーションマップである、長さ batch_size のリストが返されます。return_segmentation_scores=True の場合、フィールド segmentation(クラス ID、形状 (height, width))と segmentation_scores(形状 (num_classes, height, width))を持つ SemanticSegmentationPostProcessorOutput のリストが返されます。どちらの場合も、(height, width) はターゲットサイズ(target_sizes が指定されている場合)に対応します。

DetrForSegmentationの出力をセマンティックセグメンテーションマップに変換します。PyTorchのみサポートしています。

post_process_instance_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool | None = False ) → list[Dict]

パラメータ

  • outputs (DetrForSegmentation) — モデルの生出力です。
  • threshold (float、任意、デフォルト値は 0.5) — 予測されたインスタンスマスクを保持するための確率スコアの閾値です。
  • mask_threshold (float、任意、デフォルトは 0.5) — 予測されたマスクをバイナリ値に変換する際に使用する閾値。
  • overlap_mask_area_threshold (float、任意、デフォルト値は 0.8) — 各バイナリインスタンスマスク内の小さな非連結部分をマージまたは破棄するための、オーバーラップマスクの面積しきい値です。
  • target_sizes (list[Tuple]、任意) — 長さ (batch_size) のリストで、各リストの要素 (tuple[int, int]]) は、各予測の要求される最終サイズ (高さ、幅) に対応します。設定されていない場合、予測はリサイズされません。
  • return_coco_annotation (bool, 省略可) — デフォルト値は False です。True に設定すると、セグメンテーションマップは COCO のランレングスエンコーディング (RLE) 形式で返されます。

戻り値

list[Dict]

画像ごとに1つずつの辞書のリストで、各辞書には2つのキーが含まれます:

  • segmentation — 各ピクセルがsegment_idを表す(height, width)の形状を持つテンソル。return_coco_annotationがTrueに設定されている場合は、セグメンテーションマップのlist[List]形式のランレングス符号化(RLE)になります。thresholdを超えるマスクが見つからない場合はNoneに設定されます。
  • segments_info — 各セグメントに関する追加情報を含む辞書。
    • id — segment_idを表す整数。
    • label_id — segment_idに対応するラベル/セマンティッククラスIDを表す整数。
    • score — segment_idを持つセグメントの予測スコア。

DetrForSegmentationの出力をインスタンスセグメンテーションの予測に変換します。PyTorchのみサポートしています。

post_process_panoptic_segmentation

< >

( outputsthreshold: float = 0.5mask_threshold: float = 0.5overlap_mask_area_threshold: float = 0.8label_ids_to_fuse: set[int] | None = Nonetarget_sizes: list[tuple[int, int]] | None = None ) → list[Dict]

パラメータ

  • outputs (DetrForSegmentation) — DetrForSegmentationからの出力です。
  • threshold (float、任意、デフォルト値は 0.5) — 予測されたインスタンスマスクを保持するための確率スコアの閾値です。
  • mask_threshold (float、任意、デフォルトは 0.5) — 予測されたマスクをバイナリ値に変換する際に使用する閾値。
  • overlap_mask_area_threshold (float、任意、デフォルト値は 0.8) — 各バイナリインスタンスマスク内の小さな非連結部分をマージまたは破棄するための、オーバーラップマスクの面積しきい値です。
  • label_ids_to_fuse (Set[int]、省略可) — この状態にあるラベルは、すべてのインスタンスが融合されます。例えば、画像には空が1つしか存在しませんが、人物は複数存在し得るため、空のラベル ID はこのセットに含まれますが、人物のラベル ID は含まれません。
  • target_sizes (list[Tuple]、任意) — 長さ (batch_size) のリストで、各リストの要素 (tuple[int, int]]) は、バッチ内の各予測の要求される最終サイズ (高さ、幅) に対応します。設定されていない場合、予測はリサイズされません。

戻り値

list[Dict]

画像ごとに1つずつの辞書のリストで、各辞書には2つのキーが含まれます:

  • segmentation — 各ピクセルがsegment_idを表す、またはthresholdを超えるマスクが見つからない場合はNoneとなる、(height, width)の形状を持つテンソル。target_sizesが指定されている場合、segmentation は対応するtarget_sizesの要素にリサイズされます。
  • segments_info — 各セグメントに関する追加情報を含む辞書。
    • id — segment_idを表す整数。
    • label_id — segment_idに対応するラベル/セマンティッククラスIDを表す整数。
    • was_fused — 論理値。label_idがlabel_ids_to_fuseに含まれていた場合はTrue、それ以外の場合はFalse。 同一クラス/ラベルの複数のインスタンスが融合され、単一のsegment_idが割り当てられました。
    • score — segment_idを持つセグメントの予測スコア。

DetrForSegmentationの出力を、画像のパンノセグメンテーション予測に変換します。PyTorchのみサポートしています。

DETR固有の出力

クラス transformers.models.detr.modeling_detr.DetrModelOutput

< >

( last_hidden_state: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.EncoderDecoderCache | None = Nonedecoder_hidden_states: tuple[torch.Tensor, ...] | None = Nonedecoder_attentions: tuple[torch.Tensor, ...] | None = Nonecross_attentions: tuple[torch.Tensor, ...] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor, ...] | None = Noneencoder_attentions: tuple[torch.Tensor, ...] | None = Noneintermediate_hidden_states: typing.Optional[torch.Tensor] = None )

パラメータ

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

    past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。

  • past_key_values (EncoderDecoderCache, 省略可能, が返されるのは use_cache=True が渡された場合、または config.use_cache=True) — これは EncoderDecoderCache のインスタンスです。詳細については、 KVキャッシュのガイド.

    自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • decoder_hidden_states (tuple(torch.Tensor), 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層がある場合はその出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

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

  • decoder_attentions (tuple(torch.Tensor), 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

  • cross_attentions (tuple(torch.Tensor), 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • encoder_last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンスです。
  • encoder_hidden_states (tuple(torch.Tensor), 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層がある場合はその出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力におけるエンコーダーのHidden-states、および任意の初期埋め込み出力。

  • encoder_attentions (tuple(torch.Tensor), 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.Tensor ((各レイヤーごとに1つ)で、形状は (batch_size, num_heads, sequence_length, sequence_length).

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

  • intermediate_hidden_states (torch.Tensor、形状 (config.decoder_layers, batch_size, sequence_length, hidden_size)、任意、config.auxiliary_loss=True の場合に返されます)— 中間デコーダー活性化値、つまり各デコーダー層の出力であり、それぞれがレイヤノーマルを通過したものです。

DETRエンコーダー・デコーダーモデルの出力の基底クラスです。このクラスは、Seq2SeqModelOutputに1つの属性、すなわち任意の中間デコーダー活性化のスタック(各デコーダー層の出力であり、それぞれがレイヤノーマルを通過したもの)を追加します。これは、補助的なデコーディング損失を用いてモデルを訓練する場合に有用です。

クラス transformers.models.detr.modeling_detr.DetrObjectDetectionOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneloss_dict: dict | None = Nonelogits: typing.Optional[torch.Tensor] = Nonepred_boxes: typing.Optional[torch.Tensor] = Noneauxiliary_outputs: list[dict] | None = Nonelast_hidden_state: typing.Optional[torch.Tensor] = Nonedecoder_hidden_states: tuple[torch.Tensor] | None = Nonedecoder_attentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Noneencoder_attentions: tuple[torch.Tensor] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます)) — クラス予測の負の対数尤度(クロスエントロピー)とバウンディングボックス損失の線形結合としての総損失。後者は、L1損失と汎用スケール不変IoU損失の線形結合として定義されます。
  • loss_dict (Dict, 任意) — 個別の損失を含む辞書です。ログ出力に便利です。
  • logits (torch.Tensor、形状 (batch_size, num_queries, num_classes + 1)) — すべてのクエリに対する分類 logits(no-object を含む)。
  • pred_boxes (torch.Tensor、形状 (batch_size, num_queries, 4)) — すべてのクエリに対する正規化されたボックス座標です。(center_x, center_y, width, height) として表されます。これらの値は、バッチ内の各画像のサイズに対して [0, 1] の範囲で正規化されています(パディングは考慮されません)。post_process_object_detection() を使用すると、正規化されていないバウンディングボックスを取得できます。
  • auxiliary_outputs (list[Dict], 任意) — オプションです。補助損失が有効化されている場合(つまり config.auxiliary_loss が True に設定されている場合)かつラベルが提供されている場合にのみ返されます。各デコーダ層について、上記の2つのキー(logits と pred_boxes)を含む辞書のリストです。
  • last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルのデコーダーの最終層の出力における、隠れ状態のシーケンスです。
  • decoder_hidden_states (tuple[torch.Tensor], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層がある場合はその出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。

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

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

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

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • encoder_last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンスです。
  • encoder_hidden_states (tuple[torch.Tensor], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層がある場合はその出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。

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

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

DetrForObjectDetectionの出力型。

class transformers.models.detr.modeling_detr.DetrSegmentationOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneloss_dict: dict | None = Nonelogits: typing.Optional[torch.Tensor] = Nonepred_boxes: typing.Optional[torch.Tensor] = Nonepred_masks: typing.Optional[torch.Tensor] = Noneauxiliary_outputs: list[dict] | None = Nonelast_hidden_state: typing.Optional[torch.Tensor] = Nonedecoder_hidden_states: tuple[torch.Tensor] | None = Nonedecoder_attentions: tuple[torch.Tensor] | None = Nonecross_attentions: tuple[torch.Tensor] | None = Noneencoder_last_hidden_state: typing.Optional[torch.Tensor] = Noneencoder_hidden_states: tuple[torch.Tensor] | None = Noneencoder_attentions: tuple[torch.Tensor] | None = None )

パラメータ

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます)) — クラス予測の負の対数尤度(クロスエントロピー)とバウンディングボックス損失の線形結合としての総損失。後者は、L1損失と汎用スケール不変IoU損失の線形結合として定義されます。
  • loss_dict (Dict, 任意) — 個別の損失を含む辞書です。ログ出力に便利です。
  • logits (torch.Tensor、形状 (batch_size, num_queries, num_classes + 1)) — すべてのクエリに対する分類 logits(no-object を含む)。
  • pred_boxes (torch.Tensor、形状 (batch_size, num_queries, 4)) — すべてのクエリに対する正規化されたボックス座標です。(center_x, center_y, width, height) として表されます。これらの値は、バッチ内の各画像のサイズに対して [0, 1] の範囲で正規化されています(パディングは考慮されません)。post_process_object_detection() を使用すると、正規化されていないバウンディングボックスを取得できます。
  • pred_masks (torch.Tensor、形状 (batch_size, num_queries, height/4, width/4)) — すべてのクエリに対するセグメンテーションマスクのロジットです。セマンティック、インスタンス、パノプティックのセグメンテーションマスクをそれぞれ評価するには、post_process_semantic_segmentation()、post_process_instance_segmentation()、post_process_panoptic_segmentation() も参照してください。
  • auxiliary_outputs (list[Dict], 任意) — オプションです。補助損失が有効化されている場合(つまり config.auxiliary_loss が True に設定されている場合)かつラベルが提供されている場合にのみ返されます。各デコーダ層について、上記の2つのキー(logits と pred_boxes)を含む辞書のリストです。
  • last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルのデコーダーの最終層の出力における、隠れ状態のシーケンスです。
  • decoder_hidden_states (tuple[torch.Tensor], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層がある場合はその出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。

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

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

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

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • encoder_last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルのエンコーダーの最終層の出力における、隠れ状態のシーケンスです。
  • encoder_hidden_states (tuple[torch.Tensor], 省略可能, が返されるのは output_hidden_states=True が渡された場合、または config.output_hidden_states=True) — のタプル torch.Tensor ((埋め込み層がある場合はその出力用 1 つ + 各層の出力用 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size).

    各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。

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

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

DetrForSegmentationの出力型。

DetrModel

class transformers.DetrModel

< >

( config: DetrConfig )

パラメータ

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

DETRモデル本体(バックボーンとエンコーダー・デコーダーのTransformerで構成され、特定のヘッドを備えずに生の隠れ状態を出力するもの)。

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

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

forward

< >

( pixel_values: typing.Optional[torch.Tensor] = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrModelOutput or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は image_processor_class を使用して取得できます。詳細は image_processor_class.__call__ を参照してください(processor_class は画像の処理に image_processor_class を使用します)。
  • pixel_mask (torch.LongTensor 形状 (batch_size, height, width), 省略可) — パディングピクセル値に対するアテンションの適用を回避するためのマスク。マスク値は [0, 1]:
    • 実在するピクセル(つまり、マスクされていない)に対して1
    • padding(つまり、マスクされている)ピクセルは0です。

    アテンションマスクとは?

  • decoder_attention_mask (torch.Tensor 形状 (batch_size, num_queries), 、オプション) — デコーダー内の特定のオブジェクトクエリに対してアテンションを実行しないためのマスク。 [0, 1]:
    • マスクされていないクエリに対して1
    • マスクされたクエリに対しては 0 です。
  • encoder_outputs (torch.Tensor, 任意) — last_hidden_state、任意: hidden_states、任意: attentions のタプル last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意)であり、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — フラット化された特徴マップ(バックボーンと投影層の出力)を渡す代わりに、画像のフラット化された表現を直接渡すこともできます。ビジョンバックボーンをバイパスする場合に便利です。
  • decoder_inputs_embeds (torch.Tensor、形状 (batch_size, num_queries, hidden_size)、任意) — クエリをゼロのテンソルで初期化する代わりに、埋め込み表現を直接渡すこともできます。カスタムなクエリ初期化を必要とするタスクに有用です。

戻り値

DetrModelOutput または tuple(torch.Tensor)

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

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

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

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

    past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。

  • past_key_values (EncoderDecoderCache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — EncoderDecoderCache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(past_key_values 入力参照)。

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

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

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

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

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

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

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

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

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

  • intermediate_hidden_states (torch.Tensor、形状 (config.decoder_layers, batch_size, sequence_length, hidden_size)、任意、config.auxiliary_loss=True の場合に返されます) — 中間デコーダー活性化、すなわち各デコーダー層の出力で、それぞれがレイヤノーマルを通過したものです。

例:

>>> from transformers import AutoImageProcessor, DetrModel
>>> 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("facebook/detr-resnet-50")
>>> model = DetrModel.from_pretrained("facebook/detr-resnet-50")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> # the last hidden states are the final query embeddings of the Transformer decoder
>>> # these are of shape (batch_size, num_queries, hidden_size)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 100, 256]

DetrForObjectDetection

class transformers.DetrForObjectDetection

< >

( config: DetrConfig )

パラメータ

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

DETRモデル(バックボーンとエンコーダー・デコーダーのTransformerで構成)の上部にオブジェクト検出ヘッドを備え、COCO検出などのタスクに対応します。

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

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

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrObjectDetectionOutput or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。ピクセル値は image_processor_class を使用して取得できます。詳細は image_processor_class.__call__ を参照してください(processor_class は画像の処理に image_processor_class を使用します)。
  • pixel_mask (torch.LongTensor 形状 (batch_size, height, width), 省略可) — パディングピクセル値に対するアテンションの適用を回避するためのマスク。マスク値は [0, 1]:
    • 実在するピクセル(つまり、マスクされていない)に対して1
    • padding(つまり、マスクされている)ピクセルは0です。

    アテンションマスクとは?

  • decoder_attention_mask (torch.Tensor 形状 (batch_size, num_queries), 、オプション) — デコーダー内の特定のオブジェクトクエリに対してアテンションを実行しないためのマスク。 [0, 1]:
    • マスクされていないクエリに対して1
    • マスクされたクエリに対しては 0 です。
  • encoder_outputs (torch.Tensor, 任意) — last_hidden_state、任意: hidden_states、任意: attentions のタプル last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意)であり、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — フラット化された特徴マップ(バックボーンと投影層の出力)を渡す代わりに、画像のフラット化された表現を直接渡すこともできます。ビジョンバックボーンをバイパスする場合に便利です。
  • decoder_inputs_embeds (torch.Tensor、形状 (batch_size, num_queries, hidden_size)、任意) — クエリをゼロのテンソルで初期化する代わりに、埋め込み表現を直接渡すこともできます。カスタムなクエリ初期化を必要とするタスクに有用です。
  • labels (list[Dict]、長さ (batch_size,)、任意) — 二部マッチング損失を計算するためのラベル。辞書のリストで、各辞書には少なくとも以下の 2 つのキーが含まれます: ‘class_labels’ と ‘boxes’ (それぞれバッチ内の画像のクラスラベルとバウンディングボックス)。クラスラベル自体は長さ (number of bounding boxes in the image,) の torch.LongTensor であり、ボックスは形状 (number of bounding boxes in the image, 4) の torch.Tensor である必要があります。

戻り値

DetrObjectDetectionOutput または tuple(torch.Tensor)

Noneおよび入力に応じて、さまざまな要素で構成される、DetrObjectDetectionOutputまたはtorch.Tensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。

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

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

  • loss (torch.Tensor、形状 (1,)、任意、labels が提供された場合に返されます) — クラス予測の負の対数尤度(クロスエントロピー)とバウンディングボックス損失の線形結合による総損失です。後者は、L1損失と汎用スケール不変IoU損失の線形結合として定義されます。

  • loss_dict (Dict, 任意) — 個別の損失を含む辞書です。ログ出力に便利です。

  • logits (torch.Tensor、形状 (batch_size, num_queries, num_classes + 1)) — すべてのクエリに対する分類 logits(no-object を含む)。

  • pred_boxes (torch.Tensor、shape (batch_size, num_queries, 4)) — すべてのクエリに対する正規化されたボックス座標です。(center_x, center_y, width, height) として表されます。これらの値は、バッチ内の各画像のサイズに対して [0, 1] の範囲で正規化されています(パディングは考慮されません)。post_process_object_detection() を使用すると、正規化されていないバウンディングボックスを取得できます。

  • auxiliary_outputs (list[Dict]、optional) — オプション。補助損失が有効化されている場合(つまり config.auxiliary_loss が True に設定されている場合)かつラベルが提供されている場合にのみ返されます。各デコーダ層について、上記の2つのキー(logits と pred_boxes)を含む辞書のリストです。

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

  • decoder_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) です。

    各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。

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

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

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

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

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

  • encoder_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) です。

    各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。

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

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

例:

>>> from transformers import AutoImageProcessor, DetrForObjectDetection
>>> 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("facebook/detr-resnet-50")
>>> model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50")

>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)

>>> # convert outputs (bounding boxes and class logits) to Pascal VOC format (xmin, ymin, xmax, ymax)
>>> target_sizes = torch.tensor([image.size[::-1]])
>>> results = image_processor.post_process_object_detection(outputs, threshold=0.9, target_sizes=target_sizes)[
...     0
... ]

>>> for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
...     box = [round(i, 2) for i in box.tolist()]
...     print(
...         f"Detected {model.config.id2label[label.item()]} with confidence "
...         f"{round(score.item(), 3)} at location {box}"
...     )
Detected remote with confidence 0.998 at location [40.16, 70.81, 175.55, 117.98]
Detected remote with confidence 0.996 at location [333.24, 72.55, 368.33, 187.66]
Detected couch with confidence 0.995 at location [-0.02, 1.15, 639.73, 473.76]
Detected cat with confidence 0.999 at location [13.24, 52.05, 314.02, 470.93]
Detected cat with confidence 0.999 at location [345.4, 23.85, 640.37, 368.72]

DetrForSegmentation

クラス transformers.DetrForSegmentation

< >

( config: DetrConfig )

パラメータ

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

COCO panopticなどのタスク向けに、セグメンテーションヘッドを備えたDETRモデル(バックボーンとエンコーダー・デコーダーのTransformerで構成)。

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

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

forward

< >

( pixel_values: Tensorpixel_mask: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DetrSegmentationOutput or tuple(torch.Tensor)

パラメータ

  • pixel_values (torch.Tensor、形状 (batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。ピクセル値は image_processor_class を使用して取得できます。詳細は image_processor_class.__call__ を参照してください(processor_class は画像の処理に image_processor_class を使用します)。
  • pixel_mask (torch.LongTensor 形状 (batch_size, height, width), 省略可) — パディングピクセル値に対するアテンションの適用を回避するためのマスク。マスク値は [0, 1]:
    • 実在するピクセル(つまり、マスクされていない)に対して1
    • padding(つまり、マスクされている)ピクセルは0です。

    アテンションマスクとは?

  • decoder_attention_mask (torch.Tensor 形状 (batch_size, num_queries), 、オプション) — デコーダー内の特定のオブジェクトクエリに対してアテンションを実行しないためのマスク。 [0, 1]:
    • マスクされていないクエリに対して1
    • マスクされたクエリに対しては 0 です。
  • encoder_outputs (torch.Tensor, 任意) — last_hidden_state、任意: hidden_states、任意: attentions のタプル last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意)であり、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — 後方互換性のために保持されていますが、セグメンテーションには使用できません。セグメンテーションにはバックボーンからのマルチスケール特徴量が必要ですが、inputs_embeds を使用してバックボーンをバイパスすると、それらは利用できないためです。
  • decoder_inputs_embeds (torch.Tensor、形状 (batch_size, num_queries, hidden_size)、任意) — クエリをゼロのテンソルで初期化する代わりに、埋め込み表現を直接渡すこともできます。カスタムなクエリ初期化を必要とするタスクに有用です。
  • labels (list[Dict]、長さ (batch_size,)、任意) — 二部グラフマッチング損失、DICE/F-1 損失、Focal 損失を計算するためのラベル。辞書のリストで、各辞書には少なくとも以下の 3 つのキーが含まれます: ‘class_labels’、‘boxes’、‘masks’ (それぞれバッチ内の画像のクラスラベル、バウンディングボックス、セグメンテーションマスク)。クラスラベル自体は長さ (number of bounding boxes in the image,) の torch.LongTensor、ボックスは形状 (number of bounding boxes in the image, 4) の torch.Tensor、マスクは形状 (number of bounding boxes in the image, height, width) の torch.Tensor である必要があります。

戻り値

DetrSegmentationOutput または tuple(torch.Tensor)

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

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

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

  • loss (torch.Tensor、形状 (1,)、任意、labels が提供された場合に返されます) — クラス予測の負の対数尤度(クロスエントロピー)とバウンディングボックス損失の線形結合による総損失です。後者は、L1損失と汎用スケール不変IoU損失の線形結合として定義されます。

  • loss_dict (Dict, 任意) — 個別の損失を含む辞書です。ログ出力に便利です。

  • logits (torch.Tensor、形状 (batch_size, num_queries, num_classes + 1)) — すべてのクエリに対する分類 logits(no-object を含む)。

  • pred_boxes (torch.Tensor、shape (batch_size, num_queries, 4)) — すべてのクエリに対する正規化されたボックス座標です。(center_x, center_y, width, height) として表されます。これらの値は、バッチ内の各画像のサイズに対して [0, 1] の範囲で正規化されています(パディングは考慮されません)。post_process_object_detection() を使用すると、正規化されていないバウンディングボックスを取得できます。

  • pred_masks (torch.Tensor、shape (batch_size, num_queries, height/4, width/4)) — すべてのクエリに対するセグメンテーションマスクのロジスト値。セマンティックセグメンテーション、インスタンスセグメンテーション、パノプティックセグメンテーションのマスクをそれぞれ評価するには、post_process_semantic_segmentation()、post_process_instance_segmentation()、post_process_panoptic_segmentation() を参照してください。

  • auxiliary_outputs (list[Dict]、optional) — オプション。補助損失が有効化されている場合(つまり config.auxiliary_loss が True に設定されている場合)かつラベルが提供されている場合にのみ返されます。各デコーダ層について、上記の2つのキー(logits と pred_boxes)を含む辞書のリストです。

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

  • decoder_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) です。

    各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。

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

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

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

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

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

  • encoder_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) です。

    各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。

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

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

例:

>>> import io
>>> from huggingface_hub.utils import httpx
>>> from io import BytesIO
>>> from PIL import Image
>>> import torch
>>> import numpy

>>> from transformers import AutoImageProcessor, DetrForSegmentation
>>> from transformers.image_transforms import rgb_to_id

>>> 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("facebook/detr-resnet-50-panoptic")
>>> model = DetrForSegmentation.from_pretrained("facebook/detr-resnet-50-panoptic")

>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")

>>> # forward pass
>>> outputs = model(**inputs)

>>> # Use the `post_process_panoptic_segmentation` method of the `image_processor` to retrieve post-processed panoptic segmentation maps
>>> # Segmentation results are returned as a list of dictionaries
>>> result = image_processor.post_process_panoptic_segmentation(outputs, target_sizes=[(300, 500)])

>>> # A tensor of shape (height, width) where each value denotes a segment id, filled with -1 if no segment is found
>>> panoptic_seg = result[0]["segmentation"]
>>> panoptic_seg.shape
torch.Size([300, 500])
>>> # Get prediction score and segment_id to class_id mapping of each segment
>>> panoptic_segments_info = result[0]["segments_info"]
>>> len(panoptic_segments_info)
5
Update on GitHub