structure DML_RESAMPLE1_OPERATOR_DESC (directml.h)
Rééchantillonne les éléments de la source vers le tenseur de destination, en utilisant les facteurs d’échelle pour calculer la taille du tenseur de destination. Vous pouvez utiliser un mode d’interpolation linéaire ou voisin le plus proche. L’opérateur prend en charge l’interpolation sur plusieurs dimensions, pas seulement en 2D. Vous pouvez donc conserver la même taille spatiale, mais interpoler entre les canaux ou les lots. La relation entre les coordonnées d’entrée et de sortie est la suivante.
OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset
Syntaxe
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;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données d’entrée.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur dans lequel écrire les données de sortie.
InterpolationMode
Type : DML_INTERPOLATION_MODE
Ce champ détermine le type d’interpolation utilisé pour choisir les pixels de sortie.
DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. Utilise l’algorithme Voisin le plus proche , qui choisit l’élément d’entrée le plus proche du centre de pixels correspondant pour chaque élément de sortie.
DML_INTERPOLATION_MODE_LINEAR. Utilise l’algorithme d’interpolation linéaire , qui calcule l’élément de sortie en calculant la moyenne pondérée des 2 éléments d’entrée voisins les plus proches par dimension. Le rééchantillonnage est pris en charge jusqu’à 4 dimensions (quadrilignes), où la moyenne pondérée est calculée sur un total de 16 éléments d’entrée pour chaque élément de sortie.
DimensionCount
Type : UINT
Nombre de valeurs dans les tableaux vers tableaux vers montrant scales, InputPixelOffsets et OutputPixelOffsets . Cette valeur doit correspondre au nombre de dimensions InputTensor et OutputTensor.
Scales
Type : _Field_size_(DimensionCount) const FLOAT*
Échelles à appliquer lors du rééchantillonnage de l’entrée, où met > à l’échelle 1 l’image et met à l’échelle < 1 l’image pour cette dimension. Notez que les échelles n’ont pas besoin d’être exactement OutputSize / InputSize
. Si l’entrée après la mise à l’échelle est supérieure à la limite de sortie, nous la rognons à la taille de sortie. En revanche, si l’entrée après la mise à l’échelle est plus petite que la limite de sortie, les bords de sortie sont serrés.
InputPixelOffsets
Type : _Field_size_(DimensionCount) const FLOAT*
Décalages à appliquer aux pixels d’entrée avant le rééchantillonnage. Lorsque cette valeur est 0
, le coin supérieur gauche du pixel est utilisé à la place de son centre, ce qui ne donne généralement pas le résultat attendu. Pour rééchantillonner l’image à l’aide du centre des pixels et obtenir le même comportement que DML_RESAMPLE_OPERATOR_DESC, cette valeur doit être 0.5
.
OutputPixelOffsets
Type : _Field_size_(DimensionCount) const FLOAT*
Décalages à appliquer aux pixels de sortie après le rééchantillonnage. Lorsque cette valeur est 0
, le coin supérieur gauche du pixel est utilisé à la place de son centre, ce qui ne donne généralement pas le résultat attendu. Pour rééchantillonner l’image à l’aide du centre des pixels et obtenir le même comportement que DML_RESAMPLE_OPERATOR_DESC, cette valeur doit être -0.5
.
Remarques
Lorsque les InputPixelOffsets sont définis sur 0,5 et que les OutputPixelOffsets ont la valeur -0,5, cet opérateur équivaut à DML_RESAMPLE_OPERATOR_DESC.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_2_1
.
Contraintes tensoriels
InputTensor et OutputTensor doivent avoir les mêmes DataType et DimensionCount.
Prise en charge de Tensor
DML_FEATURE_LEVEL_6_2 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 4 | FLOAT32, FLOAT16, INT8, UINT8 |
OutputTensor | Sortie | 1 à 4 | FLOAT32, FLOAT16, INT8, UINT8 |
DML_FEATURE_LEVEL_5_1 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 1 à 4 | FLOAT32, FLOAT16 |
OutputTensor | Sortie | 1 à 4 | FLOAT32, FLOAT16 |
DML_FEATURE_LEVEL_2_1 et versions ultérieures
Tenseur | Genre | Nombre de dimensions pris en charge | Types de données pris en charge |
---|---|---|---|
InputTensor | Entrée | 4 | FLOAT32, FLOAT16 |
OutputTensor | Sortie | 4 | FLOAT32, FLOAT16 |
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 10 Build 20348 |
Serveur minimal pris en charge | Windows 10 Build 20348 |
En-tête | directml.h |