Freigeben über


LearningModelBinding.Bind Methode

Definition

Überlädt

Bind(String, Object)

Binden Sie einen Wert an das benannte Feature.

Bind(String, Object, IPropertySet)

Binden Sie einen Wert an das benannte Feature mithilfe von Eigenschaften, um die Bindung zu steuern.

Bind(String, Object)

Binden Sie einen Wert an das benannte Feature.

public:
 virtual void Bind(Platform::String ^ name, Platform::Object ^ value) = Bind;
/// [Windows.Foundation.Metadata.Overload("Bind")]
void Bind(winrt::hstring const& name, IInspectable const& value);
[Windows.Foundation.Metadata.Overload("Bind")]
public void Bind(string name, object value);
function bind(name, value)
Public Sub Bind (name As String, value As Object)

Parameter

name
String

Platform::String

winrt::hstring

Der Name der Funktion.

value
Object

Platform::Object

IInspectable

Der zu bindende Wert.

Attribute

Beispiele

Im folgenden Beispiel werden die ersten Eingabe- und Ausgabefeatures abgerufen, ein Ausgabeframe erstellt, die Eingabe- und Ausgabefeatures gebunden und evakuiert.

private async Task EvaluateModelAsync(
    VideoFrame _inputFrame, 
    LearningModelSession _session, 
    IReadOnlyList<ILearningModelFeatureDescriptor> _inputFeatures, 
    IReadOnlyList<ILearningModelFeatureDescriptor> _outputFeatures,
    LearningModel _model)
{
    ImageFeatureDescriptor _inputImageDescription;
    TensorFeatureDescriptor _outputImageDescription;
    LearningModelBinding _binding = null;
    VideoFrame _outputFrame = null;

    try
    {
        // Retrieve the first input feature which is an image
        _inputImageDescription =
            _inputFeatures.FirstOrDefault(feature => feature.Kind == LearningModelFeatureKind.Image)
            as ImageFeatureDescriptor;

        // Retrieve the first output feature which is a tensor
        _outputImageDescription =
            _outputFeatures.FirstOrDefault(feature => feature.Kind == LearningModelFeatureKind.Tensor)
            as TensorFeatureDescriptor;

        // Create output frame based on expected image width and height
        _outputFrame = new VideoFrame(
            BitmapPixelFormat.Bgra8, 
            (int)_inputImageDescription.Width, 
            (int)_inputImageDescription.Height);

        // Create binding and then bind input/output features
        _binding = new LearningModelBinding(_session);

        _binding.Bind(_inputImageDescription.Name, _inputFrame);
        _binding.Bind(_outputImageDescription.Name, _outputFrame);

        // Evaluate and get the results
        var results = await _session.EvaluateAsync(_binding, "test");
    }
    catch (Exception ex)
    {
        StatusBlock.Text = $"error: {ex.Message}";
        _model = null;
    }
}

Hinweise

Windows Server

Um diese API unter Windows Server verwenden zu können, müssen Sie Windows Server 2019 mit Desktopdarstellung verwenden.

Threadsicherheit

Diese API ist threadsicher.

Gilt für:

Bind(String, Object, IPropertySet)

Binden Sie einen Wert an das benannte Feature mithilfe von Eigenschaften, um die Bindung zu steuern.

public:
 virtual void Bind(Platform::String ^ name, Platform::Object ^ value, IPropertySet ^ props) = Bind;
/// [Windows.Foundation.Metadata.Overload("BindWithProperties")]
void Bind(winrt::hstring const& name, IInspectable const& value, IPropertySet const& props);
[Windows.Foundation.Metadata.Overload("BindWithProperties")]
public void Bind(string name, object value, IPropertySet props);
function bind(name, value, props)
Public Sub Bind (name As String, value As Object, props As IPropertySet)

Parameter

name
String

Platform::String

winrt::hstring

Der Name des Features, an das gebunden werden soll.

value
Object

Platform::Object

IInspectable

Der Wert, der an das Feature gebunden werden soll.

props
IPropertySet

Eine Eigenschaftenzuordnung mit Schlüssel-Wert-Paaren, die das Tensorisierungs- und Detensorisierungsverhalten der Bindung beschreiben. Weitere Informationen finden Sie im Abschnitt Hinweise .

