структура 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_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 |