Apprenez à votre BME688 à sentir bon.

Apprenez à votre BME688 à sentir Image de titre

Un guide complet sur la façon d'entraîner votre capteur BME688

Bonjour à tous les passionnés de technologie ! Bosch a publié le BME688Le BME688, un nouveau capteur génial qui peut distinguer jusqu'à quatre odeurs différentes. Ce guide vous expliquera tous les détails pour apprendre à votre BME688 à distinguer les odeurs. Ne vous inquiétez pas si vous êtes novice en IA ou en Python. Ce guide est adapté aux débutants.

Alors, allons-y.

Conditions préalables

Étapes

  1. Choisissez votre application
  2. Données d'enregistrement
  3. Entraîner l'algorithme
  4. Détecter les odeurs

1. Choisissez votre application

La première étape consiste à choisir votre application. Pour ce guide, je vais utiliser la viande et le fromage comme exemples. Mais il existe une gamme infinie de possibilités. Vous pouvez distinguer les fruits des légumes ou les produits de nettoyage des parfums. Vous pouvez également essayer de déterminer quand un aliment a tourné.

Il y a certains éléments que vous devez prendre en compte lorsque vous choisissez une application. Vous avez besoin de nombreux spécimens pour chaque classe que vous souhaitez distinguer, afin de garantir la robustesse de l'algorithme. Pour commencer, vous devez choisir un produit bon marché et largement disponible. Gardez également à l'esprit qu'il est conseillé d'utiliser l'air normal comme l'une des classes, car il sera presque toujours présent.

Pour créer un algorithme robuste, vous devez utiliser au moins une demi-heure de données de mesure pour chaque spécimen. Par conséquent, les spécimens qui produisent une odeur constante sont un bon choix. Veillez également à utiliser un large éventail de spécimens. Si, par exemple, vous n'utilisez que des oranges, des citrons et des citrons verts pour votre classe de fruits, le capteur risque de ne pas classer une framboise comme un fruit, car elle est trop différente des spécimens utilisés pour la formation. Plus vous utilisez de spécimens différents, mieux c'est.

Une fois que vous avez finalisé votre choix, il est temps de créer un nouveau projet AI Studio. Ouvrez AI Studio et appuyez sur le bouton Créer un projet ... Bouton. Appuyez sur Configurer la carte BME si vous voulez enregistrer des données avec une configuration spécifique.

2. Enregistrer les données

Ce processus varie, selon que vous utilisez l'option BME688 Breakout Board ou Kit de développement du capteur de gaz Bosch BME688 (autre carte navette). La carte navette est plus facile à utiliser et capture les données huit fois plus vite que la carte breakout, mais elle est beaucoup plus chère. Je vais expliquer les deux méthodes en détail dans les sections suivantes.

Note : Le capteur BME688 a besoin d'un certain temps pour s'adapter à l'environnement et s'habituer. Veillez à le laisser fonctionner pendant au moins 24 heures avant d'enregistrer vos données d'entraînement.

Enregistrer des données avec la carte navette BME688

BOSCH a équipé la navette de huit capteurs BME688, ce qui lui permet de produire huit fois plus de données dans le même laps de temps. Tous les logiciels sont déjà installés et l'appareil est prêt à fonctionner dès sa sortie de la boîte. Regardez ce tutoriel vidéo de Bosch pour en savoir plus sur le processus de mesure.

Si vous enregistrez de nombreux spécimens en une seule session, vous pouvez noter l'ordre des spécimens pour éviter toute confusion. Vous pouvez toujours recadrer les données dans AI Studio par la suite, alors n'ayez pas peur de capturer beaucoup de données.

Enregistrer des données avec la carte BME688 Breakout Board

Si vous utilisez le BME688 Breakout Board Je vous conseille quand même de regarder le Tutoriel Bosch car il fournit des informations utiles sur le processus de formation dans AI Studio. Mais pour enregistrer les données de formation, certaines étapes supplémentaires sont nécessaires.

Nous, à pi3g a créé une bibliothèque python pour les capteurs BME68X, que vous pouvez mettre à jour avec Boschs BSEC 2.0. Il est donc utile que vous ayez une certaine expérience de Python, mais ce n'est pas nécessaire.

Note : Voir les instructions d'installation et d'utilisation directement sur notre GitHub.

Commencez par cloner notre bme68x-python-library. Ceci peut être fait en exécutant la commande suivante dans un terminal bash.

git clone https://github.com/pi3g/bme68x-python-library.git

Vous devez maintenant construire et installer le module python bme68x. Le site BSEC 2.0 est un logiciel propriétaire, vous devez donc télécharger la version 2.0.6.1 directement de Bosch et accepter leur licence. Décompressez-le dans le dossier bme68x-python-library et procédez aux commandes suivantes.

cd path/to/bme68x-python-library
sudo python3 setup.py install

Vous pouvez maintenant exécuter le bmerawdata.py avec les paramètres par défaut.

cd tools/bmerawdata
python3 bmerawdata.py

