Intitulé : Projet 4A 2021-2022 : Casque d'interaction neuronale - exploration
Mots clés : IHM, traitement du signal, Interaction neuronale
Encadrants :
Équipe :
Résumé : Assemblage et prise en main des outils matériels et logiciels d'une interface neuronale et développement d'une application de démonstration dont le contenu sera déterminé avec l'équipe.
Pré-projet |
---|
Présentation générale |
Formations suivi pour chaque sections du projet |
---|
Autre formation |
Embarqué | |
---|---|
Embarqué | Fonctionnement de l' API |
Traitement du signal | ||||
---|---|---|---|---|
Traitement du signal | Dataset de test et d'entraînement | Documentation MNE | Documentation Filtre FBCSP |
Intelligence artificielle | ||||
---|---|---|---|---|
Augmentation de données d'un dataset | Tutoriel - réseaux de neurones ARL | Tutoriel - classifieur SVR |
Application | |
---|---|
Application | Etat de l'art |
Autre | ||
---|---|---|
Généralités | Étude d'impact sur la protection des données | Politique de recupération et de création des datasets |
Protection des données personnelles et vie privée | |
---|---|
Protocole de cryptage/décryptage des datasets collectés | Protocoles d'exercice des droits garantis par le RGPD |
Comment faciliter l'interaction de l'utilisateur avec le PC et sa préhension est une problématique constante de l'informatique même encore aujourd'hui. Les premiers ordinateurs n'étant que des rectangles de métal contrôlés par un panneau de contrôle. Puis au fur et à mesure, le panneau de contrôle s'est changé en clavier numérique et après, une souris a été couplée avec le clavier. Aujourd'hui, le clavier et la souris sont devenus des périphériques standards de contrôle de l'ordinateur, mais de plus en plus de recherches sont menées pour essayer de trouver un meilleur moyen pour contrôler l'ordinateur. Il y a plusieurs exemples comme le “eye tracking”, le casque de réalité virtuelle, et le périphérique que nous allons vous présenter, la BCI.
BCI est une abréviation en anglais qui veut dire Brain-Computer-Interface. Ce qui veut littéralement dire Interface-Cerveau-Ordinateur. Une BCI est donc une interface neuronale qui utilise les différents signaux électriques de notre cerveau pour interagir avec l'ordinateur. Les signaux du cerveau sont recueillis via un EEG et sont interprétés afin de commander le PC. Pour notre projet, nous utilisons une BCI particulière qui est OpenBCI dont je vais vous faire la présentation juste après.
L'OpenBCI est une BCI proposée par l'entreprise éponyme OpenBCI. L'objectif d'OpenBCI est d'essayer de “démocratiser” les OpenBCI en proposant des BCI accessibles au plus grand nombre pour des applications non-médicales. Car les BCI et notamment les EEG coûtent très cher puisqu'il s'agit de matériel de pointe et particulièrement cher à produire. Ils proposent différentes gammes de BCI, casques EEG avec l'armature à imprimer soi-même, des cartes d'acquisitions, etc. L'objectif étant de proposer un matériel abordable et fonctionnel qu'il y a juste à brancher. OpenBCI fournit déjà le GUI pour utiliser le casque et les différents tutoriels pour l'utiliser ce qui facilite grandement l'utilisation de l'EEG dont je vais pour parler par la suite.
L'EEG (Électroencéphalogramme) est un dispositif qui permet de récupérer les signaux électriques du cerveau afin de pouvoir les interpréter. Le dispositif est composé de différentes électrodes disposées à différents endroits du crâne selon la norme 10-20. Les électrodes vont capter et amplifier le signal des neurones et les transmettre à une carte d'acquisition afin d'afficher les différents signaux ou de les utiliser. Les applications de l'EEG peuvent aussi bien être médicales que diverses. Vous pourrez trouver plus de détails sur la page suivante : Embarqué
Le but de notre projet est de prendre en main le casque neuronal de l'OpenBCI et de voir ce que l'on peut faire avec le casque. C'est un projet de recherche et développement puisque nous n'avons pas de devoir de résultat, mais en revanche, nous avons un devoir de moyens. Après réflexion, les différents membres de l'équipe ont décidé de faire une application de type “pong” à deux joueurs en utilisant de l'intelligence artificielle pour le jeu. Pour plus d'informations, vous pouvez consulter la page suivante : Présentation générale
Matériel fourni par OpenBCI avec le Neurotechnologist's Starter Kit:
Matériel supplémentaire à prévoir:
Description des électrodes (Emplacement des électrodes, pourquoi cette distance entre les électrodes)
Se trouve ci-dessus le schéma de placement des électrodes de la norme 10-20. La norme 10-20 est une norme couramment utilisée dans le domaine des EEG, car elle permet de couvrir l'ensemble du crâne avec peu d'électrodes. 10-20 vient du fait que les distances réelles entre les électrodes adjacentes représentent 10 % ou 20 % de la distance totale entre le crâne et l'avant-arrière ou entre la droite et la gauche. Rien n'empêche néanmoins de mettre plus d'électrodes pour plus de précision, mais lesdites électrodes sont particulièrement coûteuses et il faudra modéliser le casque en conséquence.
Télécommunications disponibles
Le casque est fourni de base avec une puce Bluetooth sur la carte d'acquisition Cyton qui peut communiquer avec le dongle USB qui va ensuite communiquer avec le PC via USB. Autrement, OpenBCI propose un shield Wi-Fi en supplément pour communiquer directement via Wi-Fi avec le PC. Plus de détails ici :Documentation technique / Ressources
L'OpenBCI GUI est le logiciel qui va nous permettre d'interagir avec le casque. Tout d'abord, il faut le télécharger depuis cette page : OpenBCI GUI. Ensuite, il faut l'installer sur votre ordinateur et le lancer. Après, il suffit de brancher le dongle USB sur votre PC de mettre l'interrupteur de celui-ci en position haute (vers le PC) et l'interrupteur de la cyton en position PC.
Cette fenêtre va ensuite apparaître :
Il faut choisir la carte d'acquisition montée sur notre casque (dans notre cas la Cyton). Une fois sélectionné, le logiciel va vous demander de choisir avec quelle connexion vous vous connectez à la carte, choisissez la connexion que vous avez choisie.
Cela va vous mener à cette fenêtre (dans ce cas-ci, le cas de la connexion série avec le dongle a été choisie):
Il faut ensuite spécifier le port sur lequel le dongle est connecté. Essayez d'abord de cliquer sur le bouton “auto-connect” dans “SERIAL CONNNECT”. SI cela ne marche pas, cliquez sur manual et une fenêtre se dévoile à droite. C'est la fenêtre qui permet de préciser le port série auquel le dongle est branché. Cliquez sur “refresh list” et choisissez le port qui normalement devrait apparaître et refermez la fenêtre en re-cliquant sur “manual”.
Il suffit ensuite de spécifier le nombre de canaux que vous utilisez (8 ou 16) et de cliquer sur “START SESSION” en haut à gauche et l'acquisition commencera. Le GUI affichera les signaux des différentes électrodes et enregistrera les données dans un fichier .txt convertissable en .csv dans le dossier Documents/OpenBCI_GUI/Recordings.
Pour l'acquisition des données du casque, nous avons dû faire appel à différentes librairies proposant des solutions logicielles afin d'acquérir lesdites données. Toutes les librairies que je vais mentionner sont en python car notre intelligence artificielle est codée elle aussi en python et cela simplifie l'intégration des codes vu qu'ils sont codés dans le même langage de programmation.
Nous avons utilisé ces librairies afin de créer une API de transmission de données qui se présente sous la forme d'une librairie python que nôtre IA va appeler dans son code afin d'acquérir les données dont elle a besoin.
Plus de détails sur l'utilisation des librairies et l'API ici:Fonctionnement de l'API
pyOpenBCI |
scipy |
numba |
numpy |
pyserial |
xmltodict |
Cython |
mne |
Au début du projet, nous avons très rapidement constaté que les signaux EEG sont très fortement bruités. Cela rend dès lors leur classification bien plus compliquée. Il devient alors nécessaire d’opérer un traitement du signal en amont afin d’augmenter le rapport signal sur bruit.
Dans un premier temps, nous avons utilisé des techniques de Machine Learning classiques pour classifier les signaux EEG. Ainsi, nous avons privilégié la mise en place de filtres fréquentiels et spatiaux.
Filtrage Laplacien autour de l'électrode C3. Le signal de l'électrode C3 se voit soustraire la moyenne des électrodes environnantes.
Filtrage bipolaire sur l'électrode C3. La valeur du signal au niveau de C3 est estimée en soustrayant les valeurs des électrodes adjacentes (dans ce cas celles situées en haut et en bas de C3).
En ce qui concerne les filtres spatiaux, nous avons utilisé des filtres Laplaciens et bipolaires autour des électrodes C3 et C4, qui sont bien connues d’après la littérature pour héberger l’activité cérébrale issue des mouvements ou des mouvements imaginés. Ces filtres vont permettre de masquer l’activité cérébrale de fond et ainsi de mettre en valeur les caractéristiques recherchées dans le signal.
Pour le filtrage fréquentiel, nous avons mis en place un filtre passe-bande dans la bande de fréquences mu (8-12 Hz). En effet, cette bande est, d’après la littérature, celle qui est la plus adaptée pour la classification des mouvements.
Schéma résumant le cycle de traitement du signal réalisé pour du Machine Learning
Pour plus de détail sur ces méthodes de traitement du signal, cliquez ici.
Dans un second temps, nous avons souhaité utiliser des réseaux de neurones convolutifs embarquant le traitement du signal dans leurs couches.
Nous avons ensuite essayé d’améliorer les performances en les couplant avec un système composé d’un filtre FBCSP (réalisant le filtrage spatial de manière dynamique et individualisée pour chaque sujet) et d’un classifieur SVR.
Pour plus d'informations sur le fonctionnement du filtrage FBCSP, cliquez ici.
Cependant, cette solution, bien que permettant d’augmenter l’accuracy globale, n’a pas été retenue en raison du temps de prédiction trop élevé. Elle reste cependant très intéressante, notamment dans le cadre d’une classification hors-ligne.
Tout d'abord, le premier intérêt d'utiliser une Intelligence Artificielle (dans la suite de l'article sera abrégée IA) est pédagogique puisque cela nous permet d'approfondir nos connaissances et nos compétences dans ce domaine qui est en pleine expansion aujourd'hui.
Après, d'un point de vue technique, les données que nous utilisons ne peuvent pas être représentées ou traitées avec un modèle mathématique classique. L'acquisition en temps réel des données crée des millions de données qu'il faut traiter, le tout dans un délai très court et avec différents types de données tel qu'un mouvement de la main droite ou de la main gauche, etc… Cela aurait dû dire qu'il aurait fallu coder les différents modèles de traitement de données pour chaque type de données ainsi qu'un algorithme d'identification du type de donnée envoyé à notre programme par nôtre API afin que le bon traitement soit associé aux bonnes données. Cela demanderait énormément de mémoire et de temps de calcul ce qui est complètement incompatible avec nôtre application en temps réel.
C'est pour cela que nous avons choisi d'utiliser l'IA pour classifier les signaux que nous recevons du casque entre ces différentes classes de signaux: mouvement de la main droite, mouvement de la main gauche, position neutre. Pour ce faire, nous avons utilisé 3 différents modèles d'IA en DeepLearning:
Nous utilisons une IA en DeepLearning plutôt qu'en MachineLearning car l' “Accuracy” de l'IA est meilleure qu'une IA en MachineLearning et le temps de prédiction des données est plus court. Alors certes, le temps d'entrainement est plus long et il faut beaucoup plus de données pour son entraînement mais cela n'est pas un problème puisque nous en avons énormément.
Présentation rapide de l'état de l'art
Sur le marché des BCI autre que OpenBCI qui est la BCI que nous utilisons, il existe d'autres BCI que vais vous introduire ici.
L'entreprise EMOTIV propose différentes BCI dont l'INSIGHT2 qui propose une BCI minimaliste et facile d'installation qui ne prendrait selon leur site que 1 à 2 minutes à installer, possède 5 canaux d'acquisition, des accéléromètres pour détecter des mouvements que fait le casque et une connexion bluetooth qui se connecte directement au PC.
On peut encore citer Natus qui offre des produits pour tout ce qui tourne autour des BCI. Logiciels de prise en main de gestion et d'exploitation de BCI, matériel de conditionnement de BCI (amplification des signaux EEG avec ou sans fil), simulateur de signaux EEG etc…
D'autres exemples ici
Exemple d'application utilisant les casques neuronaux (état de l'art)
Les applications pour les casques neuronaux sont surtout dans le domaine du médical. L'acquisition, le conditionnement et l'affichage de signaux EEG possèdent un réel intérêt médical dans le sens où on peut diagnostiquer certaines affectations neurologiques tel que l'épilepsie, traumatismes crâniens, etc… Ou alors visualiser l'état du cerveau lors de chirurgies particulières.
Exemple d'application utilisant les casque d'intégration neuronale (BCI) (état de l'art)
Les applications pour les casque d'intégration neuronale sont diverses et variées, que ce soit aussi dans le médical ou alors dans l'ergonomie neuronale et l'environnement intelligent, le neuromarketing et la publicité, l'éducation, les jeux et le divertissement et enfin la sécurité et l'authentification. Ce n'est que quelques exemples parmi les nombreux possibles. Nous pouvons déjà faire énormément des choses avec un ordinateur, alors avec une BCI en plus, les possibilités en sont encore plus décuplées.
Application à la VR/AR
On pourrait se demander si on peut inclure de la réalité virtuelle ou de la réalité augmentée avec les BCI afin de créer de nouvelles applications toujours plus innovantes. La BCI NextMind propose une BCI qui se pose à l'arrière du crâne et elle peut être couplée à un casque VR ou un casque AR. La BCI permettrait d'interagir avec la VR ou la RA via notre cerveau. Cela permettrait de créer un environnement bien plus immersif et les possibilités d'application sont nombreuses.
Pour conclure, nous avions commencé ce projet en n'ayant aucune connaissance dans les BCI ni même dans les EEG. Au début, il nous a fallu faire beaucoup de recherches sur le sujet, et aussi beaucoup de lecture de la documentation d'OpenBCI afin de pouvoir ne serait-ce que prendre en main le GUI et comment construire le casque. Tout durant ce projet a été découverte et nouveauté. Nous n'avions quasiment aucune compétence dans ce domaine et nous nous sommes tous formés durant le projet. Et au fur et à mesure, nous avons acquis des compétences dans les différents domaines développés ci-dessus, nous permettant de prendre en main le casque et de concevoir une application interagissant avec celui-ci. La suite serait donc d'explorer les différentes possibilités d'application avec l'OpenBCI dans différents domaines et d'essayer de répondre aux besoins de demain.