基于频域滤波-多模态深度神经网络的组间房颤识别方法与流程

文档序号:23015304发布日期:2020-11-20 12:24阅读:180来源:国知局
基于频域滤波-多模态深度神经网络的组间房颤识别方法与流程

本发明涉及医学信号处理技术领域,更确切地说,一种基于频域滤波-多模态深度神经网络的组间房颤识别方法。



背景技术:

近些年,随着信息领域科技的进步,特别是模式识别技术的发展,计算机辅助诊断系统因其快速、可靠的分析手段,已成为最有前景的临床诊断解决方案。通过当今先进的硬件设施,我们可以容易地得到病人的心电信号,即人们所说的心电图。临床上心脏疾病的预防和诊断主要依靠临床医生对心电图的主观经验判断,然而手动或目视检查在长连续心电图节拍中推断这些细微的形态学变化的过程,是费时并且容易因疲劳而发生错误。因此,实时计算机辅助诊断系统是必不可少的,可以帮助医生实时监测病人的病况,克服这些对心电图信号的评估限制。

用计算机辅助的诊断系统可以对心电图中的信息进行实时的分析进而得到有用的信息。通过提取表征了心电图有效信息的特征向量,输入到分类器算法得到心拍的类别,进而判断心拍有无心血管疾病。工作在计算机硬件上的心拍自动识别系统,是该类设备的核心。技术途径是提取能够表征心电图有效信息的特征向量,将其输入到分类器算法,得到心拍的类别,进而判断心拍是否发生了房颤。在特征提取这一步骤中技术难点是形态学特征的提取,是否能够合理的特征提取将会直接影响结果的准确性和可靠性。因此,本发明采取多种采样方式构成特征向量输入到分类器,经处理后输出分类结果,给出实时提取的心拍是属于健康心拍,还是房颤心拍,医生在此基础上进行更深层次的诊断。



技术实现要素:

本发明的目的是为解决传统机器学习框架由于心电图因信息管理系统的病理变化或患者年龄、性别的不同而不同,泛化能力较弱的问题,而提供一种基于频域滤波-多模态深度神经网络的组间房颤识别方法。

基于频域滤波-多模态深度神经网络的组间房颤识别方法,它包括:

1)寻找心电信号的r点,对单导联心电信号样本进行单心拍检测

读入单导联的心电信号数据,将读入的单导联心电信号数据通过带通滤波器得到频域单导联心电信号数据,对得到的频域单导联心电信号数据进行希尔伯特变换取包络,然后取峰值,之后设置峰值阈值为最大峰值的75%,对寻找到的所有峰值进行筛选,选出所有可能的r点位置。

2)采用三种采样方式进行复合采样,生成多通道心电信号

a.对一个导联的心电信号,以r点为中心前后各取150个点,固定到维度300;

b.对一个导联的心电信号,以r点为中心前后各取300个点,再重采样到固定维度300;

c.对一个导联的心电信号,以r点为中心前后各取450个点,再重采样到固定维度300;

将上述三种采样方式所得的300维心电信号并排拼接,每导联心电信号由300*1维拼接成300*3维;将原始信号的每个导联数据都进行a,b,c操作,并排拼接成300*3*12维的心电信号样本x,其中12是指原始信号共计12个导联,作为深度神经网络模型的输入input。

3)搭建神经网络模型

深度神经网络包括三个依次并联的导联通道,每一个导联通道由三个串联的底层卷积层单元组成,在每一路导联通道的输出端有一个合并层,将每一路导联通道的特征图沿深度方向合并,所述深度方向即tensorflow框架通用特征图存储形式的第三个维度方向;通过底层卷积层并合并后的输出结果,再输入到包含两个串联卷积层的高层融合卷积层结构。每个所述底层和高层卷积层单元均包括一个卷积层以及该卷积层输出端依次串联的一激励单元操作和一池化层操作;所述卷积层单元使用的是一维卷积,用于提取一维心电信号特征;

在通过高层融合卷积层结构后的输出结果,串联attention层和lstm层;lstm层单元的输出串联一个激励单元为softmax的全连接层用于输出分析结果。

4)训练卷积神经网络的参数

初始化所述卷积神经网络参数,将所有整条心电信号数据集u划分为数据集u1和数据集u2,把数据集u1的样本作为训练集,把数据集u2的样本作为测试集;将训练集的心电信号样本输入到初始化后的神经网络中,以最小代价函数为目标进行迭代,生成所述卷积的神经网络的参数并保存。

5)对测试集样本进行自动识别

所述的搭建深度神经网络,当心电数据集拥有单导联时,输入信号维度为300*1;将用三种不同的采样方式得到的心电信号样本分别输入到3个底层卷积层中,其中每个底层卷积层包含三层卷积层单元,每个卷积层单元的输出端依次串联一激励单元操作和一池化层操作;第一个卷积层单元的卷积核数为8个,卷积核大小为16,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为1;经过第一层池化单元后的特征图维度为300*8;第二个卷积层单元的卷积核数为16个,卷积核大小为32,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为1;经过第二层池化单元后的特征图维度为300*16;第三个卷积层单元的卷积核数为32个,卷积核大小为8,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为1;经过第三层池化单元后的特征图维度为300*32;

