韩 鹏,强 彦+,刘继华,贾 婧,Syed Basit Ali Shah Bukhari
(1.太原理工大学 信息与计算机学院,山西 晋中 030600;2.吕梁学院 计算机科学与技术学院,山西 吕梁 033000)
肺癌的早期检测和治疗是提高患者生存率最有效的手段之一[1-3]。近年来,一些学者开发了基于图像手工特征的计算机辅助诊断(computer aided diagnosis,CAD)系统来帮助医师检测肺结节[4,5],但由于结节大小、位置和类型各异,手工特征无法全面描述图像的特点,导致检测结果较差。随着深度学习技术在医学图像处理领域的广泛应用,其在肺结节检测中显示出了良好的检测精度和性能,研究主要分为候选结节检测和假阳性减少两个阶段[6-11],其中Ding J等[6]将反卷积结构引入快速区域卷积神经网络中进行候选结节检测,使用三维神经网络来降低假阳性。Cao H等[8]采用残差结构的分割模型来搜索可疑结节,通过双路径池化网络减少假阳性,提高了检测的整体性能。尽管以上研究取得了较好的结果,但仍然存在灵敏度较低、假阳性偏高、小结节难以检测等问题。
因此本文设计了深度卷积神经网络框架来解决肺部小结节检测中每个阶段的任务。首先,为了确保检测到的肺结节中不会丢失小结节,设计了基于特征金字塔网络(feature pyramid network,FPN)[12]的多尺度区域建议检测网络,该检测网络几乎可以覆盖所有结节,漏检结节极少。随后提出了一种级联结构的卷积神经网络模型,该模型可以将注意力集中在错误分类的样本,用于去除结节假阳性,减少误报。
候选结节检测是肺结节检测的关键环节。这一阶段的目的是在高召回率下检测出所有的候选肺结节,同时限制候选结节的总数。受深度学习广泛运用于通用图像目标检测的启发[13-15],肺结节检测也可以采用基于CNN的目标检测框架。检测方法通常使用不同尺度的滑动窗口覆盖所有可能的结节,然而这样在实际操作中是不可行的,因为由此得到的候选结节太多以至于给后续的工作带来更大的挑战和困难。相反,区域建议网络(region proposal network,RPN)[13]可以更好地平衡计算成本和被召回候选者的数量。与传统的CAD系统相比,丁等[6]使用RPN在候选结节更少的情况下表现出更高的灵敏度。然而小结节仍然很难用原有的RPN发现。为此本文提出了基于特征金字塔的多尺度区域建议检测网络。此网络分为两个子网,分别是特征金字塔子网,用于生成分辨率不同的特征图;多尺度区域建议子网,用于获取结节建议,将其分类为候选结节。框架结构如图1所示。
图1 肺结节检测网络框架
为了检测候选对象,本文设计了特征金字塔子网结构用于得到不同分辨率的特征图,如图1(a)、图2所示。该方法的基本特征提取网络为ResNet[16],共有5组卷积,对应图2中的C1到C5。在通常情况下,C5层的特征图对于自然图像中的目标检测已经非常有效,但在由于肺结节的最小尺寸直径约为3 mm,最大尺寸约为30 mm,在图像中属于非常小的物体[5],经过几层池化后,小结节的特征会变得过于微弱,甚至消失。所以只使用C5层特征在较大的全肺图像中发现较小的结节是一项困难的工作。
因此本文采用横向连接的方式将得到的P3到P5作为最终的特征图而不是C5,具体过程如图2所示。在C5上添加一个卷积核为1×1的卷积层,生成256通道的分辨率最低的特征图P5。然后对P5进行了2倍的上采样,然后将其和对应的前一层特征C4结合(前一层要经过1×1的卷积核才能使用,目的是改变当前通道数,使其和后一层的通道数相同),结合方式为像素间的加法,最后得到一个中等分辨率的特征图P4。同样可以得到具有最高分辨率的特征图P3。P3含有比P5层和P4更高的分辨率信息(来自C3和C4),用于检测较小的结节。最终利用这些不同分辨率的特征图,使用多尺度区域建议子网获取候选结节。
针对上述特征金字塔子网生成的特征图,本文借鉴了图像金字塔尺度归一化(SNIP)的思想[17],在训练和反向传播更新参数时,为了消除过大或过小等极端尺度目标的影响,只对位于所需尺度范围内的目标进行训练,其余的目标在反向传播过程中被忽略。基于此设计了多尺度区域建议子网,如图1(b)所示。
在训练时划分了3类尺度,对应3种不同分辨率的特征图(P3、P4、P5)。为了适应结节大小,本文设计了5种不同大小的锚点,分别是4×4,8×8,16×16,32×32,64×64。首先用所有的肺结节真实标注(ground truth,GT)为锚点(Anchors)分配标签;其次每个分辨率特征图下的感兴趣区域(region of interest,ROI)都有其指定范围:[hi,wi],如果真实标注的候选框大小在这个范围内,就被标记作有效真实标注(Valid GT),否则就被标记为无效真实标注(Invalid GT);然后在生成锚点并给锚点分配标签的时候,检查该锚点是否和某个无效真实标注框的重叠率超过0.3,若存在,则该锚点会被视为无效锚点;若不存在,则会被视为有效锚点,对应图1(b)中RCN部分。这些无效锚点在训练的时候都会被无效化,也不会加入到反向传播的过程中从而对参数产生影响,相当于在每个分辨率上,只有大小合适的目标进行训练;最后,对每一种分辨率的特征图使用区域建议网络生成提案,并对提案进行独立分类,对于高分辨率的特征图,对应的RPN只负责预测被放大的小结节,此时原来的大结节因为太大已经不在有效范围内;对于低分辨率的特征图,对应的RPN只负责预测被缩小的大结节,此时原来的小结节因为太小已经不在有效范围内。最后经过分类和边界框回归,使用软非极大值抑制(soft-NMS)[18]将多个分辨率的检测结果结合起来,得到最终的检测框,生成候选结节。
图2 特征金字塔子网详细框架
上述提出的候选结节检测方法几乎能检出所有结节。然而这些候选结节中存在大量假阳性,很难从高度相似的假阳性样本中区分出真正的结节。因此在假阳性减少阶段,本文结合集成学习的思想,使用多个卷积神经网络,最终通过投票方式得到分类结果。Boosting是一种常用的统计学和机器学习方法,广泛应用于工业、医学等各个领域,在分类过程中,通过改变训练样本的权重,将分类器线性组合,提高分类性能。过程在算法1中描述。
算法1:基于Boosting的假阳性减少算法
输入:训练样本,弱分类器
输出:样本分类结果
(1)随机选取N个训练样本去训练第一个弱分类器;
(2)利用第一个分类器的分类错误的样本和从剩余训练集中随机抽取的新样本,共N个训练样本,训练第二个弱分类器;
(3)将上述两个弱分类器分类错误的样本与剩余训练集样本合并,训练第三个弱分类器;
(4)每个样本的类别由上述3种分类器投票中多数票决定。
据统计[19],根据肺结节直径分布情况来看,30×30像素大小可覆盖85%的结节,40×40的可覆盖90%的结节。因此,为尽可能得到所有的候选结节,本文通过候选结节的中心点向外截取40像素大小的切片作为实验数据,这样不仅几乎涵盖了所有的结节,而且对于小结节,上下文信息丰富,提供了很多结节信息进行分析。对于中等结节,上下文信息量合适,不包含其它噪声信息。对于大结节,也可以包含结节的主要部分,排除了多余的边缘区域。
本文将预处理后的数据集分为4个子集:3个子集用于训练,1个子集用于测试。影响目标检测的关键因素是阴性样本数量过多,因此困难样本挖掘对于提高神经网络的性能至关重要,网络应该注意那些不易分类的样本。结合这一思想,本文设计了级联卷积神经网络框架,如图3所示。选取较难区分的训练数据集样本,继续参与下一个模型的训练,可以提高单个模型的分类精度。每个模型都基于ResNet网络结构。在训练过程中为进一步解决样本不平衡问题引入了Focal损失函数[15],计算如下
(1)
(2)
其中,p为模型预测类别为1的概率值,β为权重指数,α为惩罚因子。
训练子集分为3个部分,每个部分独立参与分类模型训练。利用第一个子集训练一个弱分类模型1,然后利用第二个子集和模型1的错误分类样本从零开始独立训练新模型2。同样的,模型3是用第3个子集以及来自模型1和模型2的错误数据训练。将上一轮的每一个错误分类样本作为下一轮模型的训练数据,增加错误分类训练数据的数量,本质上可以理解为增加这些错误样本的权重。同时使用Focal损失函数,增加困难样本的损失,使得模型能学习到更多具有代表性的特征,具有更好识别困难样本的能力。
图3 级联卷积神经网络框架
本文在LUNA16[5]数据集上评估了所提出的框架。LUNA16数据集来自于最大的肺结节公开数据库:LIDC-IDRI[20],共包含1018例CT扫描。为了实现检测肺结节的目的,LUNA16将LIDC-IDRI中切片厚度大于3 mm、切片间距不一致或缺失切片的CT去除,同时去除尺寸小于3 mm的结节,最终得到888张CT扫描,并将其分为10个子集,用于十折交叉验证。
候选结节检测阶段,将512×512像素大小的CT图像输入网络,在多尺度区域建议子网中对于分辨率为(128,128)的特征图,其ROI有效范围是[0,8],分辨率为(64,64)时有效范围为[4,16],分辨率为(32,32)时有效范围为[12,∞]。训练过程中使用LUNA16数据集进行十折交叉验证,训练迭代总数为10 000次,使用Adam优化算法来调整学习率,初始学习率为0.001,其它超参数设定采用默认值,使用在ImageNet上预训练的模型初始化权重。
假阳性减少阶段,本文从检测到的候选体中裁取40×40大小的结节区域输入到级联卷积神经网络中进行训练,训练过程中对于预处理后的数据集采用交叉验证,通过高斯分布随机初始化权值,并使用反向传播对权值进行更新,批量大小设置为250,dropout设置为0.5,其它超参数设定采用默认值。
本文所提出的方法在Keras框架上实现,并使用GPU对这些网络进行加速训练。实验环境参数如下:Intel Xeon E5-2678 V3 2.50 GHz 2, NVIDIA Tesla K40c GPU 2, 128 gb RAM, 120 gb SSD。
实验过程中为定量展示本文框架的检测性能,使用受试者操作特征自由响应曲线(free-response receiver opera-ting characteristic,FROC)和竞争性能指标(competition performance metric,CPM)两种评价指标。在FROC曲线中,其横坐标为每张图片的假阳性个数,纵坐标为灵敏度(Sensitivity)。CPM定义为每次扫描7个预先确定的假阳性率(0.125、0.25、0.5、1、2、4和8 FP/scan)下灵敏度的平均值。灵敏度又称真阳性率,灵敏度定义请参见文献[10]。
3.4.1 肺结节检测结果
图4展示了本文的方法检测到的一些候选结节。从图中可以看出,该方法能较准确地检测出结节,并对在小结节检测中具有良好的表现。为了更直观地展示本文方法的效果,列出了一些结节的分类结果,如图5所示。第一个矩形框内为真结节,本文提出的方法预测了相应的概率值如下。第一行显示的是大结节,由于这些结节具有半径大、形状各异的特点,所以其特征更加明显和具有代表性,预测结果的准确性相对较高。第二行显示了一些中型结节和小结节,因为它们的特征信息非常少,且存在一些与结节无关的冗余信息,所以这些结节的分类精度不如第一行的结果。第二个矩形框内表示的是假阳性结节,本文方法的预测结果错误的,从图中可以看出,这些候选者在形状和大小上与真实的结节相似,这也是小结节检测任务艰巨的一个重要原因。
此外本文采用文献[10]中的方法与本文方法实验结果进行了对比,如图6所示,第一行为本文方法实验效果图,第二行为其它方法实验效果图,图6(c)中左上角黑色方框内结节为假阳性结节,其余为真阳性结节。从图6(a)和图6(c)对比可以看出,本方法可以有效地去除假阳性结节;从图6(b)和图6(d)对比可以看出本方法能够检测到CT序列中出现的所有小结节,不会发生漏检情况。
图4 肺结节检测结果
图5 肺结节检测放大效果图和相应的分类概率
图6 不同方法检测效果对比
3.4.2 消融实验结果分析
为了检验该框架中每个组件的效果,本文进行了消融实验,共设计了4组对比实验,结果见表1。候选结节检测阶段,第一组采用特征金字塔网络和原始区域建议网络,第二组采用本文提出的基于特征金字塔的多尺度区域建议检测网络,从表1中可以看出第二组实验具有更高的灵敏度和更少的结节检出数;假阳性减少阶段,以第二组实验为基础设计了普通的卷积神经网络和级联卷积神经网络作为第三、第四组实验,第三组是一个典型的卷积神经网络,其灵敏度会降低到91.8%,每次扫描检测候选结节数为13,第四组采用本文提出的级联卷积神经网络模型来减少假阳性,结果表明增加神经网络模型,采用级联方式可以提高灵敏度,减少误检。综合表中4组实验结果可以看出通过结合这些组件,所提出框架性能得到了提高。
表1 消融实验结果对比
3.4.3 对比实验结果分析
本文的候选结节检测结果与提交给LUNA16[5]的5种候选结节检测方法以及文献[6,7]的方法结果对比见表2。从表2中可以看出本文基于特征金字塔的多尺度区域建议候选结节检测网络(FPN+MRPN)可以达到最高的灵敏度(97.4%),每次扫描平均可以检测到156.5个候选结节。与5种传统CAD系统(ISICAD到ETROCAD)的结果相比,提出的候选结节检测方法在候选者较少的情况下具有较高的灵敏度。在候选结节检测后采用了级联卷积神经网络去除了大量的假阳性结节,最终该框架灵敏度达到95.9%,每次扫描只检测到7.1个结节,在所有结果中候选者数目达到最少。实验结果表明本文提出的基于深度神经网络的两阶段肺结节检测框架能够提高检测的灵敏度并且降低候选结节的假阳性,适用于肺结节检测任务。
表2 候选结节检测结果
为了进一步分析该框架的性能,本文采用CPM评分和FROC曲线将其与最先进的方法进行了比较[6-8],如图7、表3所示。由表3可知,在假阳性率为0.125、0.25、0.5、1、2、4、8的情况下,本文框架的CPM评分为0.921,明显高于文献[6]、文献[7]中提出的方法。由于文献[8]中使用的是三维卷积神经网络,所以本文结果略低于文献[8]提出的方法。虽然三维结构可以对结节的信息进行更全面的编码,但是CT扫描通常有不同的切片厚度,这样会使得预处理任务变得更加复杂,比本文提出的框架增加了更多训练时间和计算成本。同时在临床医学中,放射科医生更关心的是每次扫描频率从1到4时的灵敏度[6],本文的实验结果在1到4时的灵敏度明显高于其它3种方法,因此本文所提出的架构达到了最佳的性能。
图7 不同方法FROC曲线对比
表3 不同方法的实验结果对比及CPM评分
本文提出了一种基于深度卷积网络的两阶段肺结节自动检测方法,该方法分为两个阶段:①候选结节检测;②假阳性减少。第一阶段,本文引入了基于特征金字塔网络的多尺度区域建议检测框架,充分利用多尺度的肺结节特征,在高灵敏度下检测出所有可疑的结节;第二阶段,训练一个级联卷积神经网络,减少第一阶段的假阳性,对3个网络模型进行训练,每个模型的训练数据都包含了前一个模型分类错误的结节,最终结果由这3种模型投票得出。在LUNA16数据集上的实验结果表明本文方法能够在候选结节较少的情况下获得高灵敏度的检测结果。另外该方法具有通用性,可以扩展到医学图像领域中的其它目标检测任务。