Le script affichera les données enregistrées après chaque mesure. Terminez le script et enregistrez les données dans un fichier compatible AI Studio en appuyant sur Ctrl+c.

3. Entraîner l'algorithme

Importer des données

Peu importe que vous utilisiez le BME688 Breakout Board ou le Kit de développement du capteur de gaz Bosch BME688L'étape suivante consiste à importer les données dans AI Studio. Appuyez sur le bouton Importer des données et sélectionnez votre fichier .bmerawdata.

Dialogue d'importation de données

Votre session doit avoir un nom significatif. Il convient de choisir une énumération des spécimens.

Vous pouvez voir un graphique de vos données, par exemple pour le canal de données sur les gaz, comme indiqué ci-dessous.

Canal de données sur les gaz

Si les données proviennent de la carte navette, vous pouvez basculer entre les données des huit capteurs. Chacune des lignes colorées représente une étape du profil de chauffe qui a été utilisé pour capturer les données.

Note : Dans la plupart des cas, vous ne devez utiliser que le canal de données du gaz pour la formation.

Nous devons maintenant étiqueter nos spécimens. Si vous avez enregistré les données à l'aide de la carte navette et utilisé les boutons embarqués pour marquer les spécimens, vous pourrez déjà voir un modèle pour chacun d'entre eux. Vous pouvez également recadrer les spécimens et en créer de nouveaux (par exemple si vous avez enregistré plusieurs spécimens à l'aide de notre tableau d'affichage).

Étiquettes de spécimen et horodateurs

Après avoir terminé l'édition de la session, appuyez sur le bouton Importer des données dans le coin inférieur droit de la boîte de dialogue.

Une fois que vous avez importé et étiqueté tous vos spécimens, il est temps de créer et d'entraîner l'algorithme.

Créer l'algorithme

Sélectionnez Mes algorithmes en haut et cliquez sur + Nouvel algorithme . Donnez à votre algorithme un nom qui représente ce qu'il est censé faire, dans mon cas AirMeatCheese. Ensuite, ajoutez les classes. J'ai appelé mes classes NormalAir, Viande et Fromage. Sélectionnez quels spécimens appartiennent à quelle classe et choisissez une couleur pour chaque classe.

Nommez votre algorithme
Nommez votre algorithme
Modifier vos classes
Modifier vos classes

Pour ajouter ou supprimer des spécimens, vous pouvez cliquer sur l'une des classes. Voici un exemple de ce que le Viande ressemble à une classe.

Vue de la classe de viande
Vue de la classe de viande

Sous les classes, vous pouvez voir quelques données supplémentaires sur l'algorithme.

Données supplémentaires sur l'algorithme
Données supplémentaires sur l'algorithme

La balance des données montre la durée totale de mesure pour chaque classe. Pour garantir les meilleures performances, la durée de mesure de chaque classe doit être égale. Si la durée de mesure de l'une des classes est beaucoup plus longue, l'algorithme risque de privilégier cette classe. Notez également le bouton point d'interrogation situé devant chaque rubrique. Appuyez dessus pour obtenir des informations plus détaillées.

Note : Pour plus d'informations, consultez la documentation du BME688 AI Studio.

Dans la section des canaux de données, vous pouvez sélectionner, parmi les quatre sorties de capteur, celle que vous souhaitez utiliser pour votre algorithme. Je recommande de n'utiliser que le canal de données du gaz, car les autres canaux dépendent principalement de l'environnement et non de l'échantillon. Une fois que vous avez tout configuré, il est temps de procéder à l'entraînement.

Formation et exportation

Entraînez votre algorithme
Entraînez votre algorithme

Vous pouvez y sélectionner la méthode de formation, le nombre maximal de tours et le fractionnement des données. Si vous êtes novice en matière de réseaux neuronaux, vous devriez laisser les paramètres par défaut. Néanmoins, je vais essayer d'expliquer brièvement chacun de ces paramètres.

La seule méthode de formation disponible au moment où j'écris ces lignes est l'optimiseur ADAM. Il s'agit d'une méthode spécifique pour trouver un minimum dans la fonction d'erreur (moins d'erreur signifie des prédictions plus précises). Vous pouvez sélectionner différentes tailles de lots pour améliorer la vitesse et la stabilité de l'apprentissage.

L'augmentation du nombre maximal de cycles de formation est un autre moyen d'améliorer les performances de l'algorithme. Pour chaque tour (souvent appelé "époque"), AI Studio fait passer l'ensemble des données de formation dans le réseau neuronal. Cela signifie qu'un nombre plus élevé de cycles maximum augmentera le temps nécessaire à l'entraînement de l'algorithme. La plupart du temps, AI Studio détecte si un minimum est atteint et termine la formation avant que les tours maximums ne soient atteints. Cela permet de réduire le temps de formation et d'éviter le surajustement.

Le surajustement signifie que le réseau neuronal s'est trop adapté aux données de formation. Si l'algorithme obtient une précision très élevée lors de la formation, mais qu'il est peu performant lors des tests en situation réelle, il est préférable de réduire le nombre maximal de cycles de formation.

