rPPG-Toolbox:深度远程PPG工具箱

RayRay
rPPG-Toolbox摄像头生理信号检测开源平台算法数据集Github开源项目

rPPG-Toolbox:深度远程PPG工具箱

rPPG-Toolbox是一个开源平台,专为基于相机的生理感知而设计,也称为远程光电容积脉搏波描记法(rPPG)。这个强大的工具箱不仅对现有的最先进的神经和无监督方法进行基准测试,还支持研究人员灵活快速地开发自己的算法。

工具箱概述

rPPG-Toolbox具有以下主要特点:

  • 支持多种先进的rPPG算法,包括传统的无监督算法和基于深度学习的监督算法
  • 集成了多个公开的rPPG基准数据集
  • 提供了完整的数据预处理、模型训练和评估流程
  • 支持自定义数据集和算法的灵活扩展
  • 提供了丰富的可视化工具,用于数据分析和结果展示

工具箱概述图

支持的算法

rPPG-Toolbox支持多种先进的rPPG算法:

  1. 传统无监督算法:

    • GREEN: 基于环境光的远程光电容积成像
    • ICA: 使用网络摄像头的非接触式多参数生理测量的进展
    • CHROM: 基于色度的稳健脉搏率rPPG
    • LGI: 野外面部视频心率估计的局部群不变性
    • PBV: 使用血容积脉冲签名改善远程PPG的运动稳健性
    • POS: 远程ppg的算法原理
    • OMIT: 一种从面部提取血容积脉冲的无监督管道
  2. 监督神经网络算法:

    • DeepPhys: 使用卷积注意力网络的基于视频的生理测量
    • PhysNet: 使用时空网络从人脸视频测量远程光电容积描记信号
    • TS-CAN: 用于设备上非接触式生命体征测量的多任务时间偏移注意力网络
    • EfficientPhys: 实现简单、快速和准确的基于相机的心脏测量
    • BigSmall: 针对不同空间和时间生理测量的高效多任务学习
    • PhysFormer: 使用时间差分变换器的基于面部视频的生理测量
    • iBVPNet: 在iBVP数据集论文中引入的3D-CNN架构

支持的数据集

rPPG-Toolbox支持多个公开的rPPG基准数据集:

  • SCAMPS: 用于相机生理信号测量的合成数据集
  • UBFC-rPPG: 包含面部视频和同步的地面实况PPG信号
  • PURE: 用于移动服务机器人上的非接触式脉搏率测量
  • BP4D+: 用于人类行为分析的多模态自发情感语料库
  • UBFC-Phys: 用于社会压力心理生理研究的多模态数据库
  • MMPD: 多领域移动视频生理数据集
  • iBVP: RGB-热rPPG数据集,具有高分辨率信号质量标签

基准测试结果

rPPG-Toolbox对所有支持的算法和数据集进行了全面的基准测试。下图展示了各种算法在不同数据集上的平均绝对误差(MAE)和平均绝对百分比误差(MAPE)性能:

基准测试结果

使用指南

设置环境

  1. 运行 bash setup.sh
  2. 激活conda环境: conda activate rppg-toolbox
  3. 安装依赖: pip install -r requirements.txt

使用预训练模型

使用 ./configs/infer_configs 下的配置文件进行推理。例如:

python main.py --config_file ./configs/infer_configs/PURE_UBFC-rPPG_TSCAN_BASIC.yaml

训练神经网络模型

使用 ./configs/train_configs 下的配置文件进行训练。例如,在PURE数据集上训练并在UBFC-rPPG上测试TSCAN模型:

  1. 下载PURE和UBFC-rPPG数据集
  2. 修改 ./configs/train_configs/PURE_PURE_UBFC-rPPG_TSCAN_BASIC.yaml 配置文件
  3. 运行:
python main.py --config_file ./configs/train_configs/PURE_PURE_UBFC-rPPG_TSCAN_BASIC.yaml

使用无监督方法

  1. 下载UBFC-rPPG数据集
  2. 修改 ./configs/infer_configs/UBFC_UNSUPERVISED.yaml 配置文件
  3. 运行:
python main.py --config_file ./configs/infer_configs/UBFC_UNSUPERVISED.yaml

数据可视化

rPPG-Toolbox提供了丰富的可视化工具,用于分析预处理后的数据、训练过程和预测结果。

预处理数据可视化

tools/preprocessing_viz 目录下提供了用于可视化预处理数据的Python notebook。该notebook可以自动检测预处理后的数据格式,并绘制输入图像示例和波形。

预处理数据可视化示例

训练损失和学习率可视化

