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*

包含要从中提取 ROI 的批处理索引的张量。 的允许维度 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。 使用 双线性 算法,该算法通过为每个维度执行 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

ROI 超出 InputTensor 的边界时,要从 InputTensor 读取的值。 当 SpatialScaleXSpatialScaleY 缩放 ROITensor 后获取的值大于 InputWidthInputHeight 时,可能会发生这种情况。

MinimumSamplesPerOutput

类型: UINT

要用于每个输出元素的最小输入样本数。 运算符将通过执行 ScaledCropSize / OutputSize来计算输入样本数,然后将其固定到 MinimumSamplesPerOutputMaximumSamplesPerOutput

MaximumSamplesPerOutput

类型: UINT

要用于每个输出元素的最大输入样本数。 运算符将通过执行 ScaledCropSize / OutputSize来计算输入样本数,然后将其固定到 MinimumSamplesPerOutputMaximumSamplesPerOutput

可用性

此运算符是在 中 DML_FEATURE_LEVEL_3_0引入的。

张量约束

InputTensorOutputTensorROITensor 必须具有相同 的数据类型

张量支持

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