Skip to content

About

A memory-optimized replication of the 2015 NINAPRO DB1 sEMG benchmark using a custom numpy.memmap architecture for low-resource hardware.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Replication of NINAPRO DB1 Benchmark: sEMG Classification on Low-Resource Hardware

📌 Project Overview

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.

🚧 The Challenge

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.

💡 The Solution: Two-Pass numpy.memmap Architecture

To overcome hardware limitations without sacrificing scientific rigor, I engineered a custom disk-backed pipeline:

  1. Pass 1 (Feature Caching): Extracts features in micro-batches and streams them directly to disk using numpy.memmap.
  2. Pass 2 (Benchmark Execution): Reads data slices on-demand for classifier training, bypassing RAM bottlenecks entirely.

📊 Key Results

  • 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.

📂 Project Structure

  • 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.

📄 Full Report

Click here to view the complete Project Report PDF


Author: Abhinav Raj (ARJ010)

About

A memory-optimized replication of the 2015 NINAPRO DB1 sEMG benchmark using a custom numpy.memmap architecture for low-resource hardware.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages