COMP4801 Final Year Project Webpage

Specification

Programming Language: Python
Platform: Windows 10
BCI Device: OpenBCI Ganglion

BCI Devices

The replacement of BCI device induces a necessity of a self-built training component. The new OpenBCI Ganglion gives a greater flexibility in EEG signals acquisition and processing but aslo raises the difficulty of successfully matching the EEG signals to mental commands. Here is the comparison of the two devices:

Connector Component

The Connector Component receives data from the OpenBCI GUI application by the Open Sound Protocol and broadcast the predicted commands to the Main Application by websockets. Apart from receiving real data from the OpenBCI GUI, it has also been tested by keyboard input and remote control with Android Apps to test the Main Application by sending hardcoded commands. In real implementation, it is embedded with the Neural Network predictions algorithms and the functions of Connector Component works as what we expected.

Main Component

The Main Component receives commands(Next, Confirm) from the Connector Component through websockets, then render the appropriate layer of the input hierarchy tree and carries out action of keyboard inputs / mouse clicks on the Windows Desktop. The GUI in Main Component is built by OpenGL API and the GUI elements have style types like the Cascading Style sheet. The whole GUI is built by two basic elements: Label and Panel, in a structure refering to the designed inputs hierarchy tree:

The Screen Division algorithm described in Methodology has been implemented succesfully and the effect of reducing required commands for finishing a task is acceptable. In average, about two selections are reduced for selecting a point on the Windows Desktop.

During the real testing of receiving data from OpenBCI GUI, a simple GUI is used in pausing and starting the mental prediction with the predicting command showing at the top-right corner and updated per each second. Overall, the Main Component works properly.

Training Component

The training component is implemented with four Neural Network models trained at the same time. A simple GUI is used for recording the EEG signals and labeled with corresponding commands for training.

The 1-60Hz range of the FFT data is used for training and the training accuracy is around 55 to 60%. While other two frequency ranges including 7-30 Hz and 1-125Hz are also trained but the accuracy is lower, especially for the 7-30Hz one. Here is a prediction accuracy comparison between the 1-60Hz and the 1-125Hz frequency ranges with a prediction period of 1 or 2 seconds and also the prediction sequence over 10 times of predictions per each expected command:

In observation of the testing results, the predictions always bias to certain commands and the accuracy is low. By comparison, the 1-60Hz data shows a higher accuracy in overall of three commands. During real time predictions of mental command, 1-60Hz FFT data is used and the result of the prediction only have an accuracy of 50 - 60% matching with users' thought. The major reason for the inaccuracy could probably be caused by the inaccuracy of the training data. Due to limitation of time after changing the OpenBCI device, EEG signals has not been examined to find out the data pattern, a brute force approach is conducted in above experiments. Currently, stable control of the BCI system is not possible due to the inaccuracy of the mental command prediction. In the future, investigation on the EEG signals will be conducted and a step by step approach will be used to increase the successful rate of building a mental command prediction system.