Hackaday Prize 2023 : EyeBREAK pourrait être une avancée majeure
Pour les personnes victimes d'un accident vasculaire cérébral ou d'autres maladies débilitantes, le contrôle de la paupière peut être l'une des dernières fonctions motrices restantes. Inspiré par [Jeremiah Denton] clignotant en code Morse lors d'une interview télévisée, [MBW] a conçu un appareil basé sur ESP32 pour décoder les clignements en mots.
Alors qu'un ESP32 offre Bluetooth pour simuler un clavier et a une consommation d'énergie relativement faible, il est difficile de faire fonctionner un système de détection de clignement approprié à 20 images par seconde dans un environnement contraint. Des tentatives antérieures utilisaient des repères faciaux pour tenter de déterminer, sur la base de ratios, si un œil était ouvert ou fermé. Un détecteur en cascade combiné à un classificateur XGBoost offrait d'excellentes performances mais éprouvait des difficultés lorsque l'œil n'était pas centré. En fin de compte, un CNN 50 × 50 à 4 couches dans TensorFlow Lite traite les images de la caméra, produisant une seule sortie, œil ouvert ou fermé. À des fins de débogage, il diffuse les images de la caméra via Wi-Fi avec des annotations via OpenCV, bien que la compilation d'OpenCV pour ESP32 n'était pas non plus triviale.
[MBW] a entraîné le modèle à l'aide de l'ensemble de données MRL, puis quantifié en int8. Faire fonctionner simultanément les piles Bluetooth et Wi-Fi était un peu pénible, tout comme la gestion de la RAM. Après avoir épuisé SRAM et IRAM, [MBW] a dû passer à PRAM. L'ensemble du système est intégré à des lunettes légères et offre une expérience assez confortable.
Bien que TensorFlow et les microcontrôleurs puissent sembler un couple un peu étrange, en fin de compte, le moteur d'inférence fait simplement quelques calculs sur un ensemble d'entrées avec certains poids. Nous avons même vu TensorFlow Lite sur un Commodore 64. Si vous ne connaissez pas [l'amiral Jerimiah Denton], nous pouvons vous faire la lumière.