L'internet des objets bénéficie de l'apprentissage automatique, de la périphérie au cloud

Aujourd'hui, il est facile d'exécuter l'apprentissage automatique d'Edge Impulse sur n'importe quel système d'exploitation, tel que Raspberry Pi OS, et sur n'importe quel cloud, tel qu'Azure IoT de Microsoft. Evan Rust, l'ambassadeur technologique d'Edge Impulse, explique comment cela fonctionne.

La mise en place de solutions IoT d'entreprise exige beaucoup d'efforts pratiques et une bonne dose d'imagination. Comme base, cela commence par une communication hautement sécurisée et fiable entre votre application IoT et les appareils qu'elle gère.

Nous avons choisi notre intégration préférée, le Microsoft Azure IoT Hub, qui nous fournit un back-end de solution hébergée dans le cloud pour connecter pratiquement n'importe quel appareil. Pour notre matériel, nous avons choisi l'omniprésent Raspberry Pi 4, et bien sûr Edge Impulse, qui se connectera aux deux plateformes et étendra notre solution présentée du cloud à la périphérie, y compris l'authentification des appareils, la gestion des appareils prêts à l'emploi et le provisionnement des modèles.

 

De la périphérie au cloud

Les dispositifs d'apprentissage automatique en périphérie se divisent en deux catégories : certains sont capables d'exécuter localement des modèles très simples, et d'autres ont des capacités plus avancées qui leur permettent d'être plus puissants et d'avoir une connectivité au cloud.

Le deuxième groupe est souvent coûteux à développer et à maintenir, car la formation et le déploiement des modèles peuvent être un processus ardu. C'est là que Edge Impulse intervient pour simplifier le transport, car les données peuvent être collectées à distance, utilisées sans effort pour former des modèles, téléchargées sur les appareils directement à partir d'Azure IoT Hub, puis exécutées - rapidement.

Ce projet de référence vous servira de guide pour démarrer rapidement avec Edge Impulse sur Raspberry Pi 4 et Azure IoT, afin d'entraîner un modèle qui détecte les écrous d'une roue et envoie des alertes au cloud.

 

Mise en place du matériel

Pour commencer, vous aurez besoin d'un Raspberry Pi 4 avec une image d'OS Raspberry Pi mise à jour qui peut être trouvée facilement.

  • Après avoir flashé cette image sur une carte SD et ajouté un fichier appelé wpa_supplicant, ainsi qu'un fichier vide appelé ssh (tous deux dans le répertoire /boot), vous pouvez allumer la carte.
  • Une fois que vous avez réussi à accéder à l'appareil avec SSH et le mot de passe raspberry, il est temps d'installer les dépendances pour le SDK Linux Edge Impulse.
  • Il suffit d'exécuter les trois commandes suivantes pour configurer l'environnement NodeJS et tout ce dont vous avez besoin pour l'assistant edge-impulse-linux.
  • Comme ce projet traite des images, nous aurons besoin d'un moyen de les capturer.
  • L'assistant prend en charge à la fois les modules Pi Camera et les webcams USB standard. Veillez donc à activer d'abord le module caméra si vous prévoyez d'en utiliser un.
  • Une fois que c'est fait, allez dans le Studio Edge Impulse et créez un nouveau projet, puis exécutez l'assistant avec et assurez-vous que votre appareil apparaît dans la section des appareils du Studio Edge Impulse après vous être connecté et avoir sélectionné votre projet.

 

Capturez vos données

La formation de modèles d'apprentissage automatique précis nécessite l'alimentation d'un grand nombre de données variées, ce qui signifie que vous avez besoin de beaucoup d'images. Pour ce cas d'utilisation, j'ai capturé environ 50 images d'une roue avec des dés.

Après avoir terminé, je me suis dirigé vers la file d'attente d'étiquetage sur la page de capture des données et j'ai ajouté des boîtes de délimitation autour de chaque dé dans chaque image, ainsi que chaque roue.

Pour ajouter des données de test, je suis retourné à la page principale du tableau de bord et j'ai cliqué sur le bouton "rééquilibrer l'ensemble de données", qui déplace 20 % des données de formation dans le conteneur de données de test.

 

Modèles de formation

