Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Faz uma nova amostragem dos elementos do tensor de origem para o de destino, com antialização quando apropriado, usando os fatores de escala para calcular o tamanho do tensor de destino. Você pode usar um modo de interpolação linear ou vizinho mais próximo. O operador suporta interpolação em várias dimensões, não apenas 2D. Assim, você pode manter o mesmo tamanho espacial, mas interpolar entre canais ou entre 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.15.1 e posterior. Consulte também o histórico de versões do DirectML.
Sintaxe
struct DML_RESAMPLE3_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;
BOOL Antialiased;
};
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 gravar os dados de saída.
InterpolationMode
Tipo: DML_INTERPOLATION_MODE
Este 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. A reamostragem é suportada até quatro dimensões (quadrilinear), onde a média ponderada é calculada em um total de dezesseis elementos de entrada para cada elemento de saída.
RoundingDirection
Tipo: DML_AXIS_DIRECTION
A direção para arredondar 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 em direção a valores de eixo crescentes (ceil).
DML_AXIS_DIRECTION_DECREASING. Coordenadas fracionárias arredondadas em direção a valores de eixo decrescentes (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*
As escalas a serem aplicadas ao redefinir a amostra da entrada, onde as escalas > 1 aumentam a escala da imagem e as escalas < 1 reduzem a escala da 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 do que o limite de saída, cortaremos para o tamanho da saída. Por outro lado, se a entrada após o dimensionamento for menor do 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 da reamostragem. Quando esse valor é 0, o canto superior esquerdo do pixel é usado em vez de seu centro, o que geralmente não dá o resultado esperado. Para redefinir a amostra da 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 reamostragem. Quando esse valor é 0, o canto superior esquerdo do pixel é usado em vez de seu centro, o que geralmente não dá o resultado esperado. Para redefinir a amostra da imagem usando o centro dos pixels e obter o mesmo comportamento que DML_RESAMPLE_OPERATOR_DESC, esse valor deve ser -0,5.
Antialiased
Tipo: BOOL
A suavização de borda é obtida esticando o filtro de reamostragem por um fator max(1, 1 / scale), o que significa que, ao reduzir a amostragem, mais pixels de entrada contribuem para um pixel de saída.
Isso ocorre quando esse sinalizador é definido como TRUEe assumindo as seguintes condições:
- InterpolationMode é DML_INTERPOLATION_MODE_LINEAR
- 1/Escalas > 2
Em seguida, esse operador usará um filtro antialiasing ao reduzir o dimensionamento.
Comentários
Quando Antialiased é false, este operador é equivalente a DML_RESAMPLE2_OPERATOR_DESC.
Disponibilidade
Este operador foi introduzido em DML_FEATURE_LEVEL_6_4.
Restrições de tensores
InputTensor e OutputTensor devem ter o mesmo DataType e DimensionCount.
Suporte tensor
| Tensor | Tipo | Contagens de dimensões suportadas | Tipos de dados suportados |
|---|---|---|---|
| InputTensor | Entrada | 1 a 4 anos | FLOAT32, FLOAT16, INT8, UINT8 |
| OutputTensor | Realização | 1 a 4 anos | FLOAT32, FLOAT16, INT8, UINT8 |
Requerimentos
| de cabeçalho | DirectML.H |