Project 02 · DST-FallNet · Multimodal Fall Detection
DST-FallNet
Real-Time Multimodal Fall Detection via
Audio-Visual Fusion and DST on Edge Devices
DST-FallNet is a real-time multimodal fall detection system that integrates visual (MoveNet, CNN) and audio (LSTM) models, utilizing Dempster-Shafer Theory for decision-level fusion. Designed for resource-constrained embedded devices such as Jetson Nano 2GB, with GPIO output for alerts — suitable for long-term automated monitoring.
- 0.97Audio LSTM accuracy
- 0.997Audio AUC
- 87.4%CNN 5-class accuracy
- ~50 µsDST fusion latency
Main features
- Visual fall detection — MoveNet pose estimation and CNN action classification
- Audio anomaly detection — MFCC features with LSTM
- Dempster-Shafer Theory (DST) decision-level fusion
- GPIO output for LED / buzzer alerts
- CLI dashboard for real-time system status over SSH
Why multimodal, and why on the edge?
With an aging population, falls are a leading cause of injury and death among the elderly. Most detection systems rely on a single modality — a camera or a microphone — and each has blind spots.
Limits of single-modality systems
- Accuracy ceiling: vision suffers under poor lighting and occlusion; audio is fooled by background noise — both cause false alarms and misses.
- Heavy compute: most deep models assume a powerful PC or cloud, unsuitable for constrained hardware.
- Privacy & latency: uploading frames to the cloud raises privacy concerns and cannot give real-time alerts.
Design goals
Fuse vision + audio to lift accuracy, run fully on a low-power Jetson Nano 2GB, and drive real-time hardware alerts (LED / buzzer) — all without sending video off-device.
Hardware used
- Jetson Nano 2GB
- USB camera
- USB microphone
- LED and buzzer (GPIO control)
Dempster-Shafer Theory over naive averaging
Simple score averaging breaks down under uncertainty and conflict: the camera may be unsure in dim light, the microphone may misread noise. Averaging those scores can actively hurt accuracy.
Handles uncertainty
Belief can be explicitly assigned to "unknown" — more expressive than a single probability.
Fuses conflict
When vision and audio disagree, DST computes a conflict coefficient K and reweights toward the more reliable source.
Dynamic weights
No manual vision/audio weight — DST decides per input which modality to trust.
Four cooperating threads
The system runs as four concurrent threads so sensing, fusion, and hardware control never block each other — essential for real-time behavior on a 2GB board.
- Visual pose inference: capture frames, preprocess, run MoveNet ONNX → 17 keypoints + confidence; compute body tilt to flag suspicious postures.
- Audio recognition: record 3-second clips, convert to MFCC, run the LSTM ONNX → a fall-sound score (0–1).
- Fusion & CNN verification: fuse vision + audio scores with DST; if above threshold, a 5-class CNN confirms the action and decides whether to fire GPIO.
- GPIO & button monitoring: drive LED / buzzer outputs, watch the reset button, clear fall events, and reset system state.
Core components
MoveNet pose estimation · MFCC + LSTM audio · DST decision fusion · custom 5-class CNN (standing / sitting / lying / bending / crawling) · ONNX inference on Jetson Nano 2GB.
MoveNet pose + custom CNN verification
MoveNet pose estimation
MoveNet gives fast, accurate 17-keypoint pose estimation, ideal for embedded devices. Keypoints and confidence feed a body-tilt and center-of-gravity estimate as the first fall cue. The model is quantized to INT8 and converted from TFLite to ONNX, shrinking size and compute with minimal accuracy loss for stable real-time use on Jetson Nano.
Custom 5-class CNN verification
When the DST fusion score crosses the threshold, a custom CNN classifies the action into standing, sitting, lying, bending, or crawling with a confidence score. This second stage sharply cuts false positives.
- Dataset: public Fall Detection Dataset — 15,402 labeled images.
- Split: 80% train / 20% validation, with live accuracy & loss monitoring.
- Input: 192×192×4; inference ~20–40 ms; accuracy 87.4%.
MFCC features + LSTM sound classifier
The microphone continuously records, segmenting into 3-second clips. After noise reduction and volume normalization, each clip becomes a 40-dimension MFCC feature map (3 s, 22050 Hz) fed to the LSTM.
Model & training
- Architecture: LSTM(64) → Dropout(0.5) → Dense(32, ReLU) → Dense(1, sigmoid)
- Loss / optimizer: binary cross-entropy / Adam
- Training: 30 epochs, batch 16, 80/20 split
- Dataset: AFE — Sound Analysis for Fall Event detection
Test-set metrics
| Metric | Value |
|---|---|
| Accuracy | 0.97 |
| Precision | 0.9792 |
| Recall | 0.9691 |
| F1-score | 0.9741 |
| AUC | 0.9973 |
Confusion matrix [[91, 2], [3, 94]] — a near-perfect ROC curve.
Late fusion at the decision level
Each modality produces its own decision; their scores become belief assignments and DST fuses them into a unified confidence plus a conflict coefficient K. This late (decision-level) fusion lets each model play to its strengths and stays robust when one modality is noisy.
- Threshold & trigger: once fused confidence passes the threshold, the CNN confirms; a high-risk action (lying / crawling) above the alert threshold fires the buzzer / LED and logs the event.
- Conflict handling: when modalities disagree, K reallocates trust to the more reliable source, preventing single-sensor failure.
- Configurable: choose vision-only, audio-only, or both, and tune thresholds per environment (quiet home vs. noisy public space).
Lightweight monitoring for embedded use
A text-based dashboard shows live status in organized tables with color coding (red = alert, green = normal). It runs over SSH, ideal for headless edge devices.
- Runtime status: memory, CPU, latency
- MoveNet keypoints & confidence
- Audio MFCC features & LSTM scores
- DST fusion score & conflict coefficient
- CNN multi-class results & alert state
- Event log with time, score, and action type
Model performance summary
| Model | Input shape | Latency | Accuracy | Status |
|---|---|---|---|---|
| CNN (5-class) | 192×192×4 | 20–40 ms | 87.4% | Deployed |
| LSTM (audio) | 1×8×40 (MFCC) | 30–50 ms | 86.3% | Deployed |
| Pose estimation | — | 250–350 ms | — | Deployed |
| DST fusion | — | 50–60 µs | — | Under evaluation |
The DST fusion step adds only microseconds, so multimodal robustness comes essentially for free relative to the model inference cost.
Source code & how to run
The full embedded system lives in the DST-FallNet repository on GitHub. Separate repos hold the CNN and LSTM training code; exported ONNX models are loaded at runtime.
Project directory structure
DST-FallNet/
├── src/ # Main source code
├── models/ # ONNX model files
├── assets/ # Documentation images
├── abnormal_images/ # Runtime abnormal captures
├── requirements.txt # Python dependencies
└── README.md
Installation
- Install Python 3.8 or above
- Install dependencies:
pip install -r requirements.txt
How to run
- Enter the
src/directory - Run the main program:
python main.py
Model files
Place downloaded ONNX models in the models/ directory before running. Model download links are documented in the GitHub README or available on request.
Notes
- Jetson Nano 2GB and correct GPIO wiring are required
- All
.onnxmodel files must be present undermodels/ - Runtime-generated images and temporary files are not recommended for GitHub upload
Where it goes next
- Convert ONNX models to TensorRT to further speed up edge inference.
- Move from public datasets to custom-collected data for higher real-world relevance.
- Add a notification system for instant caregiver alerts on a detected fall.
- Benchmark single-model vs. multimodal accuracy in real-world validation.