首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何利用Python深度学习来检测心脏病?

根据世界卫生组织的数据,每年大概有1750万人死于心血管疾病,占全球死亡总数的31%。但是其中有80%的过早心脏病发作和中风是可以预防的。要有效地预防心脏病就需要我们用有效的方式来及时检测出心脏病,基于心电信号的心音分析就是一种用于检测心脏病的有效方法。而心音分段是心音分析的第一步,也是心音分析的关键环节。

本文主要参考Faizan Shaikh写的“Heart Sound Segmentation using Deep Learning – A doctor in making?”这篇文章来给大家进行介绍。

什么是细分问题

英文中用Segmentation problem来表示细分问题,也即是分段的意思。所以,我们在了解心音分段之前要先明白细分问题。细分问题就是将特定对象按照某一特征划分成多个部分,亦即是分类或分段。这个对象可以是任何东西,从具体的东西,如图像或音频信号,到市场或消费者等抽象对象。

通过对对象的细分,我们可以更轻松地获取有用的信息。例如,在客户关系管理中,客户之间存在较大差异,对客户进行细分,可以帮助我们更容易地进行客户管理。例如,下图是根据信用卡客户年龄进行细分的一个例子:

(图片来自网络)

基于监督学习的分割方法

现在你已经知道了什么是细分问题,接下来让我们了解一下解决细分问题的方法。对于音频数据来说,分割或者分段是一个重要的预处理步骤。通过分割技术,我们可以将嘈杂而冗长的音频信号分割成较短的均匀片段,这些片段可以作为短序列音频用于进一步的处理。要进行分割,我们可以采用无监督的方法,也可以将它转化为一个监督学习的问题,然后然后根据其类别进行分组。

为了更直观地解释,我们举一个图像分割的例子:

假设你有一张如下图所示的猫的图片,为了可以单独地识别图片中的对象,你需要对图片分块,有以下两种方法可以帮你做到:

方法1:从图像的每个像素,找出彼此接近具有相似颜色的像素。然后可以将这些像素聚类在一起,形成一个更大的物体图像。在下面的图片中,猫大多是灰白色的。因此,通过找到像素可以容易地将猫的图像分割出来。这是一种无监督的分割方法。

方法2:训练一个模型,并给它具有明确图形对象的例子,比如,猫、树和天空。然后通过模型的学习,进而预测图像中哪些对象出现在哪里。这是一个通过有监督的学习来进行分割的方法。

(图片来自网络)

这两种方法各有优缺点,选用哪一种方法,主要取决于用于监督学习的训练数据的获取的难度。

什么是心音

心音(heart sound)指由心肌收缩、心脏瓣膜关闭和血液撞击心室壁、大动脉壁等引起的振动所产生的声音。它可在胸壁一定部位用听诊器听取,也可用换能器等仪器记录心音的机械振动,称为心音图。

心音可分为第一心音(S1)第二心音(S2),正常情况下均可听到。第三心音(S3)通常仅在儿童及青少年可听到,第四心音(S4正常情况很少听到)。

在心音分析中,我们需要在音频数据中找到特定的心脏的声音(S1和S2),然后根据这些声音分割音频文件,这一步就是心音分段。在分割声音之后,要实现有效地检测心脏病,我们需要找出一种可以将心跳分类为正常和患病类别的方法。

正常的心音有一个清晰的“Iub dub,Iub dub”模式,从“Iub”到“dub”的时间短于从“dub”到下一个“Iub”的时间(当心率低于每分钟140下时)。如下所示:

心音分段的实现

读取数据集:

使用数据集绘制心跳图像:

我们可以看到心跳的周期,一个高强度的声音伴随着一个低强度的声音。

接下来我们要从原始文件中创建训练数据集。下面的代码简单地遍历了所有的原始文件,并提取了音频的一部分以及相应的标签。

当我们创建这些数据时,需要进行一些预处理。首先是使所有提取的样本都是相同的形状,其次是规范化数据,第三是为我们的深度学习模型创建合适的X和Y。

现在我们便可以开始建立我们的深度学习模型。我们将建立一个CNN模型,因为CNN已经被证明是对于序列理解和分类的一种先进的架构。

我们的模型将具有这种类型的体系结构:

下一步是在转换后的数据集上训练你的模型。

我们只在这里训练1个阶段。但是你可以增加它来让你的模型表现得更好。

最终产生一个经过训练的模型,可以用来执行心音分段。现在,要获取分段信号的持续时间,只需将您的原始测试文件分成多个部分,并从中获取最重要的预测结果。模型会给出这样的预测:

希望深度学习能在医疗领域得到越来越广泛的应用,帮助人类解决疾病之苦。

本公众号原创作品,未经授权禁止转载,特此声明,谢谢合作!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121G0F72000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券