基于改进MFCC特征和卷积递归神经网络的心音分类
具体的软硬件实现点击http://mcu-ai.com/MCU-AI技术网页_MCU-AI人工智能
心音分类在心血管疾病的早期发现中起着至关重要的作用,特别是对于小型初级卫生保健诊所。尽管近年来心音分类取得了很大进展,但其中大多数都是基于传统的分段特征和基于浅层结构的分类器。这些传统的声学表示和分类方法可能不足以表征心音,并且通常由于复杂多变的心脏声学环境而导致性能下降。在本文中,我们提出了一种基于改进的梅尔频率倒谱系数(MFCC)特征和卷积递归神经网络的新心音分类方法。首先计算梅尔频率倒谱,而不除心音信号。提出了一 种基于MFCC的新改进特征提取方案来详细描述连续心音信号之间的动态特征。 最后,基于 MFCC 的特征被输入到深度卷积和循环神经网络 (CRNN),以进行特 征学习和后续的分类任务。所提出的深度学习框架可以利用从卷积神经网络 (CNN)提取的编码局部特征和循环神经网络(RNN)捕获的长期依赖性。本文 对不同网络参数和不同网络连接策略的性能进行了综合研究。与最先进的算法进 行性能比较以供讨论。实验表明,对于二类分类问题(病理性或非病理性),在 2016 PhysioNet/CinC Challenge 数据库上实现了 98% 的分类准确率。
心血管疾病仍然是导致死亡的主要原因,由于其突发性和复发性,对全球人口构成严重威胁。因此,研究心脏疾病的早期预防方法就变得重要和有意义。心音信号携带着心血管疾病的早期病理信息,已被证明是有效地早期发现潜在的心血管疾病。传统上,心音是由医学专家通过听诊检测心脏疾病。它是非侵入性的、成本低 效益高且需要最少的设备,非常适合心脏检查,特别是在小型初级卫生保健诊所。但实际上,心音听诊很大程度上依赖于医生的临床经验和检查技巧。心脏病专家听诊的准确率约为 80%,而初级保健医生听诊的准确率约为 20%–40%。为了解决这一困境,基于计算机的自动心音分析和分类技术应运而生。基于计算机的心音分析的标准流程可概括为以下步骤:(1)预处理(分割和过滤); (2)特征提取; (3)分类器设计。在过去的几十年中,针对上述心音分析过程的每个步骤都报道了富有成效的方法。
虽然已经提出了关于心音分类的大量工作,但大多数由于复杂多变的心脏声环境,其中很多方法的性能下降。由于早期心脏疾病检测对于患者采取预防措施以减少潜在疾病造成的危害具有重要意义,因此在本文中,我们提出了一种用于疾病检测的新型心音分类算法基于改进的心音信号MFCC特征和卷积循环神经网络(CRNN)。本文的主要贡献有三点:(1)在不划分心音信号的情况下提取梅尔频率倒谱,降低了计算复杂度,并且 标准的MFCC ,MFCC特征的一阶和二阶微分参数,被组合用于心音信号的动态表示。 (2)构建了一种结合2D-CNN 和LSTM进行特征提取和分类、并使用基于MFCC的特征作为输入的心音分类算法。该算法利用了从 CNN 提取的编码局部特征和 RNN 捕获的长期依赖关系。 (3)本文对不同网络参数、不同网络连接策略以及与最先进算法的比较进行了全面的研究。为了证明所提出算法的有效性,在 PhysioNet 计算心脏病学 (CinC) 2016 挑战数据库 (Liu, et al., 2016) 上进行了实验。
在本节中,我们提出的算法分三个部分详细描述:心音信号预处理、基于 MFCC 的信号表示和 CRNN 分类模型。该方法的总体流程图如图1所示。在训练阶段,对原始心音信号进行预处理,以去除低频伪影、基线漂移和高频干扰。提取病理和健康受试者心音信号的标准MFCC、一阶MFCC( Delta MFCC)和二阶MFCC( Delta ͆ MFCC)特征来构建训练数据库。将标记的基于MFCC的特征输入到CRNN模型中,用作分类器学习和训练的基准样本。在测试阶段,对测试信号进行预处理,提取MFCC特征。使用预训练的 CRNN 模型来确定测试信号的类别。

心音信号预处理是整个分类算法的基础。使用参考文献中提到的五阶巴特沃斯带通滤波器(通带:25–400 Hz)。 Gaikwadand Chavan (2014) 从原始收集的心音信号中去除了低频伪影、基线漂移和高频干扰。尽管信号预处理、分割和形态分析是自动心音分析系统的主要内容,但本文并不关注预处理和信号分割技术,因为它们是相当成熟的技术。 特别强调应用于预处理信号的特征提取和模式识别方法。图2和图3分别显示了正常心音和异常心音的原始信号和预处理信号。

心音信号携带心血管疾病的早期病理信息,有助于早期发现 潜在的心血管疾病。为了导出心脏疾病检测的有效特征表示,我们利用心音信号的梅尔频率倒谱,并提出一种改进的基于MFCC的特征提取算法。
MFCC特征提取的具体过程如下:
1.预加重对心音信号进行预加重,以放大高频成分。经过预加重滤波器H(z)后,可以有效抑制随机噪声。
2.对心音信号进行帧化,在短帧内进行特征提取。为了实现帧之间的平滑过渡,连续帧之间采用 50% 的重叠。采用汉明窗函数W(n)进行信号分帧,因为它可以有效克服泄漏现象。
3.离散傅里叶变换(DFT)为了得到频谱X(k),我们将时域心音信号x(n)通过DFT 变换为频域信号。
4.功率谱计算将信号频谱 X(k)作为其模的平方,得到功率谱P(k)。
5.梅尔频率滤波器将功率谱P(k)通过一组梅尔尺度三角滤波器组以获得梅尔谱。
6.通过对数运算得到每帧的对数能量谱 S(m)。
7.离散余弦变换(DCT)将上面的对数 谱进行离散余弦变换。
动态MFCC特征提取通过上述描述可以看出,所获得的MFCC系数仅反映了心音信号的静态特征。由于人耳对声信号的动态特性比较敏感,心音频谱的动态信息也包含丰富的信息,可以用来进一步提高分类精度。为了反映心音信号的动态信息,进一步提取一阶差分 MFCC特征和二阶差分MFCC特征。

在过去的几年中,卷积神经网络(CNN)已被研究并被证明在大规模和高维数据学习中是有效的。循环神经网络(RNN)被证明在时间序列学习和长期依赖性捕获方面是有效的。在本文中,我们结合CNN和RNN 对从心音信号导出的基于MFCC的表示进行特征学习,这利用了从CNN提取的编码局部特征和RNN捕获 的长期依赖性。本文研究了两种网络架构,即卷积循 环神经网络(CRNN)和并行循环卷积神经网络 (PCRNN),用于心音信号分类。
卷积循环神经网络(CRNN)本文提出的CRNN网络结 构如图7所示。CNN块中使用了三个卷积层,第一层32核,第 二层32核,第三层64核。可学习的内核每层尺寸设置为3×3,流行的ReLu每个卷积层都使用激活函数。每个卷积层后面都采用最大池化,其中使用2×2窗口,步幅为2×2。三个残差使用相应的卷积层和池化层的块。在残差块内,构造了批量 归一化(BN)层和丢失层,然后是最大池层。 BN 层对整个 网络中的每个 mini-batch 进行归一化,减少渐进变换引起的 内部协变量偏移,dropout 层可以减 少神经元数量并防止过度拟合。因此,对于每个输入样本, 可以获得特征图。在卷积层和最大池化层之后,应用长短期 记忆(LSTM)层来学习获得的特征图中的时间特征,以及具 有以下特征的全连接(FC)层:

并行循环卷积神经网络(PRCNN)上述CRNN模型使 用RNN基于CNN的输出进行时间特征学习,然而,原始心音 信号背后的时间特征无法保留。为了捕获原始信号的空间和 时间特征,本节进一步研究了另一种网络架构,即并行循环 卷积神经网络(PRCNN),用于心音信号分类。如图8所 示,提出的PRCNN架构分为四个块。我们利用提取的 MFCC 特征作为网络的输入。 MFCC 特征并行馈送到 CNN 和 RNN 块中进行特征学习。所提出的 PRCNN 模型利用了从 CNN 提 取的空间特征和 RNN 提取的时间特征。的输出然后将两个并行块融合成一个统一的特征向量以进行分类。 应用全连接层并采用softmax层来导出不同类别的概率分 布。CNN块中使用三个卷积层,第一层有16个核,第二层有 32个核,第三层有64个核。接下来是卷积层,采用三个最大 池化层,第一层2×2窗口,第二层为2×2窗口,第三层为4×4窗口。在 RNN 块中,我们采用最大池化层执行降维,并使用 LSTM 层进行心音信号时间特 征学习。我们将 CNN 块和 RNN 块的输出连接成一个特征 向量。开发了一个由全连接层和 softmax 层组成的网络,用 于对级联特征向量进行进一步的特征学习和分类。

我们实验中使用的心音信号来自 PhysioNet/ CinC Challenge 2016 数据库(Liu, et al., 2016) ),可 在 PhysioNet 网站上公开获取。 1 该数据库由来自不同研究 组的九个子数据库组成,包含总共3,240条来自健康受试者和患有各种心脏病的患者的原始 心音录音。这些心音记录是使用各种电子听诊器(例如 Welch Allyn Meditron、Littmann Ë͈́̈́̈́)采集的,长度 范围从5到120 s,采样频率为2000 Hz。将心音样本截取至5 s,并将其分为三组不同的互斥群体,使用其中的75%来训练 网络,15%用于验证,10%用于测试网络。由于数据集中正 常和异常心音记录的数量不平衡,我们使用k-means SMOTE算法(Georgios et al., 2018)对训练集进行重新采 样,然后提取每个样本的MFCC特征。
与最先进算法的定性性能比较如下表:

