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_AVERAGE 或 DML_REDUCE_FUNCTION_MAX) 。 要减少的输入样本数由 MinimumSamplesPerOutput 和 MaximumSamplesPerOutput 限制。
InterpolationMode
调整区域大小时使用的内插模式。
- DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 使用 最近邻 算法,该算法为每个输出元素选择最接近相应像素中心的输入元素。
- DML_INTERPOLATION_MODE_LINEAR。 使用 双线性 算法,该算法通过为每个维度执行 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
当 ROI 超出 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 必须具有相同 的数据类型。
张量支持
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 |