What the Benchmarking System Measures
The benchmarking framework evaluates three critical aspects of the vital signs monitoring pipeline:1. ROI Detection Performance
Measures the face detection component’s speed and reliability:- Detection time per frame
- Detection success rate
- ROI stability (jitter and size variance)
- Consecutive failure tracking
- Real-time FPS capability
2. EVM Processing Performance
Evaluates the Eulerian Video Magnification processing efficiency:- Chunk processing time
- Time per frame within chunks
- Processing throughput (EVM FPS)
- Buffer size impact on performance
3. Heart Rate Accuracy
Compares predictions against ground truth from the UBFC-RPPG dataset:- Mean Absolute Error (MAE)
- Root Mean Square Error (RMSE)
- Correlation coefficients
- Accuracy within thresholds (5, 10, 15 BPM)
- Error distribution statistics
Three Benchmark Types
The system provides three specialized benchmarking scripts, each focusing on different aspects of the pipeline:ROI Benchmark
Tests only the face detection component in isolation
EVM Benchmark
Tests EVM processing with pre-detected ROIs
Complete Benchmark
Tests the entire end-to-end pipeline
ROI-Only Benchmark (advance_run_ROI.py)
Focuses exclusively on face detection performance across different models:
- Supports: Haar Cascade, MediaPipe, MTCNN, YOLOv11
- Measures detection speed, stability, and reliability
- No EVM processing overhead
- Ideal for comparing detector models
EVM-Only Benchmark (advance_run_EVM.py)
Isolates EVM processing performance:
- Assumes successful ROI detection
- Measures pure EVM computation time
- Evaluates heart rate prediction accuracy
- Tests different buffer sizes
Complete Benchmark (advance_run_complete.py)
Provides comprehensive end-to-end metrics:
- Measures full pipeline from video input to HR output
- Tracks both ROI detection and EVM processing
- Calculates resource usage (CPU, memory, temperature)
- Provides time breakdown percentages
- Most realistic performance assessment
The CompleteMetrics Class
At the core of the benchmarking system is theCompleteMetrics class (source/Python/experiments/advance_run_complete.py:27), which aggregates metrics across all pipeline stages:
- Granular performance analysis - Separate metrics for each pipeline stage
- Quality assessment - Stability and reliability measurements
- Accuracy tracking - Multiple error metrics and statistical measures
- Resource monitoring - Essential for embedded deployment
Dataset and Ground Truth
All benchmarks use the UBFC-RPPG Dataset 2, which provides:- 42 subjects with synchronized video and pulse oximeter data
- CMS50E pulse oximeter ground truth (clinical-grade accuracy)
- 30 FPS video recordings under controlled lighting
- Frame-by-frame heart rate measurements
Learn More About the Dataset
Detailed information about UBFC-RPPG Dataset 2 structure and usage
Platform Comparison
The benchmarking system is designed to evaluate performance across different hardware:Desktop PC Results
Desktop PC Results
Located in
results/results_pc/Typical performance:- ROI Detection: ~200 FPS (MediaPipe)
- EVM Processing: ~320 FPS per frame
- End-to-End: ~124 FPS
- MAE: ~13.3 BPM
Raspberry Pi 4 Results
Raspberry Pi 4 Results
Located in
results/results_rp4/Includes temperature and throttling monitoring:- CPU frequency tracking
- Temperature alerts (>75°C warning, >80°C critical)
- Throttling detection
- Memory pressure monitoring
Why Multiple Benchmark Types?
Each benchmark serves a specific purpose:- ROI Benchmark - When selecting the optimal face detector for your hardware
- EVM Benchmark - When tuning buffer sizes and EVM parameters
- Complete Benchmark - When validating full system performance for deployment
- Identify bottlenecks in specific pipeline stages
- Optimize components independently
- Make data-driven decisions about model selection
- Validate performance on target hardware before deployment
Next Steps
Run Benchmarks
Learn how to execute benchmarks on your system
Metrics Reference
Detailed explanation of all collected metrics
Dataset Info
Understand the UBFC-RPPG dataset structure