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

 熟悉ECG算法处理的同学都知道,在这个领域,做的最多的就是分类,可以基于心拍,也可以基于片段。两种方法各有优劣,这个我在之前的博客:Andrew Y. Ng式ResNet在MIT-BIH上的Inter-Patient分类实现(2)(https://blog.csdn.net/qq_15746879/article/details/88698720)中也做过一些分析。简单总结下来是这样的,基于心拍的算法结果足够精细,可以落实到单个心拍,但是需要额外的QRS波检测算法或是人工定位心拍,后端分类器对具体定位方法有依赖;而基于任意片段的算法则无需额外算法辅助,可以做到end-to-end,但结果又不够精细,如果片段中出现了多个类型的心拍,则无法精准判定它们各自的类型。当然,我们在上述博客中提出了一个规则来缓解基于片段的算法的缺陷,但并不能彻底解决该问题。那有没有一种方案可以同时克服以上两种方式的缺陷,又保留它们的优势呢?

其实答案很明显。计算机视觉领域已经给我们提供了一种解决方案——语义分割模型。对于一张图片中不同的物体,语义分割模型的目的是精准地分辨物体的本身和边缘,例如像这样:

图来自Shelhamer E, Long J, Darrell T. Fully Convolutional Networks for Semantic Segmentation[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017 (4): 640-651.

同理,在ECG信号中,我们也希望能用一个模型精准的切分出心拍,并且同时给出其中的心拍类型,就像这样:

上图中是一段ECG信号,包含了正常(N)和室性早搏(PVC)两种心拍,以及心拍之间的背景(BG)。对于目标模型,我们输入的是一个任意片段,无需QRS波检测算法或人工定位心拍;输出就像上图这样,能够精准地分辨不同类型信号段位置。从理论上来说,这样同时克服了基于心拍和基于片段的ECG分类算法的缺陷,但也同时保留了它们的优势:输入是任意的片段,而最终的输出结果足够精准。但通用计算机视觉领域的语义分割往往需要大量的训练数据,这对于像ECG这样的医学数据来说显然有点不太现实。

       这个问题其实也有解决方案,那就是U-Net。原始U-Net是专为医疗图像分割而生,在小的数据集上也能取得不错的效果,理所当然地成为了我们的选择。U-Net,顾名思义,就是结构很像个字母“U”:

图来自Ronneberger O, Fischer P, Brox T. U-net: Convolutional networks for biomedical image segmentation[C]//International Conference on Medical image computing and computer-assisted intervention. Springer, Cham, 2015: 234-241.

那理论上也很简单了,只要我们把U-Net改为1维,就能处理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.,有兴趣的可以看看,但是这个论文细节写得不是很清楚,而且根据我的实验,对于里面的一些参数设定有点疑问。这个后续再细说,总之整体思路已经很清楚了。

下篇正式开始。强烈推荐大家阅读U-Net原始论文以及上面提到的那篇关于ECG分割的论文!!!

代码已开源在github:https://github.com/Aiwiscal/ECG_UNet

喜欢请多多给star哦~

发布了30 篇原创文章 · 获赞 205 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_15746879/article/details/89463691