工具箱会自动保存训练和验证损失的图表。这些图表默认保存在 runs/exp 目录下。下图展示了在UBFC-rPPG数据集上训练和验证,并在PURE数据集上测试时的损失和学习率曲线:

损失曲线 学习率曲线

Bland-Altman图

工具箱默认会为监督和无监督方法生成Bland-Altman图,用于图形化比较两种测量技术。这些图表同样保存在 runs/exp 目录下。下图展示了在UBFC-rPPG数据集上训练和验证,并在PURE数据集上测试后生成的Bland-Altman图:

散点图 差异图

神经网络预测结果可视化

tools/output_signal_viz 目录下提供了用于可视化测试集神经网络输出预测和标签的Python notebook。该notebook可以绘制预测的PPG信号与地面实况PPG信号的对比图。

预测结果可视化示例

配置文件说明

rPPG-Toolbox使用YAML文件来控制训练和评估的所有参数。您可以修改现有的YAML文件以满足自己的训练和测试需求。以下是一些重要参数的说明:

  • TOOLBOX_MODE:

    • train_and_test: 在数据集上训练并使用新训练的模型进行测试
    • only_test: 使用预训练模型进行测试,需要设置INFERENCE-MODEL_PATH
  • TRAIN / VALID / TEST / UNSUPERVISED DATA:

    • DATA_PATH: 原始数据的输入路径
    • CACHED_PATH: 预处理数据的输出路径
    • BEGIN & END: 用于训练/验证/测试的数据集部分
    • DATA_TYPE: 如何预处理视频数据
    • LABEL_TYPE: 如何预处理标签数据
    • DO_CHUNK: 是否将原始数据分割成更小的块
    • DO_CROP_FACE: 是否执行人脸检测
  • MODEL: 设置使用的模型(支持Deepphys, TSCAN, Physnet, EfficientPhys, BigSmall和PhysFormer及其参数)

  • UNSUPERVISED METHOD: 设置使用的无监督方法,例如: ["ICA", "POS", "CHROM", "GREEN", "LGI", "PBV"]

  • METRICS: 设置使用的评估指标,例如: ['MAE','RMSE','MAPE','Pearson','SNR','BA']

扩展工具箱

rPPG-Toolbox支持灵活的扩展,您可以轻松添加新的数据集、神经网络算法和无监督算法。

添加新数据集

  1. dataset/data_loader 中创建新的Python文件,例如 MyLoader.py
  2. 实现必要的函数,包括 preprocess_dataset, read_videoread_wave
  3. 根据需要重写可选函数
  4. 在 configs/ 目录下创建新的YAML文件设置参数,并在 config.py 中添加新参数的定义和初始值

添加新的神经网络算法

  1. neural_methods/model 中定义新模型,例如 NewModel.py
  2. neural_methods/trainer 中实现相应的训练/测试例程,例如 NewModelTrainer.py
  3. 在 main.py 中添加逻辑以在 train_and_testtest 函数中使用新模型
  4. 在 configs/ 目录下创建对应新算法的YAML文件

添加新的无监督算法

  1. unsupervised_methods/methods 中定义新算法,例如 NewMethod.py
  2. 在 main.py 中添加逻辑以在 unsupervised_method_inference 函数中使用新算法
  3. 在 configs/ 目录下创建对应新算法的YAML文件

高级功能

弱监督训练

对于不含高质量同步PPG波形标签的数据集,rPPG-Toolbox提供了使用"伪"标签进行训练的选项。这些标签是通过对POS生成的PPG波形进行带通滤波和希尔伯特包络归一化得到的。

伪标签示例

运动增强训练

rPPG-Toolbox支持使用合成的运动增强数据集进行训练,以增加rPPG视频的运动多样性。这些数据集是使用MA-rPPG Video Toolbox生成的。您可以按照以下步骤使用运动增强数据集:

  1. 按照MA-rPPG Video Toolbox的说明生成运动增强数据集
  2. 在配置文件中将 DATA_AUG 参数设置为 'Motion'
  3. 运行相应的配置文件

运动增强示例

多任务学习

rPPG-Toolbox实现了BigSmall作为示例,展示了如何扩展工具

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

QoderWork

QoderWork

阿里Qoder团队推出的桌面端AI智能体

QoderWork 是阿里推出的本地优先桌面 AI 智能体,适配 macOS14+/Windows10+,以自然语言交互实现文件管理、数据分析、AI 视觉生成、浏览器自动化等办公任务,自主拆解执行复杂工作流,数据本地运行零上传,技能市场可无限扩展,是高效的 Agentic 生产力办公助手。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成热门AI工具AI图像AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

下拉加载更多