Condividi tramite


LearningModelBinding.Bind Metodo

Definizione

Overload

Bind(String, Object)

Associare un valore alla funzionalità denominata.

Bind(String, Object, IPropertySet)

Associare un valore alla funzionalità denominata usando le proprietà per controllare l'associazione.

Bind(String, Object)

Associare un valore alla funzionalità denominata.

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)

Parametri

name
String

Platform::String

winrt::hstring

Nome della funzionalità.

value
Object

Platform::Object

IInspectable

Valore da associare.

Attributi

Esempio

Nell'esempio seguente vengono recuperate le prime funzionalità di input e output, viene creato un frame di output, vengono associate le funzionalità di input e output ed evase.

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

Commenti

Windows Server

Per usare questa API in Windows Server, è necessario usare Windows Server 2019 con Esperienza desktop.

Thread safety

Questa API è thread-safe.

Si applica a

Bind(String, Object, IPropertySet)

Associare un valore alla funzionalità denominata usando le proprietà per controllare l'associazione.

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)

Parametri

name
String

Platform::String

winrt::hstring

Nome della funzionalità a cui eseguire l'associazione.

value
Object

Platform::Object

IInspectable

Valore da associare alla funzionalità.

props
IPropertySet

Mappa delle proprietà con coppie chiave-valore che descrivono il comportamento di tensorizzazione e detensorizzazione dell'associazione. Per altri dettagli, vedere la sezione Osservazioni .

Attributi

Commenti

Queste sono le coppie chiave-valore valide per il parametro props :

Nome Valore Descrizione
BitmapBounds PropertyType.UInt32Array Quando si associa un input, la proprietà BitmapBounds specifica i limiti di ritaglio. L'immagine ritagliata verrà estratta e usata come input per l'esecuzione dell'inferenza.

Quando si associa un output, la proprietà BitmapBounds specifica i limiti per un'area di output di destinazione. Il risultato dell'inferenza verrà scritto nell'area di output di destinazione all'interno dell'immagine associata.

La proprietà BitmapBounds viene specificata come matrice UInt32 con i valori [left, top, width, height].

Questa proprietà ha effetto solo quando si associa un oggetto ImageFeatureValue.
BitmapPixelFormat PropertyType.Int32 Quando si associa un input o un output, la proprietà BitmapPixelFormat specifica il formato pixel previsto dall'autore del modello per un determinato valore di funzionalità. Quando i metadati Image.BitmapPixelFormat non sono presenti nei metadati Image del modello ONNX, è possibile specificarlo in fase di esecuzione usando questa proprietà. Le immagini associate verranno convertite automaticamente nel formato pixel specificato per l'utilizzo da parte del modello.

BitmapPixelFormat deve essere specificato come valore Int32 corrispondente ai valori nell'enumerazione Windows.Graphics.Imaging.BitmapPixelFormat . Attualmente sono supportati i valori seguenti:
  • BitmapPixelFormat.Rgba8
  • BitmapPixelFormat.Bgra8
  • BitmapPixelFormat.Gray8
Questa proprietà ha effetto solo quando si associa un oggetto ImageFeatureValue.
DisableTensorCpuSync PropertyType.Boolean Quando si associa un tensore di output supportato da un ID3D12Resource, è possibile usare la proprietà DisableTensorCpuSync per impedire la copia dell'output GPU/NPU in un tensore della CPU. Per impostazione predefinita, la chiamata API LearningModelSession.Evaluate è una chiamata di blocco e garantisce che i risultati dell'inferenza siano disponibili dopo il completamento della CPU.

In alcuni scenari di valutazione GPU/NPU, è consigliabile mantenere i risultati di inferenza nella GPU/NPU; e la copia dei risultati nella CPU non è necessaria e più lenta. Per evitare tale copia, abilitare la proprietà DisableTensorCpuSync durante l'associazione.

Questa proprietà viene applicata solo quando si associa un ITensor o i relativi tipi concreti, ovvero TensorFloat.

Questa proprietà è stata introdotta in Windows 11 versione 21H2 (10.0; Build 22000).
PixelRange PropertyType.Int32 Quando si associa un input o un output, la proprietà PixelRange specifica l'intervallo di normalizzazione previsto dall'autore del modello per un determinato valore di funzionalità. Quando i metadati Image.NominalPixelRange non sono presenti nei metadati image del modello ONNX, è possibile specificarlo in fase di esecuzione usando questa proprietà. Le immagini associate verranno convertite automaticamente nell'intervallo normalizzato specificato per l'utilizzo da parte del modello.

PixelRange deve essere specificato come valore Int32 corrispondente ai valori nell'enumerazione Windows.AI.MachineLearning.LearningModelPixelRange .

Questa proprietà ha effetto solo quando si associa un oggetto ImageFeatureValue.

Windows Server

Per usare questa API in Windows Server, è necessario usare Windows Server 2019 con Esperienza desktop.

Thread safety

Questa API è thread-safe.

Si applica a