DML_RESAMPLE2_OPERATOR_DESC 構造体 (directml.h)

スケール ファクターを使用して変換元から変換先テンソルに要素をリサンプリングし、変換先テンソル サイズを計算します。 線形補間モードまたはニアレスト ネイバー補間モードを使用できます。 この演算子は、2D だけでなく、複数の次元にわたる補間をサポートします。 そのため、同じ空間サイズを維持できますが、チャネル間またはバッチ間で補間されます。 入力座標と出力座標の関係は次のとおりです。

OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset

重要

この API は、DirectML スタンドアロン再頒布可能パッケージの一部として使用できます (Microsoft.AI.DirectML バージョン 1.9 以降を参照してください)。 DirectML バージョン履歴も参照してください。

構文

struct DML_RESAMPLE2_OPERATOR_DESC
{
    const DML_TENSOR_DESC* InputTensor;
    const DML_TENSOR_DESC* OutputTensor;
    DML_INTERPOLATION_MODE InterpolationMode;
    DML_AXIS_DIRECTION RoundingDirection;
    UINT DimensionCount;
    _Field_size_(DimensionCount) const FLOAT* Scales;
    _Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
    _Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
};

メンバー

InputTensor

型: const DML_TENSOR_DESC*

入力データを格納しているテンソル。

OutputTensor

型: const DML_TENSOR_DESC*

出力データを書き込む先のテンソル。

InterpolationMode

型: DML_INTERPOLATION_MODE

このフィールドは、出力ピクセルの選択に使用される補間の種類を決定します。

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBORニアレストネイバーアルゴリズムを使用します。これは、各出力要素の対応するピクセル オフセットに最も近い入力要素を選択します。

  • DML_INTERPOLATION_MODE_LINEAR線状補間アルゴリズムを使用します。これは、次元ごとに最も近い 2 つの入力要素の加重平均を計算することによって出力要素を計算します。 リサンプリングは最大 4 つの次元 (4 次元) でサポートされています。重み付け平均は、各出力要素の合計 16 個の入力要素で計算されます。

RoundingDirection

型: DML_AXIS_DIRECTION

小数座標を入力ピクセルにマッピングし返すときに、各軸に沿って丸める方向。 バイリニア補間ではとにかく分率座標が補間されるため、これはDML_INTERPOLATION_MODE_NEAREST_NEIGHBOR にのみ影響します。

  • DML_AXIS_DIRECTION_INCREASING。 分率座標を、より大きい軸の値 (天井) に向かって丸めます。

  • DML_AXIS_DIRECTION_DECREASING。 分率座標を、より小さい軸の値 (床) に向かって丸めます。

DimensionCount

型: UINT

ScaleInputPixelOffsets、および OutputPixelOffsets 配列内の要素の数。 この値は、InputTensorOutputTensor の次元数と一致する必要があります。

Scales

型: _Field_size_(DimensionCount) const FLOAT*

入力を再サンプリングするときに適用するスケール。スケール > 1 はイメージをスケール アップし、スケール < 1 はその次元のイメージをスケール ダウンします。 スケールは正確に OutputSize / InputSize である必要はありません。 スケーリング後の入力が出力バインドよりも大きい場合は、出力サイズにクロップします。 一方、スケーリング後の入力が出力バインドよりも小さい場合は、出力エッジがクランプされます。

InputPixelOffsets

型: _Field_size_(DimensionCount) const FLOAT*

リサンプリング前に入力ピクセルに適用するオフセット。 この値が 0 の場合、ピクセルの中央ではなく左上隅が使用されます。この場合、期待される結果は通常得られません。 ピクセルの中心を使用してイメージを再サンプリングし、DML_RESAMPLE_OPERATOR_DESC と同じ動作を取得するには、この値は 0.5 である必要があります。

OutputPixelOffsets

型: _Field_size_(DimensionCount) const FLOAT*

リサンプリング後に出力ピクセルに適用するオフセット。 この値が 0 の場合、ピクセルの中央ではなく左上隅が使用されます。この場合、期待される結果は通常得られません。 ピクセルの中心を使用してイメージをリサンプリングし、DML_RESAMPLE_OPERATOR_DESC と同じ動作を取得するには、この値を -0.5 にする必要があります。

解説

この演算子は、InterpolationModeDML_INTERPOLATION_MODE_LINEAR に設定されている場合、または InterpolationModeDML_INTERPOLATION_MODE_NEAREST_NEIGHBOR に設定され、RoundingDirectionDML_AXIS_DIRECTION_DECREASING に設定され、さらに OutputPixelOffsets が追加で -0.5 の調整をされている場合の DML_RESAMPLE1_OPERATOR_DESC と同じです。

可用性

この演算子は、DML_FEATURE_LEVEL_5_1 で導入されました。

Tensor 制約

InputTensorOutputTensor には、同じ DataTypeDimensionCount が必要です。

Tensor のサポート

DML_FEATURE_LEVEL_6_2 以降

Tensor 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 1 から 4 FLOAT32、FLOAT16、INT8、UINT8
OutputTensor 出力 1 から 4 FLOAT32、FLOAT16、INT8、UINT8

DML_FEATURE_LEVEL_5_1 以降

Tensor 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 1 から 4 FLOAT32、FLOAT16
OutputTensor 出力 1 から 4 FLOAT32、FLOAT16

要件

   
ヘッダー directml.h