Maintenant que nous disposons de nombreuses données d'entraînement, il est temps d'en faire quelque chose, à savoir entraîner un modèle.

  • Le premier bloc de l'impulsion est un bloc de données d'image, et il met à l'échelle chaque image à une taille de 320 par 320 pixels.
  • Ensuite, les données d'image sont envoyées au bloc de traitement d'image, qui prend les données RVB brutes et en déduit des caractéristiques.
  • Enfin, ces caractéristiques sont envoyées au modèle de détection d'objets par apprentissage par transfert qui apprend à reconnaître les objets.
  • J'ai configuré mon modèle pour qu'il s'entraîne pendant 30 cycles à un taux d'apprentissage de 15, mais ce taux peut être ajusté pour affiner la précision.
  • Comme vous pouvez le voir, le modèle que j'ai formé a pu atteindre une précision initiale de 35,4 %, mais après quelques ajustements, il a pu reconnaître correctement les objets avec une précision de 73.

 

Test et déploiement des modèles

Pour vérifier que le modèle fonctionne correctement dans le monde réel, nous devons le déployer sur notre Raspberry Pi 4.

 

Intégration de modèles avec Microsoft Azure IoT

Le modèle s'exécutant localement sur l'appareil, ajoutons une intégration avec un hub Azure IoT qui permettra à notre Raspberry Pi d'envoyer des messages au cloud.

 

  • Tout d'abord, assurez-vous que vous avez installé l'Azure CLI et que vous êtes connecté à l'aide de az login.
  • Obtenez ensuite le nom du groupe de ressources que vous utiliserez pour le projet.

 

  • Après cela, retournez au terminal et exécutez les commandes suivantes pour créer un nouveau IoT Hub et enregistrer un nouvel ID d'appareil : Récupérez la chaîne de connexion avec et définissez-la comme variable d'environnement avec dans la session SSH de votre Raspberry Pi, ainsi que pour ajouter les bibliothèques nécessaires. (Remarque : si vous ne définissez pas la variable d'environnement ou si vous ne la passez pas en argument, le programme ne fonctionnera pas !).

 

  • La chaîne de connexion contient les informations nécessaires pour que le périphérique établisse une connexion avec le service IoT Hub et communique avec lui. Vous pouvez ensuite surveiller la sortie dans le Hub avec ou dans le portail Azure.

 

  • Pour vous assurer qu'il fonctionne, téléchargez et exécutez cet exemple pour vous assurer que vous pouvez voir le message de test. Pour la seconde partie du déploiement, nous aurons besoin d'un moyen de personnaliser la façon dont notre modèle est utilisé dans le code.

 

  • Heureusement, Edge Impulse fournit un SDK Python à cette fin. Installez-le, et il fonctionne en configurant une connexion à Azure IoT Hub, puis en exécutant le modèle.

 

  • Une fois que vous avez téléchargé le fichier zip ou cloné le dépôt dans un dossier, récupérez le fichier modèle en l'exécutant dans le dossier que vous venez de créer à partir du processus de clonage. Cette opération permet de télécharger un fichier appelé modelfile.

 

  • Maintenant, exécutez le programme Python avec où et le nombre correct d'écrous qui doivent être fixés à la roue (vous devrez peut-être utiliser python3 si Python 2 et 3 sont tous deux installés). Maintenant, chaque fois qu'une roue est détectée, le nombre de dés est calculé. Si ce nombre est inférieur à l'objectif, un message est envoyé à l'Azure IoT Hub. Et en n'envoyant des messages que lorsque quelque chose ne va pas, nous pouvons éviter que des charges utiles vides ne prennent une quantité excessive de bande passante.

 

Les possibilités sont infinies

Imaginez l'utilisation de la détection d'objets pour une tâche industrielle telle que le contrôle de la qualité sur une chaîne de montage, ou l'identification de fruits mûrs entre les rangées de cultures, ou la détection de dysfonctionnements de machines, ou encore des dispositifs d'inférence à distance alimentés par batterie.

Entre Edge Impulse, du matériel tel que Raspberry Pi et Microsoft Azure IoT Hub, vous pouvez concevoir des modèles infinis et les déployer sur chaque appareil, tout en authentifiant chaque appareil individuel avec une sécurité intégrée. Vous pouvez définir des identités et des informations d'identification individuelles pour chacun de vos appareils connectés afin de préserver la confidentialité des messages entre le cloud et les appareils et entre les appareils et le nuage, révoquer les droits d'accès pour des appareils spécifiques, transmettre du code et des services entre le cloud et la périphérie, et bénéficier d'analyses avancées sur les appareils fonctionnant hors ligne ou avec une connectivité intermittente.

Et si vous cherchez vraiment à étendre vos opérations et à bénéficier d'une vue complète du tableau de bord des flottes d'appareils que vous gérez, il est également possible de recevoir des alertes IoT dans le Connected Field Service de Microsoft depuis Azure IoT Central - directement. 

Il n'y a pas de limites, juste votre imagination au travail.