I'm currently working on the development of deep learning methods for online artifact removal from EEG signals. I'm interested in removing common biological artifacts such as EOG and EMG individually from a 16-channel EEG signals.
Rather than training a model to detect artifactual epochs and then using a BSS method (such as ICA or CCA), I want to investigate how a deep learning model (such as a convolutional autoencoder) can be trained to reconstruct a denoised version of the input.
- use clean EEG recording as ground truth and divide it into epochs
- use dedicated noise recordings (for example ocular movements) and divide them as well
- sum a linear combination of EEG epoch and noise to obtain the desired SNR
- Train the CNN by giving the noisy epoch in input and use the clean epoch to compute the loss
However, in my opinion, this approach does not translate well to online processing for the following reasons:
- The previous method only learns a function to filter the epoch and cannot detect which epoch is contaminated
- In online processing, a circular buffer (e.g. 1 second) can be stored and fed into the network to predict the clean sample at time t. Then the buffer slides ahead of one time step. The problem is that the artifact in this case is not centered in the window, but instead can contaminate from 1 to many samples.
- The training is also problematic, by using a sliding window with stride 1 sample to obtain the inputs for the model, the percentage of clean and artifactual inputs will be highly unbalanced in favor of the former. This will likely results in the model learning how to reconstruct perfectly the original EEG signal (like an autoencoder) but failing to filter correctly the noise.
I would like to see your opinions regarding the doubts I listed above and how you would approach a problem like this (which changes or corrections). Any kind of suggestion is welcomed as well.
Thank you for your time.