Bienvenue dans le deuxième blog de notre série sur les principes de base d'Edge Impulse. Dans le premier blog, nous avons présenté les différents mécanismes offerts par Edge Impulse. Cette fois, nous examinerons concrètement le flux de travail global d'Edge Impulse : de la collecte des données et de la formation au déploiement du micrologiciel sur les dispositifs de périphérie ciblés. Pour ce faire, imaginons un exemple concret. Dans notre cas, supposons que nous essayons de construire un appareil qui écoute une série « secrète » de coups frappés et qui déverrouille une porte si la séquence correcte de coups est détectée. Nous utiliserons le microphone de la carte de développement Arduino Nano 33 BLE Sense.
Tout d'abord, téléchargeons les applications nécessaires pour que tout cela fonctionne. Ces applications sont les suivantes :
À ce stade, nous devons simplement flasher le micrologiciel et lancer le Serial Daemon. Les scripts Windows, Mac OS et Linux inclus dans le dépôt du micrologiciel permettent d'automatiser ce processus pour certaines cartes de développement, y compris la Nano 33 BLE Sense. Si vous ne l'avez pas encore fait, créez un compte et connectez-vous à Edge Impulse Studio (https://studio.edgeimpulse.com). Cliquez ensuite sur l'onglet « Devices » (Périphériques) pour vous assurer que votre carte de développement a réussi à entrer en contact avec le service Edge Impulse (Figure 1). Maintenant que tout cela est fait, il est temps de nous plonger dans le véritable sujet de cet article : comment former un nouveau modèle à partir de zéro.
Figure 1 : Edge Impulse fournit une prise en charge native d'une large gamme de cartes de développement directement connectées à leur environnement de formation et de test (Source : Green Shoe Garage)
Dans le cadre de ce projet, nous utiliserons le microphone intégré de la Nano 33 BLE Sense pour écouter une séquence distincte de coups. Afin de former le modèle, nous devrons collecter deux ensembles de données : l'un qui capture le son ambiant sans coups et l'autre qui capture la série de coups secrets. Ce processus s'appelle l'ingestion. Cliquez sur l'onglet « Data Acquisition » (Acquisition de données) et recherchez la rubrique « Record New Data » (Enregistrer de nouvelles données).
La longueur de l'échantillon (Sample Length) et la fréquence (Frequency) sont des attributs essentiels. La longueur de l'échantillon détermine la durée d'un enregistrement et la fréquence détermine le nombre d'échantillons prélevés par seconde. Edge Impulse recommande de capturer dix minutes d'audio (capturées par blocs d'une minute), cinq minutes de bruit ambiant et cinq minutes de coups frappés. N'oubliez pas que la capture d'une minute de données audio peut prendre plusieurs minutes, car la quantité de mémoire sur votre carte de développement spécifique vous contraint.
Après avoir obtenu les données brutes nécessaires, il faut les traiter et les transformer en réseau neuronal (Figure 2). Dans le langage Edge Impulse, cela s'appelle concevoir une « impulsion ». Il s'agit d'un processus en plusieurs parties dans lequel nous définissons d'abord comment découper les données brutes en fenêtres. Pour ce faire, nous spécifions deux valeurs. Premièrement, la taille de la fenêtre détermine la durée, en millisecondes, de chaque fenêtre. La deuxième est l'augmentation de la fenêtre qui contrôle l'heure de début de chaque fenêtre suivante.
Figure 2 : Les outils d'Edge Impulse fournissent une manière simple d'examiner et d'étiqueter les données de formation et de test directement à partir du navigateur (Source : Green Shoe Garage)
Une fois les données brutes réparties dans des fenêtres de taille appropriée, il est temps de les transformer en quelque chose d'utile pour les algorithmes de formation du réseau neuronal. Ce processus commence par l'envoi des données brutes par le bloc de traitement bien nommé. Edge Impulse applique une technique de traitement du signal appelée coefficients cepstraux de fréquence de Mel (MFCC) pour les données audio. D'autres blocs de traitement sont disponibles, y compris les blocs pour les images, l'aplatissement (données à évolution lente telles que les relevés d'humidité), l'analyse spectrale (données à évolution rapide comme un accéléromètre) et la possibilité de créer un bloc de traitement personnalisé. Plusieurs variables peuvent être ajustées avec le bloc de traitement MFCC, notamment :
En ajustant ces paramètres, vous pouvez modifier la sortie des MFCC. La sortie de ces modifications sur les données audio brutes est visualisée sous la forme d'un spectrogramme. L'objectif de l'ajustement de ces paramètres est de s'assurer que les caractéristiques qui composent les ensembles de données « coups » et « non coups » sont extraites avec précision et efficacité à partir des données brutes. Les meilleurs résultats obtenus maintenant contribueront à faire en sorte que le réseau neuronal puisse finalement inférer plus facilement lorsque le dispositif est mis en service dans des conditions réelles.
N'oubliez pas que les différents types de données utiliseront d'autres méthodes pour préparer les données en vue de leur utilisation dans les algorithmes d'apprentissage automatique (machine learning, ML). Savoir ce qui est correct pour vos données constitue une grande partie de l'éducation et de l'expérience que vous acquerrez en travaillant sur des projets d'apprentissage automatique.
Le traitement des données brutes est suivi d'un bloc dit d'apprentissage qui prend le résultat du bloc de traitement et l'utilise pour former un modèle de réseau neuronal. Dans l'Edge Impulse Studio, sélectionnez « NN (Keras) Classifier » dans la fenêtre de navigation de gauche, qui permet la catégorisation des mouvements ou la reconnaissance audio. Vous pouvez également utiliser l'apprentissage par transfert pour classer les images et la détection d'anomalie K-mean pour trouver des valeurs aberrantes dans les nouvelles données. Il y a aussi quelques paramètres à modifier avant d'exécuter le modèle de réseau neuronal d'entraînement. Parmi ceux-ci :
Une fois les paramètres ajustés, cliquez sur « Start Training » (Démarrer la formation) ; à la fin, vous disposerez d'un réseau neuronal formé.
Tout comme l'éducation n'est pas la fin de l'apprentissage professionnel, de même l'efficacité du réseau neuronal peut être améliorée en lui fournissant des données du monde réel (c'est-à-dire de nouvelles données qui n'ont pas été utilisées pour former le réseau neuronal initialement). Il s'agit d'un processus en deux étapes sur Edge Impulse. Tout d'abord, il y a un test rapide appelé classification en direct qui permet d'exposer le réseau neuronal à de nouvelles données pour évaluer ses performances (Figure 3). Une préoccupation est le surapprentisage (overfitting) où le réseau neuronal réagit parfaitement aux données de test mais pas aux nouvelles données du monde réel, car le modèle a en quelque sorte « mémorisé » les données de test. Le second test, plus rigoureux, est appelé test du modèle. Chaque fois qu'une classification en direct est exécutée, les données sont ajoutées à un ensemble de données de test en constante expansion.
Figure 3 : La possibilité de visualiser et d'ajuster les données brutes pour améliorer l'efficacité et la précision du modèle est un avantage significatif d'Edge Impulse par rapport aux processus manuels antérieurs associés au développement de l'apprentissage automatique (Source : Green Shoe Garage)
Une fois que l'impulsion a été formée et vérifiée, il est temps de déployer le modèle sur votre appareil. Du point de vue de l'utilisateur final, la magie de l'IA se produit lors de l'inférence. C'est à ce moment-là qu'un modèle entièrement formé est déployé dans un environnement cloud ou sur un appareil périphérique afin qu'il puisse commencer à faire des prévisions basées sur des interactions réelles. Toutefois, pour y parvenir, il faut disposer d'une bibliothèque logicielle conviviale qui peut être intégrée à son projet. Edge Impulse regroupe l'ensemble de l'impulsion, y compris l'algorithme MFCC, les poids du réseau neuronal et le code de classification, dans une seule bibliothèque C++. Cela permettra au modèle de fonctionner sur des systèmes embarqués de faible puissance qui peuvent même ne pas disposer d'une connexion Internet.
Rejoignez-nous pour la troisième partie de la série sur les principes de base d'Edge Impulse. Dans la troisième partie, nous allons explorer en détail l'une des étapes les plus cruciales du flux de travail Edge Impulse : la conception d'impulsion.
Michael Parks, P.E. is the co-founder of Green Michael Parks, P.E. est propriétaire de Green Shoe Garage, un studio de conception de solutions électroniques personnalisés et agence de conseil en technologies, situé dans le Maryland méridional. Il réalise le podcast S.T.E.A.M. Power pour sensibiliser le grand public aux questions techniques et scientifiques. Titulaire d'une maîtrise d'ingénierie des systèmes de l'université Johns Hopkins, Michael est également ingénieur professionnel agréé de l'État du Maryland.