将三个通道单导联信号进行上述操作后最终输出的特征图拼接操作,形成维度为300*32*3的特征图,输入到高层融合卷积层,高层融合卷积层包含两层卷积层,三个通道的特征融合成一块,形成特征图维度为300*128;

所述的深度神经网络为底层卷积层,高层融合卷积层和lstm层单元;

经高层融合卷积层后的特征图的输出串联一个attention单元,所述的深度神经网络中attention单元构造了一个维度同样为300*128的权重矩阵与卷积后的特征图对应元素点乘,加权后的特征图输出维度为300*128;这个权重矩阵的元素由神经网络训练得来,矩阵元素初始值为范围在0-1之间的随机数。将加权后的特征图输入到lstm层单元中,取lstm层单元的隐藏层数为128,lstm层单元输出特征图维度为128;lstm层单元的输出串联一个激励单元为softmax的全连接层,全连接层的层数为5。最终所述深度神经网络模型输出的预测向量y_pred维度为4,即类别数;

所述的深度神经网络输出的预测向量维度为4;使用keras开源框架和python语言搭建,使用交叉熵作为损失函数,使用adam优化器优化损失函数;

所述的学习深度神经网络的参数为:初始化所述神经网络的训练参数,将采样好的信号划分为训练集样本和测试集样本;即从总体样本中随机抽取一部分数目的样本当作训练集,对于其他未选中的样本视为测试集。再将训练集中的多通道心电信号x输入到初始化后的深度神经网络中,以最小化代价函数为目标进行迭代,以生成所述深度神经网络并保存下来;其中,每迭代一次则更新一次所述训练参数,直至最后所述的深度神经网络的损失值和准确率稳定在某一数值附近,即可停止训练并保存当前网络的训练参数和模型结构信息;

所述的对样本进行自动识别为:将划分好的测试集样本全部输入到已保存的所述神经网路中,运行所述深度神经网络即可获得测试集样本对应的4维预测值向量输出,将测试集样本的标签使用one-hot编码的方法生成4维的标签向量,再通过将输出的预测值与测试集样本的标签比对来检查是否分类正确;

步骤5)所述的对测试集样本进行自动识别为:

将划分好的测试集样本全部输入到已保存的所述神经网路model1.hd5中,运行所述深度神经网络即可获得测试集样本对应的4维预测值向量输出y_pred,将测试集样本的标签使用one-hot编码的方法生成4维的标签向量y_label,在keras.utils模块中提供np_utils.to_categorical函数对输入的测试集标签进行one-hot编码,再通过将输出的预测值与测试集样本的标签比对来检查是否分类正确,即统计y_pred和y_label对应位置值相同的样本个数n,用n除以测试集样本总数即为最终的准确率。

本发明提供了基于频域滤波-多模态深度神经网络的组间房颤识别方法,它包括:1)寻找心电信号的r点,对单导联心电信号样本进行单心拍检测;2)采用三种采样方式进行复合采样,生成多通道心电信号;3)搭建神经网络模型;4)训练卷积神经网络的参数;5)对测试集样本进行自动识别;解决了传统机器学习框架由于心电图因信息管理系统的病理变化或患者年龄、性别的不同而不同,泛化能力较弱的问题。

附图说明

图1为深度神经网络结构图。

具体实施方式

实施例1基于频域滤波-多模态深度神经网络的组间房颤识别方法

下面结合附图和具体的实施方式对本发明作进一步说明。

具体实例为boe-topcoder编程大赛所提供的数据集,该数据集共有8528条单导联心电信号,其中有四种心电信号情况,分别是n类(正常心电信号),a类(房颤心电信号),o类(非房颤异常心电信号)以及~类(含噪声心电信号)。这四种类别的标签以及在所给数据集中类别的对应关系如表1;在本实例中,通过工作在计算机上的软件系统和行业内众所周知的matlab和python软件环境进行实现。

本实施例的详细步骤如下:

一.寻找r点,单心拍检测的实现

用matlab读入单导联的心电信号数据,将读入的单导联心电信号数据通过带通滤波器得到频域单导联心电信号数据,对得到的频域单导联心电信号数据进行希尔伯特变换取包络,再利用matlab内建函数findpeaks函数寻找峰值,之后设置峰值阈值为峰值最大值的75%,对寻找到的所有峰值进行筛选,选出所有可能的r点位置并保存。

二.采用多种采样方式生成多通道心电信号样本的实现

采用如下三种采样方式扩增心电信号的通道数:

(1)采样方式一为:对每个导联的心电信号,以r点为中心前后各取150个点,重采样到维度300;

(2)采样方式二为:对每个导联的心电信号,以r点为中心前后各取300个点,重采样到维度300;

(3)采样方式三为:对每个导联的心电信号,以r点为中心前后各取450个点,重采样到维度300;

