心律失常数据库

目前,国际上公认的标准数据库包含四个,分别为美国麻省理工学院提供的MIT-BIH(Massachusetts Institute of Technology-Beth Israel Hospital Database, MIT-BIH)数据库、美国心脏学会提供的AHA( American heart association,AHA)数据库、欧共体CSE( Common Standards for Quantitative Electrocardiograph,CSE)数据库、欧洲ST-T数据库。

当前使用最广泛且被学术界普遍认可的据库为MIT-BIH心律失常数据库。此数据库中囊括了所有类型的心电信号并且数量丰富,为本文关于心电信号的自动分类研究提供了实验数据。下面对该数据库作详细的说明。
MT-BIH心律失常数据库拥有48条心电记录,且每个记录的时长是30分钟。这些记录来自于47名研究对象。这些研究对象包括25名男性和22名女性,其年龄介于23到89岁(其中记录201与202来自于同一个人)。信号的采样率为360赫兹,AD分辨率为11比特。对于每条记录来说,均包含两个通道的信号。第一个通道一般为MLⅡ导联(记录102和104为V5导联);第二个通道一般为V1导联(有些为V2导联或V5导联,其中记录124号为Ⅴ4导联)。为了保持导联的一致性,往往在研究中采用MLⅡ导联。本文选取MLⅡ导联心电信号进行研究分析。

数据库中的每条记录均包括三个文件,即:头文件、数据文件和注释文件。
(1)头文件头文件[.hea] 通过ASCII码存储方式记录信号的采样频率、采样频率、数据格式使用的导联信息、采样频率、研究者的性别、年龄以及疾病种类等
(2)数据文件数据文件[.dat] 通过二进制的方式存储信号,每三个字节存储两个数值(两导联数据交替存储),每个数值大小是12bit
(3)注释文件注释文件[.atr] 是由专家对信号进行人工标注,并且根据二进制格式进行数据的存储

关于MIT-BIH数据库的一些常用网站

  • MIT-BIH数据库的官方网站:https://ecg.mit.edu/

  • MIT-BIH数据库下载:https://www.physionet.org/content/mitdb/1.0.0/

  • ZIP包下载链接:Download the ZIP file (73.5 MB)

  • 官网上关于该数据库的详细介绍网址:https://archive.physionet.org/physiobank/database/html/mitdbdir/intro.htm#symbols。

  • 百度百科上的介绍也较为详细,需要对其格式做深入了解的读者可以参考:https://baike.baidu.com/item/MIT-BIH。

  • 每条信号的基础信息可以查询https://www.physionet.org/physiobank/database/html/mitdbdir/mitdbdir.htm

  • 数据库中每条心电信号中的心拍类型表:https://archive.physionet.org/physiobank/database/html/mitdbdir/tables.htm#allbeats

  • MIT-BIH心电数据可视化网站:https://www.physionet.org/lightwave/?db=mitdb/1.0.0

  • 官方网站的可视化工具读取展示MIT-BIH数据:https://archive.physionet.org/cgi-bin/atm/ATM

    官方网站提供的可视化工具中有许多数据库,请选择mitdb数据库。

    相比之下更推荐使用倒数第二个网站进行查看。

统一术语称呼

我在阅读心电相关论文的时候,常常由于不同文章之间对同一事物的称呼不同而感到困扰。为避免在本文中出现类似情况,现将术语称呼统一如下。

  • 一条心电数据(记录、信号):将编号为100,101…的数据称为一条心电数据(记录),包含了该编号中的所有导联数据。由于本文仅使用MLII导联的数据作为深度学习的训练数据,因此在本文中也特指一条心电数据中的MLII导联部分。
  • 心拍:如文章(一)中图片所示,将一个完整的心电波形称为一个心拍。
  • 信号点(值):连续的心电波形图其实是由一系列频率固定的不连续采样点构成的,将每个采样点称为信号点(值)。

心电数据的读取

下载数据库到本地后打开,你会发现.dat文件中全部都是乱码,这是由于MIT-BIH数据库采用了自定义的format212格式进行编码。所以在读取心电数据的时候,我们需要用到Python中的一个工具包:wfdb。

