Compartilhar via


estrutura DML_RESAMPLE2_OPERATOR_DESC (directml.h)

Resampla elementos da origem para o tensor de destino, usando os fatores de escala para calcular o tamanho do tensor de destino. Você pode usar um modo de interpolação de vizinho linear ou mais próximo. O operador dá suporte à interpolação em várias dimensões, não apenas em 2D. Portanto, você pode manter o mesmo tamanho espacial, mas interpolar entre canais ou em lotes. A relação entre as coordenadas de entrada e saída é a seguinte:

OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset

Importante

Essa API está disponível como parte do pacote redistribuível autônomo do DirectML (consulte Microsoft.AI.DirectML versão 1.9 e posterior. Consulte também de histórico de versões do DirectML.

Sintaxe

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;
};

Membros

InputTensor

Tipo: const DML_TENSOR_DESC*

O tensor que contém os dados de entrada.

OutputTensor

Tipo: const DML_TENSOR_DESC*

O tensor para o qual gravar os dados de saída.

InterpolationMode

Tipo: DML_INTERPOLATION_MODE

Esse campo determina o tipo de interpolação usado para escolher pixels de saída.

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. Usa o algoritmo vizinho mais próximo , que escolhe o elemento de entrada mais próximo do deslocamento de pixel correspondente para cada elemento de saída.

  • DML_INTERPOLATION_MODE_LINEAR. Usa o algoritmo de interpolação linear , que calcula o elemento de saída calculando a média ponderada dos dois elementos de entrada vizinhos mais próximos por dimensão. Há suporte para resampling em até quatro dimensões (quadrilinear), em que a média ponderada é computada em um total de dezesseis elementos de entrada para cada elemento de saída.

RoundingDirection

Tipo: DML_AXIS_DIRECTION

A direção a ser arredondada ao longo de cada eixo ao mapear coordenadas fracionárias de volta para pixels de entrada. Como a interpolação bilinear interpola coordenadas fracionárias de qualquer maneira, isso afeta apenas DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR.

  • DML_AXIS_DIRECTION_INCREASING. Coordenadas fracionárias arredondadas para aumentar os valores do eixo (ceil).

  • DML_AXIS_DIRECTION_DECREASING. Coordenadas fracionárias arredondadas em direção à diminuição dos valores do eixo (piso).

DimensionCount

Tipo: UINT

O número de elementos nas matrizes Scales, InputPixelOffsets e OutputPixelOffsets . Esse valor deve corresponder à contagem de dimensões de InputTensor e OutputTensor.

Scales

Tipo: _Field_size_(DimensionCount) const FLOAT*

A escala a ser aplicada ao resampling da entrada, em que escala > 1 escalar verticalmente a imagem e dimensiona < 1 reduzir a imagem para essa dimensão. Observe que as escalas não precisam ser exatamente OutputSize / InputSize. Se a entrada após o dimensionamento for maior que o limite de saída, recortaremos para o tamanho da saída. Por outro lado, se a entrada após o dimensionamento for menor que o limite de saída, as bordas de saída serão fixadas.

InputPixelOffsets

Tipo: _Field_size_(DimensionCount) const FLOAT*

Os deslocamentos a serem aplicados aos pixels de entrada antes de resampling. Quando esse valor for 0, o canto superior esquerdo do pixel será usado em vez de seu centro, o que geralmente não dará o resultado esperado. Para resamplar a imagem usando o centro dos pixels e obter o mesmo comportamento que DML_RESAMPLE_OPERATOR_DESC, esse valor deve ser 0,5.

OutputPixelOffsets

Tipo: _Field_size_(DimensionCount) const FLOAT*

Os deslocamentos a serem aplicados aos pixels de saída após a resampling. Quando esse valor for 0, o canto superior esquerdo do pixel será usado em vez de seu centro, o que geralmente não dará o resultado esperado. Para resamplar a imagem usando o centro dos pixels e obter o mesmo comportamento que DML_RESAMPLE_OPERATOR_DESC, esse valor deve ser -0,5.

Observações

Esse operador é equivalente a DML_RESAMPLE1_OPERATOR_DESC quando InterpolationMode é definido como DML_INTERPOLATION_MODE_LINEAR; ou quando InterpolationMode é definido como DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR e RoundingDirection para DML_AXIS_DIRECTION_DECREASING e OutputPixelOffsets são ajustados um adicional -0,5.

Disponibilidade

Esse operador foi introduzido no DML_FEATURE_LEVEL_5_1.

Restrições do Tensor

InputTensor e OutputTensor devem ter o mesmo DataType e DimensionCount.

Suporte ao Tensor

DML_FEATURE_LEVEL_6_2 e superior

Tensor Tipo Contagens de dimensões com suporte Tipos de dados com suporte
Tensor de entrada Entrada 1 a 4 FLOAT32, FLOAT16, INT8, UINT8
Tensor de saída Saída 1 a 4 FLOAT32, FLOAT16, INT8, UINT8

DML_FEATURE_LEVEL_5_1 e superior

Tensor Tipo Contagens de dimensões com suporte Tipos de dados com suporte
Tensor de entrada Entrada 1 a 4 FLOAT32, FLOAT16
Tensor de saída Saída 1 a 4 FLOAT32, FLOAT16

Requisitos

   
cabeçalho directml.h