LearningModelBinding.Bind Метод

Определение

Перегрузки

Bind(String, Object)

Привяжите значение к именованной функции.

Bind(String, Object, IPropertySet)

Привяжите значение к именованной функции с помощью свойств для управления привязкой.

Bind(String, Object)

Привяжите значение к именованной функции.

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)

Параметры

name
String

Platform::String

winrt::hstring

Имя компонента.

value
Object

Platform::Object

IInspectable

Привязываемое значение.

Атрибуты

Примеры

В следующем примере извлекаются первые входные и выходные признаки, создается выходной кадр, выполняется привязка входных и выходных признаков и выполняется вычисление.

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

Комментарии

Windows Server

Чтобы использовать этот API в Windows Server, необходимо использовать Windows Server 2019 с возможностями рабочего стола.

Потокобезопасность

Этот API является потокобезопасным.

Применяется к

Bind(String, Object, IPropertySet)

Привяжите значение к именованной функции с помощью свойств для управления привязкой.

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)

Параметры

name
String

Platform::String

winrt::hstring

Имя компонента, к которому выполняется привязка.

value
Object

Platform::Object

IInspectable

Значение для привязки к компоненту.

props
IPropertySet

Сопоставление свойств с парами "ключ-значение", описывающее поведение тензоризации и детенсоризации привязки. Дополнительные сведения см. в разделе Примечания .

Атрибуты

Комментарии

Ниже приведены допустимые пары "ключ-значение" для параметра props :

Имя Значение Описание
BitmapBounds PropertyType.UInt32Array При привязке входных данных свойство BitmapBounds задает границы обрезки. Обрезанное изображение будет извлечено и использовано в качестве входных данных для выполнения вывода.

При привязке выходных данных свойство BitmapBounds задает границы целевой выходной области. Результат вывода будет записан в целевую область вывода в пределах привязанного изображения.

Свойство BitmapBounds указывается как массив UInt32 со значениями [left, top, width, height].

Это свойство вступает в силу только при привязке ImageFeatureValue.
BitmapPixelFormat PropertyType.Int32 При привязке входных или выходных данных свойство BitmapPixelFormat задает формат пикселей, предназначенный автором модели для определенного значения признака. Если метаданные Image.BitmapPixelFormat отсутствуют в метаданных image модели ONNX, их можно указать во время выполнения с помощью этого свойства. Привязанные изображения будут автоматически преобразованы в указанный формат пикселей для использования моделью.

BitmapPixelFormat необходимо указать как значение Int32, соответствующее значениям в перечислении Windows.Graphics.Imaging.BitmapPixelFormat . В настоящее время поддерживаются следующие значения:
  • BitmapPixelFormat.Rgba8
  • BitmapPixelFormat.Bgra8
  • BitmapPixelFormat.Gray8
Это свойство вступает в силу только при привязке ImageFeatureValue.
DisableTensorCpuSync PropertyType.Boolean При привязке выходного тензора, поддерживаемого ID3D12Resource, можно использовать свойство DisableTensorCpuSync, чтобы предотвратить копирование выходных данных GPU/NPU обратно в тензор ЦП. По умолчанию вызов API LearningModelSession.Evaluate является блокирующим вызовом и обеспечивает доступность результатов вывода на ЦП после завершения.

В некоторых сценариях оценки GPU/NPU желательно сохранить результаты вывода в GPU/NPU; и копирование результатов обратно в ЦП является ненужным и медленным. Чтобы избежать этого копирования, включите свойство DisableTensorCpuSync во время привязки.

Это свойство вступает в силу только при привязке ITensor или его конкретных типов (т. е. TensorFloat).

Это свойство появилось в Windows 11 версии 21H2 (10.0; Сборка 22000).
PixelRange PropertyType.Int32 При привязке входных или выходных данных свойство PixelRange указывает диапазон нормализации, предназначенный автором модели для определенного значения признака. Если метаданные Image.NominalPixelRange отсутствуют в метаданных image модели ONNX, их можно указать во время выполнения с помощью этого свойства. Привязанные изображения будут автоматически преобразованы в указанный нормализованный диапазон для использования моделью.

PixelRange необходимо указать как значение Int32, соответствующее значениям в перечислении Windows.AI.MachineLearning.LearningModelPixelRange .

Это свойство вступает в силу только при привязке ImageFeatureValue.

Windows Server

Чтобы использовать этот API в Windows Server, необходимо использовать Windows Server 2019 с возможностями рабочего стола.

Потокобезопасность

Этот API является потокобезопасным.

Применяется к