Partilhar via


LearningModelBinding.Bind Método

Definição

Sobrecargas

Bind(String, Object)

Associe um valor ao recurso nomeado.

Bind(String, Object, IPropertySet)

Associe um valor ao recurso nomeado usando propriedades para controlar a associação.

Bind(String, Object)

Associe um valor ao recurso nomeado.

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

O nome do recurso.

value
Object

Platform::Object

IInspectable

O valor a ser associado.

Atributos

Exemplos

O exemplo a seguir recupera os primeiros recursos de entrada e saída, cria um quadro de saída, associa os recursos de entrada e saída e é evaulado.

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

Comentários

Windows Server

Para usar essa API no Windows Server, você deve usar o Windows Server 2019 com a Experiência desktop.

Acesso thread-safe

Essa API é thread-safe.

Aplica-se a

Bind(String, Object, IPropertySet)

Associe um valor ao recurso nomeado usando propriedades para controlar a associação.

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

O nome do recurso ao qual associar.

value
Object

Platform::Object

IInspectable

O valor a ser associado ao recurso.

props
IPropertySet

Um mapa de propriedades com pares chave-valor que descrevem o comportamento de tensorização e destensorização da associação. Para obter mais detalhes, consulte a seção Comentários .

Atributos

Comentários

Esses são os pares chave-valor válidos para o parâmetro props :

Nome Valor Descrição
BitmapBounds PropertyType.UInt32Array Ao associar uma entrada, a propriedade BitmapBounds especifica limites de corte. A imagem cortada será extraída e usada como a entrada para executar a inferência.

Ao associar uma saída, a propriedade BitmapBounds especifica limites para uma região de saída de destino. O resultado da inferência será gravado na região de saída de destino dentro da imagem associada.

A propriedade BitmapBounds é especificada como uma matriz UInt32 com os valores [left, top, width, height].

Essa propriedade entra em vigor somente ao associar um ImageFeatureValue.
BitmapPixelFormat PropertyType.Int32 Ao associar uma entrada ou saída, a propriedade BitmapPixelFormat especifica o formato de pixel pretendido pelo autor do modelo para um valor de recurso específico. Quando os metadados Image.BitmapPixelFormat estão ausentes dos metadados image do modelo ONNX, eles podem ser especificados em runtime usando essa propriedade. As imagens associadas serão convertidas automaticamente no formato de pixel especificado para consumo pelo modelo.

O BitmapPixelFormat deve ser especificado como um valor Int32 correspondente aos valores na enumeração Windows.Graphics.Imaging.BitmapPixelFormat . Atualmente, há suporte para os seguintes valores:
  • BitmapPixelFormat.Rgba8
  • BitmapPixelFormat.Bgra8
  • BitmapPixelFormat.Gray8
Essa propriedade entra em vigor somente ao associar um ImageFeatureValue.
DisableTensorCpuSync PropertyType.Boolean Ao associar um tensor de saída apoiado por um ID3D12Resource, a propriedade DisableTensorCpuSync pode ser usada para impedir a cópia da saída de GPU/NPU de volta para um tensor de CPU. Por padrão, a chamada à API LearningModelSession.Evaluate é uma chamada de bloqueio e garantirá que os resultados de inferência estejam disponíveis na CPU após a conclusão.

Em determinados cenários de avaliação de GPU/NPU, é desejável manter os resultados de inferência na GPU/NPU; e copiar os resultados de volta para a CPU é desnecessário e mais lento. Para evitar essa cópia, habilite a propriedade DisableTensorCpuSync durante a associação.

Essa propriedade entra em vigor somente ao associar um ITensor ou seus tipos concretos (ou seja, TensorFloat).

Essa propriedade foi introduzida no Windows 11, versão 21H2 (10.0; Build 22000).
PixelRange PropertyType.Int32 Ao associar uma entrada ou saída, a propriedade PixelRange especifica o intervalo de normalização pretendido pelo autor do modelo para um valor de recurso específico. Quando os metadados Image.NominalPixelRange estão ausentes dos metadados image do modelo ONNX, eles podem ser especificados em runtime usando essa propriedade. As imagens associadas serão convertidas automaticamente no intervalo normalizado especificado para consumo pelo modelo.

O PixelRange deve ser especificado como um valor Int32 correspondente aos valores na enumeração Windows.AI.MachineLearning.LearningModelPixelRange .

Essa propriedade entra em vigor somente ao associar um ImageFeatureValue.

Windows Server

Para usar essa API no Windows Server, você deve usar o Windows Server 2019 com a Experiência desktop.

Acesso thread-safe

Essa API é thread-safe.

Aplica-se a