LearningModelBinding.Bind Método

Definición

Sobrecargas

Bind(String, Object)

Enlace un valor a la característica con nombre.

Bind(String, Object, IPropertySet)

Enlace un valor a la característica con nombre mediante propiedades para controlar el enlace.

Bind(String, Object)

Enlace un valor a la característica con nombre.

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)

Parámetros

name
String

Platform::String

winrt::hstring

Nombre de la característica.

value
Object

Platform::Object

IInspectable

Valor que se va a enlazar.

Atributos

Ejemplos

En el ejemplo siguiente se recuperan las primeras características de entrada y salida, se crea un marco de salida, se enlazan las características de entrada y salida y se evaulan.

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

Comentarios

Windows Server

Para usar esta API en Windows Server, debe usar Windows Server 2019 con experiencia de escritorio.

Seguridad para subprocesos

Esta API es segura para subprocesos.

Se aplica a

Bind(String, Object, IPropertySet)

Enlace un valor a la característica con nombre mediante propiedades para controlar el enlace.

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)

Parámetros

name
String

Platform::String

winrt::hstring

Nombre de la característica a la que se va a enlazar.

value
Object

Platform::Object

IInspectable

Valor que se va a enlazar a la característica.

props
IPropertySet

Mapa de propiedades con pares clave-valor que describen el comportamiento de tensorización y detensorización del enlace. Para obtener más información, consulte la sección Comentarios .

Atributos

Comentarios

Estos son los pares clave-valor válidos para el parámetro props :

Nombre Value Descripción
BitmapBounds PropertyType.UInt32Array Al enlazar una entrada, la propiedad BitmapBounds especifica los límites de recorte. La imagen recortada se extraerá y usará como entrada para realizar la inferencia.

Al enlazar una salida, la propiedad BitmapBounds especifica los límites de una región de salida de destino. El resultado de la inferencia se escribirá en la región de salida de destino dentro de la imagen enlazada.

La propiedad BitmapBounds se especifica como una matriz UInt32 con los valores [left, top, width, height].

Esta propiedad solo surte efecto cuando se enlaza imageFeatureValue.
BitmapPixelFormat PropertyType.Int32 Al enlazar una entrada o salida, la propiedad BitmapPixelFormat especifica el formato de píxel previsto por el autor del modelo para un valor de característica determinado. Cuando faltan los metadatos image.BitmapPixelFormat del metadato de imagen del modelo ONNX, se puede especificar en tiempo de ejecución mediante esta propiedad. Las imágenes enlazadas se convertirán automáticamente en el formato de píxel especificado para su consumo por parte del modelo.

BitmapPixelFormat debe especificarse como un valor Int32 correspondiente a los valores de la enumeración Windows.Graphics.Imaging.BitmapPixelFormat . Actualmente se admiten los siguientes valores:
  • BitmapPixelFormat.Rgba8
  • BitmapPixelFormat.Bgra8
  • BitmapPixelFormat.Gray8
Esta propiedad solo surte efecto cuando se enlaza imageFeatureValue.
DisableTensorCpuSync PropertyType.Boolean Al enlazar un tensor de salida respaldado por un ID3D12Resource, la propiedad DisableTensorCpuSync se puede usar para evitar copiar la salida de GPU/NPU de nuevo en un tensor de CPU. De forma predeterminada, la llamada API LearningModelSession.Evaluate es una llamada de bloqueo y garantizará que los resultados de la inferencia estén disponibles en la CPU después de la finalización.

En determinados escenarios de evaluación de GPU/NPU, es conveniente mantener los resultados de inferencia en la GPU/NPU; y volver a copiar los resultados en la CPU es innecesario y más lento. Para evitar esa copia, habilite la propiedad DisableTensorCpuSync durante el enlace.

Esta propiedad solo surte efecto cuando se enlaza un ITensor o sus tipos concretos (es decir, TensorFloat).

Esta propiedad se introdujo en Windows 11, versión 21H2 (10.0; Compilación 22000).
PixelRange PropertyType.Int32 Al enlazar una entrada o salida, la propiedad PixelRange especifica el intervalo de normalización previsto por el autor del modelo para un valor de característica determinado. Cuando faltan los metadatos image.NominalPixelRange del metadato de imagen del modelo ONNX, se puede especificar en tiempo de ejecución mediante esta propiedad. Las imágenes enlazadas se convertirán automáticamente en el intervalo normalizado especificado para su consumo por parte del modelo.

PixelRange debe especificarse como un valor Int32 correspondiente a los valores de la enumeración Windows.AI.MachineLearning.LearningModelPixelRange .

Esta propiedad solo surte efecto cuando se enlaza imageFeatureValue.

Windows Server

Para usar esta API en Windows Server, debe usar Windows Server 2019 con experiencia de escritorio.

Seguridad para subprocesos

Esta API es segura para subprocesos.

Se aplica a