信息速览
Brno University of Technology Smartphone PPG Database (BUT PPG) — 智能手机 PPG 质量评估与心率估计专家共识标注库
一句话定位:这是目前少数公开、带专家共识质量标注、且用真实智能手机摄像头采集的 PPG 数据集——它回答的不是"心率算法准不准",而是更靠前的一步:“这 10 秒的手腕/指尖/耳侧信号,到底值不值得拿去算心率?”
§0 导读:这个数据集解决什么问题
0.1 一个被忽视的前置问题
智能手机摄像头测心率(camera-based heart rate)是过去十年消费级健康监测最普及的应用之一:把指尖按在镜头与闪光灯上,或把手机贴在耳边,前置摄像头就能从皮肤反射的微弱光强波动里"读"出心跳。这类技术便宜、无袖带、随手可得,手机厂商与 App 厂商竞相把它包装成"随时随地的健康管家"。
但几乎所有权威评估都会指出同一个尴尬事实:大量心率估计 App 既未经测试、也未经认证、更未经过医学专家验证(本数据集论文原文即作此判断,少数例外如用于房颤检测的 Preventicus Heartbeats、FibriCheck、Happitech)。问题的根源不在"算法不够聪明",而在输入信号本身经常不可用:手指没按稳、镜头被指甲遮挡、走路时的抖动、环境光突变、说话或咳嗽带来的体动伪迹……这些情况下,PPG 波形已经"脏"到无法可靠定位脉搏峰,任何下游算法都只会给出错误的心率。
因此,一个工程上更稳健的架构是:先做信号质量评估(Signal Quality Assessment, SQA),再决定是否估计心率。若质量差,设备应丢弃这段信号并提示用户重测,而非硬算出一个漂亮却错误的数字。BUT PPG 数据集,正是为这个"前置质量闸门"而生的公开标注库。
0.2 BUT PPG 的独特之处
布尔诺理工大学(Brno University of Technology, BUT)生物医学工程系的心脏学团队,用两部真实智能手机(小米 Mi9、华为 P20 Pro)的摄像头,招募 50 名受试者,在其静息与八种刻意制造伪迹的运动状态下,采集了 3,888 条 10 秒 PPG 信号,并同步用医疗级设备录制参考 ECG 与三轴加速度。每条 PPG 信号都由生物医学专家按国际标准(IEC 60601-2-27)的更严阈值独立估读心率,再取共识,得到二值质量标签。
它的不可替代性体现在三点:
- 真实设备、真实伪迹:不是实验室台式 PPG 仪,而是手机摄像头;伪迹不是"后期添加的噪声",而是受试者真的在走路、咳嗽、大笑、说话、变光时录下来的。
- 专家共识而非单一标注:每条信号 3 或 5 名专家独立估读心率,达到共识比例才判"良好",避免单标注者的主观偏差。
- 完全开放:CC BY 4.0,PhysioNet 无 gated 直链下载,可自由用于商业与非商业研究。
0.3 这份条目怎么读
- 想快速了解规模与获取:看 §1 速览 与 §6 获取与许可。
- 想直接上手做算法:看 §2 数据构成、§5 加载与复现骨架、附录 C 数据字典。
- 想理解"质量标注是怎么来的":看 §3 标注体系与共识机制(这是本数据集最核心的方法学)。
- 想避开检索与使用陷阱:看 §10 避坑清单与坑点档案。
- 想找同类数据集做对照:看 §9 与库内条目的关系。
0.4 阅读前须知:三个最常被搞错的点
在进入正文前,先记住三件事,能帮你避免 90% 的误读:
- 规模看版本:论文里写的 48 条是 v1.0.0 的旧规模,最新 v2.0.0 有 3,888 条。看到"BUT PPG 只有 48 条"的说法,多半是读了 2021 年的旧资料。
- 标签是"能不能测出心率":质量标签 1/0 不是"波形好不好看",而是"专家能否从这段 PPG 测出与 ECG 参考相差 ≤5 bpm 的心率"。这是功能性定义。
- 一致率才是可信度证据:判断标注可不可信,看专家与共识的 93.3% 一致率,而不是论文里那三个自动基线的 56.6%/67.1%/74.1%——后者只是对照,不代表数据集质量。
带着这三点进入正文,你会发现这个数据集的设计逻辑其实非常清晰:用真实设备采集、用专家共识标注、用开放许可分发,把"信号质量评估"这件被长期忽视的事,做成了可复现的公共基础设施。
§1 数据集速览:十问十答
Q1:BUT PPG 是什么?
布尔诺理工大学智能手机 PPG 数据库(Brno University of Technology Smartphone PPG Database, BUT PPG),是一个带专家共识质量标注的智能手机摄像头 PPG 数据集,托管于 PhysioNet,用于开发与评估 PPG 信号质量评估算法和心率估计算法。
Q2:它有多大?
最新版本 v2.0.0 含 3,888 条 10 秒记录,来自 50 名受试者(25 女 / 25 男,19-76 岁)。最初 v1.0.0 仅 48 条(12 名受试者),2024 年扩展版新增 3,840 条(38 名受试者)。
Q3:信号是怎么采的?
用智能手机摄像头:小米 Mi9(v1)与华为 P20 Pro(v2)后置摄像头测指尖,或前置摄像头测耳侧(打电话姿势)。视频逐帧对红(v2 起含绿、蓝)通道取平均得到 PPG,采样率 30 Hz。同步用 Bittium Faros 360/180 采集单导联参考 **ECG(1,000 Hz)**与三轴 ACC(100 Hz)。
Q4:有哪些标签?
每条信号有:二值质量标签(1 良好 / 0 差)、参考心率 HR、QRS/心搏位置;扩展部分还附血压、血糖、SpO2 单值。
Q5:质量标签可靠吗?
由 3 或 5 名生物医学工程专家独立估读心率,以"与参考 HR 绝对误差 ≤5 bpm"为良好判据(依据 IEC 60601-2-27 且更严),达到共识比例方判"良好"。标注者与最终共识的一致率达 93.3%。
Q6:好信号多还是差信号多?
扩展部分 良好仅 20.7%(795 条),差 79.3%(3,045 条)。耳部信号质量明显更差(良好 10.6%),指部较好(良好 31.3%)。
Q7:许可是什么?能商用吗?
CC BY 4.0(Creative Commons Attribution 4.0 International),PhysioNet 标记为 Database Open Access,无申请门槛,署名即可用于商业与非商业用途。
Q8:怎么下载?
PhysioNet 内容页 https://physionet.org/content/butppg/2.0.0/ 直接下载,或用 wget -r -N -c -np https://physionet.org/files/butppg/2.0.0/,或 aws s3 sync --no-sign-request s3://physionet-open/butppg/2.0.0/ DESTINATION。未压缩 203.3 MB,ZIP 86.7 MB。
Q9:主要拿来做什么?
① PPG 质量评估(二分类);② 心率估计;③ QRS/心搏检测;④ 从 PPG 估计血压/血糖/SpO2;⑤ 用 ACC 辅助质量评估。
Q10:谁适合用?
可穿戴健康与远程患者监测算法团队、PPG/ECG 信号处理研究者、手机健康 App 的产品与验证团队、数字健康监管研究团队。
§2 数据构成与规格
2.1 规模、来源与机构构成
BUT PPG 由布尔诺理工大学(Brno University of Technology)电气工程与通信学院**生物医学工程系(DBME)**的心脏学团队创建。全部作者来自同一机构,部分作者兼属捷克科学院仪器科学研究所(Institute of Scientific Instruments, The Czech Academy of Sciences)。核心成员包括 Andrea Nemcova、Eniko(Enikö)Vargova、Radovan Smisek、Lucie Marsanova(Maršánová)、Lukas Smital、Martin Vitek;扩展版本加入 Marina Filipenska、Pavlina Sikorova、Pavel Gálik。
数据集分两个版本发布,规模呈数量级跃升:
| 项目 | v1.0.0(2021-01-18) | v2.0.0(2024-08-23) |
|---|---|---|
| 记录数 | 48 条 10 秒 | 3,888 条 10 秒 |
| 受试者 | 12(6 女 / 6 男) | 50(25 女 / 25 男) |
| 年龄 | 21-61 岁(均值 36,中位 24) | 19-76 岁(33±17 岁) |
| 手机 | 小米 Mi9 | 小米 Mi9 + 华为 P20 Pro |
| 采集部位 | 仅指尖 | 耳(1,962)+ 指(1,878) |
| 颜色通道 | 仅红通道 | 红 + 绿 + 蓝(112001 起) |
| ACC 数据 | 无 | 有(100 Hz,三轴) |
| QRS 位置 | 有 | 有(扩展部分 49,540 个心搏) |
| 生理参考 | 无 | 血压 / 血糖 / SpO2 单值 |
| 记录期 | 2020-08 至 2020-10 | 2020-08 至 2021-12 |
其中,v2.0.0 相对 v1.0.0 的净增部分(记录 112001 起)为 3,840 条新信号、38 名新受试者(19 男 / 19 女),是 2024 年 CinC 论文所描述的"扩展"(extension)。38 + 12 = 50,3,840 + 48 = 3,888,两个版本在人数与信号数上精确闭合。
扩展部分受试者的人体测量范围为:身高 154-194 cm(174±10 cm)、体重 47-110 kg(73±15 kg)、BMI 18-33,Fitzpatrick 皮肤类型 II-IV。作者明确说明受试者为健康受试者,这是使用该数据集做模型训练时必须记住的人群边界。
2.2 信号规格与文件组织
所有数据以 PhysioNet 标准的 **WFDB(WaveForm Database)**格式提供。每条记录是一个以六位数字命名的文件夹:
- 记录 ID 规则:六位数字 = 前三位受试者标识 + 后三位该受试者的测量序号。例如
141105= 受试者 141 的第 105 次测量。记录 100001-111004 属 v1.0.0,112001 起属 v2.0.0 扩展。 - 分文件:PPG →
ID_PPG.dat+ID_PPG.hea;ECG →ID_ECG.dat+ID_ECG.hea;ACC →ID_ACC.dat+ID_ACC.hea(112001 起);QRS 位置 →ID.qrs。
采样率与通道:
| 信号 | 采样率 | 导联/通道 | 采集设备 |
|---|---|---|---|
| PPG | 30 Hz | 红(v2 起红/绿/蓝) | 手机摄像头(小米 Mi9 / 华为 P20 Pro) |
| 参考 ECG | 1,000 Hz | 单导联 | Bittium Faros 360 或 180 |
| ACC | 100 Hz | 三轴 | Bittium Faros 360 或 180 |
PPG 的生成方式:录一段手机视频,对每一帧的(红)通道取平均得到该时刻一个 PPG 样本,最后对信号取反(inverted)。v1 视频分辨率 720×1280 px;只取中间 10 秒(去掉开头的不稳定段)以消除信号漂移。
2.3 标注文件与元数据
除波形外,数据集附带三个关键文本文件:
quality-hr-ann.csv(质量与 HR 标注):三列——信号 ID、二值质量标签(1 良好 / 0 差)、参考心率 HR。subject-info.csv(受试者与测量元信息):人口学(性别、年龄、身高、体重)、采集部位、运动状态、生理参考。raw-HR-annotations.csv(v1):各标注者的原始 HR 估读值(便于研究者复现共识判定)。
subject-info.csv 的字段编码尤其重要,它把每条信号放进明确的"情境"中:
- 采集部位:
0= 耳(前置摄像头,打电话姿势);1= 指(后置摄像头)。 - 运动状态:
0静息 /1加指耳压 /2镜头移动 /3步行 /4咳嗽 /5大笑 /6变光 /7说话。 - 生理参考:血压(Fora D40)、血糖(Fora Diamond Mini)、SpO2(Gima 脉搏血氧仪)。
这套编码让研究者可以精确地做分层评估——例如"仅指部静息信号上的质量模型,迁移到耳部步行信号时掉多少分"。这是很多 PPG 数据集缺失、而 BUT PPG 特意保留的维度。
2.4 采集协议:八种伪迹如何被"制造"出来
扩展部分的采集协议设计得相当细:每名受试者在两次独立 session 中各走一遍包含静息与活动的流程,开头 15 秒用于信号稳定(不入库),随后依次为:140 s 静息 → 20 s 加指/耳压 → 20 s 静息 → 20 s 镜头移动 → 20 s 静息 → 20 s 步行 → 20 s 静息 → 20 s 咳嗽(≥3 次)→ 20 s 静息 → 20 s 大笑 → 20 s 静息 → 40 s 变光 → 20 s 静息 → 20 s 说话 → 120 s 静息结束。
这种"静息-伪迹-静息"交替的块状设计有明确目的:既能拿到干净的基线信号,又能拿到对应真实生活场景的、带可控伪迹的信号,且每种伪迹都有大量重复而非孤立样本。它直接支撑了 CinC 2024 论文里那张"各活动下良好质量信号占比"的柱状图(Figure 1)——结论是各种活动都会拉低 PPG 质量,对耳部信号尤甚。
2.5 与 v1 的边界:一次性看清楚版本差异
一个常见的检索困惑是"该引用哪个版本、用哪个 DOI"。这里给出一张对照:
- v1.0.0:Published 2021-01-18;DOI 10.13026/7vy8-av04;48 条;主论文 10.1155/2021/3453007(Biomed Res Int 2021)。
- v2.0.0:Published 2024-08-23;discovery DOI 10.13026/tn53-8153;3,888 条;扩展说明见 CinC 2024 论文 10.22489/CinC.2024.055。
- latest version DOI:10.13026/gxwp-p940(PhysioNet 提供的"始终指向最新版"的 DOI)。
若做研究,建议:用数据引 v2.0.0,方法引主论文,版本扩展引 CinC 2024,另附 PhysioNet 平台标准引用(Goldberger 2000)。PhysioNet 页面本身也给出了这套组合引用建议。
2.6 一句话理解三个文件的分工
初次接触该数据集的人常被"波形 + 两个 CSV"搞混。这里用一句话说清分工:
- 波形文件(
ID_PPG/_ECG/_ACC+ID.qrs):是"原料",信号本身。 quality-hr-ann.csv:是"答案纸",告诉你每条信号好不好、心率是多少。subject-info.csv:是"背景卡",告诉你这条信号是谁、在哪测的、什么状态下测的、当时的血压血糖血氧。
做质量评估只需前两者;做分层分析(按部位/运动状态)必须用第三份;复现共识判定则用 v1 的 raw-HR-annotations.csv。三份文件通过六位记录 ID 关联,这是整个数据集的主键。
2.7 数据规模在同类中的量级感受
为了建立直觉:3,888 条 × 10 秒 ≈ 10.8 小时的 PPG 信号;若只取质量良好的 795 条,约 2.2 小时。对训练轻量质量分类器而言,这个量级足够;对训练端到端深度心率估计模型而言,则偏小,通常需要与其它数据集联合或做迁移学习。理解这一点,能避免"数据下载完发现不够训大模型"的落差。
§3 标注体系与共识机制:本数据集的方法学核心
3.1 为什么质量标签要"多人共识"
PPG 质量评估看似简单(信号好不好),实则高度主观:同一条波形,有经验的专家可能认为"勉强能测出心率",另一位则判"不可靠"。若数据集只由一人标注,标签里就混进了该标注者的个人偏好,训练出的模型学到的可能是"某人的口味"而非"信号的真实可用性"。
BUT PPG 的应对是多专家独立标注 + 共识判定 + 国际标准阈值,三者缺一不可。这也是作者反复强调的"unique feature":
“the quality annotations of each signal is based on 5 experts’ annotations and their consensus, meeting international standard guidelines, and moreover meeting the stricter variation.”
3.2 标注流程四步
第一步:专家估读 HR。 标注者为生物医学工程专家(v1 为 5 人,扩展版从 6 人池中每次抽 3 人)。他们使用作者自研的标注软件,软件界面包含:原始 PPG 波形、经平稳小波变换(Stationary Wavelet Transform, SWT)分解后的各频带、各频带估出的 HR、经快速傅里叶变换(FFT)得到的频谱及谱估 HR、以及一把用于手动测量峰间距的"标尺"。
第二步:对 ECG 盲。 标注者只能看到 PPG 信号,看不到参考 ECG——因为 ECG 是用来做标准答案的。他们也可以选择"拒绝估读",即当认为无法可靠估计 HR 时直接放弃,这正是判"差"的一种表达。
第三步:随机呈现、去情境。 PPG 段以随机顺序出现,标注者不知道某段是静息还是运动状态采集的。这避免了"看到是步行段就先入为主判差"的暗示偏差。
第四步:共识判决。 判据分两层:
- 单专家层:其估读 HR 与参考 HR 的绝对差 ≤ 5 bpm,则从该专家视角这是"良好"信号。阈值 5 bpm 来自国际标准 IEC 60601-2-27(心电监护设备的基本安全与性能要求),且本数据集比标准更严格。
- 共识层:v1 要求 5 人中 ≥3 人判良好,扩展版要求 3 人中 ≥2 人判良好;达标记
1(良好),否则记0(差)。
3.3 一致率:标注可信度的量化证据
作者报告了标注者个体判断与最终共识的一致率:
| 分层 | 一致率 |
|---|---|
| 全体信号 | 93.3% |
| 耳部信号 | 94.1% |
| 指部信号 | 92.4% |
三个数字都在 92% 以上,说明专家之间的判断高度收敛,共识标签是可信的。值得注意的是耳部一致率略高于指部——这看似反直觉,实则合理:耳部信号整体质量差、界限更分明(要么好要么明显差),而指部信号质量分布更连续、处于"临界区"的信号更多,反而更容易产生分歧。
3.4 非专家自动基线的对照(重要坑点)
CinC 2024 论文还用三个"非专家"自动化方法做了对照,看它们与共识的匹配率有多低:
| 自动化方法 | 说明 | 与共识匹配率 |
|---|---|---|
| 中位 HR(77 bpm) | 用全库中位心率作固定值,按同法判质量 | 56.6% |
| 文献均值 HR(65 bpm) | 基于 Quer 等对 92,457 名受试者的均值心率 | 67.1% |
| SWT 第 4 频带峰值法 | 对每段 PPG 做 SWT 分解,在约 0.9-1.9 Hz 频带自动找峰估 HR | 74.1% |
这里埋着一个必须警示的坑:这三个数字只是"指示性"的(indicative only),作者明确说它们并未参与共识判定。也就是说,56.6% 这类数字不是"专家准确率",而是"一个粗糙自动规则碰巧撞对多少"。检索者若把 56.6% 误读为"该数据集质量标注不可靠",就完全误解了论文。真正的可信度证据是 3.3 节的 93.3% 一致率。
3.5 与既有质量评估方法的差异
传统 PPG 质量评估算法多基于规则或信号统计特征(峰间期变异、模板相关性、频谱质量指数等)。BUT PPG 的价值在于:它提供了一个以"能否准确测出 HR"这一临床/功能目标为导向的质量标签——“良好"不是"波形好看”,而是"这段信号足以让专家测出接近真值的心率"。这一定义与下游任务(心率估计)直接对齐,比纯形态学判据更有针对性。
§4 质量发现:伪迹、部位与心率的真实图景
4.1 好信号其实是少数
扩展部分 3,840 条信号的质量分布为:
| 类别 | 数量 | 占比 |
|---|---|---|
| 良好(quality = 1) | 795 | 20.7% |
| 差(quality = 0) | 3,045 | 79.3% |
也就是说,真实手机摄像头采集的 PPG 里约八成不可靠。这个结果对"手机测心率很准"的流行叙事是一个直接的反驳:在受控采集、受试者配合、专家在场的情况下,仍只有约五分之一信号达到"可用于心率估计"的标准。它从实证角度论证了质量前置闸门的必要性——如果不做质量筛选,直接对全部信号算心率,错误率将极高。
4.2 耳 vs 指:一个数量级的质量差
按采集部位拆开看,差距非常显著:
| 部位 | 信号数 | 良好率 |
|---|---|---|
| 耳(前置摄像头,打电话姿势) | 1,962 | 10.6% |
| 指(后置摄像头,指尖按压) | 1,878 | 31.3% |
指部良好率约为耳部的三倍。原因符合生理与工程直觉:指尖按压镜头时接触稳定、光照路径固定、血流灌注信号强;而耳侧采集时手机难以固定、环境光干扰大、姿势易漂移,且头部运动(说话、咳嗽、笑、走路)直接耦合进信号。
双口径提示:CinC 2024 摘要把这两个数字四舍五入为"耳 11% / 指 31%“,并给出总良好率"21%”;正文精确值为"10.6% / 31.3%",扩展部分精确计数良好 795 条(20.7%)。本条目以正文精确值为主,括注摘要口径。
4.3 各运动状态下的质量坍缩
论文 Figure 1 用柱状图给出了"静息 vs 各类活动"下良好质量信号的占比。定性结论可以概括为:
- 静息是质量最高的状态(无论耳或指)。
- 加指/耳压、镜头移动、步行、咳嗽、大笑、说话、变光等都会降低质量,其中多种活动叠加于耳部时质量下降最剧烈。
- 耳部在所有活动下都系统性低于指部,且差距在运动状态下进一步拉大。
这些活动恰好覆盖了日常使用手机测心率的典型场景——通勤(步行)、聊天(说话/大笑)、生病(咳嗽)、在明暗变化的环境中使用(变光)。因此该数据集捕捉的伪迹谱比实验室合成噪声更贴近真实部署。
4.4 HR 分布:以静息心率为主
扩展部分的参考 HR 直方图(论文 Figure 2)覆盖约 40-160 bpm,但主要集中于静息心率区间。作者说明:由于所设计的活动"体力负担都不重"(走路、咳嗽、笑等而非剧烈运动),HR 变异其实相当大但整体仍以静息为主。
这一点对算法开发的启示是:不要把 BUT PPG 当作"运动心率"数据集。它擅长的是"在杂散伪迹下能否测准静息偏差不大的心率",而非"在高强度运动导致心率飙到 150 时能否追踪"。若研究目标是运动心率追踪,应结合其他数据集(如 PPG-DaLiA 的日常活动场景,见 §9)。
4.5 过渡段与同步误差:两个必须知道的边界
作者在"局限性"一节主动披露了两个边界条件,使用者必须清楚:
- 手动同步误差:PPG 与参考 ECG 是手动对齐的,两条信号可能相差一个心搏以内。不过由于质量标注只用"整段中位 HR"而非逐搏对齐,该误差对标签影响有限,作者据此判断其可接受。
- 过渡段问题:当一种活动切换到另一种时,段与段之间会存在"过渡段",其质量特征处于两种状态之间。由于标签是逐段单一标签,过渡段的存在会引入一定标签噪声。作者并未对过渡段做特殊剔除。
这两点是"诚实的数据集"标志——它们不是缺陷被掩盖,而是被明确标出,供研究者决定是否需要在预处理阶段额外处理。
4.6 本数据集对领域的意义
从 §4.1-§4.5 可以提炼出一个清晰的方法学主张:
在消费级健康监测中,"信号是否可用"本身就是一个需要被专门建模的预测任务,且这个任务可以由一个高质量、贴近真实伪迹的公开数据集来支撑。
BUT PPG 用"专家共识 + 更严标准 + 真实设备 + 多伪迹场景"的组合,把这个此前多为私有、或标注粗糙的任务,变成了一个可公开复现、可横向比较的基准。这也是它被广泛引用、并被多篇 PPG 质量评估论文选作评测集的原因。
4.7 对产品团队的直接启示
如果读者来自消费级健康 App 或可穿戴产品团队,§4 的发现可以直接转化为几条产品设计原则:
- 默认开启质量闸门:既然约八成信号不可用,产品若不做质量评估就直接出 HR,误报率必然高。应在 HR 显示前先跑一个轻量质量分类器。
- 引导用户到指部采集:指部良好率(31.3%)约为耳部(10.6%)三倍。若产品同时支持耳/指两种模式,应优先引导指尖按压,把耳侧作为宽松场景的降级选项。
- 运动状态给不同预期:步行、说话、大笑时信号质量骤降。产品可检测到这些状态时提示"请保持静止",而非静默给出可疑读数。
- 用 ACC 作为质量先验:三轴 ACC 的能量是质量下降的强提示,可作为轻量前置信号。
这些原则并非 BUT PPG 的"官方建议",而是从数据分布中自然推出的工程实践——本数据集的价值恰恰在于让这些设计决策有数据可依,而非拍脑袋。
4.8 一个被低估的用途:失败案例挖掘
多数研究者关注"良好"信号,但 BUT PPG 中占 79.3% 的"差"信号对鲁棒性与失效分析研究同样宝贵:
- 它们是真实世界失败的完整记录,可用于分析"算法在何种伪迹下崩盘"。
- 它们可构造困难负样本,训练模型学会"何时该拒绝输出"。
- 结合
subject-info.csv的运动状态,可做归因分析:究竟是步行动作、还是光照变化导致了失败。
换句话说,BUT PPG 的"差信号"不是噪声,而是有标注的、可归因的失败语料库——这在异常检测、选择性预测(selective prediction)、以及"算法何时该说不"的研究中,价值不亚于良好信号。
§5 加载与复现:从下载到第一个质量分类器
5.1 下载与目录结构
BUT PPG 在 PhysioNet 上提供三种获取方式(见 §6.2),下载后目录大致如下:
butppg/2.0.0/
├── 100001/
│ ├── 100001_PPG.dat
│ ├── 100001_PPG.hea
│ ├── 100001_ECG.dat
│ ├── 100001_ECG.hea
│ ├── 100001.qrs
│ └── ...
├── 112001/
│ ├── 112001_PPG.dat
│ ├── 112001_PPG.hea
│ ├── 112001_ECG.dat
│ ├── 112001_ECG.hea
│ ├── 112001_ACC.dat
│ ├── 112001_ACC.hea
│ ├── 112001.qrs
│ └── ...
├── quality-hr-ann.csv
├── subject-info.csv
└── raw-HR-annotations.csv # v1
关键点:记录 ID 的前三位是受试者号,后三位是测量号。做交叉验证时切记按受试者分组划分(同一受试者的多次测量不能跨训练/测试集),否则会因受试者泄漏而高估性能。
5.2 用 WFDB 读取单条记录
import wfdb
# 读取一条 PPG 记录(采样率 30 Hz)
rec = wfdb.rdrecord("butppg/2.0.0/112001/112001_PPG")
ppg = rec.p_signal[:, 0] # 形状 (300,) —— 10 秒 × 30 Hz
fs = rec.fs # 30
# 读取同步参考 ECG(1000 Hz,单导联)
ecg_rec = wfdb.rdrecord("butppg/2.0.0/112001/112001_ECG")
ecg = ecg_rec.p_signal[:, 0]
# 读取 QRS 心搏位置(样本索引)
ann = wfdb.rdann("butppg/2.0.0/112001/112001", "qrs")
r_peaks = ann.sample
# 读取质量与 HR 标注
import pandas as pd
ann_df = pd.read_csv("butppg/2.0.0/quality-hr-ann.csv")
# 三列:信号 ID、二值质量标签、参考 HR
5.3 构造质量分类数据集
import pandas as pd, numpy as np, wfdb
from pathlib import Path
from sklearn.model_selection import GroupKFold
root = Path("butppg/2.0.0")
ann = pd.read_csv(root / "quality-hr-ann.csv")
meta = pd.read_csv(root / "subject-info.csv")
# 合并元信息(部位、运动状态、人口学)
df = ann.merge(meta, left_on="record", right_on="record", how="left")
X, y, groups = [], [], []
for _, row in df.iterrows():
rid = str(row["record"])
rec = wfdb.rdrecord(str(root / rid / f"{rid}_PPG"))
sig = rec.p_signal[:, 0].astype(np.float32)
X.append(sig)
y.append(int(row["quality"])) # 1 良好 / 0 差
groups.append(rid[:3]) # 前三位 = 受试者号,用于分组 CV
X = np.array(X) # (N, 300)
y = np.array(y)
groups = np.array(groups)
# 按受试者分组交叉验证,避免受试者泄漏
gkf = GroupKFold(n_splits=5)
for tr, te in gkf.split(X, y, groups):
... # 训练/评估
5.4 一个最小特征基线
质量评估的经典做法是提取信号特征再分类。以下骨架给出可复现的起步特征:
import numpy as np
from scipy.signal import welch, find_peaks
def ppg_features(sig, fs=30):
feats = {}
sig = sig - np.mean(sig)
# 1) 频谱质量:主频带能量占比
f, pxx = welch(sig, fs=fs, nperseg=min(len(sig), 128))
band = (f >= 0.7) & (f <= 3.5) # 约 42-210 bpm
feats["band_ratio"] = pxx[band].sum() / (pxx.sum() + 1e-12)
# 2) 峰间期变异
pk, _ = find_peaks(sig, distance=int(0.4 * fs))
if len(pk) >= 2:
ibi = np.diff(pk) / fs
feats["ibi_std"] = float(np.std(ibi))
feats["ibi_mean"] = float(np.mean(ibi))
feats["n_peaks"] = len(pk)
else:
feats["ibi_std"] = np.nan
feats["ibi_mean"] = np.nan
feats["n_peaks"] = 0
# 3) 信号幅度与动态范围
feats["amp_std"] = float(np.std(sig))
feats["amp_ptp"] = float(np.ptp(sig))
# 4) 频谱熵(低熵=干净)
p = pxx / (pxx.sum() + 1e-12)
feats["spec_entropy"] = float(-np.sum(p * np.log(p + 1e-12)))
return feats
用这些特征训练一个梯度提升树或逻辑回归,即可得到一个可用的质量分类基线。注意类别不均衡(良好约 20%):评估时务必报告敏感性/特异性或平衡准确率、AUROC、AUPRC,而非单看准确率——把所有信号判"差"就能拿到 79% 的准确率,这是无意义的。
5.5 把 ACC 用起来
记录 112001 起附三轴 ACC(100 Hz)。运动是质量下降的主要外部原因,因此 ACC 可以直接作为质量评估的辅助输入:
acc_rec = wfdb.rdrecord("butppg/2.0.0/112001/112001_ACC")
acc = acc_rec.p_signal # (1000, 3) —— 10 秒 × 100 Hz × 3 轴
acc_mag = np.linalg.norm(acc, axis=1) # 合加速度幅值
acc_energy = np.sum(acc_mag ** 2) # 运动能量,越大越可能信号差
作者在 “Usage Notes” 中明确指出:ACC 信号可用于 ECG/PPG 的质量评估。这是一个常被忽略但很有价值的信号源。
5.6 关于「多通道」的复现注意
扩展部分的 PPG 从视频的红、绿、蓝三通道分别提取(v1 仅红通道)。数据集提供的 PPG 文件通常以红通道为主标注对象(质量标签基于红通道),但三通道波形对研究"哪一通道更抗伪迹"很有用。使用时先确认具体版本的通道配置,避免把单通道当三通道读取。
5.7 常用评估口径建议
由于本数据集是分类 + 回归的复合任务,建议报告:
- 质量评估:AUROC、AUPRC、平衡准确率、敏感性/特异性、F1(good 类)。
- HR 估计:MAE、RMSE(bpm)、Pearson r、Bland-Altman 一致性界限,以及"误差 ≤5 bpm 比例"(与标注阈值对齐,便于横向比较)。
- 分层报告:耳 vs 指、静息 vs 各活动,避免总体数字掩盖部位/状态差异。
§6 获取与许可:一扇几乎无门槛的门
6.1 许可:CC BY 4.0
BUT PPG 的文件许可为 Creative Commons Attribution 4.0 International(CC BY 4.0),PhysioNet 数据库层面标记为 Database Open Access。这意味着:
- 可自由使用:复制、分发、改编、商用均允许。
- 唯一硬性义务是署名:需保留作者署名、许可声明,并注明是否做了修改。
- 无 gated、无申请、无签署协议:不需要注册账号、不需要发邮件求权限、不需要填写用途说明。
这在生理信号数据集里相当罕见——很多同类数据(如部分临床 PPG/ECG 库)需要签署数据使用协议(DUA)或走机构申请流程。BUT PPG 的开放性显著降低了复现与研究门槛,也是它被广泛采用的重要原因之一。
6.2 三种下载方式
方式一:网页下载。 打开 https://physionet.org/content/butppg/2.0.0/ ,在 “Files” 区直接下载 ZIP(86.7 MB)或单文件。
方式二:wget 递归下载(推荐,可断点续传):
wget -r -N -c -np https://physionet.org/files/butppg/2.0.0/
方式三:AWS 命令行(no-sign-request):
aws s3 sync --no-sign-request s3://physionet-open/butppg/2.0.0/ DESTINATION
方式四(Python):用 wfdb 库配合 PhysioNet 直链批量拉取,或使用 physionet 相关工具。
未压缩总大小 203.3 MB,对本地实验非常友好。
6.3 引用规范
使用该数据集时,PhysioNet 页面建议的引用组合为:
-
数据本体(v2.0.0):
Nemcova, A., Smisek, R., Vargova, E., Maršánová, L., Vitek, M., Smital, L., Filipenska, M., Sikorova, P., & Gálík, P. (2024). Brno University of Technology Smartphone PPG Database (BUT PPG) (version 2.0.0). PhysioNet. RRID:SCR_007345. https://doi.org/10.13026/tn53-8153 -
原始论文:
Nemcova A, Vargova E, Smisek R, Marsanova L, Smital L, Vitek M. Brno University of Technology Smartphone PPG Database (BUT PPG): Annotated Dataset for PPG Quality Assessment and Heart Rate Estimation. BioMed Research International. 2021 Sep 7;2021. https://doi.org/10.1155/2021/3453007 -
PhysioNet 平台标准引用(使用任何 PhysioNet 资源都应附):
Goldberger, A., Amaral, L., Glass, L., Hausdorff, J., Ivanov, P. C., Mark, R., … & Stanley, H. E. (2000). PhysioBank, PhysioToolkit, and PhysioNet: Components of a new research resource for complex physiologic signals. Circulation, 101(23), e215-e220.
若使用了扩展部分,还宜引用 CinC 2024 扩展论文:Nemcova A, et al. Extension of the PhysioNet Brno University of Technology Smartphone PPG Database. Computing in Cardiology 2024;51. https://doi.org/10.22489/CinC.2024.055
6.4 AI-Ready 评估:一个开放数据集的高分样例
从"AI-Ready 数据集"的五个维度看,BUT PPG 表现突出:
| 维度 | 评估 |
|---|---|
| 可发现性(Discoverability) | 高——PhysioNet 权威托管,有稳定 DOI、RRID、论文双重锚点 |
| 可获取性(Accessibility) | 高——CC BY 4.0 无 gated,多种下载方式,体积小 |
| 可互操作性(Interoperability) | 高——WFDB 标准格式,wfdb 库原生支持,CSV 标注易解析 |
| 可复用性(Reusability) | 高——清晰元数据、部位/运动编码、原始标注文件、专家共识标签 |
| 溯源与归因(Provenance) | 高——版本化 DOI、论文、IRB 批号、资助信息完整披露 |
唯一需要留意的复用边界是人群与设备:健康受试者、Fitzpatrick II-IV 皮肤类型、两款特定手机。跨人群/跨设备迁移时需外部验证。
6.5 与库内可获取性光谱的对照
在本库(qianfanghub)的生理信号类条目中,BUT PPG 属于开放程度最高的一档。对照如下:
- CC BY / 完全开放:BUT PPG、部分 PhysioNet 开放库。
- DUA/申请制:部分临床波形库需签署使用协议。
- 受控访问:需 IRB 与机构审批(如某些 ICU 数据库)。
- 仅论文、数据不公开:部分队列研究。
BUT PPG 的"开放 + 专家标注 + 真实设备"组合,使其在可获取性光谱上处于"高开放度"端,同时标注质量又不因开放而打折,这是它区别于许多"开放但标注粗糙"数据集的关键。
6.6 使用许可时的实务提醒
- 署名要到位:CC BY 要求注明作者、来源、许可,并标注修改。发表论文/产品文档中至少引用上述 DOI。
- 不要声称官方背书:CC BY 允许商用,但不代表布尔诺理工大学为你的产品背书。
- 注意 v1/v2 引用:若只用了 48 条 v1 数据,引 v1 DOI;若用了 3,888 条,引 v2 DOI。混引会让复现者困惑。
- 医学免责:数据集用于算法研究,不构成医疗器械或临床诊断依据;任何面向患者的应用需另行完成监管验证。
6.7 与需要签署协议的数据集对比
为了帮助读者判断"该不该优先选 BUT PPG",这里对照三类常见获取门槛:
| 类型 | 典型要求 | 典型周转 | BUT PPG |
|---|---|---|---|
| 完全开放(CC BY) | 无需申请,署名即可 | 即时 | ✅ 属此类 |
| 申请制(DUA/请求) | 邮件说明用途、机构隶属,签署协议 | 数天至数周 | — |
| 受控访问(IRB 审批) | 机构 IRB 批准 + 数据使用委员会 | 数周至数月 | — |
| 不公开 | 仅论文、数据不发放 | 不可及 | — |
BUT PPG 处于"即时可得"这一最开放档。对于想快速验证想法、或缺少机构 IRB 通道的研究者/小团队/独立开发者,这个可获取性优势尤其明显——你可以在一个下午内下载完数据、跑通第一个质量分类基线。
§5.8 复现清单:从零到可复现结果
为了让"复现"落到可操作的粒度,这里给出一个端到端清单:
- 环境:Python 3.9+,安装
wfdb numpy pandas scikit-learn scipy。 - 下载:
aws s3 sync --no-sign-request s3://physionet-open/butppg/2.0.0/ ./butppg。 - 核对:确认
quality-hr-ann.csv行数与记录文件夹数一致(v2 应约 3,888)。 - 加载:用
wfdb.rdrecord批量读取 PPG,得到形状(N, 300)。 - 合并元数据:把
subject-info.csv按记录 ID 并入标注表。 - 特征/模型:见 §5.4 骨架或直接用一维 CNN。
- 分组划分:
GroupKFold按rid[:3]分组,5 折。 - 不均衡处理:class_weight 或重采样。
- 评估:AUROC/AUPRC/平衡准确率,并分耳/指、静息/活动报告。
- 记录:保存随机种子、划分方式、指标,附引用。
把这十步写进 README,你的结果就是可被他人复现的。
§7 生态与影响:一个捷克实验室的持续工程
7.1 前作与谱系
BUT PPG 并非孤立产物,而是布尔诺理工大学生物医学工程系在"智能手机生理监测"方向上的连续积累:
- Nemcova 等(2020):Monitoring of heart rate, blood oxygen saturation, and blood pressure using a smartphone. Biomedical Signal Processing and Control, 59. doi:10.1016/j.bspc.2020.101928——智能手机监测 HR/SpO2/BP 的方法学先导。
- Smital 等(2020):Robust QRS Detection Using Combination of Three Independent Methods. Computing in Cardiology 2020——本数据集用于生成参考 HR 的鲁棒 QRS 检测器即出自此,三种独立方法组合后手动核验。
- Peng 等(2015):Extraction of Heart Rate Variability from Smartphone Photoplethysmograms.——手机 PPG 提取 HRV,是红通道提取方法的引用基础。
这条谱系说明:BUT PPG 的方法(视频取帧平均得 PPG、QRS 组合检测、专家共识)都有扎实的前作支撑,不是一次性的数据发布。
7.2 版本演进的动机
从 v1(48 条)到 v2(3,888 条)的跃升,背后是明确的工程动机:作者指出,AI 方法要开发稳健准确的算法,需要大的数据量,且"经过核验的标注"更为可贵。v1 证明了"手机 PPG + 专家共识标注"的可行性;扩展版则把它做到"足以训练深度学习模型"的规模,并补充了 ACC、多通道、生理参考值等模态。
CinC 2024 论文的 “Challenge” 一节还展望了后续方向:持续增加信号、把标注扩展到绿/蓝通道 PPG、标注心律异常(arrhythmia)等。这说明该数据集是一个活的项目,未来可能有新版本。
7.3 在智能手机 PPG 数据集景观中的位置
CinC 2024 论文以一张对比表(Introduction 部分)列出了同类智能手机 PPG 数据集,这为检索者提供了重要的"横向坐标":
| 数据集 | 规模 | 特点 | 开放获取 |
|---|---|---|---|
| BUT PPG(本条目) | 48 → 3,888 条 | 专家共识质量+HR 标注,参考 ECG/ACC,多种真实伪迹 | 是(CC BY 4.0) |
| Welltory PPG | 21 条(68-112 s) | 13 名受试者,附 Polar H10 胸带 RR 间期 | 视情况 |
| 1KPPG | 1,000 条 | 1,000 名受试者,RGB PPG + ACC + 生命体征单值 | — |
| Fingertip Videos for HR | 51 条 | 24 名参与者,单值 HR 参考 | — |
| Blood dataset HH | 180 名受试者 | 主要用于血红蛋白水平测定 | 否 |
| AnxiECG-PPG | 47 名受试者 | PPG + ECG,用于焦虑评估 | 否 |
从表中可见,BUT PPG 在"规模 × 标注质量 × 开放性"三者上同时占优——尤其"专家共识质量标注"这一列,其他数据集大多不提供。作者也据此强调:多数数据库缺少标注,而这是 BUT PPG 的一大优势。
7.4 被外部使用与引用的方向
作为一个 CC BY 4.0 的公开质量评估基准,BUT PPG 被广泛用于以下研究场景(基于其设计定位推断):
- PPG 质量评估算法的训练与评测——这是它的首要用途,提供可比的二分类 ground truth。
- 心率估计算法的鲁棒性测试——用带伪迹的真实手机 PPG 检验算法在恶劣输入下的表现。
- QRS/心搏检测算法开发——全部信号含手动核验的心搏位置。
- 多模态生理参数估计——从 PPG 估计血压/血糖/SpO2(扩展部分提供参考值)。
- 手机健康 App 的验证基线——为消费级产品提供客观评测集。
7.5 资助与开放科学姿态
该数据集由美国海军研究办公室(ONR)Global 资助,award 号 N62909-19-1-2006(v1)与 N62909-23-1-2050(扩展)。作者声明无利益冲突。研究经布尔诺理工大学 DBME 学院 IRB 两次批准(2018-07-27 EC:EK:05b/2018;2021-09-30 EC:EK:06b/2021),受试者签署书面知情同意。这种"资助—伦理—开放发布"的完整链条,是 AI-Ready 数据集在治理层面的良好实践。
§8 方法学启示:三条可迁移的经验
8.1 "以任务目标定义质量"比"以波形形态定义质量"更实用
多数 PPG 质量评估用形态特征(基线漂移、模板匹配度、频谱集中度)判好坏,但 BUT PPG 的质量定义是功能性的:“这段信号能否让专家测出接近参考的心率”。这一转向带来两个好处:一是标签与下游任务(心率估计)直接对齐,训练出的质量模型天然服务于实际应用;二是判定标准(误差 ≤5 bpm)客观、可复现、有国际标准依据。
可迁移经验:设计信号质量标签时,先问"质量好的最终目的是什么",用目标任务的成败来定义标签,而非用信号本身的美学特征。
8.2 多专家共识 + 去情境盲评,是低成本高可信的标注范式
BUT PPG 的标注范式值得任何需要主观判定的医学数据集借鉴:
- 多人独立(3 或 5 人),减少单标注者偏差;
- 盲评关键信息(对 ECG 盲、不知运动状态),阻断暗示;
- 标准阈值(IEC 60601-2-27,且更严),让判据可辩护;
- 共识比例判定(≥2/3 或 ≥3/5),而非简单多数或平均;
- 报告一致率,让使用者能评估标签可信度。
这套组合的成本可控(专家只估读一个数值),却把标签可信度提升到 93% 以上。
8.3 真实伪迹的价值高于合成噪声
许多数据集用"对干净信号加高斯噪声/基线漂移"来造伪迹。BUT PPG 反其道而行:让受试者真的走路、咳嗽、大笑、说话、变光,把现实世界耦合进信号。这样得到的伪迹分布——非平稳、多源叠加、与生理耦合——远比人工噪声复杂,训练出的模型更可能迁移到真实部署。
可迁移经验:在条件允许时,优先采集"真实场景下的故障/异常样本",而非合成。伪迹的"真实性"本身就是数据价值。
8.4 版本化开放:一个可持续的数据集治理样本
BUT PPG 从 v1 到 v2 的演进,示范了一个良性循环:先发布小规模可用版本验证方法 → 积累使用反馈与引用 → 扩展规模并补充模态 → 用新论文记录扩展。其治理特征值得借鉴:
- 版本化 DOI:每个版本有独立 DOI,latest DOI 自动指向最新,兼顾可引用性与可追溯性。
- 增量而非覆盖:v2 在保留 v1 记录的基础上新增,旧研究的复现不受影响。
- 文档齐备:Release Notes 明确写清"v1 含哪些记录、v2 新增哪些",检索者不会困惑。
- 伦理延续:扩展部分走新的 IRB 批号(2021-09-30),合规链条不断裂。
对数据集发布方而言,这是一份可复制的"如何把一次性数据发布做成长期资产"的模板。
8.5 边界诚实:局限的公开披露
BUT PPG 在文档与论文中主动披露了多处局限(手动同步误差、过渡段、健康受试者、皮肤类型局限),这种"把短板写在明处"的做法,本身就是高质量数据集的标志。它降低了使用者的误用风险——你不会在论文写到一半才发现"原来同步是手动的"。
可迁移经验:数据集文档的价值,一半在"说明了什么能力",另一半在"坦白了什么边界"。
§7.6 一个可对照的"同类开放 PPG"检索建议
若读者使用本库检索,建议的对照检索顺序是:
- 先看本条目(butppg,手机摄像头 + 专家质量标注)。
- 对照 ppg-dalia(rid 202)——若你要的是腕带、日常活动、连续心率。
- 对照 bidmc-ppg(rid 74)——若你要的是 PPG 呼吸率。
- 对照 pulsedb(rid 182)——若你要的是 PPG+ECG 血压。
- 对照 vitaldb(rid 192)——若你要的是术中多参数生命体征。
这套顺序覆盖了从"质量评估"到"多参数估计"的 PPG 应用谱系,能帮你快速判断 BUT PPG 是否真是你要的那个。
§9 与库内条目的关系
9.1 家族图谱:生理信号与 PPG 家族
BUT PPG 在本库中属于生理信号大类下的 PPG/心电子群,与以下条目构成可直接互链的家族(附 record_id):
| 库内条目 | rid | 与 BUT PPG 的关系 |
|---|---|---|
| ppg-dalia | 202 | 最直接对照:日常活动可穿戴 PPG 心率估计(腕带 vs 手机摄像头) |
| bidmc-ppg | 74 | 用 PPG 波形估计呼吸率,同为 PPG 波形级任务 |
| pulsedb | 182 | PPG+ECG 无袖带血压估计基准,与本库 BP 单值标注互补 |
| mimic-iv-ecg | 172 | 大规模院内 12 导联 ECG,参考 ECG 侧的对照 |
| openecg | 802 | 公开九中心 120 万条 12 导联 ECG 基础模型基准 |
| apnea-ecg | 658 | 心电波形 + 呼吸事件,ECG 家族 |
| vitaldb | 192 | 术中多参数生命体征波形库,生命体征侧对照 |
| isruc-sleep | 262 | 多导睡眠图(PSG)含 ECG/PPG 类信号 |
| mros-sleep | 292 | 居家 PSG 队列,老年男性 |
| mesa-sleep | 302 | 多民族居家睡眠监测 |
| cinc-2018-sleep | 493 | PSG 睡眠微觉醒检测 |
| sleep-edf | 73 | 多导睡眠图睡眠分期基准 |
| hmc-sleep-staging | 654 | 睡眠分期 |
9.2 检索路径建议
- 若研究可穿戴 PPG 心率估计:BUT PPG(手机摄像头部)↔ ppg-dalia(腕带日常活动)↔ bidmc-ppg(呼吸率)三者对照。
- 若研究无袖带血压:BUT PPG(含 BP 单值)↔ pulsedb(专用血压波形库)。
- 若研究心电波形处理:BUT PPG(参考 ECG)↔ mimic-iv-ecg / openecg / apnea-ecg。
- 若研究睡眠/长程监测中的生理信号:BUT PPG ↔ ISRUC/MrOS/MESA/CinC2018/HMC 等 PSG 家族。
9.3 与库内 PANDA-PLUS(rid 560)的对照意义
(panda-plus 为本库方法论金标准条目之一。)二者虽分属病理图像与生理信号两个领域,但在**“专家共识标注"这一方法学维度**上高度可对照:PANDA-PLUS 用"学生+高年级+专家"三层流水线重标注病理图像;BUT PPG 用"多专家盲评+共识比例"标注 PPG 质量。两者都示范了"如何把主观判定转化为可信 ground truth”,可跨领域互相引证。
§10 避坑清单:八个已踩过的坑
以下坑点均来自对本数据集文档、论文、版本差异与元数据的实证核对,覆盖"检索—下载—加载—建模—评估"全链路。
坑 1:把 butppg 与已有 PPG 条目混淆(别名/撞库风险)。
本库已存在 bidmc-ppg(rid 74) 和 ppg-dalia(rid 202),检索 “PPG dataset” 时容易串。BUT PPG 是布尔诺理工大学手机摄像头数据集,与 BIDMC(呼吸率)、PPG-DaLiA(腕带日常活动)是三个不同数据集。建库时应确认 slug 为 butppg,避免与二者合并。
坑 2:误把 48 条当全量。
主论文(Biomed Res Int 2021)与早期资料描述的是 48 条、12 名受试者的 v1.0.0。若只读论文就下结论"数据集很小",会完全错过 2024 年的 3,888 条扩展。务必以 v2.0.0(2024-08-23)为准。
坑 3:把"自动化对照匹配率 56.6%“误读为"专家标注不准”。
CinC 2024 里的 56.6%/67.1%/74.1% 是非专家自动规则与共识的匹配率,作者明确说"仅指示性、未参与共识"。真正的标注可信度证据是专家与共识一致率 93.3%。混淆二者会得出完全错误的结论。
坑 4:忽略了"耳 vs 指"的质量鸿沟。
耳部良好率 10.6%、指部 31.3%,相差约三倍。若不按部位分层评估、直接混合训练/报告,模型在耳部信号上的性能会被指部掩盖。务必分部位评估。
坑 5:类别严重不均衡却只看准确率。
扩展部分良好仅 20.7%。全判"差"即可得约 79% 准确率。评估必须用 AUROC/AUPRC/平衡准确率/敏感性特异性,否则指标严重误导。
坑 6:训练/测试集按记录随机划分,造成受试者泄漏。
记录 ID 前三位是受试者号,同一受试者有多次测量。若按记录随机划分,同一受试者的信号会同时出现在训练与测试集,性能被高估。必须按受试者分组划分(GroupKFold on rid[:3])。
坑 7:误以为 PPG 与 ECG 完美同步。
PPG 与参考 ECG 是手动同步的,可能相差一个心搏内。做逐搏对齐的研究需谨慎处理;若只用整段中位 HR(质量标注的口径)则影响有限。作者在局限中已明确披露。
坑 8:把单通道当三通道、或忽略版本通道差异。
v1(100001-111004)PPG 仅红通道;v2 扩展(112001 起)含红/绿/蓝三通道。质量标注基于红通道。读取时若不确认版本通道配置,可能读错维度或误用未标注的绿/蓝通道。
坑 9(附加):把 BUT PPG 当"运动心率"数据集。
扩展部分活动体力负担都不重,HR 以静息为主(约 40-160 bpm,集中于静息区间)。若目标是高强度运动下的心率追踪,应结合 PPG-DaLiA 等数据集,勿指望 BUT PPG 覆盖剧烈运动场景。
坑 10(附加):混用 v1/v2 的 DOI 与引用。
v1 DOI 10.13026/7vy8-av04,v2 discovery DOI 10.13026/tn53-8153,latest DOI 10.13026/gxwp-p940。用了 3,888 条却引 v1 DOI,会让复现者困惑。按实际使用版本引用。
§10.1 坑点速查(一屏版)
坑 1 别名/撞库:butppg ≠ bidmc-ppg ≠ ppg-dalia
坑 2 误把 48 条当全量:以 v2.0.0(3,888) 为准
坑 3 误读 56.6%:那是自动基线,专家一致率是 93.3%
坑 4 忽略耳/指鸿沟:10.6% vs 31.3%
坑 5 只看准确率:良好仅 20.7%,用 AUROC/AUPRC
坑 6 受试者泄漏:按 rid[:3] 分组划分
坑 7 假设完美同步:手动同步,误差一个心搏内
坑 8 单/三通道混淆:v1 红 / v2 RGB
坑 9 当运动心率数据集:HR 以静息为主
坑 10 混用 DOI:按版本引用
这十个坑覆盖了从"找数据"到"报结果"的完整链路。建议把速查卡贴在实验代码旁的注释里,评审时对照自查。
§10.2 为什么这些坑值得单列
它们并非"显而易见"的常识,而是每一处都有人踩过的实证陷阱:
- **坑 3(误读 56.6%)**最危险,因为它来自论文正文、数字看起来很"官方",却完全指向错误结论。区分"专家一致率"与"自动基线匹配率"是读懂这篇论文的分水岭。
- **坑 6(受试者泄漏)**最隐蔽,因为代码能跑通、指标还很好看,只有按受试者分组评估后才会暴露虚高。
- **坑 4(耳/指鸿沟)**最容易被"总体数字"掩盖,导致模型在耳部场景悄悄失效。
把坑点显式写进本条目的价值,正在于让后来者"用别人的教训省自己的时间"。
§11 总结
11.1 三句话总结
- BUT PPG 是布尔诺理工大学用智能手机摄像头采集的、带多专家共识质量标注的 PPG 数据集,最新 v2.0.0 含 3,888 条 10 秒记录、50 名受试者,同步参考 ECG 与三轴 ACC。
- 它的核心价值是把"信号质量评估"这一前置任务变成了公开、可复现、贴近真实伪迹的基准——专家以 IEC 60601-2-27 更严阈值共识判定,一致率 93.3%。
- 它完全开放(CC BY 4.0,PhysioNet 无 gated 直链),规模适中(203.3 MB)、格式标准(WFDB),是手机健康监测算法开发与验证的高性价比起点。
11.2 适合谁
- 开发可穿戴/手机 PPG 质量评估算法的团队。
- 研究心率估计、尤其是鲁棒性与伪迹抑制的研究者。
- 需要带手动核验 QRS 位置参考的心搏检测算法研究者。
- 远程患者监测(RPM)、消费级健康 App 的产品与验证团队。
- 关注可穿戴生理信号数据治理与开放科学的研究者。
11.3 不适合谁
- 需要高强度运动心率场景的研究者(本数据集以静息心率为主)。
- 需要病理人群(房颤、心衰等)数据的临床研究(本库为健康受试者)。
- 需要长期连续监测数据的研究(本库为 10 秒分段,非长程)。
- 需要多导联诊断级 ECG 的研究(本库 ECG 为单导联参考,非诊断用途)。
11.4 30 秒决策卡
想要什么 ──► 用不用 BUT PPG?
├─ 手机/可穿戴 PPG 质量评估 ...... ✅ 首选(有专家共识标签)
├─ 摄像头 PPG 心率估计 ........... ✅ 适用(含真实伪迹)
├─ 心搏/QRS 检测 ............... ✅ 适用(全信号含核验位置)
├─ 从 PPG 估血压/血糖/SpO2 ...... ⚠️ 部分(扩展含单值参考,精度有限)
├─ 运动心率追踪 ................ ❌ 改用 PPG-DaLiA
├─ 临床病理人群 ................ ❌ 本库为健康受试者
└─ 商用产品验证 ................ ✅ 允许(CC BY 4.0,署名即可)
FAQ(高频问答 20 问)
A. 基础认知
A1:BUT PPG 到底是数据集还是挑战赛?
是纯数据集,不是挑战赛。它托管于 PhysioNet,提供数据 + 标注,不带排行榜。
A2:BUT 是什么的缩写?
Brno University of Technology(布尔诺理工大学),位于捷克布尔诺(Brno)。
A3:PPG 是什么?
光电容积脉搏波(photoplethysmography)。用光照射皮肤,测量血液容积随心跳的周期性变化,从中提取心率等生理参数。
A4:这个数据集和普通 PPG 数据集有何不同?
三点不同:①用真实智能手机摄像头而非台式仪器;②带多专家共识质量标签(多数数据集只有波形);③覆盖八种真实运动伪迹。
A5:为什么强调"质量评估"?
因为真实手机 PPG 大量不可用——本数据集里约八成信号被判"差"。不先做质量筛选,心率估计误差会极高。
B. 数据与获取
B1:最新版本是什么?多大?
v2.0.0(2024-08-23),3,888 条记录,未压缩 203.3 MB,ZIP 86.7 MB。
B2:怎么下载最快?
aws s3 sync --no-sign-request s3://physionet-open/butppg/2.0.0/ DESTINATION 或 wget -r -N -c -np https://physionet.org/files/butppg/2.0.0/。
B3:需要申请吗?
不需要。CC BY 4.0,无 gated,直接下载。
B4:能商用吗?
能。CC BY 4.0 允许商业使用,只需署名并注明修改。
B5:引用哪个 DOI?
用数据引 v2.0.0(10.13026/tn53-8153),方法引主论文(10.1155/2021/3453007),扩展引 CinC 2024(10.22489/CinC.2024.055)。
C. 标注与数据
C1:质量标签怎么来的?
3 或 5 名专家盲评估读 HR,与参考 HR 差 ≤5 bpm 判良好,达共识比例则标 1,否则 0。
C2:为什么阈值是 5 bpm?
来自国际标准 IEC 60601-2-27,且本数据集更严格。
C3:好信号占比多少?
扩展部分良好 20.7%(795/3,840)。耳部 10.6%,指部 31.3%。
C4:专家一致率多少?
与共识一致率全体 93.3%(耳 94.1%,指 92.4%)。
C5:有哪些生理参考值?
扩展部分含血压、血糖、SpO2 单值。
D. 建模与工程
D1:怎么划分训练/测试集?
按受试者分组划分(记录 ID 前三位为受试者号),避免受试者泄漏。
D2:类别不均衡怎么办?
良好仅约 20%。用类别权重/重采样,评估用 AUROC/AUPRC/平衡准确率。
D3:可以用 ACC 辅助吗?
可以。作者明确指出 ACC 可用于 ECG/PPG 质量评估。
D4:用什么工具读?
wfdb 库(Python)配合 pandas。WFDB 是 PhysioNet 标准格式。
D5:有现成基准分数吗?
论文给出三个非专家自动基线与共识的匹配率(56.6%/67.1%/74.1%),但不是专家性能基准。尚无官方排行榜。
E. 方法学与对照
E1:为什么用"误差 ≤5 bpm"而不是别的阈值?
该阈值取自 IEC 60601-2-27 对心电监护设备的性能要求,是国际通行的可辩护判据;本数据集还设了更严的附加要求,因此比标准本身更严格。
E2:为什么标注者只估读 HR,不直接判"好/差"?
若直接问"好不好",主观性太强、分歧大。改用"估读一个 HR 数值",再由数值与参考的偏差自动判好坏——把主观判断转化为可量化、可复现的客观判据,这是设计上的巧思。
E3:为什么让标注者对 ECG 盲、对运动状态盲?
两点都是为了阻断暗示:知道真值(ECG)会让人不自觉向真值靠;知道是运动段会先入为主判差。盲评让判断更纯粹。
E4:一致率 93.3% 高不高?
在主观标注任务里属于很高。文本分类等任务人工一致率常在 80% 上下;本库 93%+ 说明质量判据界定清晰、专家训练到位。
E5:和 MIT-BIH、BIDMC 等经典生理库怎么比?
MIT-BIH 系列多为诊断级 ECG/心律失常标注;BIDMC(本库 rid 74)聚焦呼吸率。BUT PPG 聚焦手机摄像头 PPG 的质量评估,与它们是互补而非替代关系。
F. 数据治理与开放科学
F1:为什么该数据集能全开放?
数据为健康受试者的非敏感生理波形,去标识后风险低;受试者签署知情同意且经 IRB 批准;资助方(ONR)支持开放发布。三者共同支撑 CC BY 4.0。
F2:开放数据集如何保证质量?
靠"可复现的标注协议 + 报告的标注一致率 + 原始标注文件"。但开放不等于完美——本库仍有部门/人群多样性边界,使用者需自行判断适用性。
F3:商用有何额外义务?
CC BY 4.0 下商用无额外授权义务,但医学应用若面向患者,仍需走所在国的医疗器械监管流程,数据集许可不豁免监管。
F4:如何正确署名?
至少写明作者、数据集名称、版本、DOI、许可(CC BY 4.0),并注明是否修改。示例见附录 L 的 BibTeX。
F5:可以再分发吗?
可以。CC BY 4.0 允许复制与再分发,只需保留署名与许可声明。
事实清单(硬事实 40 条)
- 全称:Brno University of Technology Smartphone PPG Database (BUT PPG)。
- 机构:布尔诺理工大学电气工程与通信学院生物医学工程系(DBME)。
- 城市:捷克布尔诺(Brno, Czech Republic)。
- 托管:PhysioNet。
- v1.0.0 发布时间:2021-01-18。
- v2.0.0 发布时间:2024-08-23。
- v1.0.0 DOI:10.13026/7vy8-av04。
- v2.0.0 discovery DOI:10.13026/tn53-8153。
- latest version DOI:10.13026/gxwp-p940。
- v1 规模:48 条 10 秒记录。
- v1 受试者:12 名(6 女 / 6 男,21-61 岁)。
- v2 规模:3,888 条 10 秒记录。
- v2 受试者:50 名(25 女 / 25 男,19-76 岁,33±17 岁)。
- 扩展新增:3,840 条,38 名受试者(19 男 / 19 女)。
- PPG 采样率:30 Hz。
- ECG 采样率:1,000 Hz(单导联)。
- ACC 采样率:100 Hz(三轴)。
- 手机型号:小米 Mi9、华为 P20 Pro。
- 参考 ECG 设备:Bittium Faros 360 或 180。
- 采集部位:耳(前置摄像头)与指(后置摄像头)。
- 扩展部分耳信号数:1,962。
- 扩展部分指信号数:1,878。
- 扩展部分手动核验心搏数:49,540。
- 质量标签:二值(1 良好 / 0 差)。
- 良好判据:与参考 HR 绝对差 ≤5 bpm。
- 阈值标准:IEC 60601-2-27(且更严)。
- v1 标注专家数:5(共识 ≥3/5)。
- v2 标注专家数:3(共识 ≥2/3)。
- 专家-共识一致率:全体 93.3%。
- 耳部一致率:94.1%。
- 指部一致率:92.4%。
- 扩展质量分布:良好 795(20.7%)/ 差 3,045(79.3%)。
- 耳部良好率:10.6%。
- 指部良好率:31.3%。
- 自动基线匹配率:中位 HR 56.6%、文献均值 HR 67.1%、SWT 74.1%。
- 记录格式:WFDB。
- 记录 ID:六位数字(前三位受试者号 + 后三位测量号)。
- 文件大小:未压缩 203.3 MB,ZIP 86.7 MB。
- 许可:CC BY 4.0(Database Open Access)。
- 资助:美国海军研究办公室(ONR)Global,N62909-19-1-2006 与 N62909-23-1-2050。
术语表(30 条)
| 术语 | 英文 | 释义 |
|---|---|---|
| PPG | photoplethysmography | 光电容积脉搏波,用光测量血容随心跳的变化 |
| ECG | electrocardiogram | 心电图,本数据集作参考 HR 的金标准 |
| HR | heart rate | 心率,次/分(bpm) |
| ACC | accelerometer | 加速度计,三轴,用于捕捉运动伪迹 |
| 信号质量评估 | signal quality assessment (SQA) | 判断信号是否可用于下游任务 |
| 专家共识 | expert consensus | 多专家独立标注后按比例达成的统一标签 |
| 二分类 | binary classification | 良好/差两类 |
| 伪迹 | artifact | 非生理来源的信号干扰,如运动、光照变化 |
| 运动伪迹 | motion artifact | 因身体运动耦合进信号的干扰 |
| 采样率 | sampling frequency (fs) | 每秒采样数,PPG 30 Hz |
| WFDB | WaveForm Database | PhysioNet 标准生理信号格式 |
| 单导联 | single-lead | 仅一路 ECG 信号 |
| QRS 复合波 | QRS complex | ECG 中代表心室去极化的波形,用于定位心搏 |
| 心搏位置 | heartbeat position | 每次心跳的时间点(本库手动核验) |
| 中位心率 | median HR | 整段信号心率的中间值,作参考 HR |
| bpm | beats per minute | 次/分 |
| 基线漂移 | baseline wander | 信号基线缓慢起伏的伪迹 |
| 过渡段 | transition segment | 活动切换时质量介于两态之间的段 |
| SpO2 | peripheral oxygen saturation | 外周血氧饱和度 |
| 血压 | blood pressure (BP) | 本扩展含单值参考 |
| 血糖 | glycaemia | 本扩展含单值参考 |
| SWT | stationary wavelet transform | 平稳小波变换,用于标注软件频带分解 |
| FFT | fast Fourier transform | 快速傅里叶变换,用于频谱分析 |
| IEC 60601-2-27 | — | 心电监护设备安全与性能国际标准,提供 5 bpm 阈值依据 |
| Fitzpatrick 皮肤类型 | Fitzpatrick skin type | 皮肤对日光的反应分型,本库为 II-IV |
| 受试者泄漏 | subject leakage | 同一受试者数据跨训练/测试集导致的评估偏差 |
| GroupKFold | — | 按组(受试者)分组的交叉验证 |
| AUROC | area under ROC curve | 评估二分类的曲线下面积 |
| AUPRC | area under PR curve | 精确率-召回率曲线下面积,适合不均衡 |
| gated | gated access | 需申请/授权才能访问的受限数据 |
附录
附录 A:条目信息速查卡
| 项 | 值 |
|---|---|
| 名称 | Brno University of Technology Smartphone PPG Database (BUT PPG) |
| slug | butppg |
| 领域 | 生理信号 / PPG / 心电 |
| 版本 | v1.0.0 (2021) → v2.0.0 (2024) |
| 规模 | 3,888 条 × 10 秒 |
| 受试者 | 50(25 女 / 25 男,19-76 岁) |
| 采样率 | PPG 30 Hz / ECG 1,000 Hz / ACC 100 Hz |
| 任务 | 质量评估、HR 估计、QRS 检测、生理参数估计 |
| 标注 | 3 或 5 专家共识(≤5 bpm) |
| 许可 | CC BY 4.0 |
| 获取 | PhysioNet 无 gated 直链 |
| 大小 | 203.3 MB(未压缩) |
| 库内互链 | ppg-dalia(202)、bidmc-ppg(74)、pulsedb(182)、mimic-iv-ecg(172)、openecg(802) |
附录 B:DAIMS 评估全表
DAIMS(Data and AI Maturity/Readiness Standard)用于评估 AI-Ready 数据集成熟度。BUT PPG 评分如下:
| 维度 | 分值(1-5) | 依据 |
|---|---|---|
| 数据可获得性(Availability) | 5 | CC BY 4.0,PhysioNet 无 gated 直链,多下载方式 |
| 数据规模(Scale) | 4 | 3,888 条对 PPG 质量评估足够,但非海量 |
| 标注质量(Annotation Quality) | 5 | 多专家共识 + 国际标准阈值 + 93.3% 一致率 + 原始标注文件 |
| 标注丰富度(Annotation Richness) | 4 | 质量 + HR + QRS + 生理参考;无逐搏质量 |
| 元数据完备性(Metadata) | 5 | 人口学 + 部位 + 8 种运动状态 + 生理参考,字段语义清晰 |
| 格式标准化(Format) | 5 | WFDB 标准格式,wfdb 库原生支持 |
| 文档与透明度(Documentation) | 5 | PhysioNet 页 + 主论文 + 扩展论文,局限主动披露 |
| 伦理与合规(Ethics) | 5 | 双 IRB 批号 + 知情同意 + 资助披露 |
| 可获取限制(Access Restriction) | 5 | 无限制 |
| 人群多样性(Diversity) | 3 | 健康受试者,Fitzpatrick II-IV,两款手机,性别平衡但病理/肤色多样性有限 |
| 综合(AI-Ready 成熟度) | 4.6 / 5 | 开放、标准、标注扎实;主要扣分在人群/设备多样性 |
附录 C:数据字典(关键文件字段)
quality-hr-ann.csv
| 列 | 含义 | 取值 |
|---|---|---|
| record | 信号 ID | 六位数字 |
| quality | 二值质量标签 | 1 良好 / 0 差 |
| hr | 参考心率 | 数值(bpm) |
subject-info.csv
| 列 | 含义 | 取值 |
|---|---|---|
| subject / record | 受试者 / 记录号 | — |
| gender | 性别 | — |
| age | 年龄 | 岁 |
| height | 身高 | cm |
| weight | 体重 | kg |
| spot | 采集部位 | 0 耳 / 1 指 |
| motion | 运动状态 | 0-7 |
| BP | 血压 | 参考值 |
| glycaemia | 血糖 | 参考值 |
| SpO2 | 血氧 | 参考值 |
运动状态编码:0 静息 / 1 加指耳压 / 2 镜头移动 / 3 步行 / 4 咳嗽 / 5 大笑 / 6 变光 / 7 说话。
附录 D:数据获取决策树
需要 BUT PPG 数据?
├─ 做质量评估 → 下全量 v2.0.0(3,888 条),按部位分层
├─ 做心率估计 → 下全量,注意只用 quality=1 或分层报告
├─ 做心搏检测 → 下全量,用 *.qrs 作参考
├─ 只用生理参考 → 检查是否 112001 起(仅扩展含 BP/血糖/SpO2)
└─ 需要长程/病理数据 → 本库不含,转其它数据集
附录 E:与库内 PANDA-PLUS 条目的关系声明
BUT PPG(本条目)与 panda-plus(rid 560)分属生理信号与病理图像两个领域,无数据隶属关系。二者仅在本库的方法学对照层面相关:都示范了"多主体标注 + 共识/终审"如何生产可信 ground truth。检索时勿因二者都含"专家标注"而混淆。
附录 F:复现骨架(最小可用脚本)
# 最小加载 + 分组评估骨架
import wfdb, numpy as np, pandas as pd
from pathlib import Path
from sklearn.model_selection import GroupKFold
root = Path("butppg/2.0.0")
ann = pd.read_csv(root / "quality-hr-ann.csv")
X, y, g = [], [], []
for _, r in ann.iterrows():
rid = str(r["record"])
rec = wfdb.rdrecord(str(root / rid / f"{rid}_PPG"))
X.append(rec.p_signal[:, 0])
y.append(int(r["quality"]))
g.append(rid[:3])
X, y, g = np.array(X), np.array(y), np.array(g)
for tr, te in GroupKFold(5).split(X, y, g):
print("fold train/test:", len(tr), len(te))
附录 G:质量评估指标公式表
| 指标 | 公式/说明 |
|---|---|
| 敏感性 | TP / (TP + FN) |
| 特异性 | TN / (TN + FP) |
| 平衡准确率 | (敏感性 + 特异性) / 2 |
| AUROC | ROC 曲线下面积 |
| AUPRC | 精确率-召回率曲线下面积(正类 = 良好) |
| F1(good) | 2·P·R / (P + R),正类为质量良好 |
| HR MAE | mean( |
| 误差 ≤5 bpm 比例 | 与标注阈值对齐的一致率 |
附录 H:坑点档案(与 §10 对照)
坑 1 别名/撞库混淆 → §1、§9.1;坑 2 误把 48 条当全量 → §2.1、§2.5;坑 3 误读 56.6% → §3.4、坑 3;坑 4 忽略耳指鸿沟 → §4.2、坑 4;坑 5 只看准确率 → §5.3、§5.7、坑 5;坑 6 受试者泄漏 → §5.1、§5.3、坑 6;坑 7 误以为完美同步 → §4.5、坑 7;坑 8 单/三通道混淆 → §2.2、§5.6、坑 8;坑 9 当运动心率数据集 → §4.4、坑 9;坑 10 混用 DOI → §2.5、坑 10。
附录 I:双口径登记表
| 项目 | 口径 A | 口径 B | 本条目采用 |
|---|---|---|---|
| 耳/指良好率 | CinC 正文 10.6% / 31.3% | CinC 摘要 11% / 31% | 正文精确值,括注摘要 |
| 总良好率 | 精确 20.7%(795/3,840) | 摘要 21% | 精确值 |
| 标注专家数 | v1: 5 人 | v2: 3 人 | 分版本说明 |
| 采集期 | v1 页 2020-08 至 2020-10 | v2 页 2020-08 至 2021-12 | 分版本说明 |
| 心搏数 | 扩展 49,540 | 全库"含 QRS 位置" | 标 49,540 为扩展口径 |
附录 J:本条目生产档案
- 写手代理:agent-b-butppg
- 抓取时点:2026-10-03
- 一手来源:PhysioNet 内容页(v1.0.0 / v2.0.0)、PubMed PMID 34532501、CinC 2024 PDF(cinc.org/archives/2024/pdf/CinC2024-055.pdf)
- 三源互证:PhysioNet 页 ↔ 主论文摘要 ↔ CinC 扩展论文,核心数字一致
- 库内查重:
url_name ILIKE '%butppg%'→ 0 行
附录 K:FAIR / AI-Ready 检查单
| 原则 | 满足 | 说明 |
|---|---|---|
| Findable(可发现) | ✅ | PhysioNet + DOI + RRID + 论文 |
| Accessible(可获取) | ✅ | CC BY 4.0 无 gated |
| Interoperable(可互操作) | ✅ | WFDB + CSV |
| Reusable(可复用) | ✅ | 元数据完备、许可清晰 |
| AI-Ready(规模/标注/格式) | ✅ | 标注扎实、格式标准;多样性为边界 |
附录 L:引文规范(BibTeX)
@misc{butppg2024,
author = {Nemcova, Andrea and Smisek, Radovan and Vargova, Eniko and
Mar{\v{s}}{\'a}nov{\'a}, Lucie and Vitek, Martin and Smital, Lukas and
Filipenska, Marina and Sikorova, Pavlina and G{\'a}l{\'i}k, Pavel},
title = {Brno University of Technology Smartphone PPG Database (BUT PPG)},
year = {2024},
publisher = {PhysioNet},
version = {2.0.0},
doi = {10.13026/tn53-8153},
note = {RRID:SCR\_007345}
}
@article{nemcova2021butppg,
author = {Nemcova, Andrea and Vargova, Eniko and Smisek, Radovan and
Marsanova, Lucie and Smital, Lukas and Vitek, Martin},
title = {Brno University of Technology Smartphone PPG Database (BUT PPG):
Annotated Dataset for PPG Quality Assessment and Heart Rate Estimation},
journal = {BioMed Research International},
volume = {2021},
pages = {3453007},
year = {2021},
doi = {10.1155/2021/3453007}
}
附录 M:维护计划与触发点
- 触发点 1:PhysioNet 发布 v3.0.0(含绿/蓝通道标注或心律异常标注)→ 更新版本链与 §7.2。
- 触发点 2:出现官方基准排行榜/挑战赛 → 更新 §7.4 与 FAQ D5。
- 触发点 3:许可变更 → 更新 §6.1。
- 触发点 4:库内新增 PPG 家族条目 → 更新 §9.1 互链表。
附录 N:缩写速查
ACC 加速度计;BP 血压;bpm 次/分;CC BY 知识共享署名;DBME 生物医学工程系;DOI 数字对象标识符;ECG 心电图;FFT 快速傅里叶变换;HR 心率;IRB 机构审查委员会;ONR 美国海军研究办公室;PPG 光电容积脉搏波;RPM 远程患者监测;SpO2 血氧饱和度;SQA 信号质量评估;SWT 平稳小波变换;WFDB 波形数据库格式。
附录 O:版本对照完整表
| 属性 | v1.0.0 | v2.0.0 |
|---|---|---|
| 发布日 | 2021-01-18 | 2024-08-23 |
| DOI | 10.13026/7vy8-av04 | 10.13026/tn53-8153 |
| 记录数 | 48 | 3,888 |
| 受试者 | 12 | 50 |
| 手机 | 小米 Mi9 | 小米 Mi9 + 华为 P20 Pro |
| 部位 | 指 | 耳 + 指 |
| 通道 | 红 | 红/绿/蓝(112001 起) |
| ACC | 无 | 有 |
| QRS 位置 | 有 | 有 |
| 生理参考 | 无 | BP/血糖/SpO2 |
| 标注专家 | 5 人 | 3 人(6 人池) |
| 记录 ID 段 | 100001-111004 | 112001 起 |
| 对应论文 | BMRI 2021 | CinC 2024 |
附录 P:外部论文引用(方法学锚点)
| 引用 | 与本库关系 |
|---|---|
| Nemcova 2020, BSPC 59, doi:10.1016/j.bspc.2020.101928 | 手机监测 HR/SpO2/BP 先导 |
| Smital 2020, CinC, Robust QRS Detection | 参考 HR 的 QRS 检测方法来源 |
| Peng 2015, Comput Math Methods Med | 手机 PPG 提取 HRV,红通道方法依据 |
| Siddiqui 2016, J Med Syst 40(5) | 手机摄像头脉搏率估计 |
| Tabei 2019, PLoS One 14(6) | 运动/噪声伪迹下的手机心律信号 |
| Orphanidou 2018, Springer | 生理监测中的信号质量评估综述 |
| Naeini 2019, Procedia CS 151 | IoT 实时 PPG 质量评估 |
| Quer et al. | 92,457 人平均心率(用于文献均值基线) |
附录 Q:技术规格速查
| 规格 | 值 |
|---|---|
| PPG 时长 | 每段 10 秒 |
| PPG 采样率 | 30 Hz(每段 300 样本) |
| ECG 采样率 | 1,000 Hz(每段 10,000 样本) |
| ACC 采样率 | 100 Hz(每段 1,000 样本 × 3 轴) |
| PPG 提取 | 视频逐帧取(红)通道平均后取反 |
| 参考 HR | ECG 上 QRS 检测 → 整段中位 HR |
| 质量标签 | 0/1 二值,共识判定 |
| 记录 ID | 六位数字 |
| 文件格式 | WFDB(.dat/.hea/.qrs)+ CSV |
附录 R:质量评估常见失败模式(来自 ACC/伪迹维度)
| 失败模式 | 触发场景 | 可观测特征 |
|---|---|---|
| 运动伪迹淹没脉搏 | 步行、镜头移动 | 频谱主峰偏移/展宽,ACC 能量高 |
| 接触不良 | 手指未压实、耳侧松脱 | 幅度低、信噪比差 |
| 光照干扰 | 变光环境 | 基线跳变,低频能量高 |
| 生理耦合伪迹 | 咳嗽、大笑、说话 | 突发宽带扰动,峰间期突变 |
| 过渡段 | 活动切换 | 质量介于相邻两态 |
附录 S:分层评估报告模板
【耳部 / 静息】 n=?, good=?, AUROC=?, 平衡准确率=?
【耳部 / 活动】 n=?, good=?, AUROC=?
【指部 / 静息】 n=?, good=?, AUROC=?
【指部 / 活动】 n=?, good=?, AUROC=?
【HR 估计 / 仅 good】 MAE=?, RMSE=?, ≤5bpm 比例=?
【HR 估计 / 全部】 MAE=?, RMSE=?(对照,说明质量筛选增益)
附录 T:检索关键词组合(HTTP/DB 检索用)
butppg/BUT PPG/BUT-PPGBrno University of Technology Smartphone PPGsmartphone PPG quality assessment datasetcamera PPG heart rate PhysioNetPPG signal quality expert consensus annotation- 库内 SQL:
url_name ILIKE '%ppg%'(命中 ppg-dalia、bidmc-ppg)
附录 U:避坑速查卡
① 别把 48 条当全量 → 以 v2.0.0 为准
② 别误读 56.6% → 那是自动基线,非专家
③ 别混合耳/指评估 → 分开报
④ 别只看准确率 → 用 AUROC/AUPRC
⑤ 别按记录随机分 → 按受试者分组
⑥ 别假设完美同步 → 手动同步有误差
⑦ 别搞错通道 → v1 红 / v2 RGB
⑧ 别混用 DOI → 按版本引用
附录 V:伦理与元数据声明
- IRB 批号:EC:EK:05b/2018(2018-07-27)、EC:EK:06b/2021(2021-09-30)。
- 知情同意:所有受试者采集前签署书面知情同意。
- 资助:ONR Global,N62909-19-1-2006、N62909-23-1-2050。
- 利益冲突:作者声明无。
- 数据去标识:仅保留性别、年龄、身高、体重等非直接标识信息。
附录 W:基于本数据集的研究检查清单(12 项)
- 确认使用版本(v1 还是 v2)。
- 按受试者分组划分训练/测试集。
- 报告类别不均衡下的多项指标。
- 分部位(耳/指)分层报告。
- 分运动状态分层报告。
- 说明是否使用 ACC 辅助。
- 明确质量标签定义(≤5 bpm 共识)。
- HR 评估同时报 MAE/RMSE 与 ≤5 bpm 比例。
- 说明是否只用了 good 子集。
- 处理过渡段的策略(保留/剔除)。
- 说明 PPG-ECG 手动同步误差的处理。
- 规范引用数据 DOI + 论文 + PhysioNet。
附录 X:库内互链点详表(rid 反查)
以下 rid 均由本库 ai_ready_dataset(status=1)url_name 反查确认:
| rid | url_name | 互链理由 |
|---|---|---|
| 202 | ppg-dalia | 同为 PPG 心率估计;腕带 vs 手机摄像头对照 |
| 74 | bidmc-ppg | PPG 波形任务;呼吸率估计对照 |
| 182 | pulsedb | PPG+ECG 血压估计;与 BP 单值标注互补 |
| 172 | mimic-iv-ecg | 大规模 ECG 波形库 |
| 802 | openecg | 12 导联 ECG 基础模型基准 |
| 658 | apnea-ecg | ECG + 呼吸事件 |
| 192 | vitaldb | 术中多参数生命体征波形 |
| 262 | isruc-sleep | PSG 多导睡眠图 |
| 292 | mros-sleep | 居家 PSG 队列 |
| 302 | mesa-sleep | 多民族居家睡眠监测 |
| 493 | cinc-2018-sleep | PSG 睡眠微觉醒 |
| 73 | sleep-edf | PSG 睡眠分期基准 |
| 654 | hmc-sleep-staging | 睡眠分期 |
| 560 | panda-plus | 方法学对照(专家共识标注范式) |
附录 Y:一句话推荐语
如果你在做智能手机或可穿戴设备上的心率/健康监测,需要一个免费、标准格式、带专家共识质量标注、且覆盖真实运动伪迹的 PPG 数据集来开发"信号质量闸门",BUT PPG 是当下最省事、最可复现的选择之一——记住它以静息心率为主、样本为健康人群,其余请用它的部位与运动状态标签做分层评估。
尾注
- 本条目所有硬数字均以 2026-10-03 抓取的 PhysioNet v1.0.0 / v2.0.0 内容页与 CinC 2024 论文为准,双口径处已在正文与附录 I 逐条存照。
- 本条目为 AI-Ready Wikipedia 数据集条目,仅供研究与检索参考,不构成医疗器械或临床建议。
- 数据集许可为 CC BY 4.0;本条目对数据集的描述属独立评述,使用数据时请遵循其原始许可并规范引用。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cinc-2011 — 共享标签:生理信号 / 心电信号 / 可穿戴传感 / 挑战赛数据集 / 心血管疾病
- ecg-image-database — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 心血管疾病
- cardiowave-portable — 共享标签:生理信号 / 心电信号 / 可穿戴传感 / 心血管疾病
- physionet-cinc-2017 — 共享标签:生理信号 / 心电信号 / 可穿戴传感 / 心血管疾病
- cinc-2021 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 心血管疾病
- icentia11k — 共享标签:生理信号 / 心电信号 / 可穿戴传感 / 心血管疾病
- ltafdb — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 心血管疾病
- cinc-2020 — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 心血管疾病
- georgia-12-lead-ecg-challenge — 共享标签:生理信号 / 心电信号 / 挑战赛数据集 / 心血管疾病
- auricle-wearable-cv — 共享标签:生理信号 / 心电信号 / 可穿戴传感 / 心血管疾病
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

