基于2维卷积神经网络的心电图分类

2023-11-10

在这里给大家分享一篇关于用深度学习进行心电图识别的论文,原文地址https://arxiv.org/abs/1804.06812,我翻译成了中文以便大家快速学习,中间难免有疏忽遗漏的地方,请大家谅解。

深度医疗(1) - 心电图特征识别

这篇文章是由韩国的几个研究人员发表的,通过使用卷积神经网络实现了心电图的高精准分类,总共完成了8类心电图心律不齐病变的分类,其达到的分类精确度都超过了所有目前用来做心电图自动分类的方法,而且其中它的好处是不需要过多的对原始数据进行预处理。

摘要

在论文中提出了一种有效的ECG心律分类方法,该方法是基于二维CNN神经网络,最近的研究表明其在模式识别方向上有显著的性能表现。每个ECG跳动的数据被转化为一副灰度图作为CNN分类器的输入数据。优化的CNN分类器包含不同的深度学习技术模型,除此之外,论文中用两个经典的网络做了比较,一个是AlexNet,另一个是VGGNet。用来训练分类的ECG数据记录来自 MIT-BIH心律数据库,分类器训练结果的平均准确度达到了97.85%,最高99.05%,同时训练的数据并没有经过类似噪声滤波、特征提取等任何的预处理。

1. 介绍

根据世界卫生组织(WHO),心血管疾病(CVDS)是当今疾病死亡的头号杀手。超过1770万人死亡是由心血管疾病引起的,占总死亡人数的31%,死亡人数超过75%出现在低收入和中等收入国家。心律失常是一种有代表性的心血管疾病类型,主要是任何与正常心脏不规则的节律变化,通常有很多类型的心律失常,包括心房颤动、过早收缩、心室颤动和心动过速等,虽然单次心律失常可能对生命没有严重影响,但连续的心律失常可能导致严重的后果。例如,长时间室性早搏(PVCs)偶尔转变为室性心动过速(VT)或室颤(VF),其可能导致心力衰竭,所以周期性的观测心跳对阻止心血管疾病是非常重要的。心电图(ECG)是一种无创的有效的观测心律和心脏状态的医疗工具,因此通过心电图(ECG)自动检测不规则心律在心脏病学领域是一项非常重要的课题。

有很多针对心律不齐的分类方法被提出:

1)基于前馈神经网络(FFNN)的方法,针对4种不同类型的心律不齐检测,其精确度可以达到96.95%;

2)SVM也被广泛应用在心电图心律检测方向,针对6种不同类型的心律不齐检测,其精度可以达到89.72%;

3)基于RNN网络的方法,针对4种不同类型的心律不齐检测,其精度可以达到98.06%;

4)基于KNN(K-nearest neighbor)的方法,针对17中类型的心电图数据,可以达到97.1%的精确度;
在这里插入图片描述
但这些方法都存在一定的缺陷:

1)用来训练的数据都是经过精心挑选的;

2)心电图的跳动数据在噪音滤波和特征提取中会损失;

3)能进行分类的心电图类型有限;

4)在实际中应用分类性能相对较低;

在这边文章中,基于提出的2维CNN’处理,首先不需要做噪音滤波和特征提取的预处理;其次通过增加心电图训练数据可以提高分类的精度,前面提到的方法中,要做到数据扩充是很难的;同时前面的方法对噪音信号非常敏感;本文提出的方法,因为通过二维的CNN’处理,该模型会在通过卷积和池化层提取相关特征时会自动忽略噪音干扰,这样就可以适应不同的心电图机器和不同的采样率信号。

该方法把原始的心电图数据转化为128x128的灰度图作为CNN的输入,可以分辨8种不同的心律失常:正常搏动(NOR)、室性早搏(PVC)、起搏搏动(PAB)、右束支传导阻滞搏动(RBB)、左束支传导阻滞搏动(LBB)、房性早搏(APC)、室颤波搏动(VFW)和室性逸搏(VEB),因为在MIT-BIH心律数据库中主要都是正常的数据,其他7类的数据占很少一部分,所以通过数据扩充的办法来增加其他7中特征的数据让数据保持平衡,具体的方法在下文会进行介绍。

2. 实现方法
2.1 心电图数据的预处理

首先把MIT-BIH心律数据库转换为可以灌给CNN的二维数据,相当于转化为图片,然后通过CNN来对这些图片做基于8个分类的图像分类;
在这里插入图片描述
因为MIT-BIH心律数据库提供的数据是通过P-QRS-T波的周期来标定的,所以可以通过时间节点来提取单周期(single pattern)的的信号转换成图片信息,即一张图片包含一个周期的心电图波形,如下所示:
在这里插入图片描述

2.2 心电图心律不齐分类器

