This project performs a complete scientific replication and computational analysis of the foundational 2015 benchmark by Atzori et al. for myoelectric hand movement classification.
The benchmark evaluates 52 hand gestures from 27 subjects (NINAPRO DB1) using a matrix of 7 feature sets and 5 classifiers.
Standard in-memory implementations of high-dimensional features (like STFT and mDWT) require significant RAM. During replication, the full feature matrix exceeded the 8.2 GiB RAM limit of standard hardware, causing immediate Out-Of-Memory (OOM) crashes.
To overcome hardware limitations without sacrificing scientific rigor, I engineered a custom disk-backed pipeline:
- Pass 1 (Feature Caching): Extracts features in micro-batches and streams them directly to disk using
numpy.memmap. - Pass 2 (Benchmark Execution): Reads data slices on-demand for classifier training, bypassing RAM bottlenecks entirely.
- Scientific Validation: Confirmed that simple time-domain features (MAV) combined with nonlinear classifiers (MLP) offer the optimal trade-off for prosthetic control (96% relative accuracy vs. complex models).
- Engineering Optimization: Replaced standard SVM implementations with
LinearSVC, achieving a 99.9% reduction in training time while maintaining comparable accuracy.
src/: Core Python logic for filtering, feature extraction, and visualization.docs/: Contains the full Mini Project Report detailing the methodology.notebooks/: Jupyter notebooks used for experimental runs.data/: (Ignored via git) Contains raw NINAPRO datasets and generated memmaps.
Click here to view the complete Project Report PDF
Author: Abhinav Raj (ARJ010)