Guide pratique pour générer une application de classification d’images en temps réel

Effectué

Un microcontrôleur tel qu’Azure Sphere est un appareil à ressources contraintes. Vous devez adapter le modèle pour qu’il s’exécute sur un microcontrôleur, dans le cas présent, Azure Sphere. La taille du modèle doit être très petite. De plus, le modèle doit être préentraîné et optimisé pour vos données d’entrée.

Quand vous entraînez un modèle, vous obtenez des poids et des paramètres pour un modèle de deep learning. Pour exécuter ce modèle de deep learning sur Azure Sphere, vous devez quantifier les poids et les paramètres afin de convertir les données à virgule flottante sur 32 bits en données fixes sur 8 ou 16 bits. La quantification est une étape clé pour le déploiement d’un modèle sur Azure Sphere (sur un microcontrôleur). La quantification pour le deep learning est le processus qui consiste à rapprocher un réseau neuronal utilisant des nombres à virgule flottante d’un réseau neuronal de nombres à faible largeur de bits. Cela réduit considérablement les exigences de mémoire et le coût du calcul de l’utilisation des réseaux neuronaux.

Dans ce module, vous utilisez le modèle de classification d’images CIFAR10. Votre modèle est entraîné avec le framework Caffe. Les poids et les paramètres sont quantifiés en données flottantes sur 8 bits (entiers). Vous allez prendre des poids et des paramètres quantifiés du modèle CIFAR10 et les ajouter à votre exemple de projet. Vous devez également ajouter la bibliothèque CMSIS-NN à votre exemple de projet pour bénéficier des fonctionnalités du microcontrôleur. CMSIS-NN est optimisé pour les réseaux neuronaux à convolution (CNN).

Les composants de cette unité sont :

  • Dépôt de classification d’exemples d’images de Microsoft : Il contient une application de classification en temps réel d’exemples d’images s’exécutant sur Azure Sphere.

  • CMSIS-NN : il s’agit d’une bibliothèque de logiciels, une collection de fonctions de réseau neuronal optimisées pour les microcontrôleurs du cœur Cortex-M. Elle est développée pour optimiser les performances et réduire l’empreinte mémoire des réseaux neuronaux sur les cœurs des processeurs Cortex-M. Elle permet l’envoi (push) de fonctionnalités liées aux réseaux neuronaux et au machine learning dans le nœud final des applications IoT. Elle est disponible dans le dossier du projet.

    Elle a implémenté des types de couche de réseaux neuronaux répandues, comme les couches à convolution, à convolution séparable de profondeur, entièrement connectées, d’interrogation et d’activation. Avec ses fonctions utilitaires, il est également possible de créer des modules NN plus complexes, comme LSTM et GRU.

  • arm_nn_examplescifar10_weights.h: Poids et biais quantifiés. Elle est disponible dans le dossier du projet.

  • arm_nn_examplescifar10_parameter.h: Biais quantifiés, valeurs de décalage sortantes. Elle est disponible dans le dossier du projet.

Voici les étapes à suivre pour cette unité :

  1. Clonez un dépôt de classification d’exemples d’images de Microsoft pour disposer de poids quantifiés, de paramètres et de la bibliothèque CMSIS-NN.
  2. Modifiez et mettez à jour le code source de votre application de classification d’images que vous venez de créer.

À la fin de l’unité, votre modèle sera configuré avec les paramètres nécessaires pour que vous puissiez déployer l’application sur le microcontrôleur et effectuer l’inférence.