基于卷积神经网络和迁移学习的肺结节检测
2021-01-20陈道争
陈道争,江 倩
(1.上海海事大学 信息化办公室,上海 201306;2.上海海事大学 信息工程学院,上海 201306)
0 引 言
针对肺部病变的检测,X光胸片仍是目前最常用的医学影像诊断技术[1]。传统的人工阅片方式主要存在两点缺陷:一是放射科每天产生的海量图像数据给医生带来了沉重的工作负担,诊断效率亟待提升;二是诊断过程容易受到疲劳、经验不足等主观因素的影响,进而导致较高的误诊、漏诊率。由此,计算机辅助诊断(computer-aided diagnosis,CAD)技术应运而生[2]。现有的肺结节检测CAD系统主要分为两类:基于手动提取特征的机器学习方法[3-5]和基于自动提取特征的深度学习方法[6-8]。近年来,卷积神经网络(convolutional neural network,CNN)在诸如图像分类[9-11]、目标检测等任务中表现出色,成为医学影像分析领域的研究热点。将CNN应用于医学图像肺结节检测存在困难:出于对患者隐私和数据安全的考虑,难以获取充足的训练数据;另外,对医学图像进行专业标注是一项耗时费力的工作。迁移学习是指将从源域中学习到的知识作为先验信息应用到目标域中,能够有效解决小规模数据集的训练问题[12]。随着越来越多的研究学者开始探究迁移学习策略的有效性,利用这一策略进一步改进算法性能是目前肺结节检测CAD系统研究的重点。
1 相关工作
1.1 基于X光胸片的肺结节检测
肺结节检测CAD系统一般包含4个步骤:图像预处理、肺区域分割、候选结节检测和假阳性去除。Li等[13]针对传统肺结节检测方法存在的低敏感度、高假阳性率问题,提出一种基于集成卷积神经网络(ensemble of convolutional neural networks,E-CNNs)的算法框架,用于实现肺结节检测中的假阳性去除。在JSRT数据集[14]上进行验证,分别获得了假阳性水平为5.0时94%的敏感度和假阳性水平为2.0时84%的敏感度,实现了当时先进水平。Dai等[15]提出一种结构校正对抗网络(structure correcting adversa-rial network,SCAN)用于实现X光胸片肺区域分割。实验结果表明,所提出的方法实现了较高的准确度和比较自然的分割结果。同时,该方法并不依赖于网络结构的设计和数据集规模,在训练样本有限的情况下,仍然可以获得接近甚至达到人类的先进诊断水平。Wang等[16]通过对从非医学图像数据集中提取的特征和人工提取的医学影像特征进行深度特征融合,实现肺结节检测中的假阳性去除。实验结果表明,基于深度特征融合的检测方法比采用单一的人工提取特征的检测方法获得了更高的敏感度和特异度,同时有效降低了假阳性率。结合X光胸片中肺结节的孤立性特征,Li等[17]提出了一种新的肺结节检测方法。通过采用平稳小波变换和收敛指数滤波器提取肺结节的纹理特征,AdaBoost算法用于生成白色结节的相似性映射。在日本放射技术学会(Japanese society of radiological technology,JSRT)数据集上进行验证,该方法分别实现了假阳性水平为2.0时80%的检出率和假阳性水平为5.0时93%的检出率,具有潜在的临床应用价值。
1.2 卷积神经网络
相较于传统的人工神经网络,CNN的主要优势在于允许将经过预处理的图像数据直接作为网络输入,省去了手动提取特征的步骤。同时,权值共享和反向传播算法保证了模型的泛化能力并得到概率上的全局最优。经典的CNN模型主要包括1998年的LeNet、2012年的AlexNet、2014年的VGG-Net以及2015年的GoogLeNet和ResNet[18]。LeNet包含了CNN模型的所有基本层结构,即卷积层、池化层和全连接层,但由于其网络层数较少,在运算效率和算法性能方面有一定的局限性。AlexNet取得成功的关键原因主要有4点:一是使用非线性激活函数ReLU,不仅能够加快模型收敛速度,同时可以降低计算成本;二是在池化层中引入了Dropout正则化技术,可以有效防止过拟合;三是采用了数据增强技术和局部响应归一化(local response normalization,LPN)层,能够提高模型对未知数据的预测能力;四是基于双GPU并行训练,进一步缩短了训练时间。VGG-Net在继承了LeNet和AlexNet部分网络框架的基础上,继续增加其网络深度。随着网络深度的增加,可以保证模型处理更复杂问题的能力。GoogLeNet的创新之处在于提出了批量归一化(batch normalization,BN)层,即通过归一化网络输出的均值和标准差来减少模型训练过程中产生的数据偏移问题。ResNet中残差模块的提出使得训练一个具有152个网络层的深度神经网络模型成为可能。
近年来,一些新的CNN模型相继被提出并应用于医学图像肺结节检测。朱翔宇等[19]开创性地提出了一种基于U-Net模型的肺结节检测CAD系统,由图像预处理、肺部分割、模型训练、结节检测共4个部分组成。其中,肺部分割分别基于一般形态学方法和基于分水岭算法实现,能够有效提高肺结节检测的准确率。朱国策等[20]提出了一种新的基于深度卷积神经网络(deep convolutional neural network,DCNN)的肺结节检测方法用于降低假阳性率。首先采用USM锐化方法对X光胸片进行预处理,以突出显示结节信息;然后训练模型,基于滑动窗口方法提取出候选结节;最后,根据候选结节的区域面积大小实现假阳性结节的筛除。
1.3 迁移学习
迁移学习能否应用于医学影像分析领域主要取决于两个方面的因素:一是源数据集与目标数据集的相似性;二是目标数据集的大小。根据实际应用场景的不同,需要采取不同的实现方案:若二者相似且目标数据集较小,则可以考虑将所有卷积层的权重参数迁移到目标域中,并设置这部分网络结构不参与训练,只需训练重新定义的顶部层结构即可;若二者相似且目标数据集较大,由于有充足的训练数据,即使微调整个预训练模型也不会出现过拟合的问题;若二者不相似且目标数据集较小,则可以考虑重新训练部分卷积层,以充分提取目标数据集上的特征信息;若二者不相似且目标数据集较大,则不建议使用迁移学习,重新训练一个网络可能更有效。
近年来,迁移学习在医学影像分析领域的应用方向大致可以分为两类:一是将预训练模型作为特征提取器,在此基础上训练一个新的分类模型;二是更改网络结构,例如将顶部的全连接层替换为逻辑回归层,使得在新的数据集上只需训练自定义的顶部层结构。Shin等[21]将迁移学习应用于两个特定的计算机辅助诊断任务,即腹腔淋巴结检测和间质性肺病分类,并在腹腔淋巴结检测任务中取得了当时先进水平,进一步验证了迁移学习的有效性。Rajpurkar等[22]通过固定网络的卷积层参数,将X光胸片直接输入预训练模型,仅对全连接层进行参数微调。贺智超等[23]提出一种通过迭代竞争的方式找到最佳微调深度的方法,称之为“自适应微调深度的迁移学习方法”,并在多任务图像分类中获得了比较理想的实验结果。杨涵方等[24]建立了稀疏辨别性迁移模型(sparse discriminating transfer model,SDTM)及其对应的跨领域DCNN模型。实验结果表明,所提出的方法实现了较高的图像分类精度和较好的跨领域学习能力。张弛名等[25]提出一种基于深度迁移学习的肺结节良恶性辅助诊断方法,在LIDC(lung image database consortium)数据集[26]上进行验证,获得了91.44%的准确度和96.21%的AUC值。
2 方 法
本文提出的X光胸片肺结节检测方法主要包括4个步骤:图像预处理、肺区域分割、模型训练、肺结节检测,具体实现流程如图1所示。
图1 系统实现流程
2.1 图像预处理
图像预处理旨在通过一系列像素级别的操作来改善图像质量,例如去噪和图像增强。为了突出显示结节信息,本文对原始胸片进行直方图均衡化处理,如图2所示。可以看出,经过增强处理的图像可以明显提高结节与周围组织结构的对比度。
图2 图像预处理
2.2 肺区域分割
肺结节多见于肺实质内。肺区域分割是指将肺实质从肺部医学图像中分离开来,以避免无关背景区域对后续实验步骤的干扰。本文根据文献[27]中提出的方法,基于U-Net网络模型实现X光胸片的肺区域分割,如图3所示。
图3 肺区域分割实现流程
2.3 肺结节检测网络
2.3.1 ResNet
ResNet的提出,使得在没有引入额外参数且不增加网络计算复杂度的前提下,仍可利用梯度下降算法训练深度网络模型。因此,相比较已有的CNN模型,ResNet在参数、深度、宽度以及计算成本上都更具优势。本文实验中使用的ResNet50是在现有训练深度网络模型的基础上,提出的一种具有易优化、计算负担小等优点的深度残差网络。ResNet50网络结构中包含跨层连接和短连接:通过短连接实现输入数据的跨层传递,然后与经过卷积后的输出叠加,从而达到充分训练浅层网络的效果。
2.3.2 VGG-Net
VGG-Net通过使用多个较小尺寸的卷积核来代替较大尺寸的卷积核(使用3个3×3的卷积核代替7×7的卷积核,使用两个3×3的卷积核代替5×5的卷积核),以保证在具有相同感受野的条件下可以继续增加网络深度。通过探究CNN深度与模型性能之间的联系得出结论:增加网络层数可以得到更好的训练结果。本文实验中使用的两种具有不同网络结构的VGG-Net,即VGG16和VGG19,分别具有16个隐藏层(13个卷积层和3个全连接层)和19个隐藏层(16个卷积层和3个全连接层),也是Keras深度学习框架中适用于图像分类的两种比较常用的经典CNN模型。
2.4 模型训练
本文设计实现的模型训练过程主要包含3个阶段:加载预训练模型、迁移学习、超参数微调,具体实现流程如图4所示。
图4 模型训练过程
本文选用的3种预训练模型,即VGG16、VGG19和ResNet50,其权重参数均来自于大型图像数据集ImageNet的训练结果,已经具备一定的图像识别能力。通过将预训练模型的中低层作为特征提取器、将模型的顶层或接近顶层的部分作为分类器,计算机视觉领域的图像分类、目标定位、目标检测等研究工作大多都是基于ImageNet数据集展开。
所谓迁移学习,具体可以分为冻结全部卷积层和微调部分网络层两种实现策略。冻结全部卷积层是指仅允许预训练模型的顶层部分参与训练,而中低层的全部卷积层不参与训练。顶层是指神经网络模型中邻近输出层的几个隐藏层以及输出层,在CNN模型中,顶层一般由一个或多个全连接层构成。微调部分网络层是指允许预训练模型的部分卷积层(一般指接近顶层的几个卷积块)和顶层同时参与训练过程。根据自定义顶层结构的不同,本文共设计实现了4种情况用于分析迁移学习的有效性:①直接输出,记为D1;②输出层和一个含有64个神经元的全连接层,记为D64;③输出层和一个含有512个神经元的全连接层,记为D512;④输出层和一个含有1024个神经元的全连接层,记为D1024。
超参数微调是深度学习中的一项必备技能。本文主要研究以下3个超参数对模型分类性能的影响:优化器、批处理大小和迭代次数。常见的优化器如SGD、Adam和RMSprop:SGD虽然收敛速度偏慢,但加入动量后可加快收敛,同时带动量的SGD可以得到更好的最优解;RMSprop适用于带有循环结构的深度网络模型;Adam同时结合了Adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优势,对内存需求较小。批处理大小是指每一次训练时输入模型的样本数,通常取值为8的倍数,例如8、16、32、64、128、256等。较大的批处理数量通常可以加快模型收敛速度,但由于受到计算机内存资源的限制,批处理数量太大可能会导致内存溢出或程序内核崩溃。迭代次数是指在一次训练过程中整个训练集输入模型的次数。当训练误差和测试误差相差较小时,可以认为当前迭代次数的设置比较合理;当测试误差先变小后变大,说明迭代次数过大,需要相应地减小,否则容易出现过拟合问题。
2.5 数据增强
数据增强是指通过平移、旋转、垂直翻转、水平翻转、缩放等操作,对原始数据进行扩充。本文实验中采用水平翻转、旋转等操作对训练样本进行数据增强,如图5所示。经过数据增强处理,可以在一定程度上解决训练样本不足的问题,同时也有助于提高模型的泛化能力。
图5 数据增强处理
3 实验结果与分析
3.1 数据集
本文采用由日本放射技术学会提供的JSRT数据集用于X光胸片肺结节检测。该数据集包含247张胸片,收集自世界上14家不同的医疗机构,包括154例含有结节的样本和93例不含结节的样本,所有结节均经过3位放射科医生的一致确认。每张胸片的尺寸大小为2048像素×2048像素,像素深度为12位,每个像素对应的实际分辨率为0.175 mm。通过将数据集中所有胸片从2048像素×2048像素降采样至1024像素×1024像素,像素深度由12位处理为8位,以此来减少肺区域分割所需的时间,同时不会影响分割效果。
3.2 评价指标
在肺结节检测方面,通常采用准确度(accuracy)、敏感度(sensitivity)、特异度(specificity)、ROC曲线和AUC值作为分类性能的评价指标。其中,准确度、敏感度和特异度的计算方法如式(1)所示
(1)
其中,TP表示真阳性,即结节被正确识别为结节;TN表示真阴性,即非结节被正确识别为非结节;FP表示假阳性,即非结节被错误识别为结节;FN表示假阴性,即结节被错误识别为非结节。ROC曲线越靠近坐标轴左上角,AUC值越大,说明模型的分类性能更好。
3.3 实验环境
本文所有实验均基于Windows 7操作系统、Anaconda Navigator 4.3.30开发平台设计实现。Anaconda Navigator开发平台允许用户根据需要搭建一个或多个开发环境,不同开发环境之间可以自由切换,同时提供下载功能,用户可以直接通过该平台下载开发环境所需的文件。针对CNN模型的训练过程,本文采用以TensorFlow-GPU作为后端的Keras深度学习框架实现。采用基于GPU加速的TensorFlow库作为后端,可以调用计算机的显卡资源,进而加速深度网络模型的计算过程。同时,需要安装对应版本的CUDA驱动,例如本文安装的驱动版本为CUDA 10.0.140,对应的显卡驱动版本为Geforce GTX 950M。
3.4 结果与分析
3.4.1 不同网络模型对实验结果的影响
本文首先对比分析了不同网络模型对实验结果的影响,如图6所示。可以看出:①3种模型都实现了较高的准确度、敏感度和AUC值,适用于X光胸片的自动分类;②3种模型对应的特异度都不是很高,有待进一步改进或优化;③仅根据一次实验结果,难以直接判断哪种模型的分类性能更优。
图6 不同网络模型对实验结果的影响
3.4.2 不同迁移学习策略对实验结果的影响
本文通过设计实现两种不同的迁移学习策略,从定量的角度,充分论证迁移学习的有效性。冻结全部卷积层是指仅允许预训练模型的顶层部分参与训练,而中低层的全部卷积层不参与,实验结果见表1。可以看出:①是否冻结全部卷积层对实验结果确有一定的影响,整体而言,允许部分卷积层参与训练过程可以获得更好的实验结果;②迁移学习方法的提出,使得以较低的成本实现深度网络模型的训练成为可能,由于模型已经在ImageNet数据集上进行了预训练,再次应用到目标数据集上时,训练时长明显缩短,一般仅需0.5小时~2小时;③相比较而言,VGG19的综合分类性能更好。
表1 是否冻结全部卷积层对实验结果的影响
微调部分网络层是指允许预训练模型的部分卷积层(一般指接近顶层的几个卷积块)和顶层部分同时参与训练,基于VGG19模型进一步探究,实验结果见表2。所示。可以看出:①不同结构的自定义顶层设计对实验结果确有一定的影响,随着全连接层神经元个数的增加,模型的分类性能逐渐得到改善;②在医学图像肺结节检测方面,研究学者普遍关注的评价指标主要有准确度、敏感度和特异度,较高的敏感度和特异度意味着较低的漏诊率和误诊率。通过综合分析,设置全连接层的神经元个数为1024时,可以获得比较理想的实验结果。
表2 微调部分网络层对实验结果的影响
综上所述,采用微调部分网络层的迁移学习策略可以有效改善CNN模型的分类性能,有助于解决医学影像分析领域普遍存在的训练样本不足的问题,而冻结全部卷积层则会获得相对较差的实验结果。
3.4.3 超参数微调对实验结果的影响
为了进一步改进实验结果,本文对影响模型分类性能的3个主要超参数进行微调。其中,不同优化器对实验结果的影响见表3。可以看出:①3种优化器分别对应的准确度、敏感度、特异度、AUC值和训练时长并没有显著区别,说明不同的优化器对实验结果的影响较小;②整体而言,采用SGD可以实现比较稳定的算法性能。
表3 不同优化器对实验结果的影响
由于受到计算机硬件资源的限制,本文仅设计了3组对比实验用于分析不同批处理大小对实验结果的影响,见表4。可以看出:不同的批处理大小对实验结果没有明显的影响。一般来说,批处理大小的设置主要取决于数据集规模和图像分类的类别数,并且批处理大小的值越大,模型的分类性能越好。但批处理大小是否与模型的分类性能近似呈正相关,有待进一步探究。
表4 不同批处理大小对实验结果的影响
从表5中可以看出,迭代次数主要影响的是模型的训练时长,迭代次数越多,训练时间越长,而对分类准确度、敏感度、特异度和AUC值则没有显著影响。整体而言,设置迭代次数等于16时可以获得较好的实验结果,猜测可能与本文使用的数据集规模偏小有关。
表5 不同迭代次数对实验结果的影响
JSRT数据集中的每张胸片仅含有一个肺结节,采用本文提出的算法进行模型预测,如图7所示。分析得出,模型预测结果与该数据集提供的样本标注信息基本一致,进一步论证了本文算法的正确性和有效性。
图7 模型预测结果可视化
3.4.4 与其它算法结果的对比
当前,大多数关于肺结节检测方法的研究都是基于计算机断层扫描(computed tomography, CT)图像展开。相较于CT筛查,X光胸片具有无创性、放射性低、成本低等优势。为了对实验结果进行客观评价,将本文算法与已有的同类型研究进行对比,见表6。可以看出,本文提出的肺结节检测方法实现了最高的敏感度和较低的假阳性率。
表6 算法性能对比
4 结束语
针对医学影像分析领域普遍存在的训练样本不足的问题,本文提出了一种基于卷积神经网络和迁移学习的X光胸片肺结节检测算法。在公开的JSRT数据集上进行验证,得出微调部分网络层有助于提升模型分类性能的结论,验证了迁移学习的有效性。通过逐步调整模型的超参数设置,算法性能得到进一步改进。与已有的其它研究进行对比,本文提出的算法实现了最高的敏感度和较少的假阳性数。研究结果表明,肋骨抑制处理有助于提高X光胸片中肺结节的检出率。本文将在接下来的研究中重点分析肋骨抑制对于X光胸片肺结节检测的影响,以期获得更优的实验结果。