基于改进MFCC特征和卷积递归神经网络的心音分类的更多相关文章
- 论文解读丨基于局部特征保留的图卷积神经网络架构(LPD-GCN)
摘要:本文提出一种基于局部特征保留的图卷积网络架构,与最新的对比算法相比,该方法在多个数据集上的图分类性能得到大幅度提升,泛化性能也得到了改善. 本文分享自华为云社区<论文解读:基于局部特征保留 ...
- 学习笔记CB010:递归神经网络、LSTM、自动抓取字幕
递归神经网络可存储记忆神经网络,LSTM是其中一种,在NLP领域应用效果不错. 递归神经网络(RNN),时间递归神经网络(recurrent neural network),结构递归神经网络(recu ...
- 斯坦福NLP课程 | 第18讲 - 句法分析与树形递归神经网络
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www. ...
- 递归神经网络(RNN)简介(转载)
在此之前,我们已经学习了前馈网络的两种结构--多层感知器和卷积神经网络,这两种结构有一个特点,就是假设输入是一个独立的没有上下文联系的单位,比如输入是一张图片,网络识别是狗还是猫.但是对于一些有明显的 ...
- 使用TensorFlow的递归神经网络(LSTM)进行序列预测
本篇文章介绍使用TensorFlow的递归神经网络(LSTM)进行序列预测.作者在网上找到的使用LSTM模型的案例都是解决自然语言处理的问题,而没有一个是来预测连续值的. 所以呢,这里是基于历史观察数 ...
- [AI开发]零数学公式告诉你什么是(卷积)神经网络
大部分介绍神经网络的文章中概念性的东西太多,而且夹杂着很多数学公式,读起来让人头疼,尤其没什么基础的人完全get不到作者想要表达的思想.本篇文章尝试零公式(但有少量数学知识)说清楚什么是神经网络,并且 ...
- lecture7-序列模型及递归神经网络RNN
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- lecture7-序列模型及递归神经网络RNN(转载)
Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...
- 递归神经网络之理解长短期记忆网络(LSTM NetWorks)(转载)
递归神经网络 人类并不是每时每刻都从头开始思考.正如你阅读这篇文章的时候,你是在理解前面词语的基础上来理解每个词.你不会丢弃所有已知的信息而从头开始思考.你的思想具有持续性. 传统的神经网络不能做到这 ...
- 递归神经网络(RNN,Recurrent Neural Networks)和反向传播的指南 A guide to recurrent neural networks and backpropagation(转载)
摘要 这篇文章提供了一个关于递归神经网络中某些概念的指南.与前馈网络不同,RNN可能非常敏感,并且适合于过去的输入(be adapted to past inputs).反向传播学习(backprop ...
随机推荐
- archlinux调整分区及btrfs文件系统大小
1.防止数据丢失 有重要数据要先备份 最好现在虚拟机练习一下, 2.注意点 修改分区的初始位置似乎需要删除分区后重建分区,意味着分区数据全被删除. 所以修改分区初始位置可能需要其它办法 修改分区的初始 ...
- Java数据类型转换,字符串(String)转日期(Date)
Java类型转换,字符串(String)转日期(Date) import java.text.ParseException; import java.text.SimpleDateFormat; im ...
- #组合计数,全排列#洛谷 2518 [HAOI2010]计数
题目 你有一组非零数字(不一定唯一),你可以在其中插入任意个0,这样就可以产生无限个数. 比如说给定{1,2},那么可以生成数字12,21,102,120,201,210,1002,1020,等等. ...
- #完全背包输出具体方案#AT4298 [ABC118D] Match Matching
题目 分析 首先,用完全背包求出\(n\)根火柴能够组成的最大位数, 然后选择尽量大的数字拼凑即可 代码 #include <cstdio> #include <cctype> ...
- Jetty的模块
查看模块的列表,执行如下命令: java -jar $JETTY_HOME/start.jar --list-modules 启用模块,比如http模块,执行如下命令: java -jar $JETT ...
- 【中秋国庆不断更】OpenHarmony多态样式stateStyles使用场景
@Styles和@Extend仅仅应用于静态页面的样式复用,stateStyles可以依据组件的内部状态的不同,快速设置不同样式.这就是我们本章要介绍的内容stateStyles(又称为:多态样式). ...
- 报表格式太难?一文教你Excel融合分析
Excel是我们最经常使用的处理报表工具了,尤其是金融行业更是需要天天和报表打交道.但是Excel有一个问题,如果面对的数据庞杂,则处理起来就会相当麻烦,当需要从多个数据源获取数据来制作一个报表时,这 ...
- 数据结构实验代码分享 - 5 (HashTable - 链接法)
题目:通信录查询系统(查找应用) [问题描述] 设计散列表(哈希表)实现通讯录查找系统. (1) 设每个记录有下列数据项:电话号码.用户名.地址: (2) 从键盘输入各记录,分别以电话号码为关键字建立 ...
- DataWorks 如何撑起阿里99%的数据开发?
阿里妹导读: DataWorks是阿里巴巴自主研发,支撑阿里巴巴经济体99%数据业务建设和治理,每天数万名数据开发和算法开发工程师在使用.从2010年起步到目前的版本,经历了多次技术变革和架构升级,也 ...
- Maxcompute-UNION数据类型对齐的方法
简介: 怎么对齐两段union脚本的数据类型 第1章 问题概述 1.1 UNION中隐式类型转换问题 近期参与的一个私有云项目要升级,因为maxcompute要升级到更新的版本,对之 ...