Partager via


LearningModelBinding.Bind Méthode

Définition

Surcharges

Bind(String, Object)

Lier une valeur à la fonctionnalité nommée.

Bind(String, Object, IPropertySet)

Liez une valeur à la fonctionnalité nommée à l’aide de propriétés pour contrôler la liaison.

Bind(String, Object)

Lier une valeur à la fonctionnalité nommée.

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)

Paramètres

name
String

Platform::String

winrt::hstring

Nom de la fonctionnalité.

value
Object

Platform::Object

IInspectable

Valeur à lier.

Attributs

Exemples

L’exemple suivant récupère les premières fonctionnalités d’entrée et de sortie, crée une trame de sortie, lie les fonctionnalités d’entrée et de sortie, puis s’évaulate.

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

Remarques

Windows Server

Pour utiliser cette API sur Windows Server, vous devez utiliser Windows Server 2019 avec Expérience utilisateur.

Sécurité des threads

Cette API est thread-safe.

S’applique à

Bind(String, Object, IPropertySet)

Liez une valeur à la fonctionnalité nommée à l’aide de propriétés pour contrôler la liaison.

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)

Paramètres

name
String

Platform::String

winrt::hstring

Nom de la fonctionnalité à lier.

value
Object

Platform::Object

IInspectable

Valeur à lier à la fonctionnalité.

props
IPropertySet

Mappage de propriétés avec des paires clé-valeur décrivant le comportement de tensorisation et de détensorisation de la liaison. Pour plus d’informations, consultez la section Remarques .

Attributs

Remarques

Voici les paires clé-valeur valides pour le paramètre props :

Nom Valeur Description
BitmapBounds PropertyType.UInt32Array Lors de la liaison d’une entrée, la propriété BitmapBounds spécifie les limites de rognage. L’image rognée est extraite et utilisée comme entrée pour effectuer l’inférence.

Lors de la liaison d’une sortie, la propriété BitmapBounds spécifie les limites d’une région de sortie cible. Le résultat de l’inférence est écrit dans la région de sortie cible dans l’image liée.

La propriété BitmapBounds est spécifiée en tant que tableau UInt32 avec les valeurs [left, top, width, height].

Cette propriété prend effet uniquement lors de la liaison d’un Objet ImageFeatureValue.
BitmapPixelFormat PropertyType.Int32 Lors de la liaison d’une entrée ou d’une sortie, la propriété BitmapPixelFormat spécifie le format de pixel prévu par l’auteur du modèle pour une valeur de fonctionnalité particulière. Lorsque les métadonnées Image.BitmapPixelFormat sont manquantes dans les métadonnées Image du modèle ONNX, elles peuvent être spécifiées au moment de l’exécution à l’aide de cette propriété. Les images liées sont automatiquement converties au format de pixel spécifié pour être consommées par le modèle.

BitmapPixelFormat doit être spécifié en tant que valeur Int32 correspondant aux valeurs de l’énumération Windows.Graphics.Imaging.BitmapPixelFormat . Actuellement, les valeurs suivantes sont prises en charge :
  • BitmapPixelFormat.Rgba8
  • BitmapPixelFormat.Bgra8
  • BitmapPixelFormat.Gray8
Cette propriété prend effet uniquement lors de la liaison d’un Objet ImageFeatureValue.
DisableTensorCpuSync PropertyType.Boolean Lors de la liaison d’un tenseur de sortie soutenu par un ID3D12Resource, la propriété DisableTensorCpuSync peut être utilisée pour empêcher la copie de la sortie GPU/NPU vers un tenseur de processeur. Par défaut, l’appel d’API LearningModelSession.Evaluate est un appel bloquant et garantit que les résultats de l’inférence sont disponibles sur la post-achèvement du processeur.

Dans certains scénarios d’évaluation GPU/NPU, il est souhaitable de conserver les résultats de l’inférence sur le GPU/NPU ; et la copie des résultats dans le processeur est inutile et plus lente. Pour éviter cette copie, activez la propriété DisableTensorCpuSync pendant la liaison.

Cette propriété prend effet uniquement lors de la liaison d’un ITensor ou de ses types concrets (autrement dit, TensorFloat).

Cette propriété a été introduite dans Windows 11, version 21H2 (10.0 ; Build 22000).
PixelRange PropertyType.Int32 Lors de la liaison d’une entrée ou d’une sortie, la propriété PixelRange spécifie la plage de normalisation prévue par l’auteur du modèle pour une valeur de fonctionnalité particulière. Lorsque les métadonnées Image.NominalPixelRange sont manquantes dans les métadonnées Image du modèle ONNX, elles peuvent être spécifiées au moment de l’exécution à l’aide de cette propriété. Les images liées sont automatiquement converties dans la plage normalisée spécifiée pour être consommées par le modèle.

Le PixelRange doit être spécifié en tant que valeur Int32 correspondant aux valeurs de l’énumération Windows.AI.MachineLearning.LearningModelPixelRange .

Cette propriété prend effet uniquement lors de la liaison d’un Objet ImageFeatureValue.

Windows Server

Pour utiliser cette API sur Windows Server, vous devez utiliser Windows Server 2019 avec Expérience utilisateur.

Sécurité des threads

Cette API est thread-safe.

S’applique à