DML_ROI_ALIGN_OPERATOR_DESC構造体 (directml.h)

R-CNN のマスクに関するページで説明されているように、ROI アライン操作を実行します。 要約すると、操作は入力イメージテンソルからトリミングを抽出し、指定された補間モードを使用して OutputTensor の最後の 2 次元で指定された共通の出力サイズにサイズ変更します。

構文

struct DML_ROI_ALIGN_OPERATOR_DESC {
  const DML_TENSOR_DESC  *InputTensor;
  const DML_TENSOR_DESC  *ROITensor;
  const DML_TENSOR_DESC  *BatchIndicesTensor;
  const DML_TENSOR_DESC  *OutputTensor;
  DML_REDUCE_FUNCTION    ReductionFunction;
  DML_INTERPOLATION_MODE InterpolationMode;
  FLOAT                  SpatialScaleX;
  FLOAT                  SpatialScaleY;
  FLOAT                  OutOfBoundsInputValue;
  UINT                   MinimumSamplesPerOutput;
  UINT                   MaximumSamplesPerOutput;
};

メンバー

InputTensor

型: const DML_TENSOR_DESC*

ディメンション { BatchCount, ChannelCount, InputHeight, InputWidth }を持つ入力データを含むテンソル。

ROITensor

型: const DML_TENSOR_DESC*

関心領域 (ROI) データを含むテンソル。 の許容されるディメンション ROITensor は、 { NumROIs, 4 }{ 1, NumROIs, 4 }、または { 1, 1, NumROIs, 4 }です。 各 ROI の値は、左上隅と右下隅の順序 [x1, y1, x2, y2]の座標になります。

BatchIndicesTensor

型: const DML_TENSOR_DESC*

ROI を抽出するバッチ インデックスを含むテンソル。 の使用できるディメンションBatchIndicesTensorは、{ NumROIs }、、{ 1, 1, NumROIs }{ 1, NumROIs }、または です{ 1, 1, 1, NumROIs }。 各値は、 InputTensor からのバッチのインデックスです。 値が [0, BatchCount] の範囲内にない場合、動作は未定義です。

OutputTensor

型: const DML_TENSOR_DESC*

出力データを含むテンソル。 OutputTensor の予想されるディメンションは です{ NumROIs, ChannelCount, OutputHeight, OutputWidth }

ReductionFunction

種類: DML_REDUCE_FUNCTION

出力要素 (DML_REDUCE_FUNCTION_AVERAGE または DML_REDUCE_FUNCTION_MAX) に寄与するすべての入力サンプルを縮小するときに使用する減少関数。 全体で削減する入力サンプルの数は、 MinimumSamplesPerOutputMaximumSamplesPerOutput によって制限されます。

InterpolationMode

種類: DML_INTERPOLATION_MODE

領域のサイズを変更するときに使用する補間モード。

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 各出力要素の対応するピクセル中心に最も近い入力要素を選択する Nearest Neighbor アルゴリズムを使用します。
  • DML_INTERPOLATION_MODE_LINEARバイリニア アルゴリズムを使用します。これは、ディメンションごとに最も近い 2 つの入力要素の加重平均を実行して出力要素を計算します。 サイズが変更されるのは 2 つのディメンションだけなので、重み付け平均は出力要素ごとに合計 4 つの入力要素で計算されます。

SpatialScaleX

型: FLOAT

ROITensor 座標を InputHeightInputWidth に比例させるために、ROITensor 座標を乗算するスケーリング 係数の X (または幅) コンポーネント。 たとえば、 ROITensor に 正規化された座標 (範囲 [0..1] の値) が含まれている場合、 SpatialScaleX は通常 、InputWidth と同じ値を持ちます。

SpatialScaleY

型: FLOAT

ROITensor 座標を InputHeightInputWidth に比例させるために、ROITensor 座標を乗算するスケーリング 係数の Y (または高さ) コンポーネント。 たとえば、 ROITensor に 正規化された座標 (範囲 [0..1] の値) が含まれている場合、 SpatialScaleY は通常 、InputHeight と同じ値を持ちます。

OutOfBoundsInputValue

型: FLOAT

ROIs が InputTensor の範囲外にある場合に InputTensor から読み取る値。 これは、SpatialScaleXSpatialScaleY による ROITensor のスケーリング後に取得された値が InputWidthInputHeight よりも大きい場合に発生する可能性があります。

MinimumSamplesPerOutput

型: UINT

すべての出力要素に使用する入力サンプルの最小数。 演算子は、 を実行 ScaledCropSize / OutputSizeして入力サンプルの数を計算し、 それを MinimumSamplesPerOutputMaximumSamplesPerOutput にクランプします。

MaximumSamplesPerOutput

型: UINT

すべての出力要素に使用する入力サンプルの最大数。 演算子は、 を実行 ScaledCropSize / OutputSizeして入力サンプルの数を計算し、 それを MinimumSamplesPerOutputMaximumSamplesPerOutput にクランプします。

可用性

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

テンソル制約

InputTensorOutputTensorROITensor は同じ DataType である必要があります。

Tensor のサポート

DML_FEATURE_LEVEL_5_0以上

テンソル 種類 サポートされているディメンション数 サポートされるデータ型
InputTensor 入力 4 FLOAT32、FLOAT16
ROITensor 入力 2 から 4 FLOAT32、FLOAT16
BatchIndicesTensor 入力 1 から 4 UINT64、UINT32
OutputTensor 出力 4 FLOAT32、FLOAT16

DML_FEATURE_LEVEL_3_0以上

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

要件

   
サポートされている最小のクライアント Windows 10 ビルド 20348
サポートされている最小のサーバー Windows 10 ビルド 20348
Header directml.h