Transformers documentation
DPT
このモデルは2021年3月24日にHF papersで公開され、2022年3月28日にHugging Face Transformersに貢献されました。
DPT
概要
DPTモデルは、René Ranftl、Alexey Bochkovskiy、Vladlen Koltun によって Vision Transformers for Dense Prediction で提案されました。 DPTは、セマンティックセグメンテーションや深度推定のような高密度予測タスクにおいて、Vision Transformer (ViT) をバックボーンとして活用するモデルです。
論文の抄録は以下の通りです。
我々は、dense vision transformers(高密度ビジョン・トランスフォーマー)を導入します。これは、dense prediction(高密度予測)タスクのバックボーンとして、畳み込みネットワークの代わりにビジョン・トランスフォーマーを活用するアーキテクチャです。ビジョン・トランスフォーマーの各段階からトークンを組み立て、さまざまな解像度で画像のような表現を生成し、畳み込みデコーダーを用いて段階的に結合することで、フル解像度の予測を行います。トランスフォーマーのバックボーンは、一定かつ比較的高い解像度で表現を処理し、すべての段階でグローバルな受容野を有します。これらの特性により、dense vision transformer は、完全な畳み込みネットワークと比較して、より細粒度かつグローバルに整合性のある予測を提供できます。実験により、このアーキテクチャが dense prediction タスクにおいて大幅な性能向上をもたらすことが示されました。特に、大量の学習データが利用可能な場合に顕著です。単眼深度推定では、最先端の完全な畳み込みネットワークと比較して、相対的な性能が最大 28% 向上することが観察されました。セマンティックセグメンテーションに適用した場合、dense vision transformers は ADE20K で 49.02% mIoU という新たな最先端性能を達成しました。さらに、このアーキテクチャは NYUv2、KITTI、Pascal Context などのより小さなデータセットでファインチューニングでき、それらでも新たな最先端性能を達成することが示されています。
DPT architecture. Taken from the original paper. このモデルは nielsr によって提供されました。元のコードは こちら で確認できます。
使用のコツ
DPTはAutoBackboneクラスと互換性があります。これにより、VitDetBackboneやDinov2Backboneなど、ライブラリで利用可能なさまざまなコンピュータビジョンのバックボーンと組み合わせてDPTフレームワークを使用できます。以下のように作成できます。
from transformers import Dinov2Config, DPTConfig, DPTForDepthEstimation
# initialize with a Transformer-based backbone such as DINOv2
# in that case, we also specify `reshape_hidden_states=False` to get feature maps of shape (batch_size, num_channels, height, width)
backbone_config = Dinov2Config.from_pretrained("facebook/dinov2-base", out_features=["stage1", "stage2", "stage3", "stage4"], reshape_hidden_states=False)
config = DPTConfig(backbone_config=backbone_config)
model = DPTForDepthEstimation(config=config)リソース
DPTの入門を支援するための、Hugging Face公式およびコミュニティ(🌎で示されます)のリソースのリストです。
DPTForDepthEstimationのデモノートブックはこちらで確認できます。
ここにリソースを掲載していただくことを希望される場合は、Pull Request を開いてください。レビューいたします。リソースは、既存のリソースと重複するのではなく、新しいものを示すことが望ましいです。
DPTConfig
class transformers.DPTConfig
< 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: None | int = 12num_attention_heads: int | None = 12intermediate_size: int | None = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int | None = 0.0attention_probs_dropout_prob: float | int | None = 0.0initializer_range: float = 0.02layer_norm_eps: float | None = 1e-12image_size: int | list[int] | tuple[int, int] | None = 384patch_size: int | list[int] | tuple[int, int] | None = 16num_channels: int | None = 3is_hybrid: bool = Falseqkv_bias: bool | None = Truebackbone_out_indices: list[int] | tuple[int, ...] | None = (2, 5, 8, 11)readout_type: typing.Literal['ignore', 'add', 'project'] = 'project'reassemble_factors: list[int | float] | tuple[int | float, ...] = (4, 2, 1, 0.5)neck_hidden_sizes: list[int] | tuple[int, ...] = (96, 192, 384, 768)fusion_hidden_size: int = 256head_in_index: int = -1use_batch_norm_in_fusion_residual: bool | None = Falseuse_bias_in_fusion_residual: bool | None = Noneadd_projection: bool = Falseuse_auxiliary_head: bool | None = Trueauxiliary_loss_weight: float = 0.4semantic_loss_ignore_index: int = 255semantic_classifier_dropout: float | int = 0.1backbone_featmap_shape: list[int] | tuple[int, ...] | None = (1, 1024, 24, 24)neck_ignore_stages: list[int] | tuple[int, ...] = (0, 1)backbone_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonepooler_output_size: int | None = Nonepooler_act: str = 'tanh' )
パラメータ
- hidden_size (
int、任意、デフォルトは768) — 隠れ表現の次元数。 - num_hidden_layers (
int、任意、デフォルトは12) — Transformer デコーダーの隠れ層の数。 - num_attention_heads (
int、任意、デフォルトは12) — Transformerデコーダーの各アテンション層におけるアテンションヘッドの数。 - intermediate_size (
int、任意、デフォルトは3072) — 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-12) — レイヤーノーマル層で使用する epsilon です。 - image_size (
Union[int, list[int], tuple[int, int]]、任意、デフォルトは384) — 各画像のサイズ(解像度)です。 - patch_size (
Union[int, list[int], tuple[int, int]]、任意、デフォルトは16) — 各パッチのサイズ(解像度)です。 - num_channels (
int、任意、デフォルトは3) — 入力チャネル数。 - is_hybrid (
bool、省略可、デフォルトはFalse) — ハイブリッドバックボーンを使用するかどうか。DPT-Hybrid モデルの読み込み時に有用です。 - qkv_bias (
bool、省略可、デフォルトはTrue) — クエリ、キー、バリューにバイアスを追加するかどうか。 - backbone_out_indices (
list[int]、任意、デフォルトは[2, 5, 8, 11]) — backbone から使用する中間 hidden state のインデックスです。 - readout_type (
str, 省略可能, デフォルトは"project") — ViT バックボーンの中間隠れ状態の readout トークン(CLS トークン)を処理する際に使用する readout タイプです。"ignore","add","project"].- “ignore”はCLSトークンを単に無視します。
- 「add」は、表現を加算することにより、CLS トークンの情報を他のすべてのトークンに伝達します。
- “project” は、読み出しを他のすべてのトークンに連結してから、線形層と GELU 非線形性を適用して、表現を元のフィーチャ次元 D に射影することにより、他のトークンに情報を伝達します。
- reassemble_factors (
list[int]、任意、デフォルトは[4, 2, 1, 0.5]) — reassemble レイヤーの上/下サンプリング係数です。 - neck_hidden_sizes (
list[str]、任意、デフォルトは[96, 192, 384, 768]) — バックボーンのフィーチャマップを投影するための隠れ層サイズです。 - fusion_hidden_size (
int、任意、デフォルトは 256) — 融合前のチャネル数です。 - head_in_index (
int、任意、デフォルトは -1) — ヘッドで使用する特徴のインデックス。 - use_batch_norm_in_fusion_residual (
bool、任意、デフォルトはFalse) — fusion ブロックの pre-activate residual ユニットでバッチ正規化を使用するかどうか。 - use_bias_in_fusion_residual (
bool、任意、デフォルトはTrue) — fusion ブロックの pre-activate residual ユニットでバイアスを使用するかどうか。 - add_projection (
bool、省略可、デフォルトはFalse) — 深度推定ヘッドの前に投影層を追加するかどうか。 - use_auxiliary_head (
bool、任意、デフォルトはTrue) — 学習中に補助ヘッドを使用するかどうか。 - auxiliary_loss_weight (
float、任意、デフォルト値は 0.4)— 補助ヘッドのクロスエントロピー損失の重み。 - semantic_loss_ignore_index (
int、任意、デフォルト値は255) — セマンティックセグメンテーションモデルの損失関数によって無視されるインデックスです。 - semantic_classifier_dropout (
float、任意、デフォルト値は 0.1) — セマンティック分類ヘッドのドロップアウト率です。 - backbone_featmap_shape (
list[int]、任意、デフォルトは[1, 1024, 24, 24]) —hybrid埋め込みタイプでのみ使用されます。backbone の特徴マップの形状です。 - neck_ignore_stages (
list[int]、任意、デフォルトは[0, 1]) —hybrid埋め込みタイプでのみ使用されます。無視する readout レイヤーのステージを指定します。 - backbone_config (
Union[dict, ~configuration_utils.PreTrainedConfig], 任意) — バックボーンモデルの設定です。 - pooler_output_size (
int, 任意) — プーラー層の次元数。None の場合、デフォルトでhidden_sizeになります。 - pooler_act (
str、任意、デフォルトは"tanh") — プーラーで使用する活性化関数です。
これはDPTModelの設定を保存するための設定クラスです。指定された引数に基づいてDptモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、Intel/dpt-largeと類似した設定が得られます。
設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。
例:
>>> from transformers import DPTModel, DPTConfig
>>> # Initializing a DPT dpt-large style configuration
>>> configuration = DPTConfig()
>>> # Initializing a model from the dpt-large style configuration
>>> model = DPTModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configDPTImageProcessor
class transformers.DPTImageProcessor
< source >( **kwargs: *<class 'transformers.models.dpt.image_processing_dpt.DPTImageProcessorKwargs'> )
パラメータ
- do_convert_rgb (
bool、kwargs、任意) — 画像を RGB に変換するかどうかを指定します。 - do_resize (
bool、kwargs、任意、デフォルトはTrue) — 画像をリサイズするかどうか。 - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, デフォルトは{'height' -- 384, 'width': 384}): モデルへの最大入力サイズを指定します。 - default_to_square (
bool、kwargs、任意、デフォルトはTrue) — size が int の場合、リサイズ時に正方形の画像をデフォルトとするかどうかを指定します。 - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs、デフォルトはNone) —center_cropを適用した後の出力画像のサイズ。 - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs、デフォルトは3) — 画像のリサイズ時に使用するリサンプリングフィルタです。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、任意、デフォルトは[0.5, 0.5, 0.5]) — 正規化に使用する画像の平均値。do_normalizeがTrueに設定されている場合のみ有効です。 - image_std (
Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルト値は[0.5, 0.5, 0.5]) — 正規化に使用する画像の標準偏差。do_normalizeがTrueに設定されている場合のみ有効です。 - do_pad (
bool、kwargs、optional、デフォルトはFalse) — 画像をパディングするかどうかを指定します。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。 - 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、デフォルトはNone) — 画像を中央クロップするかどうか。 - 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、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。 - ensure_multiple_of (
int、kwargs、optional、デフォルト値は 1) —do_resizeがTrueの場合、画像はこの値の倍数となるサイズにリサイズされます。preprocess内のensure_multiple_ofによって上書きできます。 - size_divisor (
int, kwargs) — 高さと幅の両方が割り切れることを保証するためのサイズです。 - keep_aspect_ratio (
bool、kwargs、任意、デフォルトはFalse) —Trueの場合、アスペクト比を維持したまま、画像を可能な限り大きなサイズにリサイズします。preprocess内のkeep_aspect_ratioによって上書きできます。 - do_reduce_labels (
bool、kwargs、optional、デフォルトはself.do_reduce_labels) — セグメンテーションマップのすべてのラベル値を 1 減らすかどうか。通常、0 が背景に使用され、かつ背景自体がデータセットのすべてのクラスに含まれていないデータセット(例: ADE20k)で使用されます。背景ラベルは 255 に置き換えられます。
DPTImageProcessor の画像プロセッサを構築します。
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.dpt.image_processing_dpt.DPTImageProcessorKwargs'> ) → ~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を設定してください。 - segmentation_maps (
ImageInput、任意) — 前処理を行うセグメンテーションマップです。 - 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、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。 - ensure_multiple_of (
int、kwargs、optional、デフォルト値は 1) —do_resizeがTrueの場合、画像はこの値の倍数となるサイズにリサイズされます。preprocess内のensure_multiple_ofによって上書きできます。 - size_divisor (
int, kwargs) — 高さと幅の両方が割り切れることを保証するためのサイズです。 - keep_aspect_ratio (
bool、kwargs、任意、デフォルトはFalse) —Trueの場合、アスペクト比を維持したまま、画像を可能な限り大きなサイズにリサイズします。preprocess内のkeep_aspect_ratioによって上書きできます。 - do_reduce_labels (
bool、kwargs、optional、デフォルトはself.do_reduce_labels) — セグメンテーションマップのすべてのラベル値を 1 減らすかどうか。通常、0 が背景に使用され、かつ背景自体がデータセットのすべてのクラスに含まれていないデータセット(例: ADE20k)で使用されます。背景ラベルは 255 に置き換えられます。
戻り値
~image_processing_base.BatchFeature
- data (
dict) — call メソッド(‘pixel_values’ など)によって返される、リスト/配列/テンソルの辞書。 - tensor_type (
Union[None, str, TensorType]、省略可) — 初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換するために、ここで tensor_type を指定できます。
DPTImageProcessorPil
クラス transformers.DPTImageProcessorPil
< source >( **kwargs: *<class 'transformers.models.dpt.image_processing_pil_dpt.DPTImageProcessorKwargs'> )
パラメータ
- do_convert_rgb (
bool、kwargs、任意) — 画像を RGB に変換するかどうかを指定します。 - do_resize (
bool、kwargs、任意、デフォルトはTrue) — 画像をリサイズするかどうか。 - size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs, デフォルトは{'height' -- 384, 'width': 384}): モデルへの最大入力サイズを指定します。 - default_to_square (
bool、kwargs、任意、デフォルトはTrue) — size が int の場合、リサイズ時に正方形の画像をデフォルトとするかどうかを指定します。 - crop_size (
Annotated[int | list[int] | tuple[int, ...] | dict[str, int] | None, None], kwargs) —center_cropを適用した後の出力画像のサイズ。 - resample (
Annotated[Union[int, PILImageResampling, NoneType], None], kwargs、デフォルトは3) — 画像のリサイズ時に使用するリサンプリングフィルタです。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、任意、デフォルトは[0.5, 0.5, 0.5]) — 正規化に使用する画像の平均値。do_normalizeがTrueに設定されている場合のみ有効です。 - image_std (
Union[float, list[float], tuple[float, ...]]、kwargs、optional、デフォルト値は[0.5, 0.5, 0.5]) — 正規化に使用する画像の標準偏差。do_normalizeがTrueに設定されている場合のみ有効です。 - do_pad (
bool、kwargs、optional、デフォルトはFalse) — 画像をパディングするかどうかを指定します。パディングは、バッチ内の最大サイズに合わせるか、画像ごとに固定の正方形サイズに合わせるかのいずれかで行われます。具体的なパディング戦略はモデルによって異なります。 - 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、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。 - ensure_multiple_of (
int、kwargs、optional、デフォルト値は 1) —do_resizeがTrueの場合、画像はこの値の倍数となるサイズにリサイズされます。preprocess内のensure_multiple_ofによって上書きできます。 - size_divisor (
int, kwargs) — 高さと幅の両方が割り切れることを保証するためのサイズです。 - keep_aspect_ratio (
bool、kwargs、任意、デフォルトはFalse) —Trueの場合、アスペクト比を維持したまま、画像を可能な限り大きなサイズにリサイズします。preprocess内のkeep_aspect_ratioによって上書きできます。 - do_reduce_labels (
bool、kwargs、optional、デフォルトはself.do_reduce_labels) — セグメンテーションマップのすべてのラベル値を 1 減らすかどうか。通常、0 が背景に使用され、かつ背景自体がデータセットのすべてのクラスに含まれていないデータセット(例: ADE20k)で使用されます。背景ラベルは 255 に置き換えられます。
DPTImageProcessor の画像プロセッサを構築します。
preprocess
< source >( images: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor']]segmentation_maps: typing.Union[ForwardRef('PIL.Image.Image'), numpy.ndarray, ForwardRef('torch.Tensor'), list['PIL.Image.Image'], list[numpy.ndarray], list['torch.Tensor'], NoneType] = None**kwargs: *<class 'transformers.models.dpt.image_processing_pil_dpt.DPTImageProcessorKwargs'> ) → ~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を設定してください。 - segmentation_maps (
ImageInput、任意) — 前処理を行うセグメンテーションマップです。 - 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、任意) — 入力内の各画像に使用される画像トークンの数です。 後方互換性のために追加されましたが、将来のモデルではプロセッサの属性として設定されるべきです。 - ensure_multiple_of (
int、kwargs、optional、デフォルト値は 1) —do_resizeがTrueの場合、画像はこの値の倍数となるサイズにリサイズされます。preprocess内のensure_multiple_ofによって上書きできます。 - size_divisor (
int, kwargs) — 高さと幅の両方が割り切れることを保証するためのサイズです。 - keep_aspect_ratio (
bool、kwargs、任意、デフォルトはFalse) —Trueの場合、アスペクト比を維持したまま、画像を可能な限り大きなサイズにリサイズします。preprocess内のkeep_aspect_ratioによって上書きできます。 - do_reduce_labels (
bool、kwargs、optional、デフォルトはself.do_reduce_labels) — セグメンテーションマップのすべてのラベル値を 1 減らすかどうか。通常、0 が背景に使用され、かつ背景自体がデータセットのすべてのクラスに含まれていないデータセット(例: ADE20k)で使用されます。背景ラベルは 255 に置き換えられます。
戻り値
~image_processing_base.BatchFeature
- data (
dict) — call メソッド(‘pixel_values’ など)によって返される、リスト/配列/テンソルの辞書。 - tensor_type (
Union[None, str, TensorType]、省略可) — 初期化時に PyTorch/Numpy の Tensor 内の整数リストを変換するために、ここで tensor_type を指定できます。
post_process_semantic_segmentation
< source >( outputstarget_sizes: list[tuple] | None = Nonereturn_segmentation_scores: bool = False ) → list[torch.Tensor] or list[SemanticSegmentationPostProcessorOutput]
パラメータ
- outputs (DPTForSemanticSegmentation) — モデルの生出力です。
- target_sizes (
list[tuple]、任意) — バッチ内の各画像のターゲットサイズ(高さ、幅)を含むタプルのリスト(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 が指定されている場合)に対応します。
DPTForSemanticSegmentationの出力をセマンティックセグメンテーションマップに変換します。
post_process_depth_estimation
< source >( outputs: DepthEstimatorOutputtarget_sizes: transformers.utils.generic.TensorType | list[tuple[int, int]] | None = None )
DepthEstimatorOutputの生出力を、最終的な深度予測に変換します。
DPTModel
class transformers.DPTModel
< source >( config: DPTConfigadd_pooling_layer: bool = True )
パラメータ
- config (DPTConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
- add_pooling_layer (
bool、省略可、デフォルトはTrue) — プーリング層を追加するかどうか
特定のヘッドを付加せず、生のhidden-statesを出力する素のDpt Model。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( pixel_values: FloatTensor**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutputWithPoolingAndIntermediateActivations or tuple(torch.FloatTensor)
パラメータ
- pixel_values (
torch.FloatTensor、shape(batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。ピクセル値は DPTImageProcessor を使用して取得できます。詳細については DPTImageProcessor.call() を参照してください(processor_classは画像の処理に DPTImageProcessor を使用します)。
戻り値
BaseModelOutputWithPoolingAndIntermediateActivations または tuple(torch.FloatTensor)
BaseModelOutputWithPoolingAndIntermediateActivations、またはtorch.FloatTensorのタプル(return_dict=Falseが渡された場合、またはconfig.return_dict=Falseの場合)。設定(DPTConfig)や入力に応じて、さまざまな要素で構成されます。
DPTModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
last_hidden_state (
torch.FloatTensor、shape(batch_size, sequence_length, hidden_size)、optional) — モデルの最終層の出力における隠れ状態のシーケンス。pooler_output (
torch.FloatTensor、shape(batch_size, hidden_size)) — 補助事前学習タスクに使用される層をさらに通して処理された後、シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された後の分類トークンを返します。この線形層の重みは、事前学習中の次文予測(分類)目的から学習されます。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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
intermediate_activations (
tuple(torch.FloatTensor)、任意) — モデルの各層の隠れ状態を計算するために使用できる中間活性化値。
DPTForDepthEstimation
class transformers.DPTForDepthEstimation
< source >( config: DPTConfig )
パラメータ
- config (DPTConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
depth estimationヘッド(3つの畳み込み層で構成)を上部に備えたDPTモデル。KITTIやNYUv2などの用途に使用できます。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( pixel_values: FloatTensorlabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → DepthEstimatorOutput or tuple(torch.FloatTensor)
パラメータ
- pixel_values (
torch.FloatTensor、shape(batch_size, num_channels, image_size, image_size)) — 入力画像に対応するテンソルです。ピクセル値はimage_processor_classを使用して取得できます。詳細はimage_processor_class.__call__を参照してください(processor_classは画像の処理にimage_processor_classを使用します)。 - labels (
torch.LongTensor、形状(batch_size, height, width)、任意) — 損失の計算に使用する正解の深度推定マップです。
戻り値
DepthEstimatorOutput または tuple(torch.FloatTensor)
None や入力に応じて、さまざまな要素で構成される DepthEstimatorOutput または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。
DPTForDepthEstimationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional、labelsが指定された場合に返されます) — 分類損失(config.num_labels==1 の場合は回帰損失)。predicted_depth (
torch.FloatTensor、形状(batch_size, height, width)) — 各ピクセルの予測深度。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される) —torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, num_channels, height, width)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, patch_size, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from transformers import AutoImageProcessor, DPTForDepthEstimation
>>> import torch
>>> import numpy as np
>>> 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("Intel/dpt-large")
>>> model = DPTForDepthEstimation.from_pretrained("Intel/dpt-large")
>>> # prepare image for the model
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> # interpolate to original size
>>> post_processed_output = image_processor.post_process_depth_estimation(
... outputs,
... target_sizes=[(image.height, image.width)],
... )
>>> # visualize the prediction
>>> predicted_depth = post_processed_output[0]["predicted_depth"]
>>> depth = predicted_depth * 255 / predicted_depth.max()
>>> depth = depth.detach().cpu().numpy()
>>> depth = Image.fromarray(depth.astype("uint8"))DPTForSemanticSegmentation
クラス transformers.DPTForSemanticSegmentation
< source >( config: DPTConfig )
パラメータ
- config (DPTConfig) — モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。
ADE20KやCityScapesなど、セマンティックセグメンテーションヘッドを上部に備えたDpt Model。
このモデルは PreTrainedModel を継承しています。すべてのモデルに実装されている汎用的なメソッド(ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど)については、スーパークラスのドキュメントを参照してください。
このモデルは、PyTorchのtorch.nn.Moduleのサブクラスでもあります。 通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。
forward
< source >( pixel_values: typing.Optional[torch.FloatTensor] = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SemanticSegmenterOutput or tuple(torch.FloatTensor)
パラメータ
- pixel_values (
torch.FloatTensor、形状(batch_size, num_channels, image_size, image_size)、任意) — 入力画像に対応するテンソルです。ピクセル値はimage_processor_classを使用して取得できます。詳細はimage_processor_class.__call__を参照してください(processor_classは画像の処理にimage_processor_classを使用します)。 - labels (
torch.LongTensor、shape(batch_size, height, width)、任意) — 損失の計算に使用する正解のセマンティックセグメンテーションマップです。インデックスは[0, ..., config.num_labels - 1]の範囲である必要があります。config.num_labels > 1の場合、分類損失(Cross-Entropy)が計算されます。
戻り値
SemanticSegmenterOutput または tuple(torch.FloatTensor)
None や入力に応じて、さまざまな要素で構成される SemanticSegmenterOutput または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。
DPTForSemanticSegmentationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。
この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく
Moduleインスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを黙って無視するためです。
loss (
torch.FloatTensor、shape(1,)、optional、labelsが指定された場合に返されます) — 分類損失(config.num_labels==1 の場合は回帰損失)。logits (
torch.FloatTensor、形状(batch_size, config.num_labels, logits_height, logits_width)) — 各ピクセルの分類スコアです。pixel_valuesとして入力に渡されたものと同じサイズであるとは限らない logits が返されます。これは、ユーザーが後処理として logits を元の画像サイズにリサイズする必要がある場合に、2回の補間処理を行って品質を失うことを避けるためです。常に logits の形状を確認し、必要に応じてリサイズしてください。hidden_states (
tuple(torch.FloatTensor)、optional、output_hidden_states=Trueが渡された場合またはconfig.output_hidden_states=Trueの場合に返される) —torch.FloatTensorのタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は(batch_size, patch_size, hidden_size)です。各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
attentions (
tuple(torch.FloatTensor)、optional、output_attentions=Trueが渡された場合またはconfig.output_attentions=Trueの場合に返されます)—torch.FloatTensorのタプル(各レイヤーごとに1つ)、形状は(batch_size, num_heads, patch_size, sequence_length)。アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
例:
>>> from transformers import AutoImageProcessor, DPTForSemanticSegmentation
>>> 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("Intel/dpt-large-ade")
>>> model = DPTForSemanticSegmentation.from_pretrained("Intel/dpt-large-ade")
>>> inputs = image_processor(images=image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> logits = outputs.logits