Structure DML_RESAMPLE2_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 un mode plus proche voisin. L’opérateur prend en charge l’interpolation entre plusieurs dimensions et non pas uniquement 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
Important
Cette API est disponible dans le cadre du package redistribuable autonome DirectML (voir Microsoft.AI.DirectML version 1.9 et ultérieures). Consultez également l’historique des versions DirectML.
Syntaxe
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;
};
Membres
InputTensor
Type : const DML_TENSOR_DESC*
Tenseur contenant les données d’entrée.
OutputTensor
Type : const DML_TENSOR_DESC*
Tenseur de sortie dans lequel les données de sorties doivent être écrites.
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 plus proche voisin qui choisit l’élément d’entrée le plus proche du décalage de pixel 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 deux éléments d’entrée voisins les plus proches par dimension. Le rééchantillonnage est pris en charge jusqu’à quatre dimensions (quadrilinéaire), pour lesquelles la moyenne pondérée est calculée sur un total de seize éléments d’entrée pour chaque élément de sortie.
RoundingDirection
Type : DML_AXIS_DIRECTION
Direction à arrondir le long de chaque axe lors du mappage des coordonnées fractionnaires vers les pixels d’entrée. Étant donné que l’interpolation bilinéaire interpole les coordonnées fractionnaires de toute façon, cela affecte uniquement DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR.
DML_AXIS_DIRECTION_INCREASING. Arrondir les coordonnées fractionnelles vers les valeurs d’axe en augmentation (plafond).
DML_AXIS_DIRECTION_DECREASING. Arrondir les coordonnées fractionnelles vers les valeurs d’axe décroissantes (plancher).
DimensionCount
Type : UINT
Nombre d’éléments dans les tableaux Scales, InputPixelOffsets et OutputPixelOffsets. Cette valeur doit correspondre au nombre de dimensions d’InputTensor et OutputTensor.
Scales
Type : _Field_size_(DimensionCount) const FLOAT*
Les échelles à appliquer lors du rééchantillonnage de l’entrée, où l’échelle > 1 effectue un scale-up de l’image et les échelles< 1 effectuent un scale-down de 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 inférieure à la limite de sortie, les arêtes de sortie sont limitées.
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é au lieu 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é au lieu 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.
Notes
Cet opérateur équivaut à DML_RESAMPLE1_OPERATOR_DESC lorsque InterpolationMode est défini sur DML_INTERPOLATION_MODE_LINEAR, ou lorsque InterpolationMode est défini sur DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR et RoundingDirection sur DML_AXIS_DIRECTION_DECREASING et OutputPixelOffsets sont ajustés avec une valeur supplémentaire -0,5.
Disponibilité
Cet opérateur a été introduit dans DML_FEATURE_LEVEL_5_1.
Contraintes de tenseur
InputTensor et OutputTensor doivent avoir le même DataType et DimensionCount.
Prise en charge des tenseurs
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 | Input | 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 | Input | 1 à 4 | FLOAT32, FLOAT16 |
OutputTensor | Sortie | 1 à 4 | FLOAT32, FLOAT16 |
Spécifications
En-tête | directml.h |