Поделиться через


структура DML_RESAMPLE1_OPERATOR_DESC (directml.h)

Выполняет повторную выборку элементов из исходного тензора в тензор назначения, используя коэффициенты масштабирования для вычисления размера тензора назначения. Можно использовать линейный режим интерполяции или режим интерполяции ближайшего соседа. Оператор поддерживает интерполяцию по нескольким измерениям, а не только в двух измерениях. Таким образом, вы можете сохранить тот же пространственный размер, но интерполировать по каналам или пакетам. Связь между координатами входных и выходных данных приведена ниже.

OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset

Синтаксис

struct DML_RESAMPLE1_OPERATOR_DESC {
  const DML_TENSOR_DESC  *InputTensor;
  const DML_TENSOR_DESC  *OutputTensor;
  DML_INTERPOLATION_MODE InterpolationMode;
  UINT                   DimensionCount;
  const FLOAT            *Scales;
  const FLOAT            *InputPixelOffsets;
  const FLOAT            *OutputPixelOffsets;
};

Члены

InputTensor

Тип: const DML_TENSOR_DESC*

Тензор, содержащий входные данные.

OutputTensor

Тип: const DML_TENSOR_DESC*

Тензор, в который записываются выходные данные.

InterpolationMode

Тип: DML_INTERPOLATION_MODE

Это поле определяет тип интерполяции, используемый для выбора выходных пикселей.

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. Использует алгоритм ближайшего соседа , который выбирает входной элемент, ближайший к соответствующему центру пикселей для каждого выходного элемента.

  • DML_INTERPOLATION_MODE_LINEAR. Использует алгоритм линейной интерполяции , который вычисляет выходной элемент путем вычисления взвешенные средние 2 ближайших соседних входных элементов на измерение. Повторная выборка поддерживается до 4 измерений (квадрилинейных), где взвешенный средний вычисляется на общей сложности 16 входных элементов для каждого выходного элемента.

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.

Комментарии

Если для InputPixelOffsets задано значение 0,5, а для OutputPixelOffsets — значение –0,5, этот оператор эквивалентен DML_RESAMPLE_OPERATOR_DESC.

Доступность

Этот оператор появился в DML_FEATURE_LEVEL_2_1.

Ограничения тензоров

InputTensor и OutputTensor должны иметь одинаковые значения DataType и DimensionCount.

Поддержка тензоров

DML_FEATURE_LEVEL_6_2 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные От 1 до 4 FLOAT32, FLOAT16, INT8, UINT8
OutputTensor Выходные данные От 1 до 4 FLOAT32, FLOAT16, INT8, UINT8

DML_FEATURE_LEVEL_5_1 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные От 1 до 4 FLOAT32, FLOAT16
OutputTensor Выходные данные От 1 до 4 FLOAT32, FLOAT16

DML_FEATURE_LEVEL_2_1 и выше

Тензор Kind Поддерживаемые счетчики измерений Поддерживаемые типы данных
InputTensor Входные данные 4 FLOAT32, FLOAT16
OutputTensor Выходные данные 4 FLOAT32, FLOAT16

Требования

Требование Значение
Минимальная версия клиента сборка Windows 10 20348
Минимальная версия сервера сборка Windows 10 20348
Верхняя часть directml.h