共用方式為


DML_ROI_ALIGN_OPERATOR_DESC結構 (directml.h)

執行 ROI 對齊作業,如 遮罩 R-CNN 白皮書中所述。 總而言之,作業會從輸入影像張量擷取裁剪,並使用指定的InterpolationMode,將其大小調整為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*

包含要從中擷取 RO 的批次索引的張量。 允許的 BatchIndicesTensor 維度為 { NumROIs }{ 1, NumROIs }{ 1, 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_AVERAGEDML_REDUCE_FUNCTION_MAX) 。 要減少的輸入樣本數目會受限於 MinimumSamplesPerOutputMaximumSamplesPerOutput

InterpolationMode

類型: DML_INTERPOLATION_MODE

調整區域大小時要使用的插補模式。

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 使用 近鄰 演算法,其會為每個輸出元素選擇最接近對應圖元中心的輸入元素。
  • DML_INTERPOLATION_MODE_LINEAR。 使用 Bilinear 演算法,其會執行每個維度 2 個最接近鄰近輸入元素的加權平均值,以計算輸出元素。 由於只有 2 個維度會調整大小,因此加權平均會以每個輸出元素的總 4 個輸入元素計算。

SpatialScaleX

類型: FLOAT

縮放比例的 X (或寬度) 元件,以將 ROITensor 座標乘以 ,使其與 InputHeightInputWidth成比例。 例如,如果 ROITensor 包含標準化座標 (範圍 [0..1]) 中的值, SpatialScaleX 通常會有與 InputWidth相同的值。

SpatialScaleY

類型: FLOAT

縮放比例的 Y (或高度) 元件,以將 ROITensor 座標乘以 ,使其與 InputHeightInputWidth成比例。 例如,如果 ROITensor 包含標準化座標 (範圍 [0..1]) 中的值, SpatialScaleY 通常會有與 InputHeight相同的值。

OutOfBoundsInputValue

類型: FLOAT

當 RO 超出 InputTensor 界限時,要從 InputTensor讀取的值。 當SpatialScaleXSpatialScaleY調整ROITensor之後取得的值大於InputWidthInputHeight時,就會發生這種情況。

MinimumSamplesPerOutput

類型: UINT

要用於每個輸出元素的輸入樣本數目下限。 運算子會執行 ScaledCropSize / OutputSize 來計算輸入樣本數目,然後將它固定在 MinimumSamplesPerOutputMaximumSamplesPerOutput

MaximumSamplesPerOutput

類型: UINT

要用於每個輸出元素的輸入樣本數目上限。 運算子會執行 ScaledCropSize / OutputSize 來計算輸入樣本數目,然後將它固定在 MinimumSamplesPerOutputMaximumSamplesPerOutput

可用性

這個運算子是在 中 DML_FEATURE_LEVEL_3_0 引進。

Tensor 條件約束

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
標頭 directml.h