将上述三种采样方式所得的300维心电信号并排拼接,每导联心电信号由300*1维扩增为300*3维,此时的3为该导联心电信号的通道数;将原始每个导联的心电数据经过所述复合采样方式形成上述300*3维的心电信号样本x,作为深度神经网络模型的输入。

三.搭建深度神经网络

(1)所述深度神经网络的具体结构

所述深度模型输入为合并各个通道后的心电信号x,因为所给竞赛数据是单导联信号,所以输入信号维度为300*3;其中3表示通道数。将输入心电信号样本每一个300*1维,即一个导联心电信号的数据对应输入到3个底层卷积层中,其中每个底层卷积层包含三层卷积层单元,每个卷积层单元的输出端依次串联一激励单元操作和一池化单元操作;第一个卷积层单元的卷积核数为8个,卷积核大小为16,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为1;经过第一层池化单元后的特征图维度为300*8;第二个卷积层单元的卷积核数为16个,卷积核大小为32,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为1;经过第二层池化单元后的特征图维度为300*16;第三个卷积层单元的卷积核数为32个,卷积核大小为8,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为1;经过第三层池化单元后的特征图维度为300*32;随后把3种采样方式得到的心电信号样本经过3个相同的底层卷积层所得到的特征图合并,最终得到300*32*3的特征图,底层卷积层的网络参数可以查看表2。

把底层卷积层输出的300*32*3维的特征图输入到高层融合卷积层,高层融合卷积层包含两层卷积层单元,第一个卷积层单元的卷积核数为64个,卷积核大小为8,其后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为1;经过第一层池化单元后的特征图维度为300*64。第二个卷积层单元的卷积核数为128个,卷积核大小为16,其后的激励单元relu函数,池化层单元的池化核大小为2,池化步长为1,经过第二层池化层单元后的特征图维度为300*128。具体的高层融合卷积层的参数可查看表3;

经高层融合卷积层后的特征图的输出串联一个attention单元,所述的深度神经网络中attention单元构造了一个维度同样为300*128的权重矩阵与卷积后的特征图对应元素点乘,加权后的特征图输出维度为300*128;这个权重矩阵的元素由神经网络训练得来,矩阵元素初始值为范围在0-1之间的随机数。将加权后的特征图输入到lstm层单元中,取lstm层单元的隐藏层数为128,lstm层单元输出特征图维度为128;lstm层单元的输出串联一个激励单元为softmax的全连接层,全连接层的层数为5。最终所述深度神经网络模型输出的预测向量y_pred维度为4。具体的attention参数和lstm参数可查看表4。

(2)所述深度神经网络的具体实现

所述深度神经网络使用keras框架中的函数式模型搭建,即从keras.models模块中导入model函数,设置model的输入为所述经过复合采样后的多通道心电信号x,输出为维度为4的预测向量y_pred;通过导入keras.layers模块中的convolution1d函数构造一维卷积层,通过导入keras.layers模块中的maxpool1d函数构造一维最大化池化层,拼接操作为keras.layers.concatenate,压平操作为keras.layers.flatten,全连接层为keras.layers.dense。通过导入keras.layers模块中的lstm函数构造lstm层单元,并设置lstm函数中的dropout参数和recurrent_dropout参数为0.2。

四.训练深度神经网络的参数

首先初始化所述深度神经网络的训练参数,将采样好的信号划分为训练集样本和测试集样本,划分后的数据集如表5所示。将训练集中使用复合方式采样后的多通道心电信号输入到初始化后的深度神经网络中,所述深度神经网络中使用交叉熵作为代价函数;keras中使用categorical_crossentropy函数,所述深度神经网络中通过构建的函数式模型model实例化一个对象model,在model.compile函数中设置参数loss为'categorical_crossentropy';并使用adam优化器以最小化代价函数为目标进行迭代,通过在model.compile函数中设置参数optimizer为‘adam’进行优化,以生成所述深度神经网络并保存为hd5后缀的文件model1.hd5;其中,每迭代一次则更新一次所述训练参数;直至最后所述的深度神经网络的损失值和准确率稳定在某一数值附近,即可停止训练并保存当前网络的训练参数和模型结构信息;所述深度神经网络共训练了8000个批次,每个批次为600个样本。(表5是按照组间方式进行划分训练样本和测试样本,将所有整条心电信号数据集u划分为数据集u1和数据集u2,把数据集u1通过三种采样方式得到的样本作为训练集,把数据集u2通过三种采样方式得到的样本作为测试集)

五.对样本进行自动识别

将划分好的测试集样本全部输入到已保存的所述神经网路model1.hd5中,运行所述深度神经网络即可获得测试集样本对应的4维预测值向量输出y_pred,将测试集样本的标签使用one-hot编码的方法生成4维的标签向量y_label,在keras.utils模块中提供np_utils.to_categorical函数对输入的测试集标签进行one-hot编码,再通过将输出的预测值与测试集样本的标签比对来检查是否分类正确,即统计y_pred和y_label对应位置值相同的样本个数n,用n除以测试集样本总数即为最终的准确率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1