胡军锋,郑彬
(北京工业大学理学部,北京 100022)
在血液循环中,心脏周期性地跳动并进行射血,血液沿着主动脉方向流动时对血管壁产生的压力[1],称为血压(blood pressure, BP)。血压是人体最重要的生理参数之一,准确的测量血压可以监测高血压和低血压,以及预防由此引发的脑梗塞、中风、心力衰竭等心血管疾病。据2019年发布的《中国心血管病报告2018》指出,我国现有2.9亿名心血管病患者,死亡率居首位[2]。通常使用的基于柯氏音法或示波法血压计[3]只能获得某一时刻的血压值。近年来,基于光电容积脉搏波描记法(photoplethysmograph, PPG)或心电图(electrocardiogram, ECG)信号的血压测量方法使得准确、便携、连续测量血压成为可能。
ECG信号是心脏电活动的外在反映,具有广泛性、独特性、速度快等特点[4]。心脏的跳动会产生一个连续的压力波,此波能够通过血管进行传递,并且会略微改变血管的直径。PPG信号就是基于该变化,利用光电方法检测血管血液容积的变化,具有非平稳、伪周期性的特点[5]。在检测PPG信号过程中,进入血液中的光大部分都被血红蛋白吸收,而血红蛋白又与含氧量有关,即包含呼吸信号。同时,血管血压容积变化与心脏搏动有明显的关系,即包含心脏信号。因此,PPG信号包含心脏信号和呼吸信号。ECG/PPG信号传感器体积小、信号采集成本低,可集成在可穿戴设备上。ECG/PPG信号的采集过程噪声较多,导致现有可穿戴设备的血压检测精度都不高。目前,市面上尚无精度能够达到美国医疗器械促进协会(Association for the Advancement of Medical Instrumentation, AAMI)或英国高血压协会(British Hypertension Society, BHS)所制定的血压计测量标准的可穿戴设备。为实现利用可穿戴设备准确测量血压,需要在硬件上提高ECG/PPG信号采集的精度,同时要构建更为准确的血压检测模型。
针对上述问题,本研究提出了一种基于深度学习的ECG/PPG信号处理技术,提高了血压检测精度。该技术基于小波包的模态分解技术和神经网络算法,可以从ECG/PPG信号中准确估计出血压值。
基于深度学习的ECG/PPG血压测量方法较多,下面分别介绍基于PPG信号或ECG/PPG信号测量血压的研究现状。
2003年,Teng等[6]较早地使用PPG信号的波形特征预测血压。他们使用与血压相关性较好的特征建立了预测血压的线性回归模型,为实现无创连续测量血压提供了一种新的手段和方法。脉搏波从心脏部位传递到检测部位的时间,称为脉搏波传播时间(pulse transit time, PTT)[7]。2019年,Lazazzera等[8]将PTT、心率和心率变异性输入到线性模型中计算血压值,只有舒张压的检测精度达到了AAMI标准。同年,Slapnicar等[9]采用残差网络模型分别基于原始PPG数据和PPG及其导数进行训练,发现PPG的导数也包含有用的信息。2019年,雷苏力[10]利用反馈神经网络建立了血压预测模型,并在健康人群中取得了较好的结果。但是,该模型不适用于患高血压、低血压的人群。2021年,Liu等[11]提出了一种基于主成分分析的血压检测算法,可以有效地提取PPG信号中的有用信息。
另外,还有一些研究者在人体两个与心脏不同距离的部位(如左手和右手)同时采集PPG信号,并将时间间隔(PTT)作为特征参数计算收缩压和舒张压。经研究发现,该方法虽然收缩压的计算误差较小,但是舒张压的计算误差较大,无法达到相关医学标准[12-14]。
2016年,Ghosh等[15]为了更容易地提取PPG信号的特征,对PPG信号进行稀疏化处理,并结合ECG信号,采用最小二乘法建立血压检测模型。该模型只有在静止状态下的预测结果符合AAMI标准,在运动状态下的检测结果较差。2017年,Lo等[16]使用两级零阶保持算法对ECG/PPG信号降噪,采用长短期记忆(long short-term memory, LSTM)神经网络建立血压检测模型。相对于基于PTT检测血压的回归模型,LSTM模型对收缩压和舒张压的检测精度分别提升了1.317 mmHg和0.656 mmHg。2018年,Ertugrul等[17]利用ECG/PPG信号在时域、频域的统计特性,采用极限学习机神经网络计算血压,在较小数据集上的计算结果达到了AAMI标准和BHS标准的A级别。同年,Wang等[18]分别使用支持向量回归方法和人工神经网络(artificial neural network, ANN)建立血压检测模型,采用了多个评估函数均表明ANN更好。ANN模型的收缩压检测精度为(7.09±1.80) mmHg,舒张压检测精度为(3.98±1.21) mmHg。
PPG信号具有较强的多变性,特征点提取难。因此,本研究采用基于小波包的模态分解技术对PPG信号进行处理。
血压测量的基本流程见图1。首先,对ECG和PPG信号按照筛选规则进行筛选。然后,采用模态分解技术对PPG信号进行处理,提取出其中的心脏信号和呼吸信号。接下来,将PPG、心脏信号、呼吸信号、ECG和BP信号同步,对其进行截取,得到实验数据。最后,建立血压测量模型,得到人体血压值。
图1 血压测量算法基本流程
本研究中的实验数据来自MIMIC-Ⅲ数据集[19]。MIMIC-Ⅲ数据集是美国麻省理工学院提供的一个基于重症监护室患者监测情况的医学开源数据集,涵盖了健康者、老年人、高血压患者和其他疾病患者的PPG、ECG和BP信号,且患者的平均年龄大约为65.8岁,其中55.9%的患者为男性,44.1%的患者为女性。选取其中同时具有PPG、ECG和BP信号的数据作为实验数据,其数据示例见图2。
图2 BP、PPG、ECG信号示例图Fig.2 Schematic diagram of BP,PPGand ECG signals
由图2可知,BP、PPG和ECG都是动态信号,会随着每次心跳而发生变化,采样频率均为125 Hz。
2.2.1数据筛选 MIMIC-Ⅲ中的每条数据所对应的时间序列信号可表示为A={X(t)|t=0,1,...,n},其中X(t)=(x1(t),x2(t),x3(t))为三维向量,其分量分别对应t时刻的PPG、ECG和BP信号的值。本研究对原始数据进行了如下的筛选。
筛选规则:(1)考虑到数据的完整性,以及模型构建的需要,选择采集时间超过1 min(样本大小大于213)的原始信号,即|A|≥213;(2) 为了增加数据种类的多样性,选择脉压差小于等于80 mmHg的数据,即|max(x3(t))-min(x3(t))|≤80。
数据处理步骤:
(1)选择满足筛选规则的数据。
(2)考虑到所检测信号的稳定性,截取212~213之间的信号片段。
(3)确定目标值。检测血压信号BP中的波峰和波谷点,确定每个周期的收缩压和舒张压。
2.2.2模态分解 由于PPG信号具有较强的多变性,提取特征难。本研究利用基于小波包的模态分解技术对PPG信号进行处理。该模态分解技术包含(synchrosqueezed wave packet transforms,SSWPT)算法[20]、(recursive diffeomorphism-based regression,RDBR)算法[21]和(multiresolution mode decomposition,MMD)算法[22]。
SSWPT算法是一种基于小波包变换的模态分解算法,能够从复杂信号中准确地估计各分量信号的瞬时信息,在时频域的分辨率优于小波变换。RDBR算法是一种基于微分和非参数回归估计波形函数的算法,可以精确地估计各分量信号的形状函数。MMD算法是一种自适应时间序列分析方法,擅长处理非线性和非平稳的时间序列数据,可以较好地体现出信号随时间的变化情况。上述算法在生物医学信号、雷达信号和地震波等领域已经取得了一定的成果[23-25]。
2.2.2.1模态分解原理 假设一个复杂信号f(t)由K个振荡信号叠加组成,写成如下形式:
(1)
其中,
(2)
显然,任意周期信号都可由不同频率的正余弦信号叠加而成。当计算信号fk(t)的正弦分量时,其余弦分量会作为噪声影响其计算。因此,对信号fk(t)进行三角变换,分别提取出特定频率的正弦信号和余弦信号。如下:
(3)
(4)
对于信号fk(t)而言,其频率并不是固定的。接下来,我们假设Ml为计算频率宽度为l的多分辨率算子,则
(5)
基于上述原理,当频率为某一固定值n0时,对式(5) 使用RDBR算法,可以得到多分辨率展开系数{αno,k}和{bn0,k},以及形状函数{scn0,k}和{ssn0,k}。由于信号在采集过程中会受到不同噪声的扰动,导致各频率下的信号都可能含有噪声。因此,对当前频率的剩余信号重复执行RDBR算法,直至残差信号中无明显的信号成分存在。此外,信号fk(t)的频率并非固定不变,故遍历信号fk(t)的频率宽度,得到信号fk(t)在每一个频率下的多分辨率展开系数和形状函数,进而得到信号fk(t)。MMD算法正是基于上述原理,准确描述非线性和非平稳时间序列。
2.2.2.2模态分解流程 PPG信号模态分解具体流程如下:
第二步:设定频率宽度M。利用MMD算法计算信号fk(t)在不同频率下的正弦、余弦信号分量。
第三步:利用RDBR算法,计算各频率下的正、余弦信号分量的形状函数和振幅函数。
第四步:重复执行第三步,直到达到指定迭代次数或满足终止条件。
第五步:将信号fk(t)在所有频率下的正、余弦信号分量组合到一起,得到信号fk(t)。
ECG和PPG信号的频率较低,在采集过程中容易受噪声影响,如周围环境的光噪声、检测仪器的工频噪声、以及仪器和皮肤接触面发生位移产生的运动伪差等,这些噪声对测量血压有一定程度的影响。因此,需要削弱原始信号中的噪声干扰。通过模态分解技术提取各分量信号,起到了降噪的作用。
图3 心脏信号
图4 呼吸信号
图5 残差信号
图6 残差信号的自相关
由图3、图4中可知,所提取的心脏信号和呼吸信号可以精确地体现出个体在某一时刻的真实状态。由图5、图6可知,残差信号的自相关系数在非0处接近0,且残差信号的均值为0,表明残差信号接近随机白噪声。说明已较好地提取出心脏信号和呼吸信号。
2.2.3数据同步 首先确定BP信号第一个波峰点的时刻,由于PPG信号是在手指进行采集的,从心脏到手指有一定的距离(大约1 m),会导致所采集的同一时刻PPG信号有一定的延迟。考虑到动脉血液速度大约0.35 m/s,故在第一个波峰点的时刻延迟375个点(约3 s)作为PPG信号的起始点,这也是心脏信号和呼吸信号的起始点。由于ECG是心脏活动的电信号表达形式,且采集距离较近,故采用BP信号第一个波峰点的时刻作为ECG信号的起始点。样本数据的各分量信号示例见图7。
2.2.4数据截取 确定了同一时刻的心脏信号、呼吸信号、ECG信号和BP信号,即可对数据进行截取,作为本研究的实验数据。本研究将截取各信号的前520个采样点作为训练数据,由于收缩压和舒张压在较短时间内的变化较小,因此,选取BP信号片段的最小值为舒张压、最大值为收缩压。
一维CNN可以有效地从时间序列中学习到数据间的相互依存关系,从较短的数据片段中获得有用的特征。当该特征在数据片段中的位置相关性较低甚至不相关时,一维CNN会体现出非常好的性能[26]。与循环神经网络类似,一维CNN同样可以在固定时间段内分析任意种类的时间序列数据,并有良好的预测性能[27]。
考虑到本研究的输入数据为ECG信号、呼吸信号和心脏信号等时间序列数据,可采用一维CNN建立血压检测模型。本研究构造的CNN模型框架见图8,模型输入层的维度大小是(520,3)。其中,520是时间序列的长度,即每一条信号有520个包含特定信息的数值点,3是输入数据的维数,即每条输入数据包含呼吸信号、心脏信号和ECG信号。CNN模型的隐藏层中包含8个卷积层和4个池化层,即每两个卷积层之间连接一个池化层(以减少输出的复杂性并防止过拟合),输出层采用线性函数来输出预测值。
图7 样本数据各分量信号示例
根据上节所给筛选规则和处理方法,从MIMIC-Ⅲ数据集中获得5 776条数据。每条数据包含原始PPG、ECG和血压信号,以及提取出的心脏信号和呼吸信号。血压值范围为50~198 mmHg,其中,收缩压范围为60~198 mmHg,舒张压范围为50~154 mmHg,且收缩压大于180 mmHg、小于 100 mmHg的百分比分别为 0.24%、 8.00%,舒张压大于 100 mmHg、小于 60 mmHg的百分比分别为 1.60%、 43.30%。在训练模型过程中,输入序列数据长度为520,Epoch设置为100,学习率为0.01,优化方法选择Adam,损失函数为MSE。另外,本研究采用5折交叉验证方法,用于评估模型的稳定性。
接下来,使用ECG/呼吸/心脏信号估计血压。为了评价所提出的血压测量方法,本研究计算了CNN血压检测模型在AAMI标准下的计算结果,见表1。
表1 血压检测模型误差 Table 1 Error of blood pressure detection model
表1显示了CNN模型的收缩压、舒张压检测结果误差在AAMI标准下的结果。由表1可知,舒张压比收缩压更容易预测。根据AAMI标准,预测值和实际值之间的平均绝对差值必须小于5 mmHg,标准偏差必须小于8 mmHg。在本研究中,收缩压的检测精度为(4.6852±6.0730) mmHg,舒张压的检测精度为(2.5340±3.9860) mmHg,均达到了AAMI标准。
为了与BHS标准[28]做比较,本研究计算了CNN血压检测模型的检测误差分别小于等于5、10、15 mmHg的占比,结果见表2。
表2 血压检测模型误差占比 Table 2 Error ration of blood pressure detection model
由表2可知,当使用ECG/呼吸/心脏信号估计血压时,CNN模型的收缩压/舒张压检测结果均达到了BHS标准的A级别。
由于PPG信号与血压有较强的相关性,下面仅使用从PPG信号中提取出的呼吸和心脏信号作为训练数据,所得CNN模型在测试集上的误差结果见表3。
图8 一维卷积神经网络模型框架
由表3可知,CNN模型的舒张压检测精度达到了AAMI标准和BHS标准的A级别,但是其收缩压检测精度并未达到AAMI标准。另外,与表1、表2比较可知,仅使用呼吸/心脏信号估计血压时,CNN模型对于收缩压/舒张压的检测精度在AAMI标准和BHS标准下均有明显的降低,这表明ECG信号在提高测量血压精度方面的作用显著。
表3 基于呼吸/心脏信号的CNN模型检测误差
图9—图12为基于ECG/呼吸/心脏信号测量血压时,收缩压、舒张压的结果偏差的散点图和测量误差的统计直方图。
图9 收缩压测量结果偏差Fig.9 Deviation of systolic blood pressure measurement results
图10 舒张压测量结果偏差Fig.10 Deviation of diastolic blood pressure measurement
图9、图10分别表示收缩压、舒张压的所有测量结果偏差的散点图,横坐标表示样本数量,纵坐标表示偏差值。由图可知,数据分布较为均匀,集中分布在0值附近,表明实验结果误差较小。
图11、图12分别表示收缩压、舒张压测量误差的统计直方图,横坐标表示误差分布,纵坐标表示样本数量。图中体现了收缩压、舒张压的所有测量误差分布情况,误差小于等于5 mmHg样本数占比分别达到了71.21%、87.17%,表明该模型有较好的测量精度。
图11 收缩压测量误差Fig.11 Systolic pressure measurement error
图12 舒张压测量误差Fig.12 Diastolic blood pressure measurement error
国际高血压协会于2020年发布了新的血压标准[29],SBP/DBP高于140/90 mmHg为高血压,SBP/DBP低于90/60 mmHg为低血压,介于其中的为正常血压。根据该标准,可将5 776条数据划分为三类人群:高血压人群(1 022条)、低血压人群(2 523条),健康人群(2 231条)。对不同人群的检测结果见表4。
表4 不同人群的CNN模型检测误差 Table 4 Detection error of CNN model of different populations
由表4可知,当基于ECG/呼吸/心脏信号测量血压时,CNN模型对于健康人群的检测得了较好的结果,其SBP和DBP的检测精度均达到了AAMI标准。对于高血压、低血压人群的检测,只有DBP的检测精度达到了AAMI标准,但是对于SBP的检测也取得了较好的结果,其高血压检测精度为(5.9014±6.2057) mmHg,低血压检测精度为(6.0501±5.7678) mmHg。
本研究的基于深度学习的ECG/PPG血压测量方法,利用基于小波包的模态分解技术对PPG信号进行处理,提取出呼吸信号和心脏信号,并与ECG信号相结合,经数据同步与截取后,使用学习特征较为全面的深度学习方法建立血压检测的CNN模型,提高了血压检测精度。当使用ECG/呼吸/心脏信号估计血压时,CNN模型的检测精度最高,其SBP与DBP检测精度分别为(4.6852±6.0730) mmHg和(2.5340±3.9860) mmHg,均达到了AAMI标准和BHS标准的最高级别。当使用呼吸/心脏信号预测血压时,CNN模型的舒张压检测精度达到了AAMI标准和BHS标准的最高级别,但是收缩压检测精度未达到AAMI标准。此外,本研究还对该模型在健康、高血压、低血压等人群中的检测精度分别进行了研究。其中,对于健康人群的检测取得了最好的结果,达到了AAMI标准;对于高血压、低血压人群的检测,只有DBP的检测精度达到了AAMI标准。
本研究结果表明,模态分解技术能够有效地提取出与血压密切相关的心脏信号和呼吸信号,减少原始PPG信号中的噪声,与ECG信号结合后可以有效提高对血压的检测精度。