Transformers documentation
RF-DETR
このモデルは2024年7月24日にHF papersで公開され、2026年5月7日にHugging Face Transformersに貢献されました。
RF-DETR
RF-DETRは、リアルタイム物体検出において支配的なYOLOシリーズと競い、それを上回ることを目的として設計されたReceptive Field Detection Transformer (DETR) アーキテクチャを提案しています。最新のTransformerの進歩と効率的な設計選択を組み合わせることで、速度(レイテンシ)と精度(mAP)の間の新たな最良のバランスを実現しています。
RF-DETRアーキテクチャは、DINOv2 Backbone、Projector、および浅いDETR Decoderからなる、シンプルで効率的な構造が特徴です。 以下のコアな変更により、DETRアーキテクチャの効率性と速度を向上させています:
- DINOv2 Backbone: 強力な DINOv2 バックボーンを使用して、堅牢な特徴量抽出を行います。
- Group DETR Training: 学習時にGroup-Wise One-to-Many Assignmentを利用することで、収束を高速化します。
- より豊かな入力: バックボーンから多層の特徴量を集約し、YOLOv8と同様にC2f Projectorを使用してマルチスケールの特徴量を伝達します。
- Faster Decoder: 低レイテンシを実現するために、変形クロスアテンションを備えた浅い3層のDETRデコーダーを採用しています。
- 最適化されたクエリ: 学習可能なコンテンツクエリと生成された空間クエリを組み合わせた混合クエリ方式を使用します。
利用可能なRF-DETRのチェックポイントはすべて、Roboflow組織の下にあります。 元のコードはこちらで確認できます。
重み変換マッピングのおかげで、RfDetr は元の rf-detr ライブラリのモデルだけでなく、Roboflow プラットフォームで学習したモデルにも対応しています。つまり、Roboflow プラットフォームでモデルを学習し、transformers の RfDetr を使って重みをインポートして、どこでもモデルをデプロイできます。
右側のサイドバーにあるRF-DETRモデルをクリックすると、RF-DETRをさまざまな物体検出タスクに適用する方法の例をさらに確認できます。
以下の例では、PipelineとAutoModelクラスを使用してオブジェクト検出を実行する方法を示しています。
from transformers import pipeline
import torch
pipeline = pipeline("object-detection", model="Roboflow/rf-detr-medium", device_map="auto")
pipeline("http://images.cocodataset.org/val2017/000000039769.jpg")from transformers import AutoImageProcessor, AutoModelForObjectDetection
from PIL import Image
from huggingface_hub.utils import httpx
from io import BytesIO
import torch
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(BytesIO(httpx.get(url).content))
image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-medium")
model = AutoModelForObjectDetection.from_pretrained("Roboflow/rf-detr-medium", device_map="auto")
# prepare image for the model
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_object_detection(outputs, target_sizes=torch.tensor([image.size[::-1]]), threshold=0.3)
for result in results:
for score, label_id, box in zip(result["scores"], result["labels"], result["boxes"]):
score, label = score.item(), label_id.item()
box = [round(i, 2) for i in box.tolist()]
print(f"{model.config.id2label[label]}: {score:.2f} {box}")監督付きで結果を可視化
supervision ライブラリを使用して、検出およびセグメンテーションの結果を可視化できます。pip install supervision を実行してインストールしてください。
from transformers import AutoImageProcessor, AutoModelForObjectDetection
from PIL import Image
import supervision as sv
from huggingface_hub.utils import httpx
from io import BytesIO
import torch
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(BytesIO(httpx.get(url).content))
image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-medium")
model = AutoModelForObjectDetection.from_pretrained("Roboflow/rf-detr-medium", device_map="auto")
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_object_detection(
outputs, target_sizes=torch.tensor([image.height, image.width]), threshold=0.3
)[0]
detections = sv.Detections.from_transformers(
transformers_results=results, id2label=model.config.id2label
)
box_annotator = sv.BoxAnnotator()
label_annotator = sv.LabelAnnotator()
annotated_image = image.copy()
annotated_image = box_annotator.annotate(annotated_image, detections)
annotated_image = label_annotator.annotate(annotated_image, detections)
sv.plot_image(annotated_image)from transformers import AutoImageProcessor, AutoModelForInstanceSegmentation
from PIL import Image
import supervision as sv
from huggingface_hub.utils import httpx
from io import BytesIO
import torch
url = "http://images.cocodataset.org/val2017/000000039769.jpg"
image = Image.open(BytesIO(httpx.get(url).content))
image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-seg-medium")
model = AutoModelForInstanceSegmentation.from_pretrained("Roboflow/rf-detr-seg-medium", device_map="auto")
inputs = image_processor(images=image, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model(**inputs)
results = image_processor.post_process_instance_segmentation(
outputs, target_sizes=[image.size[::-1]], threshold=0.3
)[0]
detections = sv.Detections.from_transformers(
transformers_results=results, id2label=model.config.id2label
)
mask_annotator = sv.MaskAnnotator()
label_annotator = sv.LabelAnnotator()
annotated_image = image.copy()
annotated_image = mask_annotator.annotate(annotated_image, detections)
annotated_image = label_annotator.annotate(annotated_image, detections)
sv.plot_image(annotated_image)リソース
- 関連項目: オブジェクト検出タスクガイド。
RfDetrConfig
クラス transformers.RfDetrConfig
< 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 = Nonebackbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonehidden_expansion: float = 0.5c2f_num_blocks: int = 3activation_function: str = 'silu'dropout: float = 0.1decoder_ffn_dim: int = 2048decoder_n_points: int = 4decoder_layers: int = 3decoder_self_attention_heads: int = 8decoder_cross_attention_heads: int = 16decoder_activation_function: str = 'relu'num_queries: int = 300attention_bias: bool = Trueattention_dropout: float | int = 0.0activation_dropout: float | int = 0.0group_detr: int = 13init_std: float = 0.02disable_custom_kernels: bool = Trueclass_cost: int | float = 2bbox_cost: int | float = 5giou_cost: int | float = 2class_loss_coefficient: int | float = 1dice_loss_coefficient: int | float = 1bbox_loss_coefficient: int | float = 5giou_loss_coefficient: int | float = 2eos_coefficient: float = 0.1focal_alpha: float = 0.25auxiliary_loss: bool = Trued_model: int = 256layer_norm_eps: float = 1e-05num_feature_levels: int = 1mask_loss_coefficient: int | float = 1mask_point_sample_ratio: int = 16mask_downsample_ratio: int = 4mask_class_loss_coefficient: int | float = 5.0mask_dice_loss_coefficient: int | float = 5.0segmentation_head_activation_function: str = 'gelu'intermediate_size: int = 1024 )
パラメータ
- backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 任意) — バックボーンモデルの設定です。 - hidden_expansion (
float、任意、デフォルト値は 0.5)— projector 層における隠れ次元の拡張係数です。 - c2f_num_blocks (
int、任意、デフォルトは 3) — C2F レイヤーのブロック数。 - activation_function (
str、任意、デフォルトは"silu") — プロジェクターで使用する非線形活性化関数です。サポートされる値は"silu"、"relu"、"gelu"です。 - dropout (
float、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。 - decoder_ffn_dim (
int、任意、デフォルトは2048) — デコーダー内の「中間」(feed-forward と呼ばれることが多い) レイヤーの次元数。 - decoder_n_points (
int、省略可能、デフォルトは 4) — デコーダーの各アテンションヘッドにおいて、各特徴量レベルでサンプリングされるキーの数を指定します。 - decoder_layers (
int、任意、デフォルトは 3)— transformer のデコーダー層の数。 - decoder_self_attention_heads (
int、任意、デフォルト値は 8)— デコーダーの自己注意層における各注意層の注意ヘッド数。 - decoder_cross_attention_heads (
int、任意、デフォルト値は 16)— デコーダーのクロスアテンションにおける各アテンション層のアテンションヘッド数。 - decoder_activation_function (
str、任意、デフォルトは"relu") — デコーダーで使用する非線形活性化関数です。サポートされる値は"relu"、"silu"、"gelu"です。 - num_queries (
int、任意、デフォルトは 300) — オブジェクトクエリ数、すなわち検出スロットの数です。これは、RfDetrModel が 1 枚の画像内で検出できるオブジェクトの最大数を表します。 - attention_bias (
bool、任意、デフォルトはTrue) — 自己注意機構において、クエリ、キー、バリュー、および出力の投影層にバイアスを使用するかどうかを指定します。 - attention_dropout (
Union[float, int]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - activation_dropout (
Union[float, int]、任意、デフォルトは0.0) — 全結合層内の活性化に対する dropout 率です。 - group_detr (
int、省略可、デフォルト値は 13)— Group DETR 注意機構のグループ数です。計算複雑度の低減に役立ちます。 - init_std (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - disable_custom_kernels (
bool、任意、デフォルトはTrue) — カスタム CUDA カーネルおよび CPU カーネルの使用を無効にします。PyTorch の ONNX エクスポートではカスタムカーネルがサポートされていないため、ONNX エクスポートを行うにはこのオプションが必要です。 - class_cost (
Union[int, float]、省略可能、デフォルトは2) — ハンガリー法によるマッチングコストにおける、分類誤差の相対的な重み。 - bbox_cost (
Union[int, float]、任意、デフォルトは5) — ハンガリー法によるマッチングコストにおける、L1バウンディングボックス誤差の相対的な重み。 - giou_cost (
Union[int, float]、任意、デフォルトは2) — ハンガリー法によるマッチングコストにおける、汎化 IoU ロスの相対的な重み。 - class_loss_coefficient (
float、任意、デフォルト値は 1) — ハンガリー法によるマッチングコストにおける分類損失の相対的な重みです。 - dice_loss_coefficient (
float, 任意、デフォルト値は 1) — 物体検出損失における DICE/F-1 損失の相対的な重み。 - bbox_loss_coefficient (
float, 任意、デフォルト値は 5) — 物体検出損失における L1 バウンディングボックス損失の相対的な重み。 - giou_loss_coefficient (
float、任意、デフォルト値は 2) — オブジェクト検出損失における汎化 IoU 損失の相対的な重み。 - eos_coefficient (
float、任意、デフォルトは0.1) — オブジェクト検出の損失における「no-object」クラスの相対的な分類重み。 - focal_alpha (
float、任意、デフォルトは0.25) — focal loss の Alpha パラメータ。 - auxiliary_loss (
bool、任意、デフォルトはTrue) — 補助デコーディング損失(各デコーダ層での損失)を使用するかどうかを指定します。 - d_model (
int、省略可、デフォルトは256) — エンコーダ層とプーラ層のサイズ。 - layer_norm_eps (
float、任意、デフォルトは1e-05) — レイヤーノーマル層で使用する epsilon です。 - num_feature_levels (
int、任意、デフォルトは 1) — マルチスケールデフォーマブルアテンションで使用する特徴量レベルの数です。 - mask_loss_coefficient (
float、任意、デフォルト値は 1) — インスタンスセグメンテーションのマスク損失における Focal loss の相対的な重み。 - mask_point_sample_ratio (
int、任意、デフォルト値は 16)— マスク損失の計算に使用するサンプリング対象の点の比率です。 - mask_downsample_ratio (
int、任意、デフォルトは 4)— 入力画像の解像度に対するセグメンテーションマスクのダウンサンプル比率です。 - mask_class_loss_coefficient (
float, 省略可能、デフォルト値 5.0) — インスタンスセグメンテーション損失における Focal loss の相対的な重み。 - mask_dice_loss_coefficient (
float, 任意、デフォルト値は 5.0) — インスタンスセグメンテーション損失における DICE/F-1 損失の相対的な重み。 - segmentation_head_activation_function (
str、省略可能、デフォルトは"gelu") — セグメンテーションヘッドで使用する非線形活性化関数です。サポートされる値は"relu"、"silu"、"gelu"です。 - intermediate_size (
int、任意、デフォルトは1024) — MLP 表現の次元数。
これは RfDetrModel の設定を保存するための設定クラスです。指定された引数に基づいて Rf Detr モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Roboflow/rf-detr-base と同様の設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import RfDetrConfig, RfDetrModel
>>> # Initializing a RF-DETR roboflow/rf-detr-base style configuration
>>> configuration = RfDetrConfig()
>>> # Initializing a model (with random weights) from the Roboflow/rf-detr-base style configuration
>>> model = RfDetrModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configRfDetrDinov2Config
クラス transformers.RfDetrDinov2Config
< 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 = Nonehidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12mlp_ratio: int = 4hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.0attention_probs_dropout_prob: float | int = 0.0initializer_range: float = 0.02layer_norm_eps: float = 1e-06image_size: int | list[int] | tuple[int, int] = 224patch_size: int | list[int] | tuple[int, int] = 14num_channels: int = 3qkv_bias: bool = Truelayerscale_value: float = 1.0drop_path_rate: float | int = 0.0use_swiglu_ffn: bool = False_out_features: list[str] | None = None_out_indices: list[int] | None = Noneapply_layernorm: bool = Truereshape_hidden_states: bool = Trueuse_mask_token: bool = Truenum_windows: int = 4 )
パラメータ
- hidden_size (
int、任意、デフォルトは768) — 隠れ表現の次元数。 - num_hidden_layers (
int、任意、デフォルトは12) — Transformer デコーダーの隠れ層の数。 - num_attention_heads (
int、任意、デフォルトは12) — Transformerデコーダーの各アテンション層におけるアテンションヘッドの数。 - mlp_ratio (
int、任意、デフォルトは4) — MLP の隠れ層の次元と埋め込み次元の比率です。 - hidden_act (
str、任意、デフォルトはgelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu"など。 - hidden_dropout_prob (
Union[float, int]、任意、デフォルト値は0.0) — embeddings、encoder、pooler 内のすべての全結合層における dropout 確率です。 - attention_probs_dropout_prob (
Union[float, int]、任意、デフォルトは0.0) — アテンション確率のドロップアウト率です。 - initializer_range (
float、任意、デフォルトは0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。 - layer_norm_eps (
float、任意、デフォルトは1e-06) — レイヤーノーマル層で使用する epsilon です。 - image_size (
Union[int, list[int], tuple[int, int]]、任意、デフォルトは224) — 各画像のサイズ(解像度)。 - patch_size (
Union[int, list[int], tuple[int, int]]、任意、デフォルトは14) — 各パッチのサイズ(解像度)です。 - num_channels (
int、任意、デフォルトは3) — 入力チャネル数。 - qkv_bias (
bool、省略可、デフォルトはTrue) — クエリ、キー、バリューにバイアスを追加するかどうか。 - layerscale_value (
float、任意、デフォルトは 1.0) — Layer scale に使用する初期値。 - drop_path_rate (
float、任意、デフォルトは 0.0) — サンプルごとの Stochastic depth 率(残差層のメインパスに適用される場合)。 - use_swiglu_ffn (
bool、任意、デフォルトはFalse) — SwiGLUフィードフォワードニューラルネットワークを使用するかどうかを指定します。 - apply_layernorm (
bool、任意、デフォルトはTrue) — モデルがバックボーンとして使用される場合、特徴量マップにレイヤノルムを適用するかどうかを指定します。 - reshape_hidden_states (
bool、省略可能、デフォルトはTrue) — モデルがバックボーンとして使用される場合、特徴マップを(batch_size, d_model, height, width)の形状の 4 次元テンソルにリサイズするかどうか。Falseの場合、特徴マップは(batch_size, seq_len, d_model)の形状の 3 次元テンソルになります。 - use_mask_token (
bool、任意、デフォルトはTrue) — 埋め込みでmask_tokenを使用するかどうか。 - num_windows (
int, 任意、デフォルトは 4) — ウィンドウ付きアテンションに使用するウィンドウの数です。1 の場合は、ウィンドウ付きアテンションは使用されません。
This is the configuration class to store the configuration of a RfDetrModel. It is used to instantiate a Rf Detr model according to the specified arguments, defining the model architecture. Instantiating a configuration with the defaults will yield a similar configuration to that of the Roboflow/rf-detr-base
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import RfDetrDinov2Config, RfDetrDinov2Backbone
>>> # Initializing a RfDetrDinov2 base style configuration
>>> configuration = RfDetrDinov2Config()
>>> # Initializing a model (with random weights) from the base style configuration
>>> model = RfDetrDinov2Backbone(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configRfDetrImageProcessor
クラス transformers.RfDetrImageProcessor
< source >( **kwargs: *<class 'transformers.models.rf_detr.image_processing_rf_detr.RfDetrImageProcessorKwargs'> )
パラメータ
- 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) — RF_DETR モデルが期待する形式にアノテーションを変換するかどうかを制御します。バウンディングボックスを(center_x, center_y, width, height)の形式に変換し、値の範囲を[0, 1]にします。preprocessメソッドのdo_convert_annotationsパラメータによって上書きできます。
RfDetrImageProcessor 画像プロセッサを構築します。
preprocess
< source >( 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.rf_detr.image_processing_rf_detr.RfDetrImageProcessorKwargs'> ) → ~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) — RF_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
< source >( outputsthreshold: float = 0.5target_sizes: transformers.utils.generic.TensorType | list[tuple] | None = Nonetop_k: int | None = None ) → list[Dict]
パラメータ
- outputs (
RfDetrObjectDetectionOutput) — モデルの生出力です。 - threshold (
float, 任意) — オブジェクト検出の予測を保持するためのスコアしきい値。 - target_sizes (
torch.Tensorまたはlist[tuple[int, int]]、任意) —(batch_size, 2)の形状を持つ Tensor、または各画像のターゲットサイズ(height, width)を含むタプルのリスト (tuple[int, int])。 未設定の場合、予測結果はリサイズされません。
戻り値
list[Dict]
モデルが予測したバッチ内の各画像のスコア、ラベル、ボックスを含む辞書のリスト
RfDetrForObjectDetectionの生出力を、(top_left_x, top_left_y, bottom_right_x, bottom_right_y)形式の最終的なバウンディングボックスに変換します。PyTorchのみサポートしています。
post_process_instance_segmentation
< source >( outputsthreshold: float = 0.5mask_threshold: float = 0.0target_sizes: list[tuple[int, int]] | None = Nonereturn_coco_annotation: bool = Falsereturn_binary_maps: bool = Falsetop_k: int | None = None**kwargs ) → list[dict]
パラメータ
- outputs ([RfDetrInstanceSegmentationOutput]) — モデルの生出力。
- threshold (float、任意、デフォルトは 0.5) — 予測されたインスタンスマスクを保持するためのスコアしきい値。
- mask_threshold (float、任意、デフォルト値は 0.0) — 予測されたマスクを二値化するための閾値。
- target_sizes (list[tuple[int, int]], optional) —
各画像のターゲット
(height, width)。未設定の場合、マスクはリサイズされません。 - return_coco_annotation (bool、optional、デフォルトは False) — True の場合、セグメンテーションマップをテンソルではなく COCO のランレングス符号化として返します。 return_binary_maps とは排他的です。
- return_binary_maps (bool、optional、デフォルトは False) —
True の場合、重複の解決を行わず、検出された各インスタンスごとに 1 つのバイナリマスクを持つスタックされたテンソルとしてセグメンテーションマップを返します。これは元の
rfdetrパッケージの出力形式と一致します。return_coco_annotation とは排他です。 - top_k (int, optional) — スコアしきい値処理の前に評価される候補クエリの最大数。 デフォルトでは、クエリの総数になります。
戻り値
list[dict]
画像ごとに1つのdictで、キーは以下の通りです:
- segmentation —
int32型のセグメント ID の Tensor[H, W](-1= 背景)、 return_binary_maps=True の場合は bool 型のバイナリマスクの Tensor[num_instances, H, W]、 または return_coco_annotation=True の場合は RLE 符号化のリスト。 - segments_info — キーに
id、label_id、scoreを持つ dict のリスト。
[RfDetrForInstanceSegmentation] の出力をインスタンスセグメンテーションの予測に変換します。
RfDetrModel
クラス transformers.RfDetrModel
< source >( config: RfDetrConfig )
パラメータ
- config (RfDetrConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
裸の LW Detr Model(バックボーンとデコーダーの Transformer で構成)は、上部に特定のヘッドを持たず、生の hidden-states を出力します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( pixel_values: FloatTensorpixel_mask: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → RfDetrModelOutput or tuple(torch.FloatTensor)
パラメータ
- pixel_values (
torch.FloatTensor、shape(batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。ピクセル値は RfDetrImageProcessor を使用して取得できます。詳細は RfDetrImageProcessor.call() を参照してください(processor_classは画像の処理に RfDetrImageProcessor を使用します)。 - pixel_mask (
torch.LongTensor形状(batch_size, height, width), 省略可) — パディングピクセル値に対するアテンションの適用を回避するためのマスク。マスク値は[0, 1]:- 実在するピクセル(つまり、マスクされていない)に対して1
- padding(つまり、マスクされている)ピクセルは0です。
戻り値
RfDetrModelOutput または tuple(torch.FloatTensor)
RfDetrModelOutput、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(RfDetrConfig)や入力に応じて、さまざまな要素で構成されます。
RF-DETRモデルのフォワードパス。パイプラインは以下の手順で進行します。
- バックボーンのフラット化された出力から、オブジェクトクエリ埋め込みと空間位置提案の初期セットを生成します。
- リファインされたエンコーダ段階の予測値のストレージを初期化し(マルチグループのクエリ構造に対応)、各クエリグループに対してオブジェクトクエリとその座標を反復的にリファインすることで、エンコーダ段階から最も信頼度の高い候補を取得します。
- 学習可能なクエリ特徴量と空間参照点を初期化します(推論時には効率化のため、プライマリグループに限定します)。
- バッチ全体にわたってベースの参照点を射影し、予測された座標の補正値でそれらを洗練させます(デコーディングの前に、発見されたオブジェクトの位置にアテンションをシフトします)。その後、ターゲットクエリの特徴量をバッチの次元に一致するように拡張します。
- 洗練されたクエリと更新された参照点をtransformerデコーダーに渡し、マルチスケール特徴から詳細な空間コンテキストを集約します。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)、optional) — モデルの最終層の出力における隠れ状態のシーケンス。init_reference_points (
torch.FloatTensor、shape(batch_size, num_queries, 4)) — Transformer デコーダーに渡される初期の参照点。intermediate_hidden_states (
torch.FloatTensor、shape(batch_size, config.decoder_layers, num_queries, d_model)) — 中間隠れ状態のスタック(デコーダーの各層の出力)。intermediate_reference_points (
torch.FloatTensor、shape(batch_size, config.decoder_layers, num_queries, 4)) — 積み重ねられた中間参照点(デコーダーの各層の参照点)。enc_outputs_class (
torch.FloatTensor、形状(batch_size, sequence_length, config.num_labels)、任意、config.with_box_refine=Trueかつconfig.two_stage=Trueの場合に返されます) — 予測されたバウンディングボックスのスコアです。第1段階では、スコアが上位のconfig.two_stage_num_proposals個のバウンディングボックスがリージョンプロポーザルとして選択されます。バウンディングボックスの二値分類(すなわち、フォアグラウンドとバックグラウンド)の出力です。enc_outputs_coord_logits (
torch.FloatTensor、shape(batch_size, sequence_length, 4)、optional、config.with_box_refine=Trueかつconfig.two_stage=Trueの場合に返されます) — 第1段階で予測されるバウンディングボックス座標の logits。hidden_states (
tuple[torch.FloatTensor, ...]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます) —torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
cross_attentions (
tuple[torch.FloatTensor, ...]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
backbone_features (
listoftorch.FloatTensorof shape(batch_size, config.num_channels, config.image_size, config.image_size)) — バックボーンからの特徴量。
例:
>>> from transformers import AutoImageProcessor, RfDetrModel
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-base")
>>> model = RfDetrModel.from_pretrained("Roboflow/rf-detr-base")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> last_hidden_states = outputs.last_hidden_state
>>> list(last_hidden_states.shape)
[1, 200, 256]RfDetrForObjectDetection
クラス transformers.RfDetrForObjectDetection
< source >( config: RfDetrConfig )
パラメータ
- config (RfDetrConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
LW DETR モデル(バックボーンとデコーダー Transformer で構成)の上部にオブジェクト検出ヘッドを備え、COCO 検出などのタスクに対応します。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( pixel_values: FloatTensor = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → RfDetrObjectDetectionOutput or tuple(torch.FloatTensor)
パラメータ
- pixel_values (
torch.FloatTensor、形状(batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は RfDetrImageProcessor を使用して取得できます。詳細は RfDetrImageProcessor.call() を参照してください(processor_classは画像の処理に RfDetrImageProcessor を使用します)。 - pixel_mask (
torch.LongTensor形状(batch_size, height, width), 省略可) — パディングピクセル値に対するアテンションの適用を回避するためのマスク。マスク値は[0, 1]:- 実在するピクセル(つまり、マスクされていない)に対して1
- padding(つまり、マスクされている)ピクセルは0です。
- 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.FloatTensorである必要があります。
戻り値
RfDetrObjectDetectionOutput または tuple(torch.FloatTensor)
RfDetrObjectDetectionOutput、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(RfDetrConfig)や入力に応じて、さまざまな要素で構成されます。
フォワードパスは次のように進行します:
- ベースのRF-DETRモデルで視覚入力を処理し、transformerの最終層の隠れ状態と、参照点の最終シーケンスを取得します。
- 第一段階:エンコーダーが提案するオブジェクトクエリ埋め込みから、分類ロジットを生成します。
- 第2段階: デコーダーの最終的な隠れ状態と最新の参照点を用いて、最終的な分類ラベルと精緻化されたバウンディングボックスを予測します
loss (
torch.FloatTensor、shape(1,)、optional、labelsが提供された場合に返されます) — クラス予測の負の対数尤度(クロスエントロピー)とバウンディングボックス損失の線形結合による総損失です。後者は、L1損失と汎用スケール不変IoU損失の線形結合として定義されます。loss_dict (
Dict, 任意) — 個別の損失を含む辞書です。ログ出力に便利です。logits (
torch.FloatTensor、shape(batch_size, num_queries, num_classes + 1)) — すべてのクエリに対する分類 logits(no-object を含む)。pred_boxes (
torch.FloatTensor、shape(batch_size, num_queries, 4)) — すべてのクエリに対する正規化されたボックス座標で、(center_x, center_y, width, height) として表されます。これらの値は、バッチ内の各個別の画像のサイズに対して [0, 1] の範囲で正規化されています(パディングは考慮しません)。~DeformableDetrProcessor.post_process_object_detectionを使用して、正規化されていないバウンディングボックスを取得できます。auxiliary_outputs (
list[Dict]、optional) — オプション。補助損失が有効化されている場合(つまりconfig.auxiliary_lossがTrueに設定されている場合)かつラベルが提供されている場合にのみ返されます。各デコーダ層について、上記の2つのキー(logitsとpred_boxes)を含む辞書のリストです。init_reference_points (
torch.FloatTensor、shape(batch_size, num_queries, 4)) — Transformer デコーダーに渡される初期の参照点。last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)、optional) — モデルの最終層の出力における隠れ状態のシーケンス。intermediate_hidden_states (
torch.FloatTensor、shape(batch_size, config.decoder_layers, num_queries, d_model)) — 中間隠れ状態のスタック(デコーダーの各層の出力)。intermediate_reference_points (
torch.FloatTensor、shape(batch_size, config.decoder_layers, num_queries, 4)) — 積み重ねられた中間参照点(デコーダーの各層の参照点)。enc_outputs_class (
torch.FloatTensor、形状(batch_size, sequence_length, config.num_labels)、任意、config.with_box_refine=Trueかつconfig.two_stage=Trueの場合に返されます) — 予測されたバウンディングボックスのスコアです。第1段階では、スコアが上位のconfig.two_stage_num_proposals個のバウンディングボックスがリージョンプロポーザルとして選択されます。バウンディングボックスの二値分類(すなわち、フォアグラウンドとバックグラウンド)の出力です。enc_outputs_coord_logits (
torch.FloatTensor、shape(batch_size, sequence_length, 4)、optional、config.with_box_refine=Trueかつconfig.two_stage=Trueの場合に返されます) — 第1段階で予測されるバウンディングボックス座標の logits。hidden_states (
tuple[torch.FloatTensor, ...]、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返されます) —torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, sequence_length, hidden_size)です。各層の出力におけるモデルの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
cross_attentions (
tuple[torch.FloatTensor, ...]、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, sequence_length, sequence_length)。クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。
backbone_features (
listoftorch.FloatTensorof shape(batch_size, config.num_channels, config.image_size, config.image_size)) — バックボーンからの特徴量。
例:
>>> from transformers import AutoImageProcessor, RfDetrForObjectDetection
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> image_processor = AutoImageProcessor.from_pretrained("Roboflow/rf-detr-base")
>>> model = RfDetrForObjectDetection.from_pretrained("Roboflow/rf-detr-base")
>>> 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.5, 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 cat with confidence 0.8 at location [16.5, 52.84, 318.25, 470.78]
Detected cat with confidence 0.789 at location [342.19, 24.3, 640.02, 372.25]
Detected remote with confidence 0.633 at location [40.79, 72.78, 176.76, 117.25]RfDetrForInstanceSegmentation
forward
< source >( pixel_values: FloatTensor = Nonepixel_mask: typing.Optional[torch.LongTensor] = Nonelabels: list[dict] | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )
パラメータ
- pixel_values (
torch.FloatTensor、形状(batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値は RfDetrImageProcessor を使用して取得できます。詳細は RfDetrImageProcessor.call() を参照してください(processor_classは画像の処理に RfDetrImageProcessor を使用します)。 - pixel_mask (
torch.LongTensor形状(batch_size, height, width), 省略可) — パディングピクセル値に対するアテンションの適用を回避するためのマスク。マスク値は[0, 1]:- 実在するピクセル(つまり、マスクされていない)に対して1
- padding(つまり、マスクされている)ピクセルは0です。
- 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.FloatTensorである必要があります。
RF-DETRモデルのインスタンスセグメンテーションにおけるフォワードパス。パイプラインは以下の手順で進行します。
- ベースのRF-DETRモデルで視覚入力を処理し、マルチスケールの空間特徴、クエリ埋め込み、およびそれらの変換履歴を取得します。
- エンコーダーが提案するオブジェクトクエリ埋め込みから、分類ロジットと初期セグメンテーションマスクを生成します(第1段階)。
- デコーダーの最後の隠れ状態(第2段階)を使用して、最終的な分類ラベルと精緻化されたバウンディングボックスを予測します。
- 高解像度の空間的特徴とクエリの隠れ状態をセグメンテーションヘッドに渡して、最終的な詳細なインスタンスマスクを生成します。
RfDetrDinov2Backbone
class transformers.RfDetrDinov2Backbone
< source >( config: RfDetrDinov2Config )
パラメータ
- config (RfDetrDinov2Config) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
DETRやMaskFormerなどのフレームワークと組み合わせて使用するRfDetrDinov2バックボーン。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( pixel_values: Tensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BackboneOutput or tuple(torch.FloatTensor)
パラメータ
- pixel_values (
torch.Tensor、形状(batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。ピクセル値は RfDetrImageProcessor を使用して取得できます。詳細については RfDetrImageProcessor.call() を参照してください(processor_classは画像の処理に RfDetrImageProcessor を使用します)。
戻り値
BackboneOutput または tuple(torch.FloatTensor)
BackboneOutput、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(RfDetrConfig)や入力に応じて、さまざまな要素で構成されます。
RfDetrDinov2Backbone の 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 AutoImageProcessor, AutoBackbone
>>> import torch
>>> from PIL import Image
>>> import requests
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)
>>> processor = AutoImageProcessor.from_pretrained("facebook/dinov2-base")
>>> model = AutoBackbone.from_pretrained(
... "facebook/dinov2-base", out_features=["stage2", "stage5", "stage8", "stage11"]
... )
>>> inputs = processor(image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> feature_maps = outputs.feature_maps
>>> list(feature_maps[-1].shape)
[1, 768, 16, 16]