心电信号采集及心电图分类识别的方法研究
扫描二维码
随时随地手机看文章
心电图(ECG,Electrocardiogram)是人体心脏活动的视觉时间序列,是医生诊断心脏病的重要依据。
基于传统心电图分类的诊疗技术基本依靠人力完成。专家以自己多年积累的经验和大量心脏领域的知识,得到准确的诊断结果。
然而,在心脏疾病高发的当今,每天都有大量的患者去做心电图,完全依靠人力去诊断,效率十分低下,而且也可能出现误诊断,会对患者和医院造成不好的影响[1]。 为了解决上述问题,基于心电图自动分类诊断技术开始出现。
本文在心电图采信号数据采集和传输方面,设计了基于 STM32 单片机的硬件心电数据采集系统,采用 BMD101 芯片采集原始心电信号数据,并用蓝牙和 WiFi 将数据发送到 PC 端上位机和安卓手机 APP 上进行分类处理。
1 心电信号分类识别方法的研究现状
目前,有两种主要的心电图分类研究形式,基于波形形状的分类方法和基于波形特征的分类方法[2]。
基于波形形状分类方法中,需要提取特征波形,然后使用医学分类规则对其进行判断。Philip Deehazal 等人利用心电图的形态特征和间期等 12 个特征进行训练和测试[3],将心拍分为 5 类,准确率达到 0.81。李坤阳等人结合小波变换和数学形态学,通过检测心电图的 QRS 波的特征点得到 QRS 波宽和 RR 间期等参数,再结合专家的临床经验,将心拍分为 4 类,准确率达到 0.94[4]。基于波形形态的分类方法对心电图的质量效果要求较高,抗干扰能力较差,对各波形的特征点的识别精确度要求较高,不适合处理动态心电图。所以,采用此类方法提取到的特征向量不够充分,导致分类诊断类型比较少,诊断准确率也比较低。
基于波形特征的分类方法是目前应用最广泛的一种心电图分类识别方法,刘世雄利用小波分析定位 QRS 波群的位置,接着分别从 QRS 波群中提取 26 个特征向量,最终采用模糊聚类方法对心电图进行分类[5]。骆德汉等人采用基于多阶前馈的人工神经网络对心电图进行了 6 分类[6]。
季虎基于多重判别和主成分分析提取特征,最后利用支持向量机进行分类[7]。Yusn 等人利用独立分量分析在时域上提取心电图特征,对心电图直接处理,最后利用神经网络对心电图进行 6 分类[8],取得了较好的结果。
Osowski 等人设计出一个将模糊自组织层和多层感知器进行级联的分类器,对心电信号实现了 7 分类[9],分类正确率达到了 96%。Owis 等人在心电信号的傅立叶变换域上分析提取特征向量,采用近邻法分类,最后实验得到该方法对 5 种心脏状况类型取得了 100% 的识别率,但对除了这 5 种类型其他的心脏状况识别率一般。
2 硬件电路的设计
2.1 系统介绍
该心电采集监测系统主要有四个模块组成:心电数据采集模块,无线传输模块,Android 端 APP 数据接收处理模块和 PC 端上位机数据接收处理模块。
当用户出现心脏不适后,可以立刻使用该采集设备去采集心电信号,采集到的数据通过蓝牙传输至 Android 手机的 APP,该 APP 可以实时显示心电波形和心跳速率,并能够定位到该用户的地理位置,并将数据上传到服务器。
2.2 采集模块
2.2.1 心电采集芯片
BMD101 芯片具有先进的模拟前端电路和灵活强大的数字信号处理结构。它可以采集从 μV 到 mV 的生物信号,然后经过 Neurosky 的专利算法处理。BMD101 的核心是一个功能强大的系统管理单元。它负责整体系统配置、运行管理、内外通信、专有算法计算和电源管理。BMD101 还配有固化 DSP 数字信号处理模块来加速对系统管理单元监控下的各种数字滤波的计算。
2.2.2 实物展示
图 1 心电采集硬件系统实物图
3 分类算法及系统软件设计
本文采用开源深度学习框架 Faster R-CNN 进行目标检测,该框架下对于特定网络模型的训练,对GPU 的性能有一定的要求。对于 ZF net 网络模型和 VGG-16 net 网络,分别要求 GPU 的显存至少是 3 GB 和 8 GB。
3.1 数据集构建
数据集的构建包括训练集的构建和测试集的构建。其中,训练集的构建包括:提取的 44 组人体心电数据、R 波检测、节拍图截取、节拍归类、平移旋转扩充节拍图等操作,最终将扩充后的节拍图集作为实验训练集。测试集的构建包括采集人体心电数据、预处理操作、R 波检测和节拍图的截图等操作,最终获取的未标记的节拍图集作为测试集。
3.1.1 心电图R波检测
小波变换技术在提升 Q 波检测的准确性方面表现出了良好的性能。根据小波变换理论,R 波峰与模最大模数最小值的零点具有稳定的位移关系。 因此,使用小波变换来检测 QRS 波是通过定位 R 波的方法的最大值的模数来检测 R 波,从 R 峰值位置开始 选择较小的刻度,向前和向后搜索 QRS 波开始和结束,以避免 QRS 波的宽度失真。对于干扰严重或非典型 R 波的情况,需提炼其模极大值点,以降低噪声对模极值点的干扰。
本实验中,通过离散小波变换方法检测心电信号的 R 波。首先检测模极大值,接着检测零点,即可以检测并给出到 QRS 波的位置。然后引入自适应噪声阈值,通过阈值判断检测到的尖峰位置是 R 波还是毛刺。图 2 展示了 R 波点的在心电信号的位置。
3.1.2 心电节拍图提取
本文在心电节拍图提取上采用滑动窗口搜索方法,如图 3 所示,针对前一节内容中小波变换检测出的每个 R 波点,记录下当前 R 点坐标,以当前 R 点为参考向左搜索 250 ms,如果位置点存在,则记录下此左端点坐标,否则停止搜索;再以当前 R 点为参考向右搜索 250 ms,如果位置点存在,则记录下此右端点坐标,否则停止搜索。以左右端点为边界截取图形,即作为实验中深度学习网络中的样本输入。
图 4 所示为上述方法提取的 5 种类别样本图示例。从图中可以看出不同类别的心电节拍形状存在较大差异,有利于提升分类模型的性能。
3.2 训练分类模型
深度学习的训练过程:在监督学习中,将带有标签的数据集按照一定的策略输入到深度网络模型中,在成千上万次迭代学习过程中,该模型不断调整其内部参数,最终成为一个具有有效分类作用的模型。
在本文中,以 xml 文件保存的训练集中,每一张具体的图像作为自变量 xi,图像中的目标包围框坐标 [x1,y1,x2,y2] 以及目标分类 Label(Label∈{“N”,“S”,“V”,“F”})作为因变量 yi。类似于二维空间中大量的点可以通过线性回归拟合出一条直线,深度学习中大量的(xi,yi)可以拟合出一个非常复杂的函数,该函数由其参数确定。
所以,深度学习网络模型的本质是训练出一个包含大量参数的非常复杂的非线性函数,以用于当给定自变量时,预测因变量的值。
在 Faster R-CNN 框架下,训练需要修改的几个部分。
(1) 修改数据集路径、标签、以及其他超参数的相关文件。
(2) 修改 train_val.prototxt、test.prototxt 中的类别数量。
(3) 修改 solver 文件,并设置其路径。
(4) 运行脚本 script_faster_rcnn_VOC2007_ZF.m,执行训练。
(5) 训练完成后,对生成的 detection_test.prototxt 文件进行修改。
在参数设置环节,本文主要采用默认的参数,而只针对 solver 文件中的 max_iter 和 stepsize 进行修改。max_iter 代表训练过程中的最大迭代次数,该参数过小会导致模型训练不充分,过大则可能导致模型过拟合(训练过于充分)。stepsize 代表执行学习率衰减策略时的迭代次数,亦即迭代多少次之后进行学习率衰减。学习率是深度学习训练过程中的重要参数:在训练的初始阶段,会设置一个较大的学习率,以便快速收敛;在训练的后期,会减小学习率,以免因步幅太大而错过最优值。
本文所采用的数据集包含 800 张图像,在不同的参数下进行了多次训练实验,最后发现 max_iter 和 stepsize 的值分别为 4 000 和 3 000 时,训练结果最佳。
3. 分类效果测试
本文所采用的 Faster R-CNN 框架对于心电节拍的分类结果包含三个方面:目标位置 box、目标分类以及得分 score,其中,目标位置是以一个矩形 box 的左上顶点和右下顶点的坐标来确定的,是一个 1×4 维的矩阵;目标分类是模型对于该位置下,图像类别的判断结果。在本文中,它只有 4 个离散值可取;得分 score 是模型对于该分类结果的评价,取值范围在 0~1 之间。分类测试结果如图 5 所示。
在心电图采信号数据采集和传输方面,设计了基于 STM32 单片机的硬件心电数据采集系统,采用 BMD101 芯片采集原始心电信号数据,并用蓝牙和 WiFi 将数据发送到 PC 端上位机和安卓手机 APP上。在心电信号数据接收方面,编写了 PC 端上位机来实现心电信号的实现显示与保存,同时编写了安卓端 APP 来实现心电信号的实时显示,同时能定位到当前使用者的地理位置,并将心电数据上传到远端服务器上。
心电图的正确分类取决于提取正确的特征,本文直接对预处理后的心电信号进行深度神经网络训练,逐层提取心电图特征,最终拟合出心电图自动分类的模型,用训练好的分类模型对心电图进行分类测试,得到了良好的效果。