目录
一、引言
1.研究背景
心音信号作为生物医学信号中的重要研究对象,具有很高的临床价值,因此对心音信号的分析目前正受到学术界和产业界的重视。PhysioNet Challenge 大赛提供了942 名患者的数据集,如图1 ,包括患者的信息以及心音信号。
图1 PhysioNet Challenge提供的数据集
心音信号是很有节律的周期信号,如图2,可以大致划分为四个周期,S1 发生在心动周期的收缩期,频率约为40~60HZ,S2 发生在心动周期的舒张期,频率约为60~100HZ.心动周期的时间约为1 秒。
图2 心音信号及心动周期示例
2.研究方案
模型训练的步骤共四步,首先对待训练的信号进行去噪,然后进行信号分割,得到长度一致的数据。对分割好的信号进行特征提取,将特征送入神经网络训练,得到分类模型。如图3
图3 模型搭建整体方案
; 二、信号预处理
1.小波去噪
数据集中提供的心音信号带有杂音。这会对心音分类的预测造成影响。我们采用的去噪方法是小波去噪,小波去噪的原理是信号进行小波变换后,真实信号的小波系数较大,噪声部分的小波系数较小。因此,选择合适的阈值即可将系数较小的噪声滤除,从而达到去噪的效果。去噪的流程如图所示:首先确定阈值函数和分解层数,接着进行阈值化的去噪处理,最后进行小波逆变换进行信号的重构。如图4
图4 小波去噪流程
2.处理效果
图5 波形去噪效果
三、特征提取
; 1.数据筛选
得到干净的心音信号后,开始对信号进行特征提取。首先大赛给的数据集如图6,包括一个txt 文件,这个文件中记录了一个病人的心音信息和常规信息。其次是病人的心音wav 文件,这个文件记录了心音信号。还有一个tsv 文件,记录了S1 和S2 起始点和结束点的分割信息,这个信息会在下面数据截取中用到。我们对所有病人的wav 数据进行了统计,发现部分数据的wav 文件有缺失如图7,对于没有从四个位置进行心音检测的数据我们将不会喂入模型训练,在测试集中缺失的数据则用正常的数据补全。
图6 数据集中的文件类型
图7 每个病人心音信号数量统计(每个病人最多从四个位置得到心音信号)
2.特征提取
接下来进行波形的特征提取,我们选用的方案是提取信号的梅尔频率系数,这个特征对于区分心音信号十分高效。我们目标是得到一张四通道的心音信号特征图,随后送入卷积神经网络进行训练。
整个步骤共分为5 步,首先是数据截取:wav 文件的信号长度由4.8 秒到80 秒之间,利用tsv 文件,我们可以获取心音的周期,在其中截取四个周期长度的信号进行特征提取,长度约为3 秒。
通过高通滤波器增强高频信号并将整个时间信号分为100 帧,每帧长度约为30ms 。
随后对每帧信号进行加窗,并计算其功率谱。将频率转换到Mel 频率中,并采用Mel 滤波器组对信号进行滤波。将获得的能量取对数,并进行DCT 变换来获取信号的MFCC 特征,从而得到四通道100*30 的特征图。
四、模型搭建
接下来介绍一下我们搭建的模型,我们搭建的网络架构如图8所示,采用递增型网络结构。其中包含2 层卷积层,2 层全连接层。第1 层卷积层使用了32 个过滤器,卷积核大小为3 × 3 ,步长为1×1 ;池化为最大池化,大小为2 × 2 ,步长为1 × 1 。采用ReLU 激活函数,dropout 率为0.2 。第2 层用了24 个滤波器,其余结构与上一层相同。
2 个全连接层,输出维度分别为128 和3 ,采用ReLU 激活函数,中间使用概率为0.2 的dropout 进行连接,分类器为softmax 。
通过特征提取,我们得到1176 张105 乘30 的4 通道特征图,将这些数据送入到网络中进行训练。每次喂入模型batch_size 大小为32 ,训练epoch80 轮
代码的撰写使用的是Tensorflow 框架,调用了Tf.keras API ,整个网络的模型保存在.h5 类型文件中。
图8 网络模型架构
Original: https://blog.csdn.net/DeSioon/article/details/124725772
Author: DeSioon
Title: 基于卷积神经网络的心音信号识别
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/689288/
转载文章受原作者版权保护。转载请注明原作者出处!