基于多模态融合神经网络的心肌梗死自动检测方法与流程

文档序号:18470714发布日期:2019-08-20 20:15阅读:301来源:国知局
基于多模态融合神经网络的心肌梗死自动检测方法与流程

本发明涉及医学信号处理技术领域,更确切地说一种基于多模态融合神经网络的心肌梗死自动检测方法。



背景技术:

随着数字技术的发展,计算机辅助诊断系统由于其快速、可靠的分析手段,已成为最有前景的临床诊断解决方案。当今通过先进的硬件设施,我们可以很容易地得到病人的心电信号,也就是人们所说的心电图。医生可以通过观察心电图中蕴含的信息来判断病人的状态,然而手动或目视检查在长连续心电图节拍中推断这些细微的形态学变化的过程是费时并且容易因疲劳而发生错误。因此,实时计算机辅助诊断系统是必不可少的,可以帮助医生实时监测病人的病况,克服这些对心电图信号的评估限制。

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



技术实现要素:

本发明的目的是为解决传统机器学习框架解决由于信息管理系统的病理变化和一些如患者年龄、性别等外部因素的影响,心电信号会发生变化的方面,泛化能力较弱的问题,而提供一种基于多模态融合神经网络的心肌梗死自动检测方法。

一种基于多模态融合神经网络的心肌梗死自动检测方法,它包括:

1)通过对单个心拍的截取,生成12导联的心电信号样本

读入12导联的心电信号的数据,对每个导联心电信号根据同一时刻r波顶点的位置向前截取p个点,向后截取q个点,每个导联的每个心拍截取w=p+q个点的数据,相同时刻r波顶点每个导联所截取心电信号的w个点进行第二维度拼接,此时心电信号由1*w维扩增为12*w维。原始每个心拍的心电信号的数据形成上述12*w维的样本,作为卷积神经网络模型的输入x;

将所有12导联的心电信号通过上述单个心拍的截取方法对所有的心拍进行截取,形成数据集u,其中数据集u中的每个样本都是上述12*w维的单个心拍的心电信号数据;

2)搭建12导联的心电信号的卷积神经网络模型

卷积神经网络模型核心由两部分组成:

a.针对12导联的心电信号中每个单导联的心电信号的包含三个串联卷积层的底层卷积层结构,与输入x连接;

b.针对12导联的心电信号的包含两个串联卷积层的高层融合卷积层结构,与a部分连接,得出的特征经过多个全连接层得到输出分类结果y_pred;

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

初始化所述卷积神经网络的参数,将采样好的数据集u随机抽取80%数目的样本当作训练集,其他未选中的样本视为测试集;将训练集中的心电信号样本输入到初始化后的神经网络中,以最小化代价函数为目标进行迭代,生成所述卷积神经网络的参数并保存;

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

将划分好的测试集样本输入到卷积神经网络中并运行,获得测试集样本对应的2维预测值向量输出,将测试集样本的标签使用one-hot编码的方法生成2维的标签向量,将输出的预测值与测试集样本的标签比对来检查分类是否正确,通过分类结果y_pred来判别模型的性能;

所述卷积层包含一个卷积层单元以及该卷积层单元输出端依次串联的一激励单元操作和一池化层操作;

所述卷积神经网络参数为:输入x为心电信号样本,每个心电信号样本都是12*w维,12为导联的个数,w为每个心拍上截取的点数;将输入12导联心电信号的每个导联的信号分别输入到12个底层卷积层中,其中每个底层卷积层包含三层卷积层单元,每个卷积层单元的输出端依次串联的一激励单元操作和一池化层操作;第一个卷积层单元的卷积核数为5个,卷积核大小为3,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第一层池化单元后的特征图维度为(w/2)*5;第二个卷积层单元的卷积核数为10个,卷积核大小为4,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第二层池化单元后的特征图维度为(w/4)*10,第三个卷积层单元的卷积核数为20个,卷积核大小为4,卷积层后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第三层池化单元后的特征图维度为(w/8)*20;

将单导联信号进行上述操作后最终输出的特征图拼接操作,形成维度为12*[(w/8)*20]的特征图,输入到高层融合卷积层,高层融合卷积层包含两层卷积层,12导联的特征融合成一块,形成最终特征,得到的特征输入激励单元为softmax的全连接层,全连接层的层数为5层,得到输出分类结果y_pred;

所述的迭代为:迭代一次更新一次训练参数,直至最后卷积神经网络的损失值和准确率稳定在某一数值附近,停止训练并保存当前网络的训练参数和模型结构信息。

