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_AVERAGE 或 DML_REDUCE_FUNCTION_MAX) 。 要減少的輸入樣本數目會受限於 MinimumSamplesPerOutput 和 MaximumSamplesPerOutput。
InterpolationMode
調整區域大小時要使用的插補模式。
- DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 使用 近鄰 演算法,其會為每個輸出元素選擇最接近對應圖元中心的輸入元素。
- DML_INTERPOLATION_MODE_LINEAR。 使用 Bilinear 演算法,其會執行每個維度 2 個最接近鄰近輸入元素的加權平均值,以計算輸出元素。 由於只有 2 個維度會調整大小,因此加權平均會以每個輸出元素的總 4 個輸入元素計算。
SpatialScaleX
類型: FLOAT
縮放比例的 X (或寬度) 元件,以將 ROITensor 座標乘以 ,使其與 InputHeight 和 InputWidth成比例。 例如,如果 ROITensor 包含標準化座標 (範圍 [0..1]) 中的值, SpatialScaleX 通常會有與 InputWidth相同的值。
SpatialScaleY
類型: FLOAT
縮放比例的 Y (或高度) 元件,以將 ROITensor 座標乘以 ,使其與 InputHeight 和 InputWidth成比例。 例如,如果 ROITensor 包含標準化座標 (範圍 [0..1]) 中的值, SpatialScaleY 通常會有與 InputHeight相同的值。
OutOfBoundsInputValue
類型: FLOAT
當 RO 超出 InputTensor 界限時,要從 InputTensor讀取的值。 當SpatialScaleX和SpatialScaleY調整ROITensor之後取得的值大於InputWidth和InputHeight時,就會發生這種情況。
MinimumSamplesPerOutput
類型: UINT
要用於每個輸出元素的輸入樣本數目下限。 運算子會執行 ScaledCropSize / OutputSize
來計算輸入樣本數目,然後將它固定在 MinimumSamplesPerOutput 和 MaximumSamplesPerOutput。
MaximumSamplesPerOutput
類型: UINT
要用於每個輸出元素的輸入樣本數目上限。 運算子會執行 ScaledCropSize / OutputSize
來計算輸入樣本數目,然後將它固定在 MinimumSamplesPerOutput 和 MaximumSamplesPerOutput。
可用性
這個運算子是在 中 DML_FEATURE_LEVEL_3_0
引進。
Tensor 條件約束
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 |
標頭 | directml.h |