DML_RESAMPLE2_OPERATOR_DESC 结构 (directml.h)
使用比例系数计算目标张量大小,将源中的元素重新取样到目标张量。 可以使用线性或最近的邻域内插模式。 运算符支持跨多个维度进行内插,而不仅仅是 2D。 因此,可以保留相同的空间大小,但跨通道或批处理内插。 输入和输出坐标之间的关系如下:
OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset
重要
此 API 作为 DirectML 独立可再分发包的一部分提供(请参阅 Microsoft.AI.DirectML 版本 1.9 及更高版本)。 另请参阅 DirectML 版本历史记录。
语法
struct DML_RESAMPLE2_OPERATOR_DESC
{
const DML_TENSOR_DESC* InputTensor;
const DML_TENSOR_DESC* OutputTensor;
DML_INTERPOLATION_MODE InterpolationMode;
DML_AXIS_DIRECTION RoundingDirection;
UINT DimensionCount;
_Field_size_(DimensionCount) const FLOAT* Scales;
_Field_size_(DimensionCount) const FLOAT* InputPixelOffsets;
_Field_size_(DimensionCount) const FLOAT* OutputPixelOffsets;
};
成员
InputTensor
类型:const DML_TENSOR_DESC*
包含输入数据的张量。
OutputTensor
类型:const DML_TENSOR_DESC*
要向其写入输出数据的张量。
InterpolationMode
此字段确定用于选择输出像素的内插类型。
DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。 使用“最近的邻域”算法,该算法选择最接近每个输出元素的相应像素偏移量的输入元素。
DML_INTERPOLATION_MODE_LINEAR。 使用“线性内插”算法,该算法通过计算每个维度两个最近的邻域输入元素的加权平均值来计算输出元素。 最多支持四个维度的重新取样(四线性),其中加权平均值总共计算每个输出元素的十六个输入元素。
RoundingDirection
将小数坐标映射回输入像素时,沿每个轴舍入的方向。 由于使用双线性内插小数坐标,因此这只会影响 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR。
DML_AXIS_DIRECTION_INCREASING。 将小数点坐标舍入到递增轴值 (ceil)。
DML_AXIS_DIRECTION_DECREASING。 将小数点坐标舍入到递减轴值 (floor)。
DimensionCount
类型:UINT
Scales、InputPixelOffsets 和 OutputPixelOffsets 数组中的元素数。 此值必须与 InputTensor 和 OutputTensor 的维度计数匹配。
Scales
类型:_Field_size_(DimensionCount) const FLOAT*
重新采样输入时要应用的缩放比例,其中对应维度比例 > 1 时放大图像,比例 < 1 时缩小图像。 请注意,比例不需要精准为 OutputSize / InputSize
。 如果缩放后的输入大于输出绑定,则会将其裁剪为输出大小。 另一方面,如果缩放后的输入小于输出绑定,则会限制输出边缘。
InputPixelOffsets
类型:_Field_size_(DimensionCount) const FLOAT*
在重新取样之前应用于输入像素的偏移量。 如果此值为 0,则使用像素的左上角而不是其中心,这通常不会给出预期的结果。 若要使用像素中心重新取样图像并获取与 DML_RESAMPLE_OPERATOR_DESC
相同的行为,此值必须为 0.5。
OutputPixelOffsets
类型:_Field_size_(DimensionCount) const FLOAT*
在重新取样之后应用于输出像素的偏移量。 如果此值为 0,则使用像素的左上角而不是其中心,这通常不会给出预期的结果。 若要使用像素中心重新取样图像并获取与 DML_RESAMPLE_OPERATOR_DESC 相同的行为,此值必须为 -0.5。
注解
当 InterpolationMode 设为 DML_INTERPOLATION_MODE_LINEAR;或 InterpolationMode 设为 DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR,RoundingDirection 设为 DML_AXIS_DIRECTION_DECREASING,OutputPixelOffsets 调整了额外的 -0.5 时,此运算符等效于 DML_RESAMPLE1_OPERATOR_DESC。
可用性
此运算符是在 DML_FEATURE_LEVEL_5_1 中引入的。
张量约束
InputTensor 和 OutputTensor 必须具有相同的 DataType 和 DimensionCount。
张量支持
DML_FEATURE_LEVEL_6_2 及更高版本
Tensor | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 4 | FLOAT32、FLOAT16、INT8、UINT8 |
OutputTensor | 输出 | 1 到 4 | FLOAT32、FLOAT16、INT8、UINT8 |
DML_FEATURE_LEVEL_5_1 及更高版本
Tensor | 种类 | 支持的维度计数 | 支持的数据类型 |
---|---|---|---|
InputTensor | 输入 | 1 到 4 | FLOAT32,FLOAT16 |
OutputTensor | 输出 | 1 到 4 | FLOAT32,FLOAT16 |
要求
页眉 | directml.h |