针对心电信号多导联的特性,运用现代的卷积神经网络算法对每个导联进行底层卷积,随后对每个导联底层卷积所得到的特征进一步进行多导联特征的高层融合卷积,得到最终特征进而输入到分类器进行分类得到分类结果。此方法对多导联心电信号的识别得到了较高的准确率。其中对心肌梗死心拍的识别的准确率可达到99.51%。其混淆矩阵如下:

附图说明

图1为底层卷积层示意图。

图2为高层融合卷积层示意图。

其中c:卷积层p:池化层x1…x12:输入处理好的单个导联的心电信号y:卷积输出的特征图

d:全连接层y_pred:最终输出结果。

具体实施方式

实施例1基于多模态融合神经网络的心肌梗死自动检测方法

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

具体实例为国际通行心电图数据库ptbdiagnosticecgdatabase(ptbdb),该数据库的数据及使用说明公开于行业内周知的physionet.org网站。数据库包含294位患者或者志愿者15个导联的心电信号数据,其中有常规的12个导联和3个的frank导联的心电信号数据,在此只选择了12个常规导联心电信号的数据做测试。对于physionet.org网站上的数据进行下载,下载时顺便根据已经标注的病型进行分类,在此只讨论健康和心肌梗死两种情况,两种类别的标签以及与ptbdb数据集中类别的对应关系如表2。在本实例中,通过工作在计算机上的软件系统和行业内所周知的matlab和python软件环境进行实现。

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

一.生成12导联的心电信号样本

用matlab读入从physionet.org网站下载的ptbdb数据集的12导联的心电信号的数据,首先对原始信号去噪,然后根据同一时刻r波顶点的位置向前截取200个点,向后截取400个点,每个导联截取到了600个点的数据,随后把相同时刻r波顶点对每个导联所截取的600个点进行第二维度拼接,每导连的心电信号由1*600维扩增为12*600维,此时已经将原始每个导连的心电信号的一个心拍经过采样形成上述12*600维的一个样本。然后对所有心电信号数据的r波顶点进行同样的操作,得到包含(12*600)*39669维数据的数据集,因为每个样本都是(12*600)维,由于每个样本都是根据r波顶点的位置截取的,所以39669为截取所使用的r波顶点的个数,也就是样本的个数。每个样本都是12*600的12导联心电信号数据x,作为多导联卷积神经网络的输入。

二.搭建12导联的心电信号的卷积神经网络模型

所述卷积神经网络模型输入为心电信号样本x,x是预处理部分输出的(12*600)维一个心电信号的样本,其中12为所使用的心电信号的导联数,即输入通道数,600为每个心拍所截取的点数。将输入心电信号样本每一个1*600维即一个导联心电信号的数据对应输入到12个的底层卷积层中,即每个导联的信号都单独进入一个底层卷积层进行处理,其中每个底层卷积层包含三层卷积层单元,每个卷积层单元的输出端依次串联的一激励单元操作和一池化层操作;第一个卷积层单元的卷积核数为5个,卷积核大小为3,其后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第一层池化单元后的特征图维度为(600/2)*5。第二个卷积层单元的卷积核数为10个,卷积核大小为4,其后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第二层池化单元后的特征图维度为(600/4)*10,第三个卷积层单元的卷积核数为20个,卷积核大小为4,其后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第三层池化单元后的特征图维度为(600/8)*20,随后把12导联心电信号样本经过12个相同底层卷积层所得到的特征图合并,最终得到(600/8)*20*12的特征图,底层卷积层的网络参数可以查看表3。

把底层卷积层输出的(75*240)维的特征图输入到高层融合卷积层,高层卷积层包含两层卷积层单元,第一个卷积层单元的卷积核数为256个,卷积核大小为3,其后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第一层池化单元后的特征图维度为38*256。第二个卷积层单元的卷积核数为512个,卷积核大小为4,其后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2,具体高层卷积网络层的参数可以查看表4;经过第二层池化单元后的特征图维度为19*512,形成最终特征图,将得到的特征图进行压平操作,得到9728*1的一维向量,随后输入到激励单元为softmax的全连接层,全连接层的层数为5层,最终得到输出分类结果y_pred。所述模型使用keras开源框架和python语言搭建。

所述神经网络使用keras框架中的函数式模型搭建,即从keras.models模块中导入model函数,设置model的输入为上述12导联的心电信号样本x,输出为维度为2的预测向量y_pred。通过导入keras.layers.convolution1d函数构造一维卷积层,通过导入keras.layers.maxpool1d函数构造一维池化层,拼接操作为keras.layers.concatenate,压平操作为keras.layers.flatten,全连接层为keras.layers.dense。

三.训练卷积神经网络模型的参数

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

四.对测试集样本进行自动识别

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

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