Retour d'expérience : Nous avons testé la plateforme Edge Impulse
Nous avons utilisé la plateforme Edge Impulse, qui propose une approche simplifiée de l’intelligence artificielle à l’aide de blocs pré-construits – sans code -, dans le cadre de notre ruche connectée Mellia. L’objectif : réussir à entraîner un modèle capable de détecter le bruit du frelon asiatique – Vespa Velutina – , véritable fléau pour les apiculteurs. Comment fonctionne concrètement cette plateforme ? Quels résultats avons-nous obtenu en l’utilisant avec Mellia ? Explications.
Premièrement, la plateforme doit collecter des données (data acquisition), pour cela elle peut importer des données audio ou visuelles provenant de différents dispositifs :
- Carte de développement
- Mobile
- Ordinateur
- Via un transmetteur de données (data forwarder) avec une serial connection
- Directement depuis son propre dataset
- Depuis un Cloud
Pour ce tutoriel, nous avons récupéré un dataset audio existant FSDD ( Free Spoken Digit Dataset ) que nous avons chargé directement sur la plateforme. Avant de procéder au téléchargement complet des données, Edge Impulse propose de séparer automatiquement les données d’entraînement et de test mais aussi de créer un label pour chaque fichier téléchargé.
Nous sélectionnons ensuite des blocs Create Impulse…
…afin de construire la pipeline de traitement et d’entraînement des données avec de l’intelligence artificielle.
Ce premier bloc permet de choisir la taille d’une fenêtre audio, prélevée sur un fichier audio en particulier, afin de capter des enregistrements d’une même durée. Il est aussi possible d’augmenter cette même fenêtre afin de la faire glisser jusqu’à la fin du fichier audio, lorsque celui-ci est plus long. Le fichier audio peut aussi être ajusté sur telle ou telle fréquence hertzienne. Enfin le Zero-pad data est utile lorsqu’il s’agit de mettre du bruit blanc sur un fichier audio plus court que sa fenêtre en elle-même, au lieu de le supprimer. Nous avons choisi de garder les paramètres de base pour notre tutoriel.
Nous devons ensuite sélectionner un second bloc correspondant à un mode de traitement des données en fonction du type de données utilisées (audio, vision). Nous avons opté pour le bloc MFCC qui extrait les caractéristiques des signaux audio à l’aide des coefficients cepstraux de fréquence Mel, idéal pour traiter une voix humaine.
Il est d’ailleurs possible de paramétrer dans Edge Impulse à la fois ces coefficients cepstraux de fréquence Mel ainsi que les pré-traitements. Nous gardons les paramètres de base du bloc MFCC pour pouvoir les sauvegarder puis génèrer les features.
Le troisième bloc permet de choisir le type de modèle d’apprentissage – classification, régression ou autres en fonction des besoins – que l’on souhaite appliquer à nos données traitées. Le modèle de classification, idéal pour catégoriser un mouvement ou reconnaître un audio par exemple, nous convenait le plus.
Enfin le dernier bloc indique les caractéristiques de sortie obtenues en fonction du type de modèle choisi.
Tout comme pour le bloc MFCC, il est aussi envisageable de paramétrer notre modèle d’entraînement dit de « classification » ou « Neural Network classifier ». On est en mesure de modifier par exemple la vitesse d’apprentissage du modèle et son nombre de cycle d’entraînement.
Une fois le modèle entraîné, nous pouvons visualiser ses données classifiées, ses résultats grâce à différentes métriques comme l’accuracy, le recall et le F1 Score, mais aussi ses performances sur un Edge device – par défaut le processeur Cortex-M4F – via une simulation.
Pour tester ces performances, la plateforme Edge Impulse propose d’utiliser le modèle « entrainer » avec le jeu de données de test ou de passer par une classification en direct sur différentes plateformes.
La plateforme Edge impulse peut être déployée facilement sur un Edge Device avec du code source ou binaire pour les cartes de développement compatibles.
Les avantages de la plateforme Edge Impulse :
- Très simple d’utilisation
- Offre une variété de modèles, de paramètres
- Entraînement de modèles compatibles avec des processeurs embarqués
- Des facilités pour tester les performances du modèle d’apprentissage
- Des données à disposition pour tester les modèles
Et ses inconvénients :
- Personnalisation du code compliquée
- Effet boîte noire
Mise en application avec notre ruche connectée Mellia :
Après un premier test de la plateforme Edge Impulse, nous avons souhaité réitérer l’expérience d’une manière plus concrète dans le cadre de notre ruche connectée Mellia. L’objectif : tenter d’entraîner un modèle qui soit capable de détecter le bruit du frelon asiatique – Vespa Velutina -. Le modèle doit être suffisamment léger pour être pris en charge par une carte embarquée ayant relativement moins de ressources que celle d’un ordinateur, comme la « Arduino Portenta H7 » que nous avons utilisé. Cela permettrait aux apiculteurs de disposer d’un détecteur autonome en énergie capable de les alerter en temps réel de la présence de frelons asiatique.
Tout d’abord, nous avons importé un dataset audio contenant des données audio existantes sur des enregistrements d’abeilles – une centaine d’heures – , sous le label « Hive ». Mais aussi des données sonores de frelons asiatique – seulement quelques minutes -, sous le label « Hornet », provenant de différentes sources comme Youtube et Sonothèque. Ce dataset rudimentaire nous permet de valider la faisabilité mais n’est pas suffisamment étendu et varié pour une industrialisation de la future solution. Nous envisageons par la suite de collaborer avec l’Institut de Recherche sur la Biologie de l’Insecte (IRBI), de l’Université de Tours, pour réaliser nos propres enregistrements audio du Vespa Velutina.
Concernant le bloc Create Impulse pour choisir le mode de traitement des données, nous avons testé différents traitements :
- Raw Data ( données brut sans traitement )
- Audio MFE ( Mel-filterbank energy features )
- Spectrogram
- Spectral Analysis
- Audio ( Syntiant )
Nous avons ensuite choisi un modèle d’apprentissage dit de « classification » pour l’adapter à nos données traitées, en nous basant sur ses paramètres de base fournis par « Edge Impulse ». En fonction du mode de traitement choisi, nous avons obtenu différents modèles de classification, avec des paramètres qui varient mais à la performance quasi inchangée. Sur ce dernier point, il est possible que le manque de données audio pour les frelons vienne biaiser nos résultats, car nous obtenons une accuracy à plus de 90 % pour tous les modèles de classification que nous avons testés. On a donc dû prendre en compte plutôt le recall ou le F-1 score afin qu’on ait une idée plus précise de la performance de tel ou tel modèle.
Accuracy | Loss | Latency | Ram usage | Flash usage | Recall | F-1 score | |
Raw Data | 98.4 | 0.46 | 41ms | 82,2K | 42,5K | Hive:0.99 Hornet:0.90 | Hive:0.99 Hornet:0.82 |
MFE | 93 .2 | 0.19 | 9ms | 19.6K | 36,3K | Hive:0.93 Hornet:1.0 | Hive:0.96 Hornet:0.54 |
Spectrogram | 100 | 0 | 13ms | 29,6K | 36,8K | Hive:1.0 Hornet:1.0 | Hive:1.0 Hornet:1.0 |
Finalement, nous pouvons acter que le test d’Edge Impulse pour notre projet de détection des frelons est seulement concluant pour le moment dans un environnement expérimental. En effet, étant donné qu’une partie de nos données ont été récupérées via des plateformes comme Youtube, les performances actuelles de nos modèles de classification pourraient être largement revues à la baisse en conditions réelles.
Ressources :
Sonothèque:
- https://sonotheque.mnhn.fr/sounds/mnhn/so/2020-2042
- https://sonotheque.mnhn.fr/sounds/mnhn/so/2020-2017
- https://sonotheque.mnhn.fr/sounds/mnhn/so/2020-2014
YouTube: