An open API service indexing awesome lists of open source software.

https://github.com/davidpl1/eit_data_analysis

This repository holds the complementary code for the paper Towards More Robust Hand Gesture Recognition on EIT Data
https://github.com/davidpl1/eit_data_analysis

Last synced: 8 months ago
JSON representation

This repository holds the complementary code for the paper Towards More Robust Hand Gesture Recognition on EIT Data

Awesome Lists containing this project

README

          

# EIT Data Analysis

This repository holds the complementary code for the paper `Towards More Robust Hand Gesture Recognition on EIT Data`, David P. Leins, Christian Gibas, Rainer Brück and Robert Haschke.

## Prerequisites

- Python 3.x.x
- pandas (1.1.2)
- numpy (1.19.1)
- matplotlib (3.3.0)
- seaborn (0.10.1)
- scikit-learn (0.23.1)

#### For Train and Plot

- tensorflow 2.x

run `pip install -r requirements_train.txt` to install all needed dependencies.

#### For Interactive Visualization

- plotly (4.12.0)
- chart-studio (1.1.0)
- ipywidgets (7.5.1)

run `pip install -r requirements_interactive.txt` to install all needed dependencies.

## Instructions

Download the dataset from [https://doi.org/10.4119/unibi/2948441](https://doi.org/10.4119/unibi/2948441) and extract the archive content into the `data` directory.

## Train and Plot

The [jupyter notebook](train_and_plot.ipynb) can be run to train any TensorFlow model on the raw data and the calibrated variants presented in the paper. The best performing models in the paper are defined in the define_auxiliary_functions script, which is loaded within the notebook.

Loss, optimizer, batch size, epochs, and repetitions can be changed easily by setting the respective variables defined right before the train loop.
To reproduce results from the paper, change epochs to 100 and repetitions to 5 or higher (for statistical relevance).

To train your own models, define a function returning a TensorFlow/Keras Model class and change the `models_to_train` list accordingly.

Below the training block you'll find a few plot suggestions including our current baseline accuracies.

Note that the code can easily be changed to train PyTorch models.

## Interactive Visualization

Run the [jupyter notebook](interactive_calibration_view.ipynb) to get an interactive visualization of global and local calibration on PCA or t-SNE 2D projections powered by plotly and ipywidgets.
This visualization can be filtered by session UID, class label and iteration. Below is a preview of the interactive UI.

![preview-image](./resources/preview.png)

Note that the visualization of many data points may be slow, depending on your browser and machine. Also changing colorization or switching between projections requires that all traces are
replotted and thus may take a while, too.

# Contact

Don't hesitate to open an Issue here or contact me (David Leins) via email under dleins@techfak.de

# Citations

```
@ARTICLE{10.3389/fnbot.2021.659311,
AUTHOR={Leins, David P. and Gibas, Christian and Brück, Rainer and Haschke, Robert},
TITLE={Toward More Robust Hand Gesture Recognition on EIT Data},
JOURNAL={Frontiers in Neurorobotics},
VOLUME={15},
YEAR={2021},
URL={https://www.frontiersin.org/article/10.3389/fnbot.2021.659311},
DOI={10.3389/fnbot.2021.659311},
ISSN={1662-5218},
}
```

If you use the dataset in your research, please cite it with:

```
@misc{Leins2020EIT,
author = {D. {Leins} and C. {Gibas} and R. {Brück} and R. {Haschke}},
keywords = {EIT, Gesture Recognition},
publisher = {University of Siegen},
title = {{Hand Gesture Recognition with Electrical Impedance
Tomography (Dataset)}},
url = {https://pub.uni-bielefeld.de/record/2948441},
doi = {10.4119/unibi/2948441},
year = 2020,
}
```