All Projects Deep Learning · Healthcare · Time-Series

Freezing of Gait Detection

B.S. capstone project applying deep learning to a real clinical problem: detecting Freezing of Gait (FOG) episodes in Parkinson's patients using wrist-worn accelerometer data. Raw time-series signals are transformed into Gramian Angular Field (GAF) images, then fed into a custom multi-branch CNN with one convolutional branch per sensor location (ankle, thigh, trunk). Includes a Gradio demo for live inference.

Public B.S. Capstone View on GitHub ↗
Problem

Parkinson's patients experience sudden, unpredictable "freezing" episodes where their feet stop moving mid-stride — a leading cause of falls. Catching these moments in real time from wearable sensor data could enable early intervention.

Approach

Transformed tri-axial accelerometer signals (ankle, thigh, trunk) into Gramian Angular Field images and trained a multi-branch convolutional neural network (CNN) to classify freezing vs. normal movement, benchmarked against XGBoost and Random Forest baselines.

Tools
Python TensorFlow Keras Scikit-Learn XGBoost Gradio MLflow Weights & Biases NumPy Pandas
Result

Achieved 0.85 AUC, outperforming the XGBoost baseline (0.83), with a live Gradio demo for real-time inference.

Why It Matters

Demonstrates deep learning on clinical time-series data, signal-to-image feature engineering, and reproducible experiment tracking — skills that transfer directly to wearable health monitoring and remote patient monitoring products.

Project Highlights

  • Gramian Angular Field transformation converts raw accelerometer signals into 192×192 RGB images
  • Multi-branch CNN: independent convolutional tower per sensor (ankle / thigh / trunk), fused before classification
  • AUC 0.85 (downsampled), benchmarked against XGBoost (AUC 0.83) and upsampled CNN (AUC 0.82)
  • Memory-efficient chunked .npz data pipeline for streaming large accelerometer datasets
  • Gradio demo accepting 3 GAF images for live FOG/Non-FOG prediction with Grad-CAM overlay
  • Experiment tracking with MLflow and Weights & Biases; early stopping and LR scheduling
  • CI running XGBoost baseline + PyTorch CPU smoke test on every push

Results

0.85
AUC (CNN)
0.83
AUC (XGBoost)
192×192
Image Size

The multi-branch CNN outperformed traditional baselines across all three class-imbalance handling strategies. Grad-CAM overlays confirm the model attends to FOG-relevant signal regions in the GAF images.

Tech Stack

Python TensorFlow Keras Scikit-Learn XGBoost Gradio MLflow Weights & Biases NumPy Pandas

Domain Tags

Deep Learning Healthcare Time-Series Computer Vision

Infographics

End-to-end pipeline: data collection through classification

End-to-end pipeline: data collection through classification

Gramian Angular Field (GAF) transformation process

Gramian Angular Field (GAF) transformation process

Multi-branch CNN architecture for FOG classification

Multi-branch CNN architecture for FOG classification

Sensor placement and clinical context

Sensor placement and clinical context

Screenshots & Outputs

Confusion matrix: multi-branch CNN

Confusion matrix: multi-branch CNN

ROC curve (AUC 0.85)

ROC curve (AUC 0.85)

XGBoost feature importance

XGBoost feature importance

Architecture

Raw Tri-Axial Accelerometer Data (ankle / thigh / trunk)
  ↓
Gramian Angular Field (GAF) Transformation → 192×192×3 Images
  ↓
Multi-Branch CNN (one tower per sensor): Conv2D x 3 → BatchNorm → Dropout
  ↓
Global Average Pooling → Concatenate branches → Dense → Sigmoid
  ↓
FOG / Non-FOG Classification + Grad-CAM Heatmap
  ↓
Benchmarked vs. XGBoost + Random Forest baselines · MLflow tracking