基于深度学习的肺部CT影像识别——采用U-net、3D CNN、cGAN实现肺结节的检测(二)

点击此处跳转到系列博客索引


引言

上一节中介绍了U-net在肺结节分割提取中的原理,能有效提取出候选结节。然而,由于结节形态特征的高度变异性和将其误认为邻近器官的可能性,原本不是结节的目标通过模型预测得到的结果被划定为结节。为了解决较高的假阳性问题,本文利用多层级三维卷积神经网络来进行假阳性过滤,根据Bum-Chae Kim等人 [ 1 ] \color{#0000FF}{[1] } [1]的开源代码,做了复现工作,实现了假阳性过滤。

算法原理

Bum-Chae Kim等人的工作实际上也是参考的Dou等人 [ 2 ] \color{#0000FF}{[2] } [2]的工作,也就是上一篇博客中SongpingWang所用的3D CNN模型。所以这里先介绍Dou等人的算法。

多层级3D CNN

3D CNN肺结节检测中立方体样本以候选位置坐标为中心切割,并被输入到网络。立方体的样本的尺寸,即目标位置的环绕范围称为网络的接受域。接收域的大小对网络辨识准确率至关重要,接收域太小,只有有限的环境信息被包含入网络,会导致预测能力下降以及难以处理大量变化的目标;接收域太大,会包含太多噪音数据。所以该算法设计了三个包含不同层次上下文信息的三维卷积网络,将这些网络的后验预测融合在一起,得到最终的分类结果。

在这里插入图片描述
从图中可以看到,三个网络分别为Archi-1、Archi-2和Archi-3。其中Archi-1的接受域大小为20×20×6体素,这个接受域能够包含小的肺结节,并且它覆盖了数据集中58%的结节。Archi-2具有更大的接受域,大小为30×30×10体素,可以覆盖85%的结节,因此它在一般情况下具有良好的性能,能处理常见的患者病变。这个窗口大小的目的是为小结节和中等大小的病变提供丰富的上下文语义信息。而对于一些大结节,通常可以采取排除边缘区域,只取其主要部分的方法。最后,构建了一个体素为40×40×26的Archi-3网络。在这个接受域下,可以为中等大小的病变提供丰富的背景信息,但是会有将嘈杂的周围信号当作小尺寸结节的风险。然而与其它两个网络相比,Archi-3网络可以更好地处理那些体积非常大的结节。

多尺度渐变集成3D CNN

上面介绍的多尺度3D CNN为了做出最终的决定,他们在顶层通过对来自三个不同尺度的patches的预测值进行加权和得到最终预测Lable。然而,每个尺度的权重是手动确定的,而不是从训练样本中学习。现在介绍的多尺度渐变集成3D CNN相比于上一个网络结构多了渐变特征提取多级特征集成两部分(Gradual Feature Extraction and Multi-Stream Feature Integration)。
在这里插入图片描述
在这里插入图片描述
从上面两幅图能理解作者是如何通过三个patches实现渐变特征提取多级特征集成的,渐变特征提取能够缩放特征图纹理,也就是图中的Zoom-in和Zoom-out。具体是将三个不同大小的patch按大小的顺序渐进地集成组合。据作者所述这种方式是受到人类视觉系统的启发,通过改变视野从场景中获取有意义的上下文信息。

实现过程

根据Kim的开源项目 [ 3 ] \color{#0000FF}{[3] } [3]说明进行复现,首先打开settings.py文件设置相关的参数,如数据集路径、结果保存路径、运行模式、训练参数等等。由于他是通过命令行来输入参数进行设置的,根据我自己的习惯,做了修改,直接在源代码里设置参数。设置的数据集路径中,mhd文件和对应的raw文件都必须在同一路径下。

这里他还用到了五折交叉验证,可以根据自己的需要修改maxfold。需要注意的是他这里训练过程是通过Tensorboard可视化的,也就是settings.py中的summ_path

下一步在utils.py设置读取的病例数量和patch的大小,因为Kim给出的代码中是读取全部的110G原始数据进行处理,然后将处理好的图像数据存储为npy文件。想象一下,除了原始的数据,还有生成的100多G的数据,更离谱的是还要给三个不同大小的patch分配临时的存储空间,我这破笔记本根本顶不住啊。所以我考虑通过修改病例数量和patch大小来跑通项目。

我在utils.py中写了个PATIENT_NUM参数设置读取的病例数(LUNA16数据集一共888病例),当我尝试修改patch的大小时发现代码中全是常数,以及处理patch的一些语句中也全是常数。我不得不吐槽一句韩国人写的代码属实🐮🍺,就不能定义几个变量吗?这也导致我修改失败,只定义了说明三个patch大小的变量slice_x,y,z,便于标识,但是涉及到的相关操作语句中的常数着实无从可改。 I tried but failed.

最后,就是运行main.py开始训练(或预测)得到预测结果,并保存为了npy文件。为了评估模型分类正样本的能力,我还写了个plot_roc.py来绘制ROC曲线并计算AUC面积。至此,我总算跑通了项目,并且得到了我想要的结果,虽然精度不太行。

实验结果

评价指标

为了衡量模型的准确性和有效性,本文采用敏感度(Sensitivity)、特异性(Specificity)、准确率(ACC)、ROC曲线和AUC面积五个指标进行评估。首先设计到混淆矩阵的概念,请参考维基百科 [ 4 ] \color{#0000FF}{[4] } [4]
S S T = T P / ( T P + F N ) SST = TP/ (TP + FN) SST=TP/(TP+FN) S P C = T N / ( T N + F P ) SPC = TN/ (TN + FP) SPC=TN/(TN+FP) A C C = ( T P + T N ) / ( T N + F P + T P + F N ) ACC = (TP + TN)/ (TN + FP + TP + FN) ACC=(TP+TN)/(TN+FP+TP+FN)

ROC曲线即接受者操作特征曲线 [ 5 ] \color{#0000FF}{[5] } [5],用来展示二分类器的诊断能力随着鉴别阈值变化而变化。ROC曲线是通过绘制真阳性率和不同的阈值设置下的假阳性率的关系而得到的,真阳性率即敏感度(SST),假阳性率也被称为失误率或虚警率,可以表示为(1-SPC)。

AUC是ROC曲线与坐标横轴所围成的面积 [ 5 ] \color{#0000FF}{[5] } [5],归一化单位后,AUC面积可以表示分类器正确分类正样本多于正确分类负样本的概率,AUC值越大说明算法能够更好地分类正样本。

结果分析

一、训练过程可视化
在这里插入图片描述
在这里插入图片描述
二、模型预测结果
在这里插入图片描述
ROC曲线非常靠近左上角,说明模型能较好的判断结节类型,减少漏诊和误诊。而AUC表示预测的正例置信度大于负例置信度的概率,AUC越大分类效果越好。0.967的AUC值说明模型对正例和负例的分类能力较好。
在这里插入图片描述
特异性值(SPC)很大,对假阳性的过滤能力强,能有效避免误检。而0.81的敏感度值(SST)说明模型漏检的可能性也较小。

三、假阳性过滤可视化
在这里插入图片描述

参考

[1] Kim B C , Yoon J S , Choi J S , et al. Multi-scale gradual integration CNN for false positive reduction in pulmonary nodule detection[J]. Neural Networks, 2019, 115:1-10.

[2] Dou Q, Chen H, Jin Y, et al. Automated pulmonary nodule detection via 3d convnets with online sample filtering and hybrid-loss residual learning[C]//International Conference on Medical Image Computing and Computer-Assisted Intervention. Springer, Cham, 2017: 630-638.

[3] https://github.com/ku-milab/MGICNN.

[4] 维基百科:混淆矩阵[DB/OL]. https://en.wikipedia.org/wiki/Confusion_matrix.

[5] 维基百科:ROC曲线和AUC面积[DB/OL]. https://en.wikipedia.org/wiki/Receiver_operating
_characteristic.

  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
遥感影像分类是指通过对遥感影像进行分析和处理,将其分为不同的地物类别。随着深度学习的发展,基于深度学习的遥感影像分类方法也逐渐成为研究热点。本文将从国内外两个方面介绍基于深度学习的遥感影像分类方法的研究现状。 一、国内研究现状 1. 基于卷积神经网络的遥感影像分类方法 卷积神经网络CNN)是深度学习中常用的神经网络结构,也是遥感影像分类中常用的方法。国内研究者针对遥感影像特点,对传统的CNN进行了改进和优化。例如,利用多尺度卷积核进行卷积处理,可以更好地提取遥感影像的特征,并且具有较高的分类精度。 2. 基于循环神经网络的遥感影像分类方法 循环神经网络(RNN)是一种常用的序列数据处理方法,适用于遥感影像时间序列数据的分类。国内研究者通过引入RNN,可以对遥感影像序列数据进行有效的分类和预测。例如,将LSTM-RNN应用于遥感影像的分类和分割,可以提高分类和分割的准确率。 3. 基于自编码器的遥感影像分类方法 自编码器是一种无监督学习方法,可以通过对输入数据进行重构,学习数据的特征表示。国内研究者将自编码器应用于遥感影像分类,可以有效提取遥感影像的特征,从而提高分类准确率。 、国外研究现状 1. 基于深度卷积神经网络的遥感影像分类方法 深度卷积神经网络(DCNN)是近年来应用最广泛的深度学习方法之一,也是国外研究中常用的遥感影像分类方法。DCNN通过多层卷积和池化操作,可以有效地提取遥感影像的特征,并且具有较高的分类精度。例如,Google公司开发的Inception-v3模型在遥感影像分类中取得了很好的效果。 2. 基于深度卷积循环神经网络的遥感影像分类方法 深度卷积循环神经网络(DCRNN)是将CNN和RNN结合的一种网络结构。DCRNN可以对遥感影像进行序列化处理,从而更好地提取遥感影像的时空特征,并且具有较高的分类精度。例如,美国加州大学伯克利分校的研究人员利用DCRNN对遥感影像进行城市化变化检测,取得了很好的效果。 3. 基于生成对抗网络的遥感影像分类方法 生成对抗网络(GAN)是一种无监督学习方法,可以生成逼真的图像。国外研究者将GAN应用于遥感影像分类,可以生成更加逼真的遥感影像,从而提高分类准确率。例如,美国斯坦福大学的研究人员利用CGAN对遥感影像进行分类,取得了很好的效果。 总结:基于深度学习的遥感影像分类方法在国内外研究中都取得了很好的效果。国内研究者主要关注在针对遥感影像特点的CNN优化和改进,而国外研究者则更多地关注于网络结构的创新和发展。随着深度学习的不断发展,基于深度学习的遥感影像分类方法将会得到更广泛的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值