「ECG信号处理——(33)基于LSTM-RNN的睡眠呼吸暂停检测」2026年06月02日 目录1. 引言1.1 研究背景与意义1.2 本文整体技术路线2. 方法2.1 数据集介绍2.2 信号去噪2.3 R峰检测与特征提取2.3.1 Pan-Tompkins R峰检测2.3.2 RR间期RRI2.3.3 R波幅值调制RAMP2.4 LSTM-RNN模型架构2.4.1 LSTM核心门控单元3. 实验设置3.1 数据集划分3.2 评价指标3.2.1 混淆矩阵Confusion Matrix3.2.2 准确率Accuracy3.2.3 精确率Precision3.2.4 召回率Recall3.2.5 F1 分数F1 Score3.2.6 ROC 曲线下面积AUC4. 结果与分析4.1 模型训练过程4.2 测试集整体性能4.3 各类别详细分类报告4.4 混淆矩阵4.5 ROC曲线与AUC4.6 PR曲线与平均精确率AP4.7 预测概率分布5. 总结与展望5.1 工作总结5.2 局限性与未来工作参考文献摘要阻塞性睡眠呼吸暂停OSA是一种常见的睡眠呼吸障碍严重影响患者生活质量。本文基于公开的Apnea-ECG数据库设计了一套完整的OSA自动检测流程首先将原始心电信号分割为60秒片段并进行自适应去噪然后通过Pan-Tompkins算法检测R峰提取RR间期RRI、R波幅度RAMP和ECG衍生呼吸信号EDR三类特征最后构建三层LSTM-RNN网络进行二分类正常/呼吸暂停。实验结果表明该模型在测试集上取得了优异的分类性能为便携式睡眠呼吸暂停筛查提供了可行方案。1. 引言1.1 研究背景与意义阻塞性睡眠呼吸暂停综合征(OSA)表现为睡眠过程中上呼吸道反复塌陷造成呼吸短暂停止、血氧下降、夜间间歇性缺氧长期患病会诱发高血压、冠心病、脑卒中等心脑血管并发症。临床金标准检测方式为多导睡眠监测(PSG)需要同步采集脑电、眼电、呼吸气流、血氧、心电等十余种信号设备昂贵、患者卧床体验差难以用于大规模社区普筛。心电信号(ECG)采集便捷、硬件成本极低且呼吸活动会直接调制心电波形幅值与心跳节律无需额外佩戴呼吸传感器即可通过ECG间接反演呼吸状态因此基于单通道ECG实现OSA自动检测具备极高的落地价值。1.2 本文整体技术路线整体技术路线可分为数据预处理 → 特征工程 → 模型构建与训练 → 评估与可视化四个阶段。阶段核心任务关键方法/参数输出1. 数据预处理原始ECG信号分段、去噪滑动窗口60s无重叠小波/带通滤波5–15 Hz17045训练17268测试个60秒片段2. 特征提取R峰检测、时序特征计算Pan-Tompkins算法RRIms、RAMP原始幅度、EDRR波幅度插值至4Hz每片段RRI序列、RAMP序列、EDR序列原始长度不等3. 特征规整统一序列长度、归一化、通道融合三次样条插值至240点零均值化RAMP/EDR幅度缩放特征张量(N, 240, 3)4. 模型构建LSTM-RNN分类网络三层LSTM384单元递进dropout 0.1→0.2→0.3全连接层sigmoid输出二分类概率5. 训练与优化模型学习、超参数调优Adambinary_crossentropybatch size128epochs100验证集最佳模型保存最佳模型权重.keras6. 评估与可视化性能指标计算、结果分析准确率、精确率、召回率、F1、AUC混淆矩阵、ROC曲线、概率分布图指标报告 可视化图表本文旨在实现基于该数据库的端到端OSA检测流程重点包括60秒无重叠分段与自适应去噪R峰检测及RRI、RAMP、EDR特征提取三层LSTM网络建模与评估2. 方法2.1 数据集介绍Apnea-ECG数据库PhysioNet提供分为训练集35人文件名为a01–a20,b01–b05,c01–c10和测试集35人文件名为x01–x35。每条记录采样率100 Hz提供.hea头文件、.dat信号和.apn标注文件。标注文件每分钟给出一个标签例如第1分钟为N第2分钟为A等。训练集包含a01-a20、b01-b05、c01-c10共35名受试者测试集包含x01-x35共35名受试者。图1Apnea-ECG Database数据库为了实现片段级分类我们将每条长记录切分为不重叠的60秒窗。每个窗包含6000个采样点100 Hz × 60 s。标注直接使用该分钟对应的标签A→1N→0。经过分割后训练集共得到17045个片段测试集17268个片段。图2原始信号切割图标签NNormal编码为060s片段内呼吸正常无呼吸暂停事件标签AApnea编码为160s片段内发生持续性睡眠呼吸暂停事件。核心逻辑如下# 伪代码示例 for each record: for minute_index in range(num_minutes): segment Mit2Segment() segment.samplefrom minute_index * 6000 segment.sampleto segment.samplefrom 6000 segment.raw_ecg_data record.p_signal[segment.samplefrom:segment.sampleto] segment.label annotation[minute_index] # A or N segment.write_ecg_segment(rdf0) # 保存原始ECG到txt2.2 信号去噪原始心电信号包含工频干扰、肌电噪声、基线漂移本文采用3阶Butterworth带通滤波器完成噪声抑制通带频率设置5Hz~15Hz仅保留有效QRS波群频段。式中为滤波器阶数为截止角频率。相关内容见我主页的如下链接「ECG信号处理——11心电信号中基线漂移、肌电干扰与工频干扰联合滤除」2025年3月31日_工频干扰与肌电噪声-CSDN博客2.3 R峰检测与特征提取2.3.1 Pan-Tompkins R峰检测为了提取心率和呼吸相关信息首先需要准确定位R波。R波是心电信号最显著的特征峰心跳间期、心电呼吸衍生信号均依托R波位置计算。本文采用Pan-Tompkins算法流程分为带通滤波→微分放大→平方增强→滑动窗口积分→自适应阈值峰值。1微分运算突出QRS波形变化2平方运算抑制负极值强化峰值特征3滑动窗口积分平滑波形整合局部峰值能量检测到的候选R峰位置后在原始ECG局部峰值处进行修正。最终输出的R峰索引数组记为为后续特征计算提供基准。相关内容见我主页的如下链接「ECG信号处理——10Pan-Tompkins算法R峰检测」2025年3月17日-CSDN博客2.3.2 RR间期RRIRR间期为相邻两个R波的时间间隔直接反映心率变化呼吸暂停发生时交感神经兴奋RR间期会出现显著无序波动。相邻R波峰的采样点差值结合心电采样率可转换为毫秒级RR间期精准表征心跳节律变化完整计算公式如下式中、为相邻两个心电R波峰的采样点坐标为心电信号原始采样率。原始RRI序列易存在极端异常值不符合生理心跳范围需做异常阈值筛选剔除无效数值筛选完成后采用窗口大小为3的滑动窗口均值平滑算法修正序列噪声平滑公式为匹配统一时序维度对平滑后的RRI序列采用三次样条插值完成4Hz重采样插值后时间步长为0.25s覆盖60s完整心电片段生成均匀时序的RRI特征信号时序坐标满足最终得到固定240个时序步长的标准化RRI特征与RAMP、EDR特征维度对齐满足模型输入要求。2.3.3 R波幅值调制RAMP呼吸运动导致胸腔电位变化直接调制ECG波形幅值R波峰值幅值变化与呼吸运动强相关。以单个R峰为中心前后各取25个采样点窗口求解窗口内最大幅值作为当前R峰幅值同样经过平滑与三次样条插值4 Hz得到。2.3.4 EDR心电衍生呼吸信号EDRECG-Derived Respiration为心电衍生呼吸信号无需外接呼吸传感器通过R波幅值时序变化拟合得到连续呼吸波形部分文献还会通过R波面积或基线变化提取但幅度调制已足够捕捉呼吸诱导的ECG形态变化。原始RAMP序列为离散时序点本文采用三次样条插值实现4Hz等间隔重采样补齐时序空缺插值公式如下为消除个体差异对每个片段的RRI、RAMP、EDR分别减去其均值零均值化并分别乘以100和10000对RAMP和EDR进行幅度缩放。最终每个片段得到一个240×3240×3的特征矩阵240个时间点×3个通道。图3ECG去噪后的数据预处理过程2.4 LSTM-RNN模型架构2.4.1 LSTM核心门控单元RRI、RAMP、EDR均为长时序连续生理信号具备强时间依赖性传统CNN无法捕捉前后时序关联因此本文采用LSTM长短期记忆网络解决时序梯度消失问题。LSTM包含遗忘门、输入门、输出门三大门控结构核心计算公式1遗忘门控制历史时序信息保留比例。2输入门控制当前时刻新信息存入比例。3细胞状态更新。4输出门控制细胞状态输出至隐藏层。2.4.2 本文网络结构我们设计了一个深层双向LSTM网络输入维度(240,3)240个时序步长3路并行特征RRI/RAMP/EDR。结构如下层类型输出维度参数说明Input(240, 3)时间步240特征维度3LSTM384return_sequencesTrue, dropout0.1LSTM384return_sequencesTrue, dropout0.2LSTM384return_sequencesFalse, dropout0.3Dense128ReLU激活Dense64ReLU激活Dense32ReLU激活Dense1Sigmoid激活输出呼吸暂停概率1第一层LSTM384神经元dropout0.1返回完整时序序列2第二层LSTM384神经元dropout0.2返回完整时序序列3第三层LSTM384神经元dropout0.3仅输出最后时刻隐藏特征4全连接层128→64→32逐级降维5输出层1神经元sigmoid激活二分类概率输出。损失函数采用二分类交叉熵损失Binary Cross Entropy优化器为Adam初始学习率默认0.001。训练时使用ModelCheckpoint保存验证集上准确率最高的模型。3. 实验设置3.1 数据集划分严格遵循Apnea-ECG官方的训练/测试划分训练集35条记录a01–a20, b01–b05, c01–c10共17045个60秒片段。测试集35条记录x01–x35共17268个片段。图4训练集和测试集标签分布情况图4展示了训练集/测试集的标签分布。训练集共16671个片段其中正常片段10252个呼吸暂停片段6419个测试集共16762个片段其中正常片段10432个呼吸暂停片段6330个分布情况如图所示。两类样本数量基本均衡无需采用过采样或欠采样处理。3.2 评价指标设测试集共有 N 个样本其中真实类别为阳性呼吸暂停的样本数为真实类别为阴性正常的样本数为。模型预测结果与真实标签的组合可形成混淆矩阵如下预测为阳性 (1)预测为阴性 (0)真实阳性 (1)TP (True Positive)FN (False Negative)真实阴性 (0)FP (False Positive)TN (True Negative)3.2.1 混淆矩阵Confusion Matrix混淆矩阵本身不是一个标量指标而是上述 2×2 的计数矩阵3.2.2 准确率Accuracy正确分类的样本数占总样本数的比例3.2.3 精确率Precision在所有预测为阳性的样本中真正为阳性的比例3.2.4 召回率Recall在所有真实阳性的样本中被正确预测为阳性的比例召回率也称为敏感度Sensitivity或真正率TPR。3.2.5 F1 分数F1 Score精确率和召回率的调和平均数用于综合评价3.2.6 ROC 曲线下面积AUCROC 曲线以假正率FPR为横轴真正率TPR为纵轴。定义当模型输出为连续概率值或得分通过改变分类阈值可得到一系列点ROC 曲线即为这些点的连线。AUCArea Under Curve 是该曲线下的面积AUC数值越趋近于1代表模型对正负样本的区分能力越强泛化性能越优异取值为0.5时代表模型分类效果等价于随机猜测。其等价概率解释为随机抽取一个阳性样本和一个阴性样本模型将阳性样本的预测概率排到阴性样本之上的概率对于有限样本AUC 可通过 Wilcoxon-Mann-Whitney 统计量计算4. 结果与分析4.1 模型训练过程按照第3章的实验设置模型在训练集上进行了100个epoch的训练如果设置更高的epoch 准确率应该会更高批次大小为128。训练过程中记录了每个epoch的训练损失、训练准确率以及验证损失、验证准确率。图4展示了训练曲线。图5训练与验证曲线从图5可以看出损失曲线训练损失从初始的0.595快速下降前30个epoch降至约0.35之后缓慢下降至0.28左右。验证损失在前10个epoch快速下降至0.42附近随后在0.39~0.45之间波动最终稳定在约0.46。训练损失始终低于验证损失但差距在可接受范围内表明模型没有严重过拟合。准确率曲线训练准确率从67.9%稳步提升约80个epoch后达到87%以上。验证准确率在前期快速上升约30个epoch后达到82%左右之后在82%~83.5%之间震荡最佳验证准确率为83.97%第32 epoch左右。训练准确率与验证准确率差距约3~4个百分点说明模型的泛化能力良好。模型在训练过程中保存了验证准确率最高的权重对应epoch 32附近。以下所有测试结果均基于该最佳模型。4.2 测试集整体性能在包含16762个有效片段的测试集上经RRI有效性筛选后剔除了部分噪声片段模型取得了以下性能指标指标数值准确率Accuracy0.8340精确率Precision0.8021召回率Recall0.7439F1分数F1-Score0.7719ROC-AUC0.9038上述结果表明模型的整体分类准确率达到83.4%相比随机猜测50%有显著提升。精确率80.2%意味着当模型预测为“呼吸暂停”时有约80%的概率是正确的。召回率74.4%表示模型能够识别出约四分之三的真实呼吸暂停片段。F1分数为0.772综合平衡了精确率和召回率。ROC-AUC达到0.904说明模型对正负样本的区分能力非常优秀0.9。4.3 各类别详细分类报告测试集中各类别的详细性能如下表所示类别精确率召回率F1分数样本数正常Normal0.85120.88860.869510432呼吸暂停Apnea0.80210.74390.77196330宏平均0.82660.81630.820716762加权平均0.83260.83400.832616762从表中可知正常片段的精确率85.1%和召回率88.9%均高于呼吸暂停片段说明模型对正常样本的识别更稳健。呼吸暂停片段的召回率相对偏低74.4%表明部分呼吸暂停片段被误判为正常。这可能是因为某些呼吸暂停事件的心电图变化较为轻微如低通气事件或片段边界处包含部分正常状态。加权平均指标略高于宏平均反映了样本不平衡正常样本更多的影响但整体性能仍然可靠。4.4 混淆矩阵混淆矩阵数值如下预测为正常预测为呼吸暂停真实正常92681164真实呼吸暂停16214709计算可得真阴性TN 9268假阳性FP 1164假阴性FN 1621真阳性TP 4709图6混淆矩阵模型将约16.2%的正常片段误判为呼吸暂停假阳性率 FPR1164/(11649268)11.2%将约25.6%的呼吸暂停片段误判为正常假阴性率 FNR1621/(16214709)25.6%。这表明呼吸暂停的漏检率略高于正常片段的误报率与召回率偏低的现象一致。4.5 ROC曲线与AUCROC曲线下的面积为0.9038表明模型具有良好的分类性能。曲线紧贴左上角说明模型在低假正率下能够达到较高的真正率。例如当假正率为10%时真正率可达到约85%。图7测试集ROC曲线4.6 PR曲线与平均精确率AP图8测试集精确率-召回率曲线从 PR 曲线可以看出模型在召回率低于 0.8 时能保持较高的精确率0.9当召回率超过 0.8 后精确率开始快速下降表明为了识别更多呼吸暂停片段不可避免地引入更多假阳性正常被误判为呼吸暂停。PR 曲线下的面积Average Precision, AP反映了模型在不平衡数据集上的综合性能。经计算AP 0.85说明模型能够较好地区分正负样本对于呼吸暂停片段的识别具有较高准确度。4.7 预测概率分布从预测概率分布图可以看出正常片段的模型输出概率即呼吸暂停概率集中在0.1以下的低值区域分布较为紧凑。呼吸暂停片段的输出概率集中在0.9以上的高值区域但存在一部分样本落在0.4~0.6的模糊区间。两类样本的概率分布重叠区域较小分离度良好说明模型学到的特征具有较强区分性。分类阈值设为0.5是合理的。图9测试集预测概率分布直方图5. 总结与展望5.1 工作总结本文基于公开的Apnea-ECG数据库设计并实现了一套完整的阻塞性睡眠呼吸暂停自动检测流程。从原始ECG信号的预处理、R峰检测、多维度特征提取到深层LSTM-RNN模型的构建与训练系统性地解决了单导联心电信号在OSA筛查中的关键问题。主要工作与成果总结如下数据预处理与特征提取将原始ECG信号切分为60秒无重叠片段采用小波阈值与带通滤波5–15 Hz进行去噪有效抑制了基线漂移和肌电干扰。基于Pan-Tompkins算法检测R峰依次提取了RR间期RRI、R波幅度RAMP和ECG衍生呼吸信号EDR三类生理特征。通过三次样条插值将所有特征统一到240个时间步长4 Hz重采样并经零均值化和幅度缩放后构建了尺寸为(N,240,3)(N,240,3)的特征张量。模型构建与训练搭建了一个三层LSTM-RNN网络每层384个单元并采用递进式dropout0.1→0.2→0.3后接全连接层与sigmoid输出。模型以二元交叉熵为损失函数、Adam为优化器在训练集16671个有效片段上训练100个epoch最终在验证集上获得83.97%的最佳准确率。性能评估在独立测试集16762个片段上模型取得了83.40%的准确率、0.904的ROC-AUC以及0.85的平均精确率AP。混淆矩阵分析表明正常片段的精确率与召回率分别为85.1%和88.9%呼吸暂停片段的精确率与召回率分别为80.2%和74.4%。预测概率分布显示正常与呼吸暂停片段的模型输出分离良好分类阈值0.5合理。以上结果证明基于RRI、RAMP、EDR多通道时序特征的三层LSTM网络能够有效捕捉睡眠呼吸暂停相关的心电图变化仅使用单导联ECG即可实现较高精度的OSA自动检测为低成本、便携式睡眠呼吸暂停筛查提供了可行方案。5.2 局限性与未来工作未来工作可从以下几个方向展开引入注意力机制在LSTM基础上叠加自注意力层或Transformer编码器增强模型对关键时间步的聚焦能力有望提升对短时呼吸暂停事件的检测灵敏度。多尺度特征融合除RRI、RAMP、EDR外可加入R波面积、心率变异性频域指标LF/HF等补充特征构建更丰富的输入张量。事件级后处理当前为片段级独立预测可将连续的片段预测结果通过隐马尔可夫模型或条件随机场进行平滑减少孤立误判提升事件一致性。跨数据库泛化验证在MIT-BIH呼吸暂停数据库、CHIME数据集上进行迁移学习或域适应实验检验模型的通用性。综上本文提供了一套从原始心电到呼吸暂停辅助诊断的完整技术方案兼具理论严谨性与工程可实现性。该流程可移植至便携式心电设备或可穿戴贴片为实现低成本、家庭化的睡眠呼吸暂停初筛提供了有益参考。参考文献[1] Penzel T, Moody G B, Mark R G, Goldberger A L, Peter J H. The Apnea-ECG Database[J]. Computers in Cardiology, 2000, 27: 255-258.[2] Pan J, Tompkins W J. A real-time QRS detection algorithm[J]. IEEE Transactions on Biomedical Engineering, 1985, BME-32(3): 230-236.[3] Urtnasan E, Park J U, Joo E Y, Lee K J. Automated detection of obstructive sleep apnea events from a single-lead electrocardiogram using a deep learning approach[J]. IEEE Access, 2018, 6: 35926-35934.[4] Li C, Yang Y, Xu Y, et al. Accurate detection of sleep apnea with long short-term memory network based on RR interval signals[J]. Knowledge-Based Systems, 2021, 212: 106591.[5] Crespo A, et al. Electrocardiogram-derived respiration in screening of sleep-disordered breathing[J]. Computers in Cardiology, 2011, 38: 465-468.Tips下一讲我们将进一步探讨心电信号处理与应用的其他部分。以上就是基于LSTM-RNN的睡眠呼吸暂停检测的全部内容啦~我们下期再见拜拜(⭐v⭐) ~Ps有代码实现需求请见下列【微信名片】或【主页信息】谢谢支持~