深度医疗(3) - 基于深度学习肺部病变诊断识别
深度医疗是笔者基于深度学习的医学项目应用开发实践,经过整理输出了文档和本系列课程,希望通过分享可以和大家共同讨论、相互学习,探索更好的解决方案。笔者是一名普通的大数据和人工智能领域从业者,过程中如有错误和理解不到位的地方请广大同仁不吝赐教。笔者一直坚信深度学习和医学的有机结合一定能碰撞出性能强大的深度医疗系统,服务大众。
本文主要介绍了通过深度学习进行肺部病变识别的应用,首先简单介绍了影像学医学背景和相关知识,接着介绍了目前能获得的公开的肺部病变数据集,最后介绍了神经网络的实现方式和处理后的效果以及性能分析,其中涉及到了多特征识别的问题。
1.概述
背景
胸部X射线检查是最常见和最具成本效益的检查之一。医学影像学检查。然而,胸部X射线的临床诊断是具有挑战性的,有时被认为比胸部CT成像更难诊断。
目前有一些很前沿的研究,尤其是最近的深度学习被用于结核病(TB)分类上,实现了临床相关的计算机辅助检测,但在真实世界医学网站上的诊断(CAD)所有的X射线胸部数据仍然是非常困难的。
如何利用医院的知识库,并通过深度学习训练这些宝贵的影像,以建立真正大规模的高精度电脑辅助诊断,是现在一个非常前沿的课题。
影像学
影像学不仅扩大了人体的检查范围,提高了诊断水平,而且可以对某引些疾病进行治疗。这样,就大大地扩展了本学科的工作内容,并成为医疗工作中的重要支柱。自伦琴1895年发现X线以后不久,在医学上,X线就被用于对人体检查,进行疾病诊断,形成了放射诊断学的新学科,并奠定了医学影像学的基础。至今放射诊断学仍是医学影像学中的主要内容,应用非常的普遍。
2.数据集
数据是从美国国立卫生研究院临床中心临床PACS数据库中提取的,其中正前位的胸片占医院所有正前位胸片总数的60%。因此,这个数据集更具代表性。
数据集包括112120张前视图X射线图像,分别对应14个疾病图像标签。
其中包括14种常见的肺部病理:肺不张(Atelectasis)、实变(consolidation)、浸润(Infiltration) 、气胸(pneumothorax) 、水肿(edema) 、肺气肿(emphysema) 、纤维化(fibrosis) 、渗出(effusion) 、肺炎(pneumonia) 、胸膜增厚(pleural thickening) 、心肥大(cardiomegaly) 、结节(nodule) 、肿块(mass )、疝气(hernia) 。
3.数据提取
数据是PNG格式,每个图片大小是1024 * 1024的分辨率;
其中包括label文件,如图中所示,标注了每个图片文件对应的病症、病人的相关信息和图像的一些基础信息。
4.神经网络结构
神经网络采用了Dense Net进行处理,主要有三层Dense Net进行级联,每个Dense Net包括4个block,每个block包含batch_norm、relu、cnn、dropout模块,特别要提出的是最后的合并concat不是相加,而是通过连接的方式处理的。
5.多特征判别
一张Xray的图像有可能包含一张病变,也有可能包含多个病变,例如某个病人只有肺炎一种病,但另外一个病人可能同时有肺气肿和胸膜增厚两种病,甚至有些病人同时患有三种以上的病;这个时候就出现了多特征的判别的问题:
6.结果分析和系统优化
误差收敛曲线
精度曲线
因为一个病人的一张X片可能对应几种病变,这个系统不是单一的分类问题,是一个多分类问题,所以前面采用了sigmoid取代了softMax作为输出的判别,但我们忽略了一个问题,这种多分类问题需要有一个置信区间,因为从原理上来说,神经网络在做预测的时候是不知道这个X片到底对应几个病变的,所以我们需要给一个置信区间,在训练的时候满足这个置信区间。
7.存在的问题和后续优化方案
-
原始图片的分辨率很高(1024x1024),为了提高处理速度,神经网络中reshape成了128x128大小的,相对图像信息损失较大,可以通过修改网络输入的大小把输入图片reshape成分辨率更高,从而来提高系统的精度;
-
通过优化网络结构,例如加深dense net或加入其它网络,类似Residual Net进行处理;
-
对输入的原始数据进行预处理,通过剪裁、翻转等方式增加训练数据的数据量;