Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Ricampiona gli elementi dal tensore di origine al tensore di destinazione, con antializzazione, se appropriato, usando i fattori di scala per calcolare le dimensioni del tensore di destinazione. È possibile usare una modalità di interpolazione lineare o vicina più vicina. L'operatore supporta l'interpolazione tra più dimensioni, non solo 2D. È quindi possibile mantenere le stesse dimensioni spaziali, ma interpolare tra canali o tra batch. La relazione tra le coordinate di input e output è la seguente:
OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset
Importante
Questa API è disponibile come parte del pacchetto ridistribuibile autonomo DirectML (vedere Microsoft.AI.DirectML versione 1.15.1 e successive. Vedere anche cronologia delle versioni di DirectML.
Sintassi
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;
};
Membri
InputTensor
Tipo: const DML_TENSOR_DESC*
Tensore contenente i dati di input.
OutputTensor
Tipo: const DML_TENSOR_DESC*
Tensore in cui scrivere i dati di output.
InterpolationMode
Tipo: DML_INTERPOLATION_MODE
Questo campo determina il tipo di interpolazione usata per scegliere i pixel di output.
DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. Usa l'algoritmo adiacente più vicino , che sceglie l'elemento di input più vicino all'offset pixel corrispondente per ogni elemento di output.
DML_INTERPOLATION_MODE_LINEAR. Usa l'algoritmo di interpolazione lineare , che calcola l'elemento di output calcolando la media ponderata dei due elementi di input adiacenti più vicini per dimensione. Il ricampionamento è supportato fino a quattro dimensioni (quadrilineare), in cui la media ponderata viene calcolata su un totale di sedici elementi di input per ogni elemento di output.
RoundingDirection
Tipo: DML_AXIS_DIRECTION
Direzione da arrotondare lungo ogni asse quando si esegue il mapping delle coordinate frazionarie ai pixel di input. Poiché l'interpolazione bilineare interpola comunque le coordinate frazionarie, ciò influisce solo DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR.
DML_AXIS_DIRECTION_INCREASING. Coordinate frazionarie arrotondate verso valori dell'asse crescenti (ceil).
DML_AXIS_DIRECTION_DECREASING. Coordinate frazionarie arrotondate verso valori dell'asse decrescenti (piano).
DimensionCount
Tipo: UINT
Numero di elementi nelle matrici Scales, InputPixelOffsets e OutputPixelOffsets . Questo valore deve corrispondere al numero di dimensioni di InputTensor e OutputTensor.
Scales
Tipo: _Field_size_(DimensionCount) const FLOAT*
Le scale da applicare durante il ricampionamento dell'input, in cui scala > 1 aumentano le prestazioni dell'immagine e ridimensionano < 1 ridurre l'immagine per tale dimensione. Si noti che le scale non devono essere esattamente OutputSize / InputSize
. Se l'input dopo il ridimensionamento è maggiore del limite di output, viene ritagliato in base alle dimensioni di output. D'altra parte, se l'input dopo il ridimensionamento è inferiore al limite di output, i bordi di output vengono bloccati.
InputPixelOffsets
Tipo: _Field_size_(DimensionCount) const FLOAT*
Offset da applicare ai pixel di input prima del ricampionamento. Quando questo valore è 0, viene usato l'angolo superiore sinistro del pixel anziché il relativo centro, che in genere non darà il risultato previsto. Per ricampionare l'immagine usando il centro dei pixel e ottenere lo stesso comportamento di DML_RESAMPLE_OPERATOR_DESC
, questo valore deve essere 0,5.
OutputPixelOffsets
Tipo: _Field_size_(DimensionCount) const FLOAT*
Offset da applicare ai pixel di output dopo il ricampionamento. Quando questo valore è 0, viene usato l'angolo superiore sinistro del pixel anziché il relativo centro, che in genere non darà il risultato previsto. Per ricampionare l'immagine usando il centro dei pixel e ottenere lo stesso comportamento di DML_RESAMPLE_OPERATOR_DESC, questo valore deve essere -0,5.
Antialiased
Tipo: BOOL
L'antialiasing viene ottenuta estendendo il filtro di ricampionamento in base a un fattore max(1, 1 / scale)
, il che significa che quando si esegue il downcampioning, più pixel di input contribuiscono a un pixel di output.
Ciò si verifica quando questo flag è impostato su TRUE
e presupponendo le condizioni seguenti:
- InterpolationMode è DML_INTERPOLATION_MODE_LINEAR
- 1/Scalabilità > 2
Questo operatore userà quindi un filtro antialiasing durante il ridimensionamento.
Osservazioni
Quando Antialiased è false
, questo operatore equivale a DML_RESAMPLE2_OPERATOR_DESC.
Disponibilità
Questo operatore è stato introdotto in DML_FEATURE_LEVEL_6_4.
Vincoli tensor
InputTensor e OutputTensor devono avere lo stesso Tipo di dati e DimensionCount.
Supporto tensor
Tensore | Gentile | Conteggi delle dimensioni supportati | Tipi di dati supportati |
---|---|---|---|
InputTensor | Immissione | Da 1 a 4 | FLOAT32, FLOAT16, INT8, UINT8 |
OutputTensor | Prodotto | Da 1 a 4 | FLOAT32, FLOAT16, INT8, UINT8 |
Fabbisogno
Intestazione | directml.h |