在Pycharm中新建工程,并将下载好的心电数据集按如图所示的目录结构进行放置。其中ecg_data为心电数据集的文件夹。

在该工程配置的Python环境中安装wfdb包。

pip install wfdb

关于wfdb包的详细使用请参考其官方文档,这里用代码的形式给出一些常用操作。

# 读取编号为data的一条心电数据
def read_ecg_data(data):'''读取心电信号文件sampfrom: 设置读取心电信号的起始位置,sampfrom=0表示从0开始读取,默认从0开始sampto:设置读取心电信号的结束位置,sampto = 1500表示从1500出结束,默认读到文件末尾channel_names:设置设置读取心电信号名字,必须是列表,channel_names=['MLII']表示读取MLII导联线channels:设置读取第几个心电信号,必须是列表,channels=[0, 3]表示读取第0和第3个信号,注意信号数不确定'''# 读取所有导联的信号record = wfdb.rdrecord('../ecg_data/' + data, sampfrom=0, sampto=1500)# 仅仅读取“MLII”导联的信号# record = wfdb.rdrecord('../ecg_data/' + data, sampfrom=0, sampto=1500, channel_names=['MLII'])# 仅仅读取第0个信号(MLII)# record = wfdb.rdrecord('../ecg_data/' + data, sampfrom=0, sampto=1500, channels=[0])# 查看record类型print(type(record))# 查看类中的方法和属性print(dir(record))# 获得心电导联线信号,本文获得是MLII和V1信号数据print(record.p_signal)print(np.shape(record.p_signal))# 查看导联线信号长度,本文信号长度1500print(record.sig_len)# 查看文件名print(record.record_name)# 查看导联线条数,本文为导联线条数2print(record.n_sig)# 查看信号名称(列表),本文导联线名称['MLII', 'V1']print(record.sig_name)# 查看采样率print(record.fs)'''读取注解文件sampfrom: 设置读取心电信号的起始位置,sampfrom=0表示从0开始读取,默认从0开始sampto:设置读取心电信号的结束位置,sampto=1500表示从1500出结束,默认读到文件末尾'''annotation = wfdb.rdann('../ecg_data/' + data, 'atr')# 查看annotation类型print(type(annotation))# 查看类中的方法和属性print(dir(annotation))# 标注每一个心拍的R波的尖锋位置的信号点,与心电信号对应print(annotation.sample)# 标注每一个心拍的类型N,L,R等等print(annotation.symbol)# 被标注的数量print(annotation.ann_len)# 被标注的文件名print(annotation.record_name)# 查看心拍的类型print(wfdb.show_ann_labels())# 画出数据draw_ecg(record.p_signal)# 返回一个numpy二维数组类型的心电信号,shape=(65000,1)return record.p_signal

在这些函数中,使用最多的是通过record=wfdb.rdrecord来获取心电数据信息,以及通过annotation=wfdb.rdann来获取心拍类型信息。需要注意的是record的类型是一个(65000,1)的二维数组,需要先将其转换成一维数组才可以对其进行预处理,关于预处理的这部分内容将在下篇文章中进行叙述。

