DML_RESAMPLE1_OPERATOR_DESC構造体 (directml.h)
スケール ファクターを使用して変換先テンソル サイズを計算して、ソースから変換先テンソルに要素を再サンプリングします。 線形補間モードまたは最近隣補間モードを使用できます。 演算子は、2D だけでなく、複数の次元にわたる補間をサポートします。 そのため、同じ空間サイズを維持できますが、チャネル間またはバッチ間で補間できます。 入力座標と出力座標の関係は次のとおりです。
OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset
構文
struct DML_RESAMPLE1_OPERATOR_DESC {
const DML_TENSOR_DESC *InputTensor;
const DML_TENSOR_DESC *OutputTensor;
DML_INTERPOLATION_MODE InterpolationMode;
UINT DimensionCount;
const FLOAT *Scales;
const FLOAT *InputPixelOffsets;
const FLOAT *OutputPixelOffsets;
};
メンバー
InputTensor
型: const DML_TENSOR_DESC*
入力データを含むテンソル。
OutputTensor
型: const DML_TENSOR_DESC*
出力データを書き込むテンソル。
InterpolationMode
このフィールドは、出力ピクセルの選択に使用される補間の種類を決定します。
DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 各出力要素の対応するピクセル中心に最も近い入力要素を選択する Nearest Neighbor アルゴリズムを使用します。
DML_INTERPOLATION_MODE_LINEAR。 線形補間アルゴリズムを使用します。このアルゴリズムは、ディメンションごとに最も近い 2 つの入力要素の加重平均を計算することによって出力要素を計算します。 リサンプリングは、最大 4 次元 (四辺形) でサポートされています。重み付け平均は、出力要素ごとに合計 16 個の入力要素で計算されます。
DimensionCount
型: UINT
Scale、InputPixelOffsets、OutputPixelOffsets が指す配列内の値の数。 この値は 、InputTensor と OutputTensor のディメンション数と一致 する必要があります。
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
必要があります。
注釈
InputPixelOffsets が 0.5 に設定され、OutputPixelOffsets が -0.5 に設定されている場合、この演算子はDML_RESAMPLE_OPERATOR_DESCに相当します。
可用性
この演算子は で DML_FEATURE_LEVEL_2_1
導入されました。
テンソル制約
InputTensor と OutputTensor には、同じ DataType と DimensionCount が必要です。
Tensor のサポート
DML_FEATURE_LEVEL_6_2以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 4 | FLOAT32、FLOAT16、INT8、UINT8 |
OutputTensor | 出力 | 1 から 4 | FLOAT32、FLOAT16、INT8、UINT8 |
DML_FEATURE_LEVEL_5_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 1 から 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 1 から 4 | FLOAT32、FLOAT16 |
DML_FEATURE_LEVEL_2_1以上
テンソル | 種類 | サポートされているディメンション数 | サポートされるデータ型 |
---|---|---|---|
InputTensor | 入力 | 4 | FLOAT32、FLOAT16 |
OutputTensor | 出力 | 4 | FLOAT32、FLOAT16 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 10 ビルド 20348 |
サポートされている最小のサーバー | Windows 10 ビルド 20348 |
Header | directml.h |