把心电图数据转换为2维数据(图片信息)进行处理,主要是CNN包含的卷积、池化等处理对2维图像处理很适用,从而可以提高分类的准确率。现今有很多优秀的CNN模型,例如AlexNet和VGGNet,本文就是通过这两种实现方式来进行处理,当然目前还有一些性能更好的网络模型,例如GoogleNet、ResNet、DenseNet等,但这些网络结构都包含很深的层数,这里处理的心电图数据仅仅是一个128x128的图片信息,所以用不到这么深的网络,所以在这里就使用AlexNet和VGGNet进行处理和对比。
在这里插入图片描述

2.2.1 数据扩增

因为在MIT-BIH心律数据库中,大部分数据都是正常数据,病变的数据占比很小,这样形成的数据集就不平衡,最后导致训练的模型性能很差,缺乏鲁棒性。为了解决这个问题,通过裁剪、移动等方法对病变的信号进行处理来增加上文提到的7中病变信息,例如下面的处理:
在这里插入图片描述
针对这个室性早搏(PVC)的数据,对它分别进行左上、中上、右上、左中、中、右中、做下、中下和右下的平移,并进行裁剪获得9个数据特征,这样做相当于原来只有一个病变数据,处理后得到了另外9个病变数据。

2.2.2 滤波器初始化

基于梯度下降学习的主要缺陷是模型可能发散或陷入局部最小点。为了达到更好的收敛效果,文章中通过Xavier初始化来平衡所有CNN滤波器的梯度尺度的大小,权值通过下面公式进行随机初始化
在这里插入图片描述
其中In和Out是网络中滤波单元的输入和输出个数。

在现今的神经网络系统中,较小尺寸的滤波器被认为有更好的处理效果,所以在这里用到的CNN滤波器尺寸是3x3,同时为了保证图像在进行卷积层处理时保持原始的尺寸,采用了zero-padding模式。

2.2.3 激活函数

文章中通过使用LReLU. ReLU, LReLU, 和 ELU发现使用ELU性能更好,相对ReLU来说,ELU保留了更多的负向信息。

2.2.4 正则化

正则化也可叫做归一化,主要是用来减小过拟合。这里使用了两种常规的方法,batch normalization和dropout,如果不做batch normalization的话,前面一点点的变化将对后面产生非常大的影响,通常batch normalization放在激活函数前和卷积层后,但文章中发现针对ECG的数据比较特殊,放在激活函数后效果会更好,同时在卷积层后和全连接层后都放了batch normalization;

这里使用的dropout为0.5,把他放在了全连接层后面的batch normalization后,这里在卷积层没有加dropout,一般来说,由于卷积层不具有许多自由参数,所以Dropout不适用于卷积块,并且节点之间的协同适应比减少过拟合更为重要。

2.2.5 误差和优化函数

误差函数用的是典型的cross-entropy函数
在这里插入图片描述
优化器使用的是Adam优化器,同时使用的是动态学习率,起始值是0.0001,然后通过下面的方式进行迭代,表示1000个迭代步骤后学习率会变小为原来的0.95
在这里插入图片描述

2.2.6 验证集

用来测试当前训练的模型性能是否达到要求,同时如果没有验证集的话训练过度会造成过拟合。使用的机制是在训练中如果在500个迭代后权重的平均灵敏度和系统收敛状态没有改变的话就停止学习的过程然后开始进行验证集测试

2.2.7 优化的CNN分类器架构

整个CNN的模型如下:
在这里插入图片描述
在此基础上加入了AlexNet和VGGNet的架构进行了性能验证和比对,下面分别是CNN架构、AlexNet架构和VGGNet架构的层数、每层结构、滤波器大小、步进、每层特征提取通道数和每层输入输出维度

3. 实验结果

数据集构成
在这里插入图片描述
实验结果

文中提到了

Curve (AUC), Accuracy (Acc), Specificity (Sp), Sensitivity (Se), and Positive Predictive Value (+P) 5种评判标准,这里只列出准确率,其他4种有兴趣大家可以自己查阅。
在这里插入图片描述
从准确度可以看出,CNN模型和AlexNet比VGGNet的性能稍好,通过数据扩增的性能CNN模型和AlexNet都比扩增前稍高,而VGGNet有一定的降低。

下面是误差曲线和精度收敛
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于2维卷积神经网络的心电图分类 的相关文章