Attribute

Hinweise

Dies sind die gültigen Schlüssel-Wert-Paare für den props-Parameter :

Name Wert BESCHREIBUNG
BitmapBounds PropertyType.UInt32Array Beim Binden einer Eingabe gibt die BitmapBounds-Eigenschaft Zuschneidegrenzen an. Das zugeschnittene Bild wird extrahiert und als Eingabe für die Durchführung von Rückschlüssen verwendet.

Beim Binden einer Ausgabe gibt die BitmapBounds-Eigenschaft Grenzen für einen Zielausgabebereich an. Das Ergebnis des Rückschlusses wird in den Zielausgabebereich innerhalb des gebundenen Bilds geschrieben.

Die BitmapBounds-Eigenschaft wird als UInt32-Array mit den Werten [left, top, width, height]angegeben.

Diese Eigenschaft wird nur wirksam, wenn ein ImageFeatureValue gebunden wird.
BitmapPixelFormat PropertyType.Int32 Beim Binden einer Eingabe oder Ausgabe gibt die BitmapPixelFormat-Eigenschaft das Pixelformat an, das vom Modellautor für einen bestimmten Featurewert vorgesehen ist. Wenn die Image.BitmapPixelFormat-Metadaten in den Bildmetadaten des ONNX-Modells fehlen, kann sie zur Laufzeit mithilfe dieser Eigenschaft angegeben werden. Gebundene Bilder werden automatisch in das angegebene Pixelformat konvertiert, um sie vom Modell zu verwenden.

BitmapPixelFormat muss als Int32-Wert angegeben werden, der den Werten in der Windows.Graphics.Imaging.BitmapPixelFormat-Enumeration entspricht. Derzeit werden die folgenden Werte unterstützt:
  • BitmapPixelFormat.Rgba8
  • BitmapPixelFormat.Bgra8
  • BitmapPixelFormat.Gray8
Diese Eigenschaft wird nur wirksam, wenn ein ImageFeatureValue gebunden wird.
DisableTensorCpuSync PropertyType.Boolean Beim Binden eines Ausgabe tensors, der von einer ID3D12Resource unterstützt wird, kann die DisableTensorCpuSync-Eigenschaft verwendet werden, um das Kopieren der GPU/NPU-Ausgabe zurück in einen CPU-Tensor zu verhindern. Standardmäßig ist der API-Aufruf LearningModelSession.Evaluate ein blockierende Aufruf und stellt sicher, dass Rückschlussergebnisse nach abschluss auf der CPU verfügbar sind.

In bestimmten GPU-/NPU-Auswertungsszenarien ist es wünschenswert, Rückschlussergebnisse für die GPU/NPU beizubehalten. und das Kopieren der Ergebnisse zurück in die CPU ist unnötig und langsamer. Um diese Kopie zu vermeiden, aktivieren Sie die DisableTensorCpuSync-Eigenschaft während der Bindung.

Diese Eigenschaft wird nur wirksam, wenn ein ITensor oder seine konkreten Typen (also TensorFloat) gebunden werden.

Diese Eigenschaft wurde in Windows 11, Version 21H2 (10.0; Build 22000).
PixelRange PropertyType.Int32 Beim Binden einer Eingabe oder Ausgabe gibt die PixelRange-Eigenschaft den Normalisierungsbereich an, der vom Modellautor für einen bestimmten Featurewert vorgesehen ist. Wenn die Image.NominalPixelRange-Metadaten in den Bildmetadaten des ONNX-Modells fehlen, kann sie zur Laufzeit mithilfe dieser Eigenschaft angegeben werden. Gebundene Bilder werden automatisch in den angegebenen normalisierten Bereich für die Nutzung durch das Modell konvertiert.

PixelRange muss als Int32-Wert angegeben werden, der den Werten in der Windows.AI.MachineLearning.LearningModelPixelRange-Enumeration entspricht.

Diese Eigenschaft wird nur wirksam, wenn ein ImageFeatureValue gebunden wird.

Windows Server

Um diese API unter Windows Server verwenden zu können, müssen Sie Windows Server 2019 mit Desktopdarstellung verwenden.

Threadsicherheit

Diese API ist threadsicher.

Gilt für: