基于VQ-VAE2和深度神经网络方法的心电异常检测方法与流程

文档序号:26050773发布日期:2021-07-27 15:25阅读:396来源:国知局
基于VQ-VAE2和深度神经网络方法的心电异常检测方法与流程

本发明涉及心电图异常检测技术领域,具体涉及一种基于vq-vae2和深度神经网络方法的心电异常检测方法。



背景技术:

心电图(ecg)是从体表记录心脏每一心动周期所产生的电活动变化形成的图形。通过心电图可以表征出人的多种心脏疾病。其中房颤是最常见的持续性心律失常。据统计,房颤的发病率为1%-2%,并且随着年龄的增长房颤的患病率也逐渐增加。心脏本身的疾病如心脏衰竭、瓣膜疾病、心肌梗死等与房颤疾病显著相关。实际上,由于生理信号受到个体内部变化的影响,目前房颤分类没有统一,房颤患者的症状多变且无特异性,因此对房颤的识别也较为复杂。例如,电极位置和噪声都会影响信号的波形,即使是健康受试者的心电信号,在不同的情况下,qrs复合体、p波和r-r间隔的形状在不同的节拍之间也不会是相同的,同类型的心律失常在相同患者的不同阶段之间的心电信号很可能有明显变化,不同患者同种类型的心律失常在心电信号上的差异更大。而判断心律类型的基础则就是不同类型的心电信号样本。

目前难以获得高质量的心电信号分类样本。一方面,由于采集自临床的绝大部分心电信号属于正常信号,因此所建立的数据集中异常心电信号稀少,与正常心电信号比例严重不均衡;另一方面,由于心电的类别需要由专业医生逐个心拍进行标注,因而获得大量的数据的成本很高。由于心电信号的特性,心电不能如同一般图片通过旋转、对称等方式做数据扩增。样本不均衡和总样本量较少会导致所训练的深度学习模型性能不佳。

gan常被用来解决样本不均衡问题,然而训练gan需要达到纳什均衡,而目前人们却没有找到很好的达到纳什均衡的方法,所以相比vae(变分自编码机)或者pixelrnn来说,gan的训练是不稳定的。另一方面,gan生成的样本并不能完全捕捉真实分布中的多样性。同时,针对生成对抗网络的评价非常困难,目前依然缺少一个较通用的度量标准,用于在测试集中判断模型是否过拟合。



技术实现要素:

本发明要解决的技术问题是:克服现有技术的不足,提供一种为医生输出更准确的评估数据,提高诊断的准确率和效率的基于vq-vae2和深度神经网络方法的心电异常检测方法。

本发明为解决其技术问题所采用的技术方案为:基于vq-vae2和深度神经网络方法的心电异常检测方法,包括以下步骤:

步骤1:获取两个训练数据库,房颤训练数据库及非房颤训练数据库,对房颤训练数据库进行数据处理;

步骤2:对经过数据处理后的房颤训练数据库进行vq-vae2训练和先验训练,生成新的心电图图像;

步骤3:房颤心率类型识别:将步骤2最终生成的新的心电图数据、房颤训练数据库混合在一起,作为房颤样本集,然后将该房颤样本集与非房颤训练数据库输入到深度神经网络中,进行判别。

所述步骤1包括以下子步骤:

1-1:获取两个训练数据库:房颤训练数据库及非房颤训练数据库,所述房颤训练数据库存储已知房颤的心电数据,即异常数据,非房颤训练数据库存储非房颤的心电数据;

1-2:对房颤训练数据库中的每个导联心电图信号进行除噪处理;

1-3:提取r波峰值点,以r峰为中心进行分割提取单个心拍,通过对单个心拍的截取,取得测量时间在8秒以上的原始心电图波形数据、心电图附加信息。

1-4:对每个导联的心电数据采用上下截止频率分别为0.1hz、100hz的fir滤波器进行滤波,如果心电信号采样频率不是500hz时,则采用最邻近内插法将心电信号重采样为500hz,最终生成n导联的心电信号训练样本集;

1-5:读入n个导联的心电信号的数据,对每个导联心电信号的同一时刻r波顶点的位置向前截取p个点,向后截取q个点,每个导联的每个心拍截图w=p+q个点的数据,将原始每个心拍的心电信号的数据处理成256*256维的浮点数向量;

1-6:将向量化后的数据进一步进行标准化处理,使得浮点数据的值介于[-1,1]范围内。

步骤1-2中对导联心电图信号进行预处理包括以下处理:

采用中值滤波滤除原始心电信号中的极限漂移;

采用巴特沃斯数字带阻滤波器滤除原始心电信号中的工频干扰;

采用切比雪夫数字低通滤波器滤除肌电干扰。

所述步骤1-3中,提取r波峰值点主要包括:将除噪后的心电信号重采样至某一固定采样率;

通过斜率、幅度和宽度的数字分析定位qrs复合波;

通过二进样条小波变换检测r波峰值,随后提取r波峰值点。

所述步骤2包括:

vq-vae2训练:将解码器e的输入变为量子化后的字典向量e,即将预处理后的256*256维心电信号图像x作为编码器encoder的输入数据,首先进行上层量子化,其次进行下层量子化,获得字典向量etop和ebottom,其中上层潜在空间大小为32x32,下层潜在空间大小为64x64;

先验训练:pixelcnn自回归模型,对所有输入图片计算量子化的上层etop与下层ebottom,将计算得到的{etop}和{ebottom}集合作为训练数据,训练pixelcnn神经网络,从而得到全局语义信息的联合概率密度ptop和局部贴图信息的条件概率率密度pbottom,最后的生成过程是从ptop和pbottom抽样得到量子化的字典向量,然后输入到解码器d中,生成新的图片。其中pixelcnn的思想是,如果我们把一幅图片x看成是由各像素xi随机组成的随机变量x={x1,x2,...,xn},则一幅图片就可以表示为各像素的联合分布:

p(x)=p(x1,x2,...,xn)

pixelcnn的基本思想是将这个联合分布因子化,用条件分布的乘积来表示,如下:

在第一阶段学习层次化隐编码中,我们可以借助层次结构建模图像。其主要思想即将局部信息与目标的全局信息分开建模。在第二阶段中,为了进一步压缩图像,并且能够从第一阶段学习到的模型中采样,我们需要在隐编码中学习一种先验知识。简而言之,首先我们需要训练一个分层的vq-vae2,它是由编码器和解码器组成的深度神经网络,我们需要用它将图像编码到离散的隐空间;其次我们需要在离散的隐空间拟合一个强大的pixelcnn先验,其中这个隐空间是通过所有图像数据构建的,上层pixcelcnn先验会通过类别标签进行约束,下层的pixcelcnn会以类别标签和第一级编码作为约束。通过pixelcnn得到编码分布后,就可以随机生成一个新的编码矩阵,然后通过编码表e映射为浮点数矩阵,最后经过解码器得到一张图片。

所述vq-vae2训练包括以下子步骤:

vq-vae2-1:利用编码器e将输入图像处理成32x32xd的立体潜在表示ze(x),ze(x)又可进一步表示为d个大小为32x32的二维潜在表示z构成,则z的量子化公式为:

其中,e1,e2,e3,...ek是字典向量,或者说是基向量。上层量子化后的字典向量etop用如下公式表示:

etop←quantize(etop(x))

vq-vae2-2:使用此字典向量etop作为条件,与输入数据x一起,计算下层潜在空间的量子化形式ebottom;

vq-vae2-3:将上层和下层量子化选中的字典向量etop和ebottom同时输入解码器d中,计算损失函数,更新编码解码网络,以及字典向量的权重,计算公式如下:

l表示损失函数,x表示心电信号图像,d表示解码器,e表示编码器,e表示量子化后的字典向量,表示2-范数的平方,sg表示停止梯度传播,β表示超参数。

vq-vae2-4:重复上述操作,直至损失函数达到稳定。

步骤3包括以下子步骤:

3-1:数据预处理:将步骤2最终生成的新的心电图图像,添加到原有的房颤训练数据库中作为房颤样本集,并将混合后的数据库中的图像都处理成12*w维的心电图浮点数向量;

3-2:搭建深度神经网络:深度神经网络包括多个依次串联的卷积层单元和全连接层单元,且在合并层单元和卷积层单元间有图像编码层用于将心电信号由一维编码为二维图像;

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

构建的卷积神经网络的结构为输入层-卷积层-池化层-卷积层-池化层-卷积层-全连接层-输出层;

第一个卷积层单元的卷积核数为5个,卷积核大小为3,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;

经过第一层池化单元后的特征图维度为(w/2)*5;第二个卷积层单元的卷积核数为10个,卷积核大小为4,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;

经过第二层池化单元后的特征图维度为(w/4)*10,第三个卷积层单元的卷积核数为20个,卷积核大小为4,卷积层后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第三层池化单元后的特征图维度为(w/8)*20;

多个导联的特征融合成一块,形成最终特征,得到的特征输入激励单元为softmax的全连接层,全连接层的层数为3层,得到输出分类结果y_pred;

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

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

与现有技术相比,本发明具有以下有益效果:

本发明提供一种基于vq-vae2和深度神经网络方法的心电异常检测方法,以解决现有技术中对心电图中样本不均衡问题、心率类型识别准确率较低、漏检率较高的问题。通过引入vq-vae2(vectorquantizedvariationalautoencoder2)分层量子化的变分自编码机来增加患者的各种心率类型样本,并利用深度神经网络学习这些扩充后的样本特征,从而提高深度学习模型的能力,为医生输出更准确的评估数据;

利用vq-vae2技术来学习生成更多的心率异常样本,然后在此基础上利用深度神经网络进行房颤识别;

本发明利用vq-vae2(深度卷积生成对抗网络)方法生成了高质量的样本,并比gan(生成对抗网络)等其他深度学习方法更稳定;

在利用vq-vae2的基础上,再利用深度神经网络进行房颤识别,大大提高了诊断的准确率和效率。

附图说明

图1是本发明流程图。

具体实施方式

下面结合附图对本发明实施例做进一步描述:

实施例

如图1所示,包括以下步骤:

步骤1:获取两个训练数据库,房颤训练数据库及非房颤训练数据库,对房颤训练数据库进行数据处理;

所述步骤1包括以下子步骤:

1-1:获取两个训练数据库:房颤训练数据库及非房颤训练数据库,所述房颤训练数据库存储已知房颤的心电数据(即异常数据),非房颤训练数据库存储非房颤的心电数据;

1-2:对房颤训练数据库中的每个导联心电图信号进行除噪处理;步骤1-2中对导联心电图信号进行除噪处理包括以下处理:

采用中值滤波滤除原始心电信号中的极限漂移;

采用巴特沃斯数字带阻滤波器滤除原始心电信号中的工频干扰;

采用切比雪夫数字低通滤波器滤除肌电干扰。

1-3:提取r波峰值点;提取r波峰值点主要包括:将除噪后的心电信号重采样至某一固定采样率,之后通过斜率、幅度和宽度的数字分析定位qrs复合波;通过二进样条小波变换检测r波峰值,随后提取r波峰值点。进而以r峰为中心进行分割提取单个心拍,通过对单个心拍的截取,取得测量时间在8秒以上的原始心电图波形数据、心电图附加信息;

1-4:对每个导联的心电数据采用上下截止频率分别为0.1hz、100hz的fir滤波器进行滤波,如果心电信号采样频率不是500hz时,则采用最邻近内插法将心电信号重采样为500hz,最终生成n导联的心电信号训练样本集;

1-5:读入n个导联的心电信号的数据,对每个导联心电信号的同一时刻r波顶点的位置向前截取p个点,向后截取q个点,每个导联的每个心拍截图w=p+q个点的数据,将原始每个心拍的心电信号的数据处理成256*256维的浮点数向量;

1-6:将向量化后的数据进一步进行标准化处理,使得浮点数据的值介于[-1,1]范围内。

步骤2:对经过数据处理后的房颤训练数据库进行vq-vae2训练和先验训练,生成新的心电图图像;在第一阶段学习层次化隐编码中,我们可以借助层次结构建模图像。其主要思想即将局部信息与目标的全局信息分开建模。在第二阶段中,为了进一步压缩图像,并且能够从第一阶段学习到的模型中采样,我们需要在隐编码中学习一种先验知识。简而言之,首先我们需要训练一个分层的vq-vae2,它是由编码器和解码器组成的深度神经网络,我们需要用它将图像编码到离散的隐空间;其次我们需要在离散的隐空间拟合一个强大的pixelcnn先验,其中这个隐空间是通过所有图像数据构建的,上层pixcelcnn先验会通过类别标签进行约束,下层的pixcelcnn会以类别标签和第一级编码作为约束。通过pixelcnn得到编码分布后,就可以随机生成一个新的编码矩阵,然后通过编码表e映射为浮点数矩阵,最后经过解码器得到一张图片。

vq-vae2训练:将解码器e的输入变为量子化后的字典向量e,即将房颤训练数据库处理后的256*256维心电信号图像x作为编码器encoder的输入数据,首先进行上层量子化,其次进行下层量子化,获得字典向量etop和ebottom,其中上层潜在空间大小为32x32,下层潜在空间大小为64x64;所述vq-vae2训练包括以下子步骤:

vq-vae2-1:利用编码器e将输入图像处理成32x32xd的立体潜在表示ze(x),ze(x)又可进一步表示为d个大小为32x32的二维潜在表示z构成,则z的量子化公式为:

其中,e1,e2,e3,...ek是字典向量,或者说是基向量。上层量子化后的字典向量etop用如下公式表示:

etop←quantize(etop(x))

vq-vae2-2:使用此字典向量etop作为条件,与输入数据x一起,计算下层潜在空间的量子化形式ebottom;

vq-vae2-3:将上层和下层量子化选中的字典向量etop和ebottom同时输入解码器d中,计算损失函数,更新编码解码网络,以及字典向量的权重,计算公式如下:

l表示损失函数,x表示心电信号图像,d表示解码器,e表示编码器,e表示量子化后的字典向量,表示2-范数的平方,sg表示停止梯度传播,β表示超参数。

vq-vae2-4:重复上述操作,直至损失函数达到稳定。

先验训练:pixelcnn自回归模型:对所有输入图片计算量子化的上层etop与下层ebottom,将计算得到的{etop}和{ebottom}集合作为训练数据,训练pixelcnn神经网络,从而得到全局语义信息的联合概率密度ptop和局部贴图信息的条件概率率密度pbottom,最后的生成过程是从ptop和pbottom抽样得到量子化的字典向量,然后输入到解码器d中,生成新的图片。其中pixelcnn的思想是,如果我们把一幅图片x看成是由各像素xi随机组成的随机变量x={x1,x2,...,xn},则一幅图片就可以表示为各像素的联合分布:

p(x)=p(x1,x2,...,xn)

pixelcnn的基本思想是将这个联合分布因子化,用条件分布的乘积来表示,如下:

步骤3:房颤心率类型识别:将步骤2最终生成的新的心电图数据、房颤训练数据库混合在一起,作为房颤样本集,然后将该房颤样本集与非房颤训练数据库输入到深度神经网络中,进行判别。

步骤3包括以下子步骤:

3-1:数据预处理:将步骤2最终生成的新的心电图与房颤训练数据库混合作为房颤样本集,并将混合后的房颤样本集及非房颤训练数据库中的图像都处理成12*w维的心电图浮点数向量;

3-2:搭建深度神经网络:深度神经网络包括多个依次串联的卷积层单元和全连接层单元,且在合并层单元和卷积层单元间有图像编码层用于将心电信号由一维编码为二维图像;

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

构建的卷积神经网络的结构为输入层-卷积层-池化层-卷积层-池化层-卷积层-全连接层-输出层;

第一个卷积层单元的卷积核数为5个,卷积核大小为3,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;

经过第一层池化单元后的特征图维度为(w/2)*5;第二个卷积层单元的卷积核数为10个,卷积核大小为4,卷积层单元后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;

经过第二层池化单元后的特征图维度为(w/4)*10,第三个卷积层单元的卷积核数为20个,卷积核大小为4,卷积层后的激励单元为relu函数,池化层单元的池化核大小为2,池化步长为2;经过第三层池化单元后的特征图维度为(w/8)*20;

多个导联的特征融合成一块,形成最终特征,得到的特征输入激励单元为softmax的全连接层,全连接层的层数为3层,得到输出分类结果y_pred;

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

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

vq-vae2是用来解决心电信号样本不均衡问题,并获取更高质量的心电信号样本。深度神经网络则是在前者扩增样本的基础上对心电信号进行学习分类,以更好地进行房颤识别。

此方法不仅可以扩增房颤样本,更是可以扩增其他异常样本,本发明只是以房颤样本为例。

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