Le paramètre de division des données vous permet de sélectionner la part de vos données enregistrées qui sera utilisée pour la formation et celle qui sera utilisée pour les tests. Vous devez éviter d'utiliser plus d'un tiers des données pour les tests. Comme son nom l'indique, l'algorithme n'utilisera que les données de formation pour la formation. Une fois la formation terminée, AI Studio évaluera l'algorithme en utilisant les données de test, qu'il n'a jamais vues auparavant.

Appuyez sur Former le réseau neuronal pour commencer l'entraînement. Vous verrez le temps de formation restant estimé et le graphique linéaire de la précision et des pertes.

Progression de la formation
Progression de la formation

À chaque époque, la précision et la précision de validation devraient s'améliorer, tandis que la perte et la perte de validation devraient diminuer. Attendez que l'entraînement soit terminé.

Lorsque la formation est terminée, vérifiez la matrice de confusion. Elle contient des informations importantes sur les résultats de la formation. La statistique la plus intéressante est la précision, mais si vos données d'entraînement sont réparties de manière inégale, le score F1 peut être une meilleure mesure.

Matrice de confusion et résultats de la formation
Matrice de confusion et résultats de la formation

Vous obtiendrez rarement une précision supérieure à 90%. Si la précision est supérieure à 80%, vous devriez exporter l'algorithme pour le tester. Nous détecterons les odeurs en utilisant notre PiCockpit interface web. Assurez-vous d'exporter l'algorithme pour la version 2.0.6.1 de BSEC depuis PiCockpit ne prend en charge que cette version pour l'instant.

Note : Dans la plupart des cas, la formation sera terminée avant que la durée estimée ne soit atteinte.

4. Détecter les odeurs

Pour détecter les odeurs, il suffit d'installer le PiCockpit et le connecter à votre compte. Si vous n'avez pas PiCockpit mais il suffit de s'inscrire gratuitement et de suivre les instructions qui y sont données. Notre application Digital Nose vous permet de télécharger votre algorithme entraîné et de voir les prédictions en direct via l'interface web. Consultez le Aide numérique pour le nez pour une explication complète sur la façon d'utiliser l'application.

Une autre façon de détecter les odeurs est d'utiliser notre Extension Python BME68X. Cela nécessite un peu de codage python mais offre plus de contrôle et vous permet de créer vos propres applications en utilisant votre algorithme. Reportez-vous au README.mdle Documentation.md et le exemples pour savoir comment installer et utiliser l'extension.

Et voilà, vous l'avez. Vous devriez maintenant être en mesure d'enregistrer des données, d'entraîner votre algorithme et de détecter des odeurs. Veuillez me faire savoir si vous avez trouvé ce guide utile ou si vous avez rencontré des difficultés en le suivant.

Contactez-moi à l'adresse [email protected]

9 commentaires

  1. Siroj42 sur mars 30, 2022 à 8:14 am

    Pour moi, l'entraînement de l'algorithme ne fonctionne pas. Au lieu de cela, le logiciel affiche l'erreur "Algorithm could not be trained. Les données d'entraînement ou les données de test semblent manquer". Pourtant, j'ai capturé environ une heure de données pour chacune de mes classes à l'aide de la carte BME688 Breakout Board. Avez-vous une idée de ce que je pourrais faire de mal ?

    • Nathan Busler sur mars 31, 2022 à 10:09 am

      Il semble que le fichier .bmerawdata soit corrompu. Vous pouvez essayer de jeter un coup d'œil au fichier, pour voir s'il contient des valeurs erronées. Il est au format json

    • tomm sur avril 11, 2022 à 3:13 pm

      Avez-vous trouvé une solution à ce problème ?

  2. Thomas sur avril 10, 2022 à 4:51 pm

    Salut Nathan
    Je viens également d'essayer votre code et j'obtiens la même erreur en créant un algorithme.
    " Les données de formation ou les données de test semblent manquer."

    Y a-t-il un problème dans votre code, peut-être ?

    • Nathan Busler sur avril 14, 2022 à 1:00 pm

      Bonjour Thomas
      Je n'ai pas encore pu recréer l'erreur.
      Quelle version d'AI Studio utilisez-vous ? Le script a été testé avec AI Studio version 1.6.0

      • Thomas sur avril 14, 2022 à 9:11 pm

        Salut Nathan
        J'ai utilisé la dernière version (1.6.0) et je vous ai également envoyé un mail à ce sujet, vous voulez que je vous envoie les fichiers d'exemple ?
        J'ai fait beaucoup de tests, mais la même erreur à chaque fois 🙁.

      • Thomas sur avril 17, 2022 à 6:28 pm

        Oui, j'utilise également la version 1.6.0. Veuillez vérifier ces fichiers de la collecte de données : l'un concerne les fumées, l'autre l'air normal. https://we.tl/t-PwfkYXjnGP

  3. [...] comme un capteur de température et d'humidité ou peut-être un projet de qualité de l'air avec un DHT22 ou un BME688, ou un capteur de luminosité avec un [...]

  4. [...] Apprenez à votre BME688 à sentir [...]

Laissez un commentaire