Freigeben über


DML_RESAMPLE2_OPERATOR_DESC-Struktur (directml.h)

Resampelt Elemente vom Quell- an den Ziel-Tensor, wobei die Skalierungsfaktoren zum Berechnen der Ziel-Tensorgröße verwendet werden. Sie können einen linearen oder Pixelwiederholung Interpolationsmodus verwenden. Der Operator unterstützt die Interpolation über mehrere Dimensionen hinweg, nicht nur 2D. Sie können also die gleiche räumliche Größe beibehalten, aber über Kanäle oder batchweise interpolieren. Die Beziehung zwischen den Eingabe- und Ausgabekoordinaten lautet wie folgt:

OutputTensorX = (InputTensorX + InputPixelOffset) * Scale + OutputPixelOffset

Wichtig

Diese API ist als Teil des eigenständigen weiterverteilbare Pakets DirectML verfügbar (siehe Microsoft.AI.DirectML , Version 1.9 und höher). Siehe auch DirectML-Versionsverlauf.

Syntax

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

Member

InputTensor

Typ: const DML_TENSOR_DESC*

Der Tensor, der die Eingabedaten enthält.

OutputTensor

Typ: const DML_TENSOR_DESC*

Der Tensor, in den die Ausgabedaten geschrieben werden sollen.

InterpolationMode

Typ: DML_INTERPOLATION_MODE

Dieses Feld bestimmt die Art der Interpolation, die zum Auswählen von Ausgabepixeln verwendet wird.

  • DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR. Verwendet den Algorithmus der Pixelwiederholung, der das Eingabeelement am nächsten zum entsprechenden Pixeloffset für jedes Ausgabeelement auswählt.

  • DML_INTERPOLATION_MODE_LINEAR. Verwendet den Algorithmus der linearen Interpolation , der das Ausgabeelement berechnet, indem der gewichtete Mittelwert der beiden nächsten benachbarten Eingabeelemente pro Dimension berechnet wird. Das Resampling wird bis zu vier Dimensionen (quadrilinear) unterstützt, wobei der gewichtete Mittelwert für jedes Ausgabeelement insgesamt sechszehn Eingabeelemente berechnet wird.

RoundingDirection

Typ: DML_AXIS_DIRECTION

Die Richtung, die auf jeder Achse gerundet werden soll, wenn Bruchkoordinaten zurück zu Eingabepixeln zugeordnet werden. Da die bilineare Interpolation trotzdem Bruchkoordinaten interpoliert, wirkt sich dies nur auf DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR aus.

  • DML_AXIS_DIRECTION_INCREASING. Runde Bruchkoordinaten zur Erhöhung der Achsenwerte (Oben).

  • DML_AXIS_DIRECTION_DECREASING. Abgerundete Bruchkoordinaten in Richtung abnehmender Achsenwerte (Unten).

DimensionCount

Typ: UINT

Die Anzahl der Elemente in den Arrays Scales, InputPixelOffsets und OutputPixelOffsets. Dieser Wert muss mit der Dimensionsanzahl von InputTensor und OutputTensor übereinstimmen.

Scales

Typ: _Field_size_(DimensionCount) const FLOAT*

Die Skalierungen, die beim Resampling der Eingabe angewendet werden sollen, wobei die Skalierung > 1 das Bild nach oben skaliert und Skalierung < 1 das Bild nach unten skaliert für diese Dimension. Beachten Sie, dass die Skalierungen nicht genau OutputSize / InputSize sein müssen. Wenn die Eingabe nach der Skalierung größer als die Ausgabegrenze ist, wird sie auf die Ausgabegröße zugeschnitten. Wenn die Eingabe nach der Skalierung dagegen kleiner als die Ausgabegrenze ist, werden die Ausgaberänder geklemmt.

InputPixelOffsets

Typ: _Field_size_(DimensionCount) const FLOAT*

Die Offsets, die vor dem Resampling auf die Eingabepixel angewendet werden sollen. Wenn dieser Wert 0 ist, wird die obere linke Ecke des Pixels anstelle der Mitte verwendet, die normalerweise nicht das erwartete Ergebnis zurückgibt. Um das Bild mithilfe der Mitte der Pixel neu zu sortieren und das gleiche Verhalten wie DML_RESAMPLE_OPERATOR_DESC zu erhalten, muss dieser Wert 0,5 sein.

OutputPixelOffsets

Typ: _Field_size_(DimensionCount) const FLOAT*

Die Offsets, die nach dem Resampling auf die Ausgabepixel angewendet werden sollen. Wenn dieser Wert 0 ist, wird die obere linke Ecke des Pixels anstelle der Mitte verwendet, die normalerweise nicht das erwartete Ergebnis zurückgibt. Um das Bild mithilfe der Mitte der Pixel neu zu sortieren und das gleiche Verhalten wie DML_RESAMPLE_OPERATOR_DESC zu erhalten, muss dieser Wert 0,5 sein.

Hinweise

Dieser Operator entspricht DML_RESAMPLE1_OPERATOR_DESC, wenn InterpolationMode auf DML_INTERPOLATION_MODE_LINEAR festgelegt ist; oder wenn InterpolationMode auf DML_INTERPOLATION_MODE_NEAREST_NEIGHBOR festgelegt ist, und RoundingDirection auf DML_AXIS_DIRECTION_DECREASING und OutputPixelOffsets werden zusätzliche -0,5 angepasst.

Verfügbarkeit

Dieser Operator wurde in DML_FEATURE_LEVEL_5_1 eingeführt.

Tensor-Einschränkungen

InputTensor und OutputTensor müssen denselben DataType und DimensionCount aufweisen.

Tensor-Unterstützung

DML_FEATURE_LEVEL_6_2 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 4 FLOAT32, FLOAT16, INT8, UINT8
OutputTensor Output 1 bis 4 FLOAT32, FLOAT16, INT8, UINT8

DML_FEATURE_LEVEL_5_1 und höher

Tensor Variante Unterstützte Dimensionsanzahl Unterstützte Datentypen
InputTensor Eingabe 1 bis 4 FLOAT32, FLOAT16
OutputTensor Output 1 bis 4 FLOAT32, FLOAT16

Anforderungen

   
Übergeordnet directml.h