使用Python+TensorFlow2构建基于卷积神经网络(CNN)的ECG心电信号识别分类(二)相关推荐

  1. 基于cnn的人脸识别_基于卷积神经网络(CNN)的人脸在线识别系统

    微信搜索"AI大道理",选择"置顶"公众号 重磅干货,深入讲解AI大道理 ------ 本设计研究人脸识别技术,基于卷积神经网络构建了一套人脸在线检测识别系统, ...

  2. 深蓝学院第三章:基于卷积神经网络(CNN)的手写数字识别实践

    参看之前篇章的用全连接神经网络去做手写识别:https://blog.csdn.net/m0_37957160/article/details/114105389?spm=1001.2014.3001 ...

  3. Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类)

    Python深度学习实例--基于卷积神经网络的小型数据处理(猫狗分类) 1.卷积神经网络 1.1卷积神经网络简介 1.2卷积运算 1.3 深度学习与小数据问题的相关性 2.下载数据 2.1下载原始数据 ...

  4. 基于卷积神经网络CNN的水果分类预测,卷积神经网络水果等级识别

    目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN水果分类预测 基本结构 主要参 ...

  5. 【图像识别】基于卷积神经网络cnn实现银行卡数字识别matlab源码

    1 基于卷积神经网络cnn实现银行卡数字识别模型 模型参考这里. 2 部分代码 %印刷体识别 clc;clear;close all; addpath('util/'); addpath('data/ ...

  6. 基于卷积神经网络 CNN 的猫狗识别详细过程

    目录 一.卷积神经网络(CNN) 1.1 卷积 1.2 前馈神经网络 1.3 卷积神经网络(CNN) 二.配置环境 三.猫狗数据分类建模 3.1 猫狗图像预处理 3.2 猫狗分类的实例--基准模型 3 ...

  7. 基于卷积神经网络(CNN)的猫狗识别

    目录 引言 1.什么是卷积神经网络? 1.1什么是神经网络? 1.2什么是卷积? 2.准备工作 2.1一些知识: 2.2keras 2.3Conv2D 2.4 MaxPooling2D 3.基于卷积神 ...

  8. 基于卷积神经网络(CNN)模型的垃圾分类设计与实现

    本篇博客主要内容如下: 目录 项目背景 数据集介绍 模型构建与训练 结果分析 结果对比分析 项目背景 如何通过垃圾分类管理,最大限度地实现垃圾资源利用,减少垃圾处置量,改善生存环境质量,是当前世界各国 ...

  9. 基于卷积神经网络方法的英文短文本情感分类(Python)

    摘要:互联网的快速发展,使得每个人表现自己,发表言论更加的自由和便利.Twitter.Facebook等应用软件为大众提供了表达自身情感的一个平台.情感分类,可以简单地表示为喜欢,厌恶和中性,也渐渐受 ...

  10. 基于卷积神经网络CNN的甘蔗芽体自动识别,卷积神经网络分类预测

    目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN甘蔗芽体自动识别 基本结构 主 ...

最新文章

  1. [Bash Shell] Shell学习笔记
  2. 语言模型“不务正业”做起目标检测,性能还比DETR、Faster R-CNN更好 | Hinton团队研究...
  3. liferay和cas系统集成
  4. Python编程语言学习:sklearn.manifold的TSNE函数的简介、使用方法、代码实现之详细攻略
  5. 摇杆控制方向原理_医用无油空压机的送料作用及工作原理
  6. java oracle数据备份_Java备份还原Oracle数据库
  7. 数集合有多少个TOJ(2469)
  8. 几种限流器(RateLimiter)原理与实现
  9. tomcat并发优化
  10. php解析视频_YY神曲视频PHP解析调用代码
  11. 线性代数之 实对称矩阵,正交对角化,二次型与正定矩阵
  12. shell提示Algorithm negotiation fail
  13. 计算机课程成绩认定管理办法,全日制普通本科生课程学分成绩对接认定管理办法...
  14. SpringBoot生命周期
  15. vue项目实现更换默认头像功能
  16. 【绘图】python 配色表
  17. JS 统计字符串中大小写字母个数
  18. MySQL中函数field()的用法
  19. asp.net Repeater等数据控件模版内部2个DropDownList控件级联
  20. 棋牌游戏开发可持续发展 需重视长期运营优化

热门文章

  1. Unity粒子特效系列-毒液喷射预制体做好了,unitypackage包直接用 - 上
  2. 【指纹识别】基于MATLAB/FPGA的指纹识别算法仿真实现
  3. java 缓存文件_java实现酷狗音乐临时缓存文件转换为MP3文件的方法
  4. 专业词汇及解释(持续更新,自用)
  5. 2020-11-02-Ubuntu 20.04安装Anaconda3-卸载Anaconda3-笔记
  6. Python三十个常见的脚本汇总
  7. originpro 2021 附安装教程
  8. idea :插件Statistic 统计代码数量和行数
  9. python人脸考勤系统_python人脸考勤系统Python3多进程 multiprocessing 模块实例详解
  10. 服务器虚拟化思维导图,虚拟语气思维导图解析.ppt