U-Net新玩法——ECG精准语义分割(3)

上篇已经准备好了数据,这篇就是开始训练模型。目标很明确,我们要搭建一个1维形式的U-Net,使其能够处理1维ECG。代码实现参考了https://github.com/divamgupta/image-segmentation-keras 。输入是5s的ECG片段,在采样率为360Hz的情况下长度为1800,输入前先做z-score标准化;输出结果是关于3种区域(正常N,室性早搏PVC,背景Background)的判别情况,具体来说就是信号中每个点从属3中区域的概率。在具体的参数设定上,这里并没有采取常见的尺寸为3的小卷积核,而是在卷积层上均采用了尺寸为32的大卷积核,这个会产生什么影响后面再说,总之很关键。具体模型请参照代码文件Unet.py,基于keras实现(后端TensorFlow)。训练时batch的生成代码参照LoadBatches1D.py。

       运行train.py可进行模型训练,这里注意数据路径的修改。训练中会有一个比较值得注意的现象,前10几个epoch时,模型的验证集准确率会一直不动,给人的感觉是模型不收敛,但其实此时loss还是波动下降的;在10几个epoch之后,模型会突然“觉醒”,准确率开始快速提升,直到稳定。具体画出loss和准确率曲线大概是这样的:

在关于准确率的曲线上,可见前10几个epoch几乎是平的,然后过了某个点之后,模型性能开始大幅提升。这种现象在我的实验过程中每次都会出现。不过具体原因还不是特别清楚。训练完成后,可运行test_a_sig.py文件,从验证集中随机抽取一个信号进行直观上的测试,就像这样:

上图中,蓝色线表示背景概率,黑色表示正常概率,红色代表PVC概率。可见模型对不同区域的识别还是比较准确的。线的交叉处,一般是心拍的边界,可以看到也相对精准。但是对于片段边缘的信号模型识别性能有所下降。这个跟我的标记也有关,我在标记信号时,边缘上不完整的心拍一律视为背景。

       回到我们前面的问题,为什么不采用常见的尺寸为3的卷积核?原始U-Net的卷积核尺寸都是3(当然是处理医学图像),而且,论文Oh S L, Ng E Y K, San Tan R, et al. Automated beat-wise arrhythmia diagnosis using modified U-net on extended electrocardiographic recordings with heterogeneous arrhythmia types[J]. Computers in biology and medicine, 2019, 105: 92-101.就是用了尺寸为3的卷积核。其实这也正是我有所质疑的地方,那我们看看如果改成3会怎么样,画出训练过程中的loss和准确率曲线:

乍眼一看,似乎一切都很正常,起码变化趋势很正常。但你如果仔细看看纵坐标,会发现最后模型趋于稳定时,loss很大,准确率很低,也就是模型性能很差。随机测试一条验证集模型可以看到像下面这种现象:

可见上述3条标识类型的线在这里全部拧在了一块(忽略右下角错误的标识),区分度很差。虽然模型没有不收敛,但基本可以确定,尺寸为3的小卷积核不能学习到有意义的局部变化。这个也可以理解,ECG是一种低频信号,有意义的波形变化往往长度比较大,在模型深度有限的情况下,必须使用大卷积核才能有效捕捉。这个结果跟分析与论文Oh S L, Ng E Y K, San Tan R, et al. Automated beat-wise arrhythmia diagnosis using modified U-net on extended electrocardiographic recordings with heterogeneous arrhythmia types[J]. Computers in biology and medicine, 2019, 105: 92-101.中使用尺寸为3的卷积核就能取得高性能的结论相悖,作者也没有说明其数据标记的方式和来源,所以让我感觉到很疑惑。

 

这里提供一个训练好的模型:myNet.h5

下载地址:链接:https://pan.baidu.com/s/1Xm02MmQmLDDKx6vfzMHZDA

提取码:gtbc

 

Github开源地址:https://github.com/Aiwiscal/ECG_UNet

喜欢请给star哦~~~

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值