随机推荐

  • Go RSA的使用样例

    GenerateRSAKey 是生成公钥和密钥对 RSA Encrypt 是加密方法 RSA Decrypt 是解密方法 运行示例 代码 package main import crypto rand crypto rsa crypto x
  • R语言中将数据框(data.frame)中字符型数据转化为数值型

    as data frame lapply data as numeric
  • 矩阵乘法(C++)

    题目描述 Alice在学线性代数 她觉得线代的计算特别麻烦 于是就来找你 希望你可以给她写一个程序计算两个矩阵的乘积 矩阵乘法介绍 矩阵A是一个N行P列的矩阵 矩阵B是一个K行M列的矩阵 当P K时 A和B可以相乘 仅限于AB BA不一定可
  • JavaWeb笔记---html/css基础学习1

    1 B S软件的结构 JavaSE是属于C S Client Server 结构 B S软件的结构 客户端与服务器端交互 2 网页的组成 内容 表现 行为 1 内容 页面中可以看到的数据 2 表现 内容的展现形式 3 行为 页面中的元素与输
  • Linux查看进程、端口号的各种用法

    1 根据进程名称查看进程号 ps ef grep redis 结果如下 root instance xfl1djr7 ps ef grep redis root 23297 1 0 Jun12 00 01 33 usr bin redis
  • maven仓库快速镜像

    国内连接maven官方的仓库更新依赖库 网速一般很慢 收集一些国内快速的maven仓库镜像以备用 国内OSChina提供的镜像 非常不错
  • 网络编程_常用的基本函数介绍——htonl、ntohl、htons、ntohs

    1 htonl函数 将主机的unsigned long值转换成网络字节顺序 32位 一般主机跟网络上传输的字节顺序是不通的 分大小端 函数返回一个网络字节顺序的数字 include stdafx h include
  • uni-app如何配置隐私政策

    uni app如何配置隐私政策 在manifest json中 的privacy中可以配置 注意点 隐私政策可以使用http 地址 如果隐私政策需要使用本地文件 可以把html放在hybrid文件夹中 注意a链接的地址 正确写法如下图
  • React 好用的工具库

    俗话说的好 工欲善其事 必先利其器 笔者在开发 React 项目的时候 总结出一些很不错的 React 库 可以提高开发效率 满足业务需求 接下来将一一介绍它们 UI组件库 Ant Design 要说 React 最受欢迎的 UI 组件库
  • elasticsearch7新特性_Elasticsearch 7.0 已经发布,盘他!

    Elastic ON 北京分享了Elasticsearch7 0在Speed Scale Relevance等方面的很多新特性 比快更快 有传说中的那么牛逼吗 盘他 通过本文 你能了解到 Elasticsearch Kibana 7 部署体
  • Linux中Docker入门知识基础

    Linux中Docker入门知识docker基础 1 Docker概述 我们开发的代码会接触到不同环境 开发环境 测试环境以及生产环境 1 1 Docker概述 Docker 是一个开源的应用容器引擎 Docker 可以让开发者打包他们的应
  • 解密蓝牙mesh系列

    转载自 蓝牙技术联盟 蓝牙mesh网络 低功耗 低功耗蓝牙 低功耗蓝牙 Bluetooth Low Energy 是一项相当成功的无线技术 如今已经很难找到不支持低功耗蓝牙的智能手机或平板电脑了 可以说它是可穿戴技术兴起的关键因素 在医疗设
  • wifi名称可以有空格吗_公司刚成立不久,公司名称可以变更吗?

    最近有很多老板在问 想要把公司的名字改一改 可以吗 所以今天护航财税的小编来告诉大家 已经注册好的公司能不能变更名字 1 公司名称可以更改吗 其实公司名称是可以更改的 当企业在经营的过程中由于发展或其他原因需要 想要更改公司的 可以向工商局
  • git:回滚某次修改,revert某个commit的操作但不生成提交

    说明 在使用小乌龟进行回滚时 我们发现通常是不会提交的 而在gitbash里 我们使用git revert时 却发现会自动生成一次提交 原因是命令不对 通常我们需要使用git revert n sha 1 某次提交的sha 1值 这样就不会
  • 解决setBackgroundResource出现oom的问题

    setBackgroundResource加载图片的额时候 会出现错误 private final int imageIds R mipmap a R mipmap b R mipmap c R mipmap d R mipmap e Im
  • springcloud环境搭建——eureka

    springcloud环境搭建 eureka 目录 springcloud环境搭建 eureka 新建IDEA项目 初始化父工程 父工程的pom文件 初始化服务一 Eureka服务注册中心 子module的pom 微服务eureka的配置步
  • 上门服务小程序源码 家政小程序源码 同城到家小程序源码

    上门服务小程序源码 家政小程序源码 同城到家小程序源码 开发语言 thinkphp mysql 前端 uni app 支 持 小程序 公众号H5 APP 编号 8 1 数据概况 新增业务城市用户投票功能 更加直观的查看业务城市的关注度 人气
  • unity 各AR插件对比

    上个项目使用到AR 使用了好几个AR SDK来测试 先总结一下 可能后续有所不同 仅为当前 各AR插件对比 2D 3D Android PC vuforia EasyAR HiAR 太虚AR 解释一下 vuforia并不是不支持PC平台 而
  • Virtual DOM 算法

    1 前言 本文会在教你怎么用 300 400 行代码实现一个基本的 Virtual DOM 算法 并且尝试尽量把 Virtual DOM 的算法思路阐述清楚 希望在阅读本文后 能让你深入理解 Virtual DOM 算法 给你现有前端的编程
  • 基于2维卷积神经网络的心电图分类

    在这里给大家分享一篇关于用深度学习进行心电图识别的论文 原文地址https arxiv org abs 1804 06812 我翻译成了中文以便大家快速学习 中间难免有疏忽遗漏的地方 请大家谅解 深度医疗 1 心电图特征识别 这篇文章是由韩