L'apprentissage automatique Windows est une API d'inférence d'apprentissage automatique haute performance qui est alimentée par ONNX Runtime et DirectML.
L'API Windows ML est un composant d'exécution Windows et convient aux applications à faible latence à haute performance telles que des frameworks, des jeux et d'autres applications en temps réel ainsi que des applications construites avec des langages de haut niveau.
Ce repo contient des échantillons et des outils d'apprentissage automatique Windows qui montrent comment créer des scénarios alimentés par l'apprentissage automatique dans les applications Windows.
Pour plus d'informations sur Windows ML, y compris les tutoriels étape par étape et les guides pratiques, veuillez visiter la documentation Windows ML.
| Échantillon / outil | Statut |
|---|---|
| Tous les échantillons | |
| Winmlrunner | |
| Tableau de bord WinML |
Condition préalable
Windows ML propose l'inférence d'apprentissage automatique via le SDK Windows de la boîte de réception ainsi qu'un package NuGet redistribuable. Le tableau ci-dessous met en évidence la disponibilité, la distribution, la prise en charge du langage, l'entretien et les aspects de compatibilité de l'avant du package dans la boîte et NuGet pour Windows ML.
| Dans la boîte | Nuget | |
|---|---|---|
| Disponibilité | Windows 10 - Build 17763 (RS5) ou plus récent Pour des informations plus détaillées sur la prise en charge de la version, consultez nos documents. | Windows 8.1 ou plus récent Remarque : certaines API (c.-à-d: videoframe) ne sont pas disponibles sur les OS plus anciennes. |
| SDK Windows | SDK Windows - Build 17763 (RS5) ou plus récent | SDK Windows - Build 17763 (RS5) ou plus récent |
| Distribution | Intégré dans les fenêtres | Package et distribuer dans le cadre de votre application |
| Entretien | Microsoft-axé (les clients en bénéficient automatiquement) | Des développeurs |
| Avant | La compatibilité roule automatiquement avec de nouvelles fonctionnalités | Le développeur doit mettre à jour le package manuellement |
Apprenez-en plus ici.
Dans cette section, vous trouverez divers échantillons de modèle pour une variété de scénarios à travers les différentes offres d'API Windows ML.
Classification d'image
Un sous-domaine de la vision par ordinateur dans lequel un algorithme examine une image et lui attribue une balise d'une collection de balises ou de catégories prédéfinies sur lesquelles il a été formé.
| Type d'application Windows Distribution | UWP Dans la boîte | UWP Nuget | Bureau Dans la boîte | Bureau Nuget |
|---|---|---|---|---|
| Alexnet | ✔️C # .NET5 - Galerie d'échantillons | |||
| Camence | ✔️C # .NET5 - Galerie d'échantillons | |||
| Denset | ✔️C # .NET5 - Galerie d'échantillons | |||
| Efficace | ✔️C # .NET5 - Galerie d'échantillons | |||
| Googlenet | ✔️C # .NET5 - Galerie d'échantillons | |||
| Inceptionv1 | ✔️C # .NET5 - Galerie d'échantillons | |||
| Inceptionv2 | ✔️C # .NET5 - Galerie d'échantillons | |||
| MNIST | ✔️C ++ / CX ✔️C # | |||
| Mobilenetv2 | ✔️C # .NET5 - Galerie d'échantillons | |||
| RCNN | ✔️C # .NET5 - Galerie d'échantillons | |||
| Resnet50 | ✔️C # .NET5 - Galerie d'échantillons | |||
| Shufflenetv1 | ✔️C # .NET5 - Galerie d'échantillons | |||
| Shufflenetv2 | ✔️C # .NET5 - Galerie d'échantillons | |||
| Serrer | ✔️C # ✔️Javascript | ✔️C ++ / winrt ✔️C # .NET5 ✔️C # .NET Core 2 | ✔️C ++ / winrt ✔️C # .NET5 - Galerie d'échantillons ✔️ RAIS | |
| VGG19 | ✔️C # .NET5 - Galerie d'échantillons | |||
| VGG19BN | ✔️C # .NET5 - Galerie d'échantillons | |||
| Zfnet512 | ✔️C # .NET5 - Galerie d'échantillons |
Transfert de style
Une technique de vision par ordinateur qui nous permet de recomposer le contenu d'une image dans le style d'un autre.
| Type d'application Windows Distribution | UWP Dans la boîte | UWP Nuget | Bureau Dans la boîte | Bureau Nuget |
|---|---|---|---|---|
| Fnsandy | ✔️C # - Transfert de style FNS ✔️C # - Transfert de style en temps réel |
Ces échantillons avancés montrent comment utiliser diverses fonctionnalités de liaison et d'évaluation dans Windows ML:
Tensorisation personnalisée : une application de console Windows (C ++ / WinRT) qui montre comment faire une tenorisation personnalisée.
Opérateur personnalisé (CPU) : une application de bureau qui définit plusieurs opérateurs CPU personnalisés. L'un d'eux est un opérateur de débogage que nous vous invitons à intégrer dans votre propre flux de travail.
Sélection de l'adaptateur : une application de bureau qui montre comment choisir un adaptateur de périphérique spécifique pour l'exécution de votre modèle.
Identifiant plan : une application UWP et une application WPF emballée avec le pont de bureau, partageant le même modèle formé à l'aide d'un service de vision personnalisé Azure. Pour les instructions étape par étape pour cet échantillon, veuillez consulter le billet de blog Améliorer votre application WinML vers les derniers bits.
Vision personnalisée et Windows ML : Le tutoriel montre comment former un modèle de réseau neuronal pour classer les images de nourriture à l'aide du service de vision personnalisé Azure, exporter le modèle au format ONNX et déployer le modèle dans une application d'apprentissage automatique Windows fonctionnant localement sur l'appareil Windows.
ML.NET et Windows ML : Ce didacticiel vous montre comment former un modèle de réseau neuronal pour classer les images de nourriture à l'aide de ML.NET Model Builder, exporter le modèle au format ONNX et déployer le modèle dans une application d'apprentissage machine Windows fonctionnant localement sur un appareil Windows.
Analyse des données Pytorch : Le tutoriel montre comment résoudre une tâche de classification avec un réseau de neurones à l'aide de la bibliothèque Pytorch, exporter le modèle vers le format ONNX et déployer le modèle avec l'application Windows Machine Learning qui peut s'exécuter sur n'importe quel appareil Windows.
Classification d'image Pytorch : Le tutoriel montre comment former un modèle de réseau neuronal de classification d'image à l'aide de Pytorch, exporter le modèle au format ONNX et le déployer dans une application d'apprentissage automatique Windows en cours d'exécution localement sur votre appareil Windows.
Détection d'objets YOLOV4 : ce tutoriel montre comment créer une application UWP C # qui utilise le modèle YOLOV4 pour détecter les objets dans des flux vidéo.
Conversion de modèle
Windows ML fournit des capacités d'inférence alimentées par le moteur d'exécution ONNX. En tant que tels, tous les modèles exécutés dans Windows ML doivent être convertis au format du modèle ONNX. Les modèles construits et formés dans des cadres source comme TensorFlow ou Pytorch doivent être convertis en ONNX. Consultez la documentation pour convertir en un modèle ONNX:
Optimisation du modèle
Les modèles peuvent nécessiter d'autres optimisations appliquées après la conversion pour prendre en charge les fonctionnalités avancées telles que le lot et la quantification. Découvrez les outils suivants pour optimiser votre modèle:
Tableau de bord WinML (aperçu) : un outil basé sur l'interface graphique pour afficher, modifier, convertir et valider les modèles d'apprentissage automatique pour le moteur d'inférence Windows ML. Cet outil peut être utilisé pour permettre des dimensions libres sur les modèles construits avec des dimensions fixes. Télécharger la version Aperçu
Optimisations de graphiques: les optimisations des graphiques sont essentiellement des transformations au niveau des graphiques, allant des simples simplifications de graphiques et des éliminations de nœuds aux fusions de nœuds plus complexes et aux optimisations de mise en page.
Quantification du graphique : La quantification dans l'ONNX l'exécution fait référence à la quantification linéaire 8 bits d'un modèle ONNX.
Validation du modèle
WinMlRunner : un outil de ligne de commande qui peut exécuter des modèles .onnx ou .pb où les variables d'entrée et de sortie sont des tenseurs ou des images. Il s'agit d'un outil très pratique pour valider rapidement un modèle ONNX. Il tentera de charger, de lier et d'évaluer un modèle et d'imprimer des messages utiles. Il capture également les mesures de performance.
Télécharger x64 exe
Intégration du modèle
Générateur de code WinML (MLGEN) : une extension Visual Studio pour vous aider à démarrer des API WinML sur les applications UWP en générant un code de modèle lorsque vous ajoutez un fichier ONNX formé dans le projet UWP. Dans le code de modèle, vous pouvez charger un modèle, créer une session, lier les entrées et évaluer avec les codes de wrapper. Voir les documents pour plus d'informations.
Télécharger pour vs 2017, vs 2019
Galerie des échantillons WinML: Explorez une variété de scénarios et de modèles d'intégration ML.
Consultez les échantillons de modèle et les échantillons de scénario avancés pour savoir comment utiliser Windows ML dans votre application.
Nous recherchons toujours votre aide pour corriger les bogues et améliorer les échantillons. Créez une demande de traction et nous serons heureux de jeter un œil.
Ce projet a adopté le code de conduite open source Microsoft. Pour plus d'informations, consultez le code de conduite FAQ ou contactez [email protected] avec toute question ou commentaire supplémentaire.