源码+数据集:https://gitee.com/CodeStoreHub/rppg-datasets
项目定位
MMPDMamba 聚焦远程光电容积脉搏波(remote photoplethysmography, rPPG)估计:模型从普通 RGB 人脸视频中恢复脉搏波形,并进一步计算心率等生理指标。相比单一数据集内训练测试,本项目更强调真实落地场景中的跨被试、跨数据集泛化能力,围绕 PURE、UBFC-rPPG 与 MMPD 构建训练、验证与推理配置,覆盖从实验室受控视频到复杂光照、运动、肤色与佩戴条件下的视频测试。
核心算法 rPPGMamba 将 3D 时空卷积、Temporal Difference 卷积、快慢双流结构、Bi-Mamba 状态空间序列建模与 3D 通道注意力结合起来,在 128 帧视频片段上捕获微弱肤色变化中的周期性生理信号。它不是只做空间纹理识别,而是围绕"时间变化如何稳定表达心血管节律"来设计网络。

数据集介绍
本项目围绕 PURE、UBFC-rPPG 与 MMPD 三类常用 rPPG 数据集构建训练、验证和测试流程。三者在采集设备、被试状态、运动幅度和环境复杂度上存在明显差异,因此适合用来检验模型是否真正学习到可迁移的生理节律,而不是只记住某个数据集的光照、肤色或人脸外观模式。
PURE 是受控实验环境下采集的远程生理感知数据集,视频质量相对稳定,场景干扰较少,适合用于验证模型对基础脉搏节律的恢复能力。由于其采集条件较规范,PURE 常被用作跨数据集训练或测试中的"干净域",可以帮助观察模型在较清晰生理信号上的波形拟合和心率估计表现。
UBFC-rPPG 更接近日常摄像头采集场景,包含普通 RGB 人脸视频及同步生理参考信号。相比受控采集,它更能反映真实设备、自然面部状态和轻微运动带来的变化,因此常用于评估模型从实验室条件迁移到常规视频输入时的泛化能力。本项目中的 PURE -> UBFC-rPPG 测试正是为了验证模型能否在未见过的 UBFC 被试和采集环境中保持稳定心率估计。
MMPD 面向更复杂的真实应用条件,强调多属性、多场景和跨人群变化。其测试配置显式包含光照、运动、运动后状态、肤色、性别、眼镜、头发遮挡和妆容等属性,对 rPPG 模型提出了更高要求:模型不仅要在清晰正脸视频中恢复脉搏,还要在肤色差异、头部运动和环境变化下保持可用的周期信号。因此,MMPD 更适合检验算法在移动健康、驾驶员监测和远程医疗预筛查等真实落地场景中的鲁棒性。
从实验设计角度看,PURE、UBFC-rPPG 和 MMPD 构成了由受控到自然、由简单到复杂的评测梯度。模型如果能在这些数据集之间完成跨被试、跨数据集迁移,说明其时序表征更接近真实生理机制,而不是依赖单一数据域中的偶然相关性。
含MMPD+PURE+UBFC全套官方完整数据集

PURE-UBFC-MMPD 跨被试亮点
项目中的配置文件已经覆盖多种跨库评测路径,例如 PURE -> UBFC-rPPG、UBFC-rPPG -> PURE、PURE -> MMPD 与 UBFC-rPPG -> MMPD。这种设置比同库随机划分更接近真实应用:训练阶段看到的是一批被试、采集设备和环境,测试阶段面对的是新的被试、新的光照条件、新的动作模式和新的数据分布。
特别是 MMPD 测试配置进一步显式纳入了多维场景属性,包括光照、运动、运动后状态、肤色、性别、眼镜、头发遮挡和妆容等因素。算法需要在不同肤色、不同运动幅度和复杂照明下保持脉搏波恢复能力,这正是跨被试 rPPG 的难点:模型不能记住人脸身份或数据集风格,而要学到对个体差异更稳健的生理节律表征。
在数据预处理上,项目采用 NCDHW 视频张量格式,将视频切分为 128 帧片段,并使用 DiffNormalized 类型突出帧间微弱变化。这样的输入设计天然契合 rPPG 任务:心血管活动在脸部皮肤上的表现通常极其微弱,绝对 RGB 值容易受身份、肤色和光照影响,而差分归一化更关注随时间变化的生理信号。
核心算法:Temporal Difference Mamba Block
rPPGMamba 的基本建模块由三部分组成:
-
CDC_T时序差分卷积。 -
MambaLayer双向状态空间时序建模。 -
ChannelAttention3D三维通道注意力。
CDC_T 在普通 3D 卷积基础上引入 temporal difference 项,通过 theta 控制中心差分强度。它把网络注意力从静态外观转向时间方向的变化,对 rPPG 中由血容量变化引起的弱周期信号更加敏感。与单纯 3D 卷积相比,差分卷积能够抑制部分静态身份纹理,让模型更关注跨帧波动。
MambaLayer 将 3D 特征展平为 token 序列,并使用 mamba_ssm.Mamba 进行状态空间建模。代码中设置 d_state=16、d_conv=4、expand=2,并启用 bimamba=True。这意味着模型不仅能通过局部卷积捕获短期时域变化,还能利用选择性状态空间机制建模长程依赖;双向 Mamba 进一步增强了前后时序上下文的融合能力,更适合从完整视频片段中恢复连续脉搏波形。
ChannelAttention3D 同时使用 3D 全局平均池化和最大池化生成通道权重,再对特征通道进行重标定。由于不同通道可能分别响应肤色变化、运动干扰、局部阴影或背景噪声,通道注意力可以强化与脉搏节律相关的响应,压低干扰通道,在跨被试和跨数据集测试中提升特征选择的稳定性。

