Construire un modèle IA hors-ligne détectant les stades de rétinopathie diabétique avec Edge Impulse
Un dispositif médical portable capable d'identifier avec précision les stades de rétinopathie diabétique sans connexion Internet pourrait réduire drastiquement la cécité dans le monde. Avec le machine learning embarqué, les algorithmes qui s'exécutent directement sur du matériel alimenté par batterie sont maintenant viables. Cet article parcourt les étapes pour entraîner un tel modèle en utilisant la plateforme Edge Impulse.
La rétinopathie diabétique endommage les vaisseaux sanguins au fond de l'œil, progressant souvent vers la cécité si non traitée. Plus de deux Américains sur cinq atteints de diabète ont une forme de la maladie, rendant la détection précoce critique. Dans les zones rurales où les soins de la vision sont rares, même les cas légers sont fréquemment manqués jusqu'à ce qu'ils deviennent sévères.
Pour adresser cela, nous avons exploité un jeu de données publiquement disponible pour entraîner un modèle qui peut évaluer la sévérité de la RD à partir d'images de caméra rétinienne. Le jeu de données est divisé en cinq classes :
- Pas de RD
- RD légère
- RD modérée
- RD sévère
- RD proliférative
Les identifiants patients ont été remplacés par id_code et un score de diagnostic de 0 (Pas de RD) à 5 (RD proliférative). Lien vers le jeu de données.
Comme les images étaient stockées dans une structure plate, j'ai écrit un script VBA pour lire la liste Excel des valeurs id_code, localiser chaque image, et la déplacer dans le dossier de classe correspondant. Le script est disponible ici. Si vous préférez Python ou un autre langage, une automatisation similaire est simple.
Edge Impulse simplifie l'ingestion via son interface de téléchargement de données. J'ai effectué cinq téléchargements séparés – un par classe – en étiquetant chaque dossier appropriément. La plateforme offre aussi l'intégration de bucket cloud et la collecte via dispositif, mais le téléchargement manuel a mieux fonctionné pour notre jeu de données.
Edge Impulse divise automatiquement les données 80/20 en ensembles d'entraînement et de test, mais j'ai ajouté ~500 images manuellement à l'ensemble de test pour mieux équilibrer les classes.
Pour le modèle, j'ai sélectionné le bloc image et appliqué une architecture d'apprentissage par transfert pour classifier les cinq stades de RD. L'entraînement initial a donné une meilleure précision d'environ 74 %, ce qui est respectable mais souligne des mauvaises classifications – surtout entre RD sévère et légère. La matrice de confusion (montrée ci-dessous) illustre ce défi.
Dans un déploiement réel, une caméra rétinienne portable capturerait une image, exécuterait le modèle localement, et notifierait immédiatement le clinicien si le patient nécessite un suivi. La priorité est de détecter tous les stades de RD, donc la précision actuelle est acceptable pour un outil de dépistage.
Améliorations possibles :
- Acquérir plus de données étiquetées pour réduire la variance.
- Combiner les classes adjacentes (ex. légère-modérée, sévère-proliférative) pour simplifier la frontière de décision.
- Affiner le nombre de couches du réseau neuronal et les taux de dropout.
Le modèle final occupe 306 Ko de flash et 236 Ko de RAM. Sur un Cortex-M4 à 80 MHz, le temps d'inférence varie de 0,8 s à 6 s, tandis qu'un Cortex-M7 à 216 MHz est plus rapide – le rendant adapté pour des dispositifs portables qui capturent des images à la volée.
En résumé, nous avons démontré qu'un jeu de données open-source peut entraîner un modèle edge efficace pour la détection de rétinopathie diabétique. Déployer de tels modèles sur microcontrôleurs embarqués ou dispositifs Linux légers peut apporter un dépistage fiable aux communautés éloignées ou mal desservies, surmontant les barrières de connectivité.
Plus de détails et travaux futurs sont disponibles ici.
Embarqué
- La révolution du Cloud : Comment le Cloud Computing transforme l'IT, la sécurité et les carrières
- Quatre types de cyberattaques — stratégies de prévention éprouvées
- Prévenir les pannes courantes des engins lourds : conseils d'entretien essentiels
- Comprendre la porosité en soudage : causes, détection et techniques de prévention
- Guide complet de la rouille : causes, effets et prévention
- Identifier les causes clés de panne machine et stratégies pour éviter les temps d'arrêt
- Interopérabilité expliquée : comment votre entreprise peut atteindre une intégration fluide
- Éviter les pièges de la protection des machines : conseils de sécurité et stratégies de prévention
- Détection et réparation efficaces des fuites dans les systèmes d'air industriels