EVM Vital Signs Monitor
A non-invasive vital signs monitoring system that uses Eulerian Video Magnification (EVM) and AI-based facial detection to estimate heart rate (HR) and respiratory rate (RR) from video. The system amplifies subtle color and motion changes in facial regions to extract physiological signals without any physical contact.Quick Start
Get up and running in minutes with a simple example
Installation
Detailed installation instructions for Python and Docker
Core Concepts
Understand how EVM extracts vital signs from video
Configuration
Learn how to configure the system for your use case
How It Works
The system processes video frames through a five-stage pipeline:Face Detection
Locates facial region of interest (ROI) using AI models like MediaPipe, YOLOv8, Haar Cascade, or MTCNN
Temporal Filtering
Applies dual-band bandpass filters:
- Heart rate: 0.8-3 Hz (48-180 BPM)
- Respiratory rate: 0.2-0.8 Hz (12-48 BPM)
Key Features
Non-invasive Monitoring
Extracts HR and RR from video feed without physical sensors
Multiple Detection Models
Choose from YOLOv8, MediaPipe, Haar Cascade, or MTCNN based on your accuracy and performance needs
Optimized Pipeline
Single-pass dual-band processing for simultaneous HR/RR extraction - 50-60% faster than traditional approaches
Real-time Capable
Runs on Raspberry Pi 4 with 30+ FPS face detection
Comprehensive Benchmarking
Performance and accuracy metrics validated against UBFC-RPPG dataset
ROI Stabilization
Temporal filtering and weighted smoothing for stable measurements
Performance on Raspberry Pi 4
Optimized for embedded systems deployment:- Detection: 30-40 FPS (MediaPipe)
- EVM Processing: 1-2 seconds per 200-frame chunk
- End-to-End: 3-4 seconds per measurement
- Accuracy: MAE < 5 BPM for HR under optimal conditions
System Requirements
Minimum Requirements
- Python: 3.8 or higher
- RAM: 2GB minimum (4GB+ recommended for Raspberry Pi)
- Camera: Any USB webcam or compatible video source
- OS: Linux, macOS, or Windows
Hardware Recommendations
Desktop/Laptop
Desktop/Laptop
- CPU: Dual-core processor (quad-core recommended)
- RAM: 4GB+
- GPU: Optional - can accelerate YOLO models with CUDA support
Raspberry Pi
Raspberry Pi
- Model: Raspberry Pi 4 (4GB or 8GB RAM recommended)
- OS: Raspberry Pi OS (64-bit) or Ubuntu Server
- Camera: Raspberry Pi Camera Module v2 or USB webcam
- Storage: 16GB+ microSD card (Class 10 or higher)
Software Dependencies
Core dependencies managed viarequirements.txt:
- OpenCV: 4.10.0.84 - Computer vision operations
- NumPy: 1.24.0+ - Array operations
- SciPy: 1.10.0+ - Signal processing
- MediaPipe: 0.10.21 - Fast face detection
- Ultralytics: 8.3.235 - YOLOv8/v12 models
- TensorFlow: 2.16.1 - MTCNN support
For Raspberry Pi deployment, MediaPipe is recommended as the face detector for optimal balance between speed and accuracy.
Limitations
Use Cases
- Remote health monitoring: Telehealth applications
- Wellness tracking: Fitness and stress monitoring
- Research: Physiological signal analysis
- Education: Learning about computer vision and signal processing
This project is for research and educational purposes. Not intended for medical diagnosis or treatment.
Next Steps
Get Started
Run your first vital signs measurement
Learn EVM
Deep dive into Eulerian Video Magnification
Choose a Detector
Select the right face detection model
Run Benchmarks
Measure performance and accuracy