ソースから宛先テンソルに要素を再サンプリングし、必要に応じてアンチアリシングを行い、スケール ファクターを使用して変換先テンソル サイズを計算します。 線形または最も近い近隣補間モードを使用できます。 この演算子は、2D だけでなく、複数の次元にわたる補間をサポートします。 そのため、同じ空間サイズを維持できますが、チャネル間またはバッチ間で補間できます。 入力座標と出力座標の関係は次のとおりです。
OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset
大事な
この API は、DirectML スタンドアロン再頒布可能パッケージの一部として使用できます ( Microsoft.AI.DirectML バージョン 1.15.1 以降を参照してください)。 DirectML のバージョン履歴 も参照してください。
構文
struct DML_RESAMPLE3_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;
BOOL Antialiased;
};
メンバーズ
InputTensor
型: const DML_TENSOR_DESC*
入力データを格納しているテンソル。
OutputTensor
型: const DML_TENSOR_DESC*
出力データを書き込むテンソル。
InterpolationMode
このフィールドは、出力ピクセルの選択に使用される補間の種類を決定します。
DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 最も近い近隣アルゴリズムを使用します。これは、各出力要素の対応するピクセル オフセットに最も近い入力要素を選択します。
DML_INTERPOLATION_MODE_LINEAR。 線形補間アルゴリズムを使用します。これは、ディメンションごとに最も近い 2 つの入力要素の加重平均を計算することによって出力要素を計算します。 リサンプリングは最大 4 次元 (4 次元) でサポートされています。重み付け平均は、各出力要素の合計 16 個の入力要素で計算されます。
RoundingDirection
小数座標を入力ピクセルにマッピングするときに、各軸に沿って丸める方向。 バイリニア補間はとにかく小数座標を補間するので、 これはDML_INTERPOLATION_MODE_NEAREST_NEIGHBORにのみ影響します。
DML_AXIS_DIRECTION_INCREASING。 小数部の座標を、増加する軸の値 (ceil) に向かって丸めます。
DML_AXIS_DIRECTION_DECREASING。 小数部の座標を、軸の値を小さくする (床) に向かって丸めます。
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 にする必要があります。
Antialiased
型: BOOL
アンチエイリアシングは、max(1, 1 / scale)要素によってリサンプリング フィルターを引き伸ばすことによって実現されます。つまり、ダウンサンプリングの場合、より多くの入力ピクセルが出力ピクセルに寄与します。
これは、このフラグが TRUEに設定され、次の条件が想定されている場合に発生します。
- InterpolationMode が DML_INTERPOLATION_MODE_LINEAR
- 1/スケール > 2
その後、この演算子は、ダウンスケーリング時にアンチエイリアシング フィルターを使用します。
備考
アンチエイリアシングがfalse場合、この演算子はDML_RESAMPLE2_OPERATOR_DESCに相当します。
可用性
この演算子は 、DML_FEATURE_LEVEL_6_4で導入されました。
Tensor 制約
InputTensor と OutputTensor には、同じ DataType と DimensionCount が必要です。
Tensor のサポート
| テンソル | 種類 | サポートされているディメンション数 | サポートされているデータ型 |
|---|---|---|---|
| インプットテンソル | インプット | 1 ~ 4 | FLOAT32、FLOAT16、INT8、UINT8 |
| 出力テンソル | アウトプット | 1 ~ 4 | FLOAT32、FLOAT16、INT8、UINT8 |
必要条件
| ヘッダ | directml.h |