Outils pour utilisateurs

Outils du site


documentation_filtre_fbcsp

Documentation du filtre FBCSP

Introduction

FBCSP est une méthode populaire de classification d'imagerie motrice (Motor Imagery : MI) à classes multiples, à partir de signaux EEG et est généralement utilisé dans des applications d'interface cerveau ordinateur (ICO).

Au fil des ans, le FBCSP a été largement déployé ou évalué pour la classification de deux ou plusieurs classes de MI. La boîte à outils que nous allons vous présenter fournit les outils et les méthodes pour utiliser le FBCSP sur les données EEG. Des exemples sont également fournis pour démontrer l'utilisation de cette boîte à outils.

Un lien vers la base du code est disponible à cette adresse : https://github.com/fbcsptoolbox/fbcsp_code .Un fichier yml contenant les exigences d'environnement pour l'exécution de cette boîte à outils est également inclus avec le code.

Les données doivent être au format original GDF ou au format mat.

Fonctionnement du FBCSP

Le FBCSP s'appuie sur le machine learning pour classifier les données. Il fonctionne en 4 étapes résumées sur ce schéma et détaillées ci-dessous:

Etape 1 : filtrage de fréquence

Les mesures EEG sont filtrées par un filtre passe-bande en de multiple bandes de fréquences.

Etape 2 : filtrage spatial

On extrait les caractéristiques CSP de chacune des bandes de fréquences.

Etape 3 : sélection des caractéristiques

Un algorithme de sélection des caractéristiques est utilisé pour sélectionner automatiquement les paires discriminantes de bandes de fréquences et les caractéristiques CSP correspondantes.

Etape 4 : classification

Un algorithme de classification est utilisé pour classifier les caractéristiques CSP.

Architecture de la boîte à outils

Voici l'architecture de la boîte à outils avec les fonction les plus importantes de chaque classe.

Tutoriel d'utilisation de la FBCSP toolbox

Étape 1 : Téléchargement et installation

Le code source du FBCSP toolbox est téléchargeable directement sur la page Github dédiée.

Pour l'installer, il suffit de placer l'ensemble des fichiers .py dans la racine du projet. Il existe un tutoriel consultable sur le site de FBCSP toolbox montrant comment utiliser les différentes classes afin de classifier un signal EEG issu du dataset BCI Competition 2008 2a.

Cependant, ce tutoriel indique comment l'exploiter à l'intérieur des classes existantes. Nous verrons ici comment utiliser ces fonctionnalités dans un programme externe afin, par exemple, de le lier à d'autres applications ou d'autres méthodes de classification.

Étape 2 : Récupération et formatage des données

Pour la suite, nous supposerons que les données d'entraînement ont déjà été chargées dans une instance de la classe Epochs nommée train_data.

Cette étape consiste à récupérer les données et à les formater afin de pouvoir entraîner ultérieurement la Filter Bank Common Spatial Patterns.

Le code suivant permet d'obtenir les données sous un format correct :

data = train_data.get_data() * 1e6
sample_frequency = 250
eeg_data = {'x_data': data,
            'y_labels': train_labels,
             fs : 'sample_frequency'}

Étape 3 : Récupération et formatage des données

Maintenant que les données sont formatées, elles doivent être filtrées convenablement.

Il suffit pour cela d'utiliser le code suivant :

fbank = FilterBank(eeg_data.get('fs'))
 
X_train = fbank.filter_data(eeg_data.get('x_data'), {'tmin': 0.5, 'tmax': 2.5})
y_train = eeg_data.get('y_labels')

On remarque qu'on instancie la classe FilterBank fournie par la FBCSP toolbox. Celle-ci va permettre de filtrer les données grâce à sa méthode filter_data. Les arguments tmin et tmax définissent la fenêtre, en secondes, qui sera conservée dans le signal après filtrage.

Étape 4 : Entraînement du FBCSP

Maintenant que les données sont filtrées, nous allons pouvoir entraîner le filtre FBCSP grâce à ces données.

Pour cela il suffit, à la manière d'une IA classique, de faire appel à la méthode fit() d'un objet FBCSP :

m_filters = 2
fbcsp_train = FBCSP(m_filters)
fbcsp_train.fit(X_train, y_train)

On observe ici que les données précédemment filtrées sont utilisées pour entraîner le FBCSP avec un nombre de filtres CSP m_filters égal à 2. Il est bien sûr possible de modifier cette valeur.

Étape 5 : Utilisation du FBCSP

Enfin, après avoir entraîné le FBCSP, nous allons pouvoir l'utiliser pour filtrer des données EEG.

A ces fins, nous devons simplement utiliser la méthode transform() de notre objet CSP de la manière suivante :

filtered_data_with_fbcsp = fbcsp_train.transform(X,class_idx=cls_of_interest)

On remarque particulièrement le second argument de transform(). Par défaut, sa valeur est de 0. Il permet de spécifier une classe qui sera considérée pour le filtrage.

Ceci peut être utile notamment pour l'utilisation d'une SVR car on effectuera autant de classifications par essai qu'il y a de classes dans le problème que l'on cherche à résoudre.

documentation_filtre_fbcsp.txt · Dernière modification: 13/06/2022 13:38 de aristide.bourry