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_AVERAGE または DML_REDUCE_FUNCTION_MAX) に寄与するすべての入力サンプルを縮小するときに使用する減少関数。 全体で削減する入力サンプルの数は、 MinimumSamplesPerOutput と MaximumSamplesPerOutput によって制限されます。
InterpolationMode
領域のサイズを変更するときに使用する補間モード。
- DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 各出力要素の対応するピクセル中心に最も近い入力要素を選択する Nearest Neighbor アルゴリズムを使用します。
- DML_INTERPOLATION_MODE_LINEAR。 バイリニア アルゴリズムを使用します。これは、ディメンションごとに最も近い 2 つの入力要素の加重平均を実行して出力要素を計算します。 サイズが変更されるのは 2 つのディメンションだけなので、重み付け平均は出力要素ごとに合計 4 つの入力要素で計算されます。
SpatialScaleX
型: FLOAT
ROITensor 座標を InputHeight と InputWidth に比例させるために、ROITensor 座標を乗算するスケーリング 係数の X (または幅) コンポーネント。 たとえば、 ROITensor に 正規化された座標 (範囲 [0..1] の値) が含まれている場合、 SpatialScaleX は通常 、InputWidth と同じ値を持ちます。
SpatialScaleY
型: FLOAT
ROITensor 座標を InputHeight と InputWidth に比例させるために、ROITensor 座標を乗算するスケーリング 係数の Y (または高さ) コンポーネント。 たとえば、 ROITensor に 正規化された座標 (範囲 [0..1] の値) が含まれている場合、 SpatialScaleY は通常 、InputHeight と同じ値を持ちます。
OutOfBoundsInputValue
型: FLOAT
ROIs が InputTensor の範囲外にある場合に InputTensor から読み取る値。 これは、SpatialScaleX と SpatialScaleY による ROITensor のスケーリング後に取得された値が InputWidth と InputHeight よりも大きい場合に発生する可能性があります。
MinimumSamplesPerOutput
型: UINT
すべての出力要素に使用する入力サンプルの最小数。 演算子は、 を実行 ScaledCropSize / OutputSize
して入力サンプルの数を計算し、 それを MinimumSamplesPerOutput と MaximumSamplesPerOutput にクランプします。
MaximumSamplesPerOutput
型: UINT
すべての出力要素に使用する入力サンプルの最大数。 演算子は、 を実行 ScaledCropSize / OutputSize
して入力サンプルの数を計算し、 それを MinimumSamplesPerOutput と MaximumSamplesPerOutput にクランプします。
可用性
この演算子は で DML_FEATURE_LEVEL_3_0
導入されました。
テンソル制約
InputTensor、 OutputTensor、 ROITensor は同じ 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 |