
一家做心电筛查的初创公司拿到三甲医院的合作意向,甲方要求两个月内出一版原型系统。技术团队发现,模型架构不是瓶颈------Transformer 还是 ResNet 也就一周的事------真正的卡点是数据:公开数据集要么只覆盖心电图一个模态,要么需要提交研究方案、等伦理审批,最快两周最慢三个月。
等审批意味着项目窗口期错过。但不等审批,从哪找能直接下载、质量可靠、足够支撑原型验证的医疗数据?
PhysioNet 是 MIT 维护的开放医疗数据平台,上面的数据集大部分只需要注册一个账号、完成一次在线培训(约 2-3 小时),就能直接下载。没有审批周期,没有等待时间。这意味着从立项到跑通第一个 pipeline,可以从"等三个月"压缩到"今天下班前"。
以下 7 个数据集按模态整理,覆盖心电图、脑电、睡眠、ICU、生理信号五大场景,每一个都标注了数据规模、技术规格、上手要点和代码示例。
总览:7 个数据集按模态分布
| 数据集 | 模态 | 规模 | 任务类型 | 下载门槛 |
|---|---|---|---|---|
| MIMIC-IV | ICU EHR | 36.4 万患者·~7GB CSV | 预测建模 | 注册+CITI培训 |
| MIT-BIH Arrhythmia | 心电图 | 48 条记录·~104MB | 心律失常分类 | 注册即可 |
| PTB-XL | 12 导联心电图 | 2.18 万条 ECG·~3GB | 多标签分类 | 注册即可 |
| CHB-MIT Scalp EEG | 脑电图 | 979 小时连续 EEG·~42.6GB | 癫痫发作检测 | 注册即可 |
| Sleep-EDF | 多导睡眠图 | 197 夜 PSG·~8.1GB | 睡眠分期 | 注册即可 |
| BIDMC-PPG | 光电容积脉搏波 | 53 例 ICU·~208MB | 呼吸率估算 | 注册即可 |
| MIMIC-IV-Waveform | ICU 高频波形 | 198 名患者·~12.8GB | 波形分析 | 注册+CITI培训 |
前 6 个覆盖了心电图、脑电、睡眠、ICU、生理信号五大模态,足够支撑一个完整的医疗 AI 入门项目。
1. MIMIC-IV --- PhysioNet 的镇馆之宝
MIT 计算生理学实验室维护,36.4 万名 ICU 患者的结构化电子健康记录,从 2008 年到 2022 年覆盖了 BIDMC 医院全部 ICU 收治。
数据组织(模块化):
mimiciv/
├── hosp/ # 医院级数据
│ ├── patients # 患者基本信息
│ ├── admissions # 入院记录
│ ├── diagnoses_icd # ICD 诊断
│ ├── prescriptions # 处方
│ └── labevents # 化验事件
├── icu/ # ICU 级数据
│ ├── icustays # ICU 停留记录
│ ├── chartevents # 生命体征
│ └── inputevents # 输液/给药
├── ed/ # 急诊科数据
├── note/ # 临床自由文本
└── waveform/ # 高频波形(单独申请)
业务场景:做 ICU 住院时长预测、败血症早期预警、再入院风险评估------这些都是医院信息科最关心的方向。MIMIC-IV 提供了足够大的患者队列和完整的时序事件,可以直接用来验证"AI 能不能帮 ICU 提前 6 小时预判患者恶化"这类业务命题。
快速上手 SQL:
sql
-- 查询败血症患者的 ICU 停留时长
WITH sepsis_pts AS (
SELECT hadm_id
FROM mimiciv_hosp.diagnoses_icd
WHERE icd_code LIKE 'A41%'
GROUP BY hadm_id
)
SELECT
ie.subject_id, ie.stay_id,
DATETIME_DIFF(ie.outtime, ie.intime, 'HOUR') AS los_hours
FROM mimiciv_icu.icustays ie
JOIN sepsis_pts sp ON ie.hadm_id = sp.hadm_id
ORDER BY los_hours DESC;
下载方式:PhysioNet 官网注册账号 → 完成 CITI 培训认证(约 2-3 小时)→ 获得 PhysioNet 凭证 → 直接下载 CSV 文件。CITI 培训一次通过后,以后申请其他 PhysioNet 数据集通用。
2. MIT-BIH Arrhythmia --- 心律失常检测的"MNIST"
48 条 30 分钟双通道 Holter 记录,11 万次心拍标注,波士顿儿童医院和 MIT 联合发布。规模虽小(仅 104MB),但它是心律失常自动检测领域的标准基准------几乎所有心电图 AI 论文都会跑这个数据集做 baseline。
技术规格:
- 采样率:360 Hz
- 分辨率:11-bit
- 导联:双通道(MLII 和 V5)
- 标注:MIT-BIH 心律失常实验室的心脏病专家逐拍标注
业务场景:做可穿戴心电贴片的实时心律失常筛查,需要快速验证算法可行性。MIT-BIH 规模小、标注全、社区代码多,是最快的"跑通 pipeline"路径。从原型到论文发表都能复用同一套数据。
数据加载与可视化:
python
import wfdb
import matplotlib.pyplot as plt
# 读取 MIT-BIH 记录(以 100 号记录为例)
record = wfdb.rdrecord('100', pn_dir='mitdb')
annotation = wfdb.rdann('100', 'atr', pn_dir='mitdb')
print(f"信号 shape: {record.p_signal.shape}") # (650000, 2)
print(f"采样率: {record.fs} Hz")
print(f"导联名: {record.sig_name}")
# 可视化前 10 秒
fig, ax = plt.subplots(figsize=(14, 4))
ax.plot(record.p_signal[:3600, 0]) # MLII 导联
ax.set_title('MIT-BIH Record 100 - MLII Lead (First 10s)')
ax.set_xlabel('Samples (360 Hz)')
ax.set_ylabel('Amplitude (mV)')
plt.tight_layout()
plt.savefig('mitbih_100.png', dpi=150)
下载方式 :PhysioNet 注册账号后直接下载,无需培训认证。wfdb 库内置 pn_dir 参数,可直接从 PhysioNet 在线读取。
3. PTB-XL --- 大规模 12 导联心电图基准
2.18 万条 12 导联心电图,德国联邦物理技术研究院(PTB)和 Fraunhofer HHI 联合发布。SCP-ECG 标准标注,5 大类 44 小类诊断标签。
和 MIT-BIH 的区别:MIT-BIH 是双通道 Holter,PTB-XL 是标准 12 导联临床心电图------后者更接近真实临床场景,且数据量大了两个数量级。做心电图多标签分类,PTB-XL 是当前主流基准。
业务场景:做院内心电图智能诊断辅助系统(CDSS),需要和医院心电图机输出的标准 12 导联格式对齐。PTB-XL 用 SCP-ECG 标准标注,直接对接临床工作流。2.18 万条的规模足够训练一个可商用的初版模型。
技术规格:
- 采样率:500 Hz / 100 Hz 两档
- 导联:标准 12 导联
- 标注:SCP-ECG 标准的 44 种诊断标签
- 格式:WFDB 兼容
多标签分类训练:
python
import wfdb
import pandas as pd
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
class PTBXLDataset(Dataset):
def __init__(self, csv_path, data_dir, sampling_rate=100):
self.df = pd.read_csv(csv_path)
self.data_dir = data_dir
self.sampling_rate = sampling_rate
# 5 大类诊断标签
self.labels = ['NORM', 'MI', 'STTC', 'CD', 'HYP']
def __len__(self):
return len(self.df)
def __getitem__(self, idx):
row = self.df.iloc[idx]
# 读取 12 导联 ECG 信号
record = wfdb.rdrecord(f"{self.data_dir}/{row.filename_lr}")
signal = torch.tensor(record.p_signal, dtype=torch.float32) # (1000, 12)
# 多标签编码
label = torch.tensor(
[1 if l in row.scp_codes else 0 for l in self.labels],
dtype=torch.float32
)
return signal, label
# 简单的 1D CNN 分类器
class ECGClassifier(nn.Module):
def __init__(self, in_channels=12, num_classes=5):
super().__init__()
self.features = nn.Sequential(
nn.Conv1d(in_channels, 32, kernel_size=7, stride=2, padding=3),
nn.BatchNorm1d(32), nn.ReLU(), nn.MaxPool1d(2),
nn.Conv1d(32, 64, kernel_size=5, stride=2, padding=2),
nn.BatchNorm1d(64), nn.ReLU(), nn.MaxPool1d(2),
nn.Conv1d(64, 128, kernel_size=3, stride=1, padding=1),
nn.BatchNorm1d(128), nn.ReLU(), nn.AdaptiveAvgPool1d(1)
)
self.classifier = nn.Sequential(
nn.Linear(128, 64), nn.ReLU(), nn.Dropout(0.3),
nn.Linear(64, num_classes), nn.Sigmoid()
)
def forward(self, x):
# x: (batch, 12, 1000) → Conv1d 需要 (batch, channels, length)
x = x.permute(0, 2, 1)
x = self.features(x).squeeze(-1)
return self.classifier(x)
下载方式:PhysioNet 注册账号后直接下载,无需培训认证。
4. CHB-MIT Scalp EEG --- 儿童癫痫脑电波形
23 名患儿,979 小时连续 EEG,198 次癫痫发作,42.6GB。波士顿儿童医院和 MIT 联合发布。
业务场景:做癫痫预警可穿戴设备或 ICU 癫痫监测系统,需要足够长的连续基线数据和明确的发作事件标注。CHB-MIT 的 979 小时连续记录恰好满足这个需求------既能训练"检测发作"的模型,也能统计"误报率"(基线时长够长才有意义)。
常见坑:数据量大(42.6GB),单次下载耗时较长。建议先下载单个受试者数据试跑:
python
import wfdb
import numpy as np
# 读取 chb01 的第一段记录
record = wfdb.rdrecord('chb01_03', pn_dir='chbmit')
signal = record.p_signal # (921600, 23) --- 23 导联
print(f"信号 shape: {signal.shape}")
print(f"采样率: {record.fs} Hz")
print(f"时长: {signal.shape[0] / record.fs / 3600:.1f} 小时")
# 读取发作标注
ann = wfdb.rdann('chb01_03', 'seizures', pn_dir='chbmit')
print(f"标注样本位置: {ann.sample}")
下载方式:PhysioNet 注册账号后直接下载,无需培训认证。
5. Sleep-EDF --- 睡眠分期基准
197 夜多导睡眠图(PSG)记录,8.1GB,ODC-By 开放许可。PhysioNet 和荷兰 MCH-Westeinde 医院 Bob Kemp 联合发布。
技术规格:
- 信号:EEG(Fpz-Oz 和 Pz-Oz)、EOG、颏 EMG、体温
- 采样率:100 Hz
- 标注:30 秒为一个 epoch,W/REM/N1/N2/N3 五分类
- 许可:ODC-By(标注来源即可使用)
业务场景:做消费级睡眠监测设备(智能戒指/睡眠贴片),需要将设备采集的 EEG 信号自动分期。Sleep-EDF 的 30 秒 epoch 标注和五分类体系,是整个睡眠 AI 领域的通用标准。用它训练的模型可以直接和学术界的基线对比。
python
import mne
import numpy as np
from sklearn.ensemble import GradientBoostingClassifier
# 读取 Sleep-EDF 数据
raw = mne.io.read_raw_edf('SC4001E0-PSG.edf', preload=True)
eeg = raw.get_data(picks=['EEG Fpz-Oz']) # (1, n_samples)
print(f"EEG 信号 shape: {eeg.shape}")
# 读取分期标注
ann = mne.read_annotations('SC4001EC-Hypnogram.edf')
labels = ann.description # ['W', 'N1', 'N2', 'N3', 'REM', ...]
# 将信号切分为 30 秒 epoch
epoch_len = 30 * 100 # 30s × 100Hz = 3000 samples
n_epochs = eeg.shape[1] // epoch_len
features = []
for i in range(n_epochs):
epoch = eeg[0, i*epoch_len:(i+1)*epoch_len]
# 提取频域特征
fft = np.abs(np.fft.rfft(epoch))
features.append(fft[:50]) # 取前 50 个频域点
X = np.array(features)
print(f"特征 shape: {X.shape}")
下载方式:PhysioNet 注册账号后直接下载,ODC-By 许可。
6. BIDMC-PPG --- 光电容积脉搏波呼吸率基准
53 例 ICU 患者,125 Hz 采样率,208MB。牛津大学和 BIDMC 联合发布。双标注者逐拍呼吸标注。
业务场景:做可穿戴健康监测(智能手表/手环),PPG 信号是最容易获取的生理信号------不需要电极贴片,一个绿光 LED 就行。BIDMC-PPG 提供了从 PPG 估算呼吸率的标注数据,适合验证"手表能不能测呼吸率"这类产品级命题。数据量仅 208MB,半天跑通完整 pipeline。
python
import wfdb
import numpy as np
# 读取 BIDMC-PPG 数据
record = wfdb.rdrecord('bidmc_01', pn_dir='bidmc')
ppg = record.p_signal[:, record.sig_name.index('PLETH')]
print(f"PPG 信号 shape: {ppg.shape}")
print(f"采样率: {record.fs} Hz")
# 呼吸率标注
resp_ann = wfdb.rdann('bidmc_01', 'resp', pn_dir='bidmc')
print(f"呼吸标注数: {len(resp_ann.sample)}")
下载方式:PhysioNet 注册账号后直接下载,文件仅 208MB。
7. MIMIC-IV-Waveform --- ICU 高频生理波形
198 名 ICU 患者的高频波形数据,12.8GB,WFDB 标准格式。MIMIC-IV 的波形子库。
业务场景:做 ICU 实时监护预警系统,需要高频波形信号(每秒数百个采样点)来做即时异常检测。MIMIC-IV 临床数据库是结构化表格(每分钟一条),而 Waveform 提供秒级甚至毫秒级精度。两者可以通过 subject_id 关联,做"表格+波形"的多模态融合------这正是 ICU 预警系统从"事后分析"走向"实时预警"的关键。
下载方式:PhysioNet 注册账号 + CITI 培训认证后直接下载。
按业务方向选数据集
| 业务方向 | 推荐数据集 | 理由 |
|---|---|---|
| ICU 住院时长/败血症预警 | MIMIC-IV | 36 万患者队列,事件时序完整 |
| 可穿戴心电筛查 | MIT-BIH + PTB-XL | 经典基准 + 12 导联临床基准 |
| 癫痫监测设备 | CHB-MIT | 979 小时连续 EEG,发作事件充足 |
| 睡眠监测产品 | Sleep-EDF | 五分类标注、开放许可、数据量适中 |
| 智能手表呼吸率 | BIDMC-PPG | 轻量级、PPG 信号易获取 |
| ICU 实时预警 | MIMIC-IV + Waveform | 表格+波形多模态融合 |
技术总结
PhysioNet 的优势在于"低门槛 + 高质量":
- 统一入口:一个账号 + 一次 CITI 培训,解锁全部数据集。不需要分别向不同机构提交申请。
- 数据格式统一 :心电图、脑电、睡眠图全部使用 WFDB 格式,
wfdb库一套 API 通吃。 - 代码生态成熟 :MIMIC 有官方 SQL 教程,
wfdb有 Python 官方库,社区有大量示例代码。
对于从"看到业务机会"到"跑通原型验证"这段最关键的窗口期,PhysioNet 能把数据准备周期从三个月压缩到一天。
扩展阅读
- GitHub 项目 :top100-medical-datasets --- 全球 Top100 AI-Ready 医疗数据集索引,按 8 大主题分类
- 数据集目录 :AI-Ready 医疗数据集目录 --- 每个数据集附双语百科式详情页,含字段说明、基线模型、license 信息和下载入口
更多医疗疾病类数据集,也可以到千方医数集。
