Dataset Overview
UBFC-RPPG is a publicly available dataset designed for remote photoplethysmography (rPPG) research.Dataset Source
Official UBFC-RPPG Dataset homepage (University of Burgundy)
Key Features
- 42 subjects with diverse skin tones and facial features
- 30 FPS video recordings (uncompressed or low compression)
- Synchronized ground truth from CMS50E pulse oximeter
- Controlled environment with consistent lighting conditions
- Seated subjects with minimal movement
- 60-120 second recordings per subject
Ground Truth Data
The dataset includes high-quality ground truth heart rate measurements from a clinical-grade device.CMS50E Pulse Oximeter
The ground truth is collected using the Contec CMS50E pulse oximeter, which provides:- Transmissive PPG sensor (finger clip)
- Clinical-grade accuracy (±2 BPM)
- Frame-synchronized measurements at 30 Hz
- More reliable than camera-based methods for validation
The CMS50E uses infrared light directly on the fingertip, providing much higher signal quality than facial video. This makes it an excellent ground truth reference for validating remote PPG methods.
Why CMS50E is Reliable
Direct Contact Measurement
Direct Contact Measurement
Unlike camera-based rPPG, the pulse oximeter has direct skin contact with a dedicated PPG sensor, eliminating:
- Motion artifacts from facial movement
- Ambient lighting variations
- Camera sensor noise
- Distance and angle effects
Medical-Grade Calibration
Medical-Grade Calibration
The CMS50E is FDA-approved and clinically validated:
- Calibrated against ECG measurements
- Tested across diverse populations
- Meets ISO 80601-2-61 standards
High Temporal Resolution
High Temporal Resolution
Synchronized at 30 Hz with video frames:
- One heart rate measurement per video frame
- Allows chunk-level comparison
- No interpolation needed
Dataset Structure
The dataset is organized by subject, with each subject’s data in a separate folder.Directory Layout
Video Files (vid.mp4)
Each video file contains:
- Resolution: Typically 640x480 pixels
- Frame rate: 30 FPS
- Duration: 60-120 seconds
- Format: H.264 encoded MP4
- Content: Frontal face view of seated subject
Ground Truth Files (ground_truth.txt)
Each ground_truth.txt file is a space-delimited text file with two rows:
- Row 1: Frame timestamps/indices
- Row 2: Heart rate in beats per minute (BPM) for each frame
Loading Ground Truth
TheGroundTruthHandler class handles loading and processing this data:
How Ground Truth Handler Works
TheGroundTruthHandler class processes ground truth data to align with the EVM chunked processing approach.
Chunk Averaging
Since EVM processes frames in chunks (e.g., 200 frames), the handler calculates average heart rate per chunk:Why Chunk Averaging?
The EVM algorithm outputs one heart rate per chunk (e.g., every 200 frames), not per frame:- Frequency Resolution: FFT requires sufficient samples to resolve heart rate frequencies (0.8-2.5 Hz)
- Noise Reduction: Averaging over multiple cardiac cycles reduces noise
- Computational Efficiency: Processing chunks is faster than per-frame analysis
Implementation Details
Key Methods
Loads ground truth data from file and calculates chunk averages.Returns:
True if successful, False on errorRetrieves average heart rate for a specific chunk.Parameters:
chunk_index(int): Zero-based chunk index
None if unavailableCalculates absolute error between estimated and ground truth HR.Returns:
(error, true_hr) tupleProvides summary statistics of ground truth data.Returns: Dictionary with
total_points, total_chunks, hr_min, hr_max, hr_mean, hr_stdSetup Utility Function
For quick initialization, use thesetup_ground_truth() helper:
Using the Dataset in Benchmarks
The benchmark scripts automatically iterate through all subjects:Benchmark Flow
Process Chunks
Run face detection + EVM on chunks of 200 frames.After each chunk:
- Get predicted HR from EVM
- Get true HR from ground truth handler
- Calculate error metrics
Dataset Characteristics
Heart Rate Range
Typical heart rates in the dataset:- Minimum: ~55 BPM (resting, fit individuals)
- Maximum: ~95 BPM (resting, elevated)
- Mean: ~72 BPM
- Std Dev: ~8 BPM
Subject Diversity
The dataset includes:- Gender: Mixed male and female subjects
- Age: Young adults (typically 20-40 years)
- Skin tone: Various Fitzpatrick types (though predominantly lighter skin)
- Facial features: Varied facial structures, some with glasses/facial hair
Lighting Conditions
All videos were recorded:- Indoor environment with controlled lighting
- Frontal lighting to minimize shadows
- Consistent color temperature across subjects
- No direct sunlight or strong ambient light changes
Dataset Limitations
Static Scenarios Only
Static Scenarios Only
All subjects are seated and relatively still. Performance on moving subjects, different angles, or outdoor conditions is not represented.
Limited Skin Tone Diversity
Limited Skin Tone Diversity
The dataset primarily includes lighter skin tones. rPPG performance can vary significantly with skin tone due to melanin absorption.
Controlled Lighting
Controlled Lighting
Real-world applications may encounter:
- Varying light sources
- Shadows and occlusions
- Different color temperatures
- Ambient light changes
Healthy Subjects Only
Healthy Subjects Only
All subjects have normal heart rhythms. Arrhythmias, very high/low HR, or cardiac conditions are not represented.
Citation
If you use the UBFC-RPPG dataset in your research, please cite:Next Steps
Run Benchmarks
Use the dataset to benchmark your configuration
Metrics Reference
Understand the accuracy metrics calculated from ground truth