Brain computer interfaces provide a new communication bridge between human minds and devices, however the ability to control such devices with our minds largely depends on the accurate classification and identification of non-invasive EEG signals. For this reason recent advances in deep learning have helped the progress in such field with convolutional neural networks that are becoming the new cutting edges tools to tackle the problem of EEG recognition. In order to successfully train a convolutional neural network a large amount of data are needed and due to the strict requirements for subjects and experimental environments, it is difficult to collect large-scale and high-quality EEG data.
Based on this, in AugmentBrain
we investigate the performance of different data augmentation methods for the classification of Motor Imagery (MI) data using a Convolutional Neural Network tailored for EEG named EEGNet.
A brief description of the results is shown in the following table
More info about the whole project available at paper and slides
All the work is based on Serban Cristian Tudosie BrainPad repository.
Software:
Hardware:
To get a local copy up and running follow these simple steps.
We strongly recommend the use of the Anaconda package manager in order to avoid dependency/reproducibility problems. A conda installation guide for linux systems can be found here
- Clone the repo
git clone https://gitlab.com/ABaldrati/AugmentBrain
- Install Python dependencies
conda env create -f environment.yml
OR
conda create -n augmentbrain -y python=3.8
conda activate augmentbrain
conda install -y tensorflow-gpu=2.4.1 matplotlib=3.3.4 scikit-learn=0.24.1
pip install brainflow==2.4 tqdm==4.60 emd==0.4
Here's a brief description of each and every file under the src/
directory:
training.py
: model trainingdataset_tools.py
: dataset loading utils, preprocessing and augmentationGAN.py
: GAN trainingneural_nets.py
: neural nets definitionscustom_callbacks.py
: keras custom callbacks which is useful in model and GAN trainingacquire_eeg.py
: new EEG data acquisition
Obviously in order to acquire new EEG data OpenBCI Hardware is required.
Based on Serban Cristian Tudosie work.
Human Computer Interaction © Course held by Professor Andrew David Bagdanov - Computer Engineering Master Degree @University of Florence