PPG-Bench: A Unified Benchmark for PPG Foundation Models
Organizations: Mannas AI
Abstract
Photoplethysmography (PPG) is increasingly recorded by wearable and clinical devices at enormous scale, and a growing number of PPG foundation models (FMs) have been developed to compute reusable representations for various downstream tasks. These models are difficult to compare: different evaluations use different datasets, task definitions, preprocessing, downstream heads, hyperparameter tuning, and baselines. We present PPG-Bench, a unifying open-source benchmark evaluating five public PPG FMs across nine open-access datasets and 26 tasks spanning cardiovascular state estimation, activity, sleep, screening, and identification. We evaluate models under four downstream regimes of increasing adaptability (linear probing, random forests, frozen MLP probes, and end-to-end finetuning), with model-specific hyperparameter optimization and subject-disjoint cross-validation. We also evaluate against three controls: random/constant baseline, a deterministic pulse-rate-variability (PRV) feature set, and a generic time-series FM (MOMENT). Across all 68 task-regime combinations, 35.3% show no meaningful FM advantage over the random/constant baseline, and in 83.8% no PPG-specific FM outperforms both PRV and MOMENT. We also find that added downstream head capacity generally improves performance, but can cause significant degradation if the model is performing at chance/constant level. Current PPG FMs therefore cannot yet claim to provide generalised and transferrable representations of PPG signals, and future evaluation in this field should include checks against simple, non-learned controls. Code for the benchmark and instructions to evaluate more models can be found here - https://github.com/mannas-ai/ppg-bench.
Figures & tables
| Metric | Dataset | Task | AnyPPG | PaPaGei-S | PaPaGei-P | PulsePPG | SigmaPPG | Random | PRV Ctrl | MOMENT |
| MAE | Dalia | HR | 7.39 .18 | 13.75 .32 | 11.68 .31 | 10.00 .27 | 11.28 .30 | 18.23 .42 | 11.19 .34 | 8.24 .19 |
| WildPPG | HR | 9.76 .14 | 12.63 .28 | 11.96 .21 | 10.83 .19 | 11.26 .19 | 12.99 .19 | 13.00 .18 | 11.54 .22 | |
| PPG-BP | HR | 3.31 .06 | 4.89 .15 | 5.22 .16 | 3.67 .15 | 4.15 .10 | 8.63 .02 | 4.48 .12 | 3.21 .08 | |
| SBP | 13.32 .27 | 14.92 .26 | 14.60 .37 | 13.77 .17 | 14.95 .29 | 16.31 .04 | 16.40 .09 | 13.89 .33 | ||
| DBP | 8.21 .36 | 8.70 .06 | 8.55 .13 | 8.49 .18 | 8.63 .10 | 8.79 .03 | 8.77 .03 | 8.54 .27 | ||
| Age | 10.76 .24 | 11.37 .21 | 11.54 .36 | 10.31 .06 | 11.59 .14 | 12.43 .06 | 12.24 .06 | 10.82 .13 |
| Method Transition | Improved % | Mean % Gain |
|---|---|---|
| Linear Probe Random Forest | 17.1 | -6.7 |
| Linear Probe Frozen MLP | 58.5 | 5.9 |
| Linear Probe Finetuning | 78.0 | 9.3 |
| Frozen MLP Finetuning | 70.7 | 4.5 |
| Probe method | Mean | Median | Top- mean |
|---|---|---|---|
| Linear probe | 31.8% | 27.5% | 40.7% |
| Random forest | 34.2% | 36.2% | 29.6% |
| Frozen MLP | 23.5% | 34.3% | 42.2% |
| Fine-tuning | 32.5% | 35.2% | 32.3% |
| Method | Task | Metric | Subject-level | Window-level |
| Linear Probes | PPG-BP Age | MAE | 11.117 | 11.714 |
| PPG-BP BMI | 3.006 | 3.074 | ||
| PPG-BP DBP | 8.515 | 8.781 | ||
| PPG-BP HR | 4.249 | 5.250 | ||
| PPG-BP SBP | 14.312 | 15.315 | ||
| PPG-BP Diabetes | BAC | 0.509 | 0.509 |
Appendix figures & tables8 assets
Supplementary material from the paper’s appendix.
Appendix
| Method | Hyperparameter | Values |
|---|---|---|
| Linear (Ridge) | ||
| Solver | auto | |
| Linear (Logistic) | ||
| Penalty | L2 | |
| Solver | lbfgs | |
| Max iterations | 1000 |
| Method | Hyperparameter | Search range | Lower edge | Upper edge |
|---|---|---|---|---|
| Linear | Logistic | 14.2% | 26.9% | |
| Ridge | 5.8% | 50.3% | ||
| Random Forest | Max depth | 43.8% | 37.9% | |
| Frozen MLP | Batch size | 47.0% | 13.4% | |
| Learning rate | 6.0% | 48.6% | ||
| Selected epoch | 10.2% | 4.6% |
| Model | Trainable Params |
|---|---|
| PRV Control | 0 |
| Random | 0 |
| AnyPPG | 4.0M |
| PaPaGei-P | 5.0M |
| PaPaGei-S | 5.8M |
| PulsePPG | 28.5M |
| Dataset | Primary Tasks | Secondary Tasks | Subjects | Recording duration |
|---|---|---|---|---|
| Dalia ( Reiss et al., 2019 ) | HR; activity | – | 15 | 36.0 h |
| DREAMT ( Wang et al., 2024 ) | Sleep staging | – | 100 | 700 h |
| WESAD ( Schmidt et al., 2018 ) | Affective state | Valence; Arousal | 15 | 30 h |
| ECSMP ( Gao et al., 2021 ) | Depression classification | Emotion classification | 67 | 210.5 h |
| PPG-BP ( Liang et al., 2018 ) | Age; BMI; systolic BP; diastolic BP; HR; diabetes; hypertension | Hypertension (binary); cerebral infarction; cerebrovascular disease | 219 | 0.383 h |
| BIDMC ( Pimentel et al., 2017 ) | Respiratory rate; SpO 2 | – | 53 | 7.07 h |
| Metric | Dataset | Task | AnyPPG | PaPaGei-S | PaPaGei-P | PulsePPG | SigmaPPG | Random | PRV Ctrl | MOMENT |
|---|---|---|---|---|---|---|---|---|---|---|
| MAE | Dalia | HR | 5.84 .18 | 14.96 .42 | 13.12 .42 | 10.17 .37 | 13.24 .42 | 18.23 .42 | 11.75 .30 | 8.04 .28 |
| WildPPG | HR | 9.29 .10 | 12.55 .26 | 12.45 .23 | 10.99 .22 | 12.16 .21 | 12.99 .19 | 12.78 .19 | 12.06 .23 | |
| PPG-BP | HR | 3.55 .06 | 5.92 .13 | 6.10 .09 | 5.03 .06 | 5.13 .05 | 8.63 .02 | 4.75 .17 | 4.20 .06 | |
| SBP | 14.60 .16 | 15.53 .20 | 15.28 .10 | 14.87 .16 | 16.18 .26 | 16.31 .04 | 16.36 .17 | 14.60 .21 | ||
| DBP | 8.47 .19 | 8.69 .09 | 8.63 .14 | 8.63 .08 | 8.72 .09 | 8.79 .03 | 8.73 .07 | 8.53 .17 | ||
| Age | 11.05 .16 | 11.92 .13 | 11.83 .07 | 10.96 .11 | 12.26 .06 | 12.43 .06 | 12.38 .08 | 10.94 .13 |
| Metric | Dataset | Task | AnyPPG | PaPaGei-S | PaPaGei-P | PulsePPG | SigmaPPG | Random | PRV Ctrl | MOMENT |
|---|---|---|---|---|---|---|---|---|---|---|
| MAE | Dalia | HR | 6.12 .30 | 13.74 .68 | 12.30 1.22 | 9.46 1.11 | 10.39 .79 | 18.23 .42 | 10.35 .80 | 7.49 .05 |
| WildPPG | HR | 9.89 .61 | 12.80 1.01 | 12.56 1.44 | 10.91 .65 | 11.43 .86 | 12.99 .19 | 13.22 1.09 | 11.75 1.06 | |
| PPG-BP | HR | 3.96 .11 | 5.20 .39 | 5.68 .16 | 4.30 .36 | 4.72 .20 | 8.63 .02 | 3.94 .17 | 4.15 .63 | |
| SBP | 14.76 1.16 | 15.68 .94 | 16.23 .62 | 15.01 .54 | 16.34 .22 | 16.31 .04 | 17.24 1.23 | 15.51 .87 | ||
| DBP | 9.08 .30 | 9.31 .44 | 9.22 .18 | 9.12 .67 | 9.21 .38 | 8.79 .03 | 9.13 .14 | 9.41 .55 | ||
| Age | 11.22 .18 | 11.87 .23 | 12.07 .16 | 11.03 .72 | 12.57 .28 | 12.43 .06 | 12.59 .67 | 11.35 .64 |
| Metric | Dataset | Task | AnyPPG | PaPaGei-S | PaPaGei-P | PulsePPG | SigmaPPG | Random | PRV Ctrl | MOMENT |
|---|---|---|---|---|---|---|---|---|---|---|
| MAE | Dalia | HR | 5.07 .29 | 6.21 .40 | 6.51 .18 | 5.10 .22 | 6.31 .35 | 18.23 .42 | 10.35 .80 | 5.52 .37 |
| WildPPG | HR | 8.40 .79 | 9.27 .81 | 10.27 .86 | 8.51 .46 | 9.16 .55 | 12.99 .19 | 13.22 1.09 | 9.39 1.78 | |
| PPG-BP | HR | 8.71 5.41 | 9.91 4.74 | 9.82 4.80 | 14.41 9.71 | 8.75 .12 | 8.63 .02 | 3.94 .17 | 15.88 5.07 | |
| SBP | 20.89 10.13 | 16.60 .30 | 22.83 17.33 | 18.87 10.10 | 16.63 .77 | 16.31 .04 | 17.24 1.23 | 28.36 26.14 | ||
| DBP | 11.43 5.13 | 8.77 .20 | 12.62 7.20 | 8.76 .16 | 11.16 10.19 | 8.79 .03 | 9.13 .14 | 8.77 .25 | ||
| Age | 14.01 3.24 | 12.68 .69 | 14.17 2.45 | 13.69 2.83 | 14.00 2.90 | 12.43 .06 | 12.59 .67 | 14.70 5.13 |
| Metric | Dataset | Task | AnyPPG | PaPaGei-S | PaPaGei-P | PulsePPG | SigmaPPG | Random | PRV Ctrl | MOMENT |
|---|---|---|---|---|---|---|---|---|---|---|
| MAE | BUTPPG | SBP | 13.54 .59 | 12.82 .42 | 13.06 .47 | 13.23 .47 | 12.95 .46 | 12.72 .48 | 12.87 .59 | 13.15 .52 |
| DBP | 6.74 .70 | 6.34 .48 | 6.54 .55 | 6.65 .60 | 6.46 .57 | 6.30 .47 | 6.42 .51 | 6.49 .56 | ||
| SpO 2 | 1.30 .06 | 1.30 .05 | 1.29 .04 | 1.28 .05 | 1.29 .06 | 1.29 .06 | 1.30 .03 | 1.29 .03 | ||
| WESAD | Valence | 0.92 .02 | 1.12 .02 | 1.10 .05 | 1.00 .04 | 1.08 .03 | 1.17 .02 | 1.16 .03 | 1.00 .05 | |
| Arousal | 1.29 .03 | 1.61 .02 | 1.67 .02 | 1.46 .03 | 1.53 .03 | 1.78 .02 | 1.78 .01 | 1.36 .05 | ||
| BAC | PPG-BP | Hypertension (Binary) | .691 .032 | .620 .030 | .633 .011 | .674 .024 | .609 .016 | .500 .000 | .499 .002 | .653 .031 |