快慢双流:兼顾全局趋势与快速脉动
rPPGMamba 在前端使用 3D 卷积提取基础时空特征,然后分成 slow stream 与 fast stream:
-
slow stream 使用更强的时间下采样,承担稳定、低频、全局节律建模。
-
fast stream 保留更多快速变化信息,负责捕获脉搏波细节和局部动态扰动。
两条路径分别经过三组 Temporal Difference Mamba Blocks。网络在中间阶段通过 LateralConnection 将 fast stream 经过时间卷积和步长下采样后注入 slow stream,实现快慢信息交互。最后,slow stream 经上采样恢复时间分辨率,fast stream 经轻量卷积补充细节,两者拼接后生成最终 rPPG 波形。
这种结构适合远程生理信号估计:心率节律既有稳定周期,又会被表情、头动、光照闪烁等快速变化污染。快慢双流让模型同时保留生理周期的长期一致性和短时波形的细节表达。
从视频到 rPPG 波形的端到端流程
输入视频首先经过人脸裁剪、尺寸归一化到 128 x 128,再以 128 帧为一个片段送入模型。网络前端使用 [1,5,5] 与 [3,3,3] 3D 卷积捕获空间纹理和短期时空模式,随后通过空间池化降低背景与局部噪声影响。
中间层由快慢双流 Mamba 模块完成核心建模:Temporal Difference 卷积强调帧间变化,Mamba 负责长序列动态依赖,通道注意力完成特征选择,横向连接完成多时间尺度融合。
输出阶段,网络通过时间上采样和自适应 3D 平均池化对齐原始片段长度,最后使用 1 x 1 x 1 卷积生成单通道 rPPG 序列,并 reshape 为与输入长度一致的波形。训练时,预测波形和标签波形都会做标准化,然后使用负 Pearson 相关损失优化波形相关性,而不是仅拟合逐点幅值。这更符合 rPPG 的目标:恢复与真实血容量脉搏信号同频、同相、形态一致的周期波形。
评测体系
项目评测不仅关注心率误差,还包含多维指标:
-
MAE:平均绝对误差,衡量心率估计偏差。 -
RMSE:均方根误差,反映异常误差的影响。 -
MAPE:相对百分比误差,便于跨心率范围比较。 -
Pearson:预测与真实信号的相关性。 -
SNR:频域信噪比,衡量生理主频是否清晰。 -
BA:Bland-Altman 分析,用于观察估计偏差分布。
推理阶段支持 FFT 频域方法从 rPPG 波形计算心率,适配完整视频窗口或指定短窗口评估。通过 PURE、UBFC-rPPG、MMPD 之间的跨库测试,模型能够展示从受控环境到复杂移动场景的泛化表现。
实验结果
logs 目录中已经保存了两组 rPPGMamba 跨数据集测试输出,分别对应 PURE -> UBFC-rPPG 与 UBFC-rPPG -> PURE。根据项目自带的 FFT 后处理流程,对 saved_test_outputs 中的预测波形和标签波形重新计算后,得到如下结果:
| 训练/验证数据 | 测试数据 | 测试被试数 | MAE ↓ | RMSE ↓ | MAPE ↓ | Pearson ↑ | SNR ↑ |
|---|---|---|---|---|---|---|---|
| PURE | UBFC-rPPG | 42 | 1.07 bpm | 2.01 bpm | 1.18% | 0.994 | 3.49 dB |
| UBFC-rPPG | PURE | 59 | 3.76 bpm | 12.01 bpm | 7.54% | 0.871 | 8.17 dB |
其中 PURE -> UBFC-rPPG 的跨库结果尤其亮眼:在 42 个 UBFC-rPPG 测试被试上,MAE 约为 1.07 bpm,Pearson 相关系数达到 0.994,说明模型在未见过的 UBFC 被试和采集环境中仍能恢复高度一致的心率变化趋势。反向的 UBFC-rPPG -> PURE 测试也保持了 0.871 的 Pearson 相关性,并取得更高的平均 SNR,体现了模型从不同训练域迁移到 PURE 场景时仍能保留可用的生理主频响应。
这些结果与算法设计是对应的:DiffNormalized 输入削弱了静态身份与肤色差异,Temporal Difference 卷积强化了跨帧微弱变化,Bi-Mamba 负责稳定建模长程脉搏节律,快慢双流则同时覆盖全局周期和局部波形细节。因此,模型在跨被试、跨数据集测试中不仅能给出较低心率误差,还能保持较高波形相关性和频域可解释性。
总结
rPPGMamba 的优势不只是"使用 Mamba",而是把 Mamba 放在 rPPG 任务真正需要的位置:在差分增强后的时空特征上进行长程动态建模。Temporal Difference 卷积负责放大微弱生理变化,Bi-Mamba 负责捕获跨 128 帧的节律依赖,快慢双流负责分离稳定节律和快速扰动,3D 通道注意力负责筛选更可靠的生理响应。
面向 PURE-UBFC-MMPD 的跨被试实验设计进一步强化了算法价值:模型需要摆脱对数据集、被试外观和采集环境的依赖,学习更接近真实生理机制的时序表征。对于非接触式心率监测、移动健康、驾驶员状态监测、运动恢复评估和远程医疗预筛查等场景,这种跨域鲁棒性比单库精度更关键。
MMPDMamba 因此提供了一条清晰的技术路线:以生理变化为输入核心,以 Mamba 状态空间模型为时序骨干,以跨被试跨数据集评测验证泛化能力,让普通 RGB 视频中的微弱脉搏信号能够被更稳定、更细致地恢复出来。