基于卷积神经网络的心音信号识别

目录

一、引言

1.研究背景

2.研究方案

二、信号预处理

1.小波去噪

2.处理效果

三、特征提取

1.数据筛选

2.特征提取

四、模型搭建

一、引言

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 点云欧式聚类快速了解

    点云处理算法快速了解专栏————点云欧式聚类 文章目录 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 一、…

    人工智能 2023年6月2日
    076
  • MySQL:数据类型和表的约束

    1. 数据类型 学习语言的时候首先就是学习数据类型,数据类型起着为变量合理分配空间的作用。数据库同样需要合理使用空间,其次还可以约束SQL语句的正确性,所以同样需要数据类型。 1….

    人工智能 2023年7月30日
    061
  • 人工智能画画 yyds

    最近 AI 绘画火的一塌糊涂,你输一句话 AI 自动把你描述的场景画出来。本文盘点 GitHub 上几个较火的 AI 绘画开源项目。 本期推荐开源项目目录: Latent Diff…

    人工智能 2023年7月26日
    063
  • 机器学习笔记:训练集、验证集与测试集

    在学习《深度学习原理与pythorch实战》这本书的4.3.4划分数据集这一小节(即76页划分数据集)的过程中,提到了训练集、测试集与验证集这几个概念,以及为何相对于通用的训练集、…

    人工智能 2023年6月23日
    061
  • TensorFlow和CUDA、cudnn、Pytorch以及英伟达显卡对应版本对照表

    抵扣说明: 1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。 Original: https:…

    人工智能 2023年6月16日
    080
  • 通过文件夹输入图片进行头部姿态检测(dlib+opencv)

    –20220430 一些项目笔记 我们实验室最近在做项目,具体的实验题目可能不是很能和大家分享,我就单纯讲一下我负责这一部分的内容,我们具有三个技术组,其中每个人负责的部分是不一样…

    人工智能 2023年7月19日
    053
  • 全连接神经网络(DNN)

    最近想要学习深度学习模型,没有一上来就先学习CNN、RNN、LSTM,而是先学习全连接神经网络(Fully Connected Neural Network),原因非常简单,上述所…

    人工智能 2023年7月13日
    0174
  • 数据分析从0到1—-Matplotlib篇

    文章目录 前言 图表类型 什么是Matplotlib? 折线图 * plot rcParams,xlabel,title xticks show legend text grid …

    人工智能 2023年7月15日
    098
  • 在使用Framework进行模型训练时,如何处理数据预处理和数据增强操作

    问题简介 在使用Framework进行模型训练时,数据预处理和数据增强是非常重要的步骤。数据预处理操作是对原始数据进行清洗、归一化、标准化等操作,以提高模型的训练效果。而数据增强操…

    人工智能 2024年1月1日
    050
  • 基于matlab的车牌识别(含子程序)

    基于matlab的车牌识别系统 一、对车辆图像进行预处理 1.载入车牌图像: function [d]=main(jpg) [filename, pathname] = uiget…

    人工智能 2023年7月5日
    084
  • uniapp开发微信小程序自定义顶部导航栏

    自定义导航栏渐变色,先上效果 使用uniapp开发小程序,在不同界面,要去对页面进行修改顶部导航栏。 比如说要去定义导航栏的背景颜色,常规的去定义导航栏背景颜色 全局定义导航栏 &…

    人工智能 2023年5月30日
    0150
  • Anchor机制小结:Yolov1~Yolov5

    1. Anchor定义 就是一个多尺度的滑动窗口,在特征图上的每个cell上生成不同尺寸、不同高宽比的Anchor,也叫先验框为什么要引入多种比例的Anchor?物体检测:一些候选…

    人工智能 2023年5月28日
    076
  • 机器学习基础(四)预测方法(分类&回归)概述

    [ 机器学习_在金融领域中越来越受到关注,其中股价 _预测_是应用场景之一。 _机器学习 方法 预测_股价常用的有机森林、lstm、svm、线性 _回归 四_种 _方法。 机森林是…

    人工智能 2023年6月17日
    070
  • Python基础语法

    简介 Python 是一个高层次的结合了解释性、交互性和面向对象的脚本语言。解释型语言: 这意味着开发过程中没有了编译这个环节。作为解释型语言,意味着开发过程中没有了编译这个环节,…

    人工智能 2023年7月5日
    088
  • 经典SQL语句大全

    🌹作者:云小逸📝个人主页:云小逸的主页📝Github:云小扬🤟motto:要敢于一个人默默的面对自己, 强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间…

    人工智能 2023年6月20日
    051
  • 【CUDA安装详细教程】

    目录 前言 一、cuda的下载及安装 * 1.cuda版本 2.CUDA toolkit Download 3.cuda安装 二、cuDNN下载及安装 * 1.cuDNN下载 2….

    人工智能 2023年6月26日
    084
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球