高智勇,黄金镇,杜程刚
(中南民族大学生物医学工程学院,武汉 430074)
肺癌是全球致死率最高的癌症之一,是我国发病率最高的癌症。若能早发现早治疗,患病7 年的肺癌死亡率将降低20%[1]。计算机断层扫描(Computerized Tomography,CT)是目前肺癌筛查中较为有效的方法,肺结节是肺癌的早期表征之一,因此对CT影像中的肺结节进行检测分析有助于早期肺癌的诊断。肺癌影像学诊断一般由医生人工检查完成,但是随着CT扫描技术的发展和快速增长的需求,放射科医生所需分析的数据量大大增加,导致工作量和诊断难度不断提高[2]。因此计算机辅助检测肺结节系统逐渐发展起来,一方面可以节约医生的时间成本,另一方面能够降低主观诊断误差,提高诊断准确率和效率。
在深度学习方法出现之前,很多研究者提出了不同的肺结节检测方法。Murphy等[3]根据形状指数和曲率设定阈值选取候选肺结节区域种子点,拓宽阈值范围以获取更多的候选体素族,再递归合并相邻3 个体素内的所有族,得到候选肺结节区域。唐思源等[4]首先使用多尺度高斯滤波器增强结节和血管的形状,然后采用模糊聚类算法(Fuzzy Clustering Method,FCM)初步分割出疑似肺结节,最后应用相关匹配法再次筛选疑似结节,减少非结节区域,从而获得包含结节的感兴趣区域(Region Of Interesting,ROI)。此外,基于形态学的模板匹配法和基于高斯混合模型的模糊聚类法等也取得了一定的检测效果[5]。然而,这些方法通常基于一定的先验假设人工提取目标特征,主要缺点是人为选取肺结节特征不具有代表性,不能客观地进行肺结节检测,效果往往不理想。
随着深度学习方法在医学图像处理领域越来越广泛的研究及应用,它在肺结节检测任务中也获得了较好效果[5-6]。区域卷积神经网络(Region Convolutional Neural Network,RCNN)是一种基于候选区域的二阶段深度学习目标检测方法,具有较好的检测效果。Faster R-CNN 通过共享卷积特征,将候选区域提议网络(Region Proposal Network,RPN)和感兴趣区域池化(ROI Pooling)归并为一个端到端的目标检测系统,作为R-CNN 的改进版,它具有更快、更准确的检测性能[7]。Xie 等[8]较早采用Faster R-CNN 算法来检测肺结节,在LUNA16 数据集上取得86.4%的平均敏感度。由于Xie 等[8]的算法中并没有针对性地解决肺结节尺寸偏小而不易被检测的问题,因此该算法性能有改进提升的空间。Ding 等[9]提出了在Faster R-CNN 中引入反卷积层,扩大顶层卷积特征的空间分辨率,有利于提取较小尺寸的结节特征,最终平均检测敏感度相比Xie 等[8]的算法有所提升。虽然以R-CNN 系列为代表的深度学习方法在检测肺结节的研究中取得了较好的结果,但是由于结节形态变化较大而且通常尺寸较小,因此在检测中会存在漏检等问题。Ding 等[9]的算法虽然能带来一定到提高,但依旧没有充分解决肺结节检测中的多尺度特征提取问题。
本文基于卷积网络构建特征金字塔网络(Feature Pyramid Network,FPN)[10],高效整合浅层、深层卷积特征。首先,基于FPN 设计肺实质分割网络(Mask FPN),在预处理阶段获得分割更精准的肺实质图像;然后,针对肺结节检测的特点,结合反卷积层构建具有更多尺度的特征金字塔网络,提高Faster R-CNN 算法对肺结节的敏感度;最后,针对肺结节正负样本不平衡问题,采用焦点损失(Focal Loss)作为RPN 的损失函数,减少训练时正负样本不平衡的影响[11],以提高Faster RCNN的检测性能。
CT 影像中的肺结节通常是形状不规则的小目标,而且肺结节的大小随着病例的特异性、疾病发展状况的不同在临床CT 影像上会有较大的差别,因此在结节检测过程中,需要考虑尺寸、外形变化较大时如何有效提取结节特征的问题。此外,在一幅CT肺部扫描图像中,结节只占了很小的面积,这也使得结节检测成为较困难的小目标检测问题。
目前基于卷积神经网络方法进行肺结节检测的研究中,通常使用Faster R-CNN 检测方法。Faster R-CNN 在Pascal VOC 和COCO 等自然图像数据集中取得了较好的检测效果,但在肺结节检测中,直接采用Faster R-CNN 来检测,其效果虽然比非深度学习方法有所提高,但是没有充分考虑到肺结节图像特点。例如,Xie 等[8]在Faster R-CNN 网络结构中使用VGG16 来提取图像的卷积特征,在MaxPool5 层输出的特征上进行检测。在肺结节检测中,MaxPool5 输出的特征图相比输入图像被下采样了32 倍,此时特征图分辨率变得很小,不利于细小肺结节的检测。
针对此问题,Ding 等[9]在MaxPool5 层后添加一个反卷积层,输出的特征图分辨率是之前特征图尺寸的2 倍,然后在此特征图上进行肺结节检测。更大的特征图刻画了更丰富的肺结节细节,Ding 等[9]凭此改进方法夺取了LUNA16 挑战赛的冠军。
在肺结节检测中,由于结节在CT 影像中尺寸差别较大,因此应该提取肺结节在不同尺度上的特征,从而得到更好的检测结果,但是Xie 等[8]和Ding 等[9]并没有充分考虑肺结节的多尺度特征问题,事实上这也是目标检测领域的一个主要难点[10]。目前较常见的多尺度特征处理方法有两种:1)构建图像金字塔,分别在多尺度图像上进行检测;2)整合提取多尺度卷积特征,如多尺度特征金字塔网络、可变形卷积核和空洞空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)等方法来提取多尺度特征[12]。其中,多尺度特征金字塔网络能够提取更多尺度上的特征信息,因此针对肺结节检测,本文引入特征金字塔FPN来提取结节的多尺度特征,以提高检测的敏感度,减少漏检。
在肺结节检测中,除了需要考虑提取多尺度特征外,还需要考虑CT影像中结节通常在图像中尺寸较小,即小目标检测问题。Ding 等[9]虽然针对结节目标较小的问题进行了研究,但没有充分考虑到结节大小多变即多尺度特征提取问题,导致了一些结节的漏检。本文综合考虑结节尺寸、形状多变,而且通常是图像中小目标的特点,首先利用特征金字塔FPN 提取多尺度特征,同时针对小目标检测问题,在特征金字塔的顶层增加反卷积层,以提取小目标特征,构建具有更多尺度、更大分辨率的特征金字塔网络,改进Faster R-CNN的检测性能。
同时,在临床肺结节检测过程中,CT 影像数据集中往往只存在极少数量的肺结节图像,大部分图像不包含肺结节,因此数据集中存在正样本数较少,即正负样本数差异较大的数据样本不平衡问题。样本不平衡会影响模型的检测性能甚至导致训练过程模型退化、难以收敛。因此在构造卷积神经网络时需要考虑样本不平衡问题,本文在RPN 中引入焦点损失函数(Focal Loss)来训练模型,以提高RPN的检测率。
此外,在肺结节检测时,如果能对CT图像进行预处理,提取肺实质,无疑会有利于肺结节检测。本文进行肺结节检测中所使用的FPN,不仅可以改进Faster R-CNN 的肺结节检测性能,同时也有利于语义分割网络的性能提高。因此,本文对结节检测中的FPN进行改进,可以对卷积特征图复用,不需要增加很多计算量,但是能够高效、准确地分割肺实质,提高检测效果。
结合以上几点,本文提出一种改进的特征金字塔的肺结节检测方法,检测过程如图1 所示。在预处理阶段,利用FPN高效准确地分割肺实质,获得掩模图像,作为Faster R-CNN 检测网络的输入。同时,分别利用不同骨干网络构建特征金字塔网络,并在FPN 中添加反卷积层以获取更高分辨率的特征图,之后进行传统的Faster R-CNN 检测。此外,针对结节检测的特点改进了检测网络的损失函数。
图1 改进的肺结节检测过程Fig.1 Improved pulmonary nodule detection process
由于肺结节只存在于肺实质中,因此预先提取肺实质可以有效避免肺实质外噪声的干扰,有利于肺结节检测。传统肺实质分割算法通常依赖大量经验参数来进行预处理、分割和后处理,速度慢且效果不明显。本文基于特征金字塔网络,设计了一个简单的全卷积语义分割网络(Mask FPN),可以端到端快速、准确地分割提取肺实质。本文肺实质分割网络Mask FPN结构如图2所示。
图2 肺实质分割网络(Mask FPN)结构Fig.2 Architecture of pulmonary parenchyma segmentation network(Mask FPN)
首先,根据骨干卷积网络输出的特征构建特征金字塔网络,得到4 个尺度的特征层(P2,P3,P4,P5),且每个尺度层的输出通道数均为256。然后,使用反卷积核将各个尺度的输入特征上采样至输入图像的1/4大小,其中反卷积核的上采样倍数均是2 倍,输出通道数是128。最后,将各个尺度输出的特征图以空间元素相加的方式进行融合,由一个1×1 的卷积核全连接输出,并通过4 倍上采样将输出结果映射为输入图像的大小,再由softmax输出最终语义分割的预测结果。
目前基于深度学习的目标检测网络大致可根据是否依赖于先验锚框(anchor box)分为单阶段检测网络和二阶段检测网络,前者检测速度快,但后者通常检测精准率更高。本文采用经典的二阶段检测网络Faster R-CNN 作为检测基线。针对肺结节尺寸小、形态不规则和多尺度等特点,结合反卷积和FPN 改进Faster R-CNN,克服其检测时图像特征分辨率过小以及尺度单一的缺陷,改进的肺结节检测网络结构如图3所示。
图3 改进的肺结节检测网络结构Fig.3 Improved pulmonary nodule detection network architecture
1.2.1 构建多尺度金字塔网络提取特征
VGG16 和ResNet50 在图像识别中均有着当前最好的性能表现(State Of The Art,SOTA),为了探索采用不同卷积网络作为骨干网络对模型检测性能的影响,本文分别基于两者构建金字塔网络以提取多尺度特征。卷积网络的计算可以视为一个自底向上逐层提取高级特征的过程(见图3),通过骨干卷积网络前向计算得到C2、C3、C4、C5 四个特征图。然后,自顶向下构建特征金字塔网络,每一层特征图先由一个1×1 卷积核将输出通道数映射为256 层,接着使用双线性插值法上采样至上一层特征图(分辨率大2 倍)的大小,并与上一层特征图线性求和得到融合特征P2、P3、P4、P5。线性求和操作会导致一定的混叠噪声,而在融合特征之后使用1个3×3卷积核可以有效降低此影响。
之后,对Faster R-CNN 中的FPN 进行改进,在骨干网络的C5 层之上添加一个反卷积层(核大小、步长和填充大小分别为4,4,2),得到上采样两倍的输出特征图P6(输出通道数为256)。最终,本文的特征金字塔FPN 由P2到P6共5层特征图构成。
1.2.2 肺结节检测网络
传统Faster R-CNN 中仅基于顶层特征图预测候选边框和类别概率,与之不同的是,本文结合改进的特征金字塔网络在各个尺度上独立预测,以提高Faster R-CNN 的多尺度泛化能力。提出的特征金字塔网络利用5 个尺度的特征图,使用共享权重的RPN 分别预测各个尺度下的疑似结节候选框,如图3中多尺度预测部分所示。
将RPN 多尺度预测得到的各尺度上的候选框进行汇总之后,通过ROI 对齐层提取ROI特征。通常,大的目标需要在感受野大的特征层进行识别,小的目标在一次次下采样过程中丢失边界信息导致定位不准确。因此,本文中将面积较大的候选区域分配给FPN 的深层特征图,反之面积较小的候选区域则指定给浅层特征图。具体分配规则定义[10]如下:
其中:w,h是ROI 的长宽;s为初始参考面积的开方;k0是初始参考层(当ROI 面积为s2时从Pk0层提取ROI 特征)。本文中分别取s和k0参数为224 和4,实验中大多疑似结节候选框由于面积很小,最终会被映射到P2层进行ROI特征的提取。
此外,CT 影像中肺结节的尺寸分布情况与自然图像中的目标存在很大差异,因此,针对肺结节检测任务,需要设计大小合理的锚框(anchor)。根据数据集中不同结节的标注数据进行统计,结合临床经验和CT 成像技术参数,在CT 影像中大多数肺结节的直径占12个像素左右,最大结节直径约占45个像素。为了让anchor 的大小尽可能地适应结节直径分布情况,将P2到P6特征图对应的anchor尺寸按如表1参数设计。
每个尺度的anchor 分别采取3 种长宽比例(2∶1,1∶1,1∶2)来扩展,最终生成15种不同尺寸的anchor。
表1 anchor大小设计Tab.1 Design of anchor size
在训练目标检测模型时,通常输入图像上负样本框数量会远远多于正样本,这会导致模型过度倾向于负样本;而大量的简单样本(通常是负样本)对模型的训练没有很大的帮助,甚至会弱化少量正样本的损失,导致模型退化[11]。因此,解决样本不平衡是提高目标检测模型性能的一个关键。在肺结节检测中,由于病人CT扫描切片中往往只存在极少数量的阳性肺结节,所以正负样本不平衡问题更为突出,在训练检测网络模型时很容易受到样本不平衡的影响。
针对样本不平衡问题,Focal Loss 在交叉熵函数的基础上进行改进,能较好提高单阶段检测网络的性能。本文在RPN中引入Focal Loss 来训练模型,相比交叉熵(Cross Entropy Loss),Focal Loss能较好提高RPN的检测率。
其中:α用于在数量上平衡正负样本损失的平衡因子,其有效取值范围在(0,0.5),本文中分别取α为0.2、0.25 和0.3 三组参数进行实验分析;(1-p)γ项可以平衡简单样本和困难样本的损失,当γ=0 时,该项无效,本文中分别取γ为1 和2 两组参数,并结合α的三组参数设计相关实验进行分析。当α=1,γ=0时,Focal Loss退化为普通的交叉熵损失。
本文的肺实质分割和肺结节检测算法模型均在公开数据集LUNA16[13]上进行训练和测试。该数据集包含888 个病人的扫描图像,每幅扫描图像的轴向切片大小为512×512,共包含1 186个真实肺结节标注,同时每幅扫描图像均有对应的肺实质分割标注。
首先,本文从该数据集中随机抽取100 个病人扫描数据及其肺实质分割标注数据来训练和评估Mask FPN 模型;其次,根据标注数据提取出1 186个肺结节的相关切片来训练和评估本文肺结节检测模型。训练集、验证集和测试集均按照6∶2∶2的比例从完整数据集中进行随机划分。
为了增强模型的泛化能力,一般需要对训练数据集进行增强处理。本文采用的数据增强方法有:随机旋转、水平翻转、平移、随机噪声和亮度调整等。此外,对整个数据集进行中心化处理,以加速训练收敛过程。
在分割提取肺实质阶段,将本文提出的Mask FPN 与LFZ(Kaggle DSB2017 挑战赛冠军队伍)方法[14]及UNet 网络的肺实质分割结果进行比较分析。LFZ 方法基于CT 影像Hu 值采用阈值法得到粗分割,并结合形态学操作和连通域分析等方法得到细分割结果。Mask FPN 与UNet 均基于二元交叉熵损失函数进行训练评估,并且训练模型时采用Adam 优化方法进行学习,初始学习率为0.001,权重衰减率为0.000 5,batch_size大小为8,最大迭代次数为300。
分割任务中主要采用mIoU(mean Intersection over Union)或者Dice 作为分割评估指标。从表2 可以看到,相比LFZ 结合阈值分割和形态学后处理的方法,基于深度学习的方法UNet和Mask FPN方法相比传统方法有明显的精度提升,并提供了一种端到端的处理方法,使得分割过程变得更加简单,分割速度近乎达到实时。由于本文致力于肺结节检测,因此对分割的结果也采用了目标检测中常用的指标mAP(mean Average Precision)进行评价。
表2 肺实质分割方法性能Tab.2 Performance of different pulmonary parenchyma segmentation methods
比较两种深度学习的分割方法,从表2 可以看到,本文Mask FPN 的mIoU 指标趋近于UNet 的分割结果,说明该方法具有良好的肺实质分割效果。此外,由于FPN 是基于很深的ResNet50 重建得到,因此Mask FPN 的参数量远多于UNet。然而,在重建FPN的过程中,只对原始卷积特征进行少量的卷积操作和线性插值上采样,因此其效率高于UNet逐层解码上采样,分割速度也相对更快。
在肺结节检测阶段,基于传统Faster R-CNN 检测模型基线,对本文提出的方法设计相关实验进行分析。实验中采用随机梯度下降(Stochastic Gradient Descent,SGD)法优化算法,端到端训练肺结节检测网络,初始学习率为0.002 5,权重衰减率为0.000 1,学习动量为0.9,最大迭代次数为2 000。
候选结节检测作为辅助诊断系统关键的一步,要求保证结节检出率足够高[15]。本文评价模型检测结果的好坏主要采用以下3 个指标:1)mAP,即检测结果的平均准确度,是目标检测任务中常见的评估指标;2)敏感度,理想情况下,模型应尽可能检测出所有真实结节;3)平均每个CT扫描件中候选结节数(表示为“候选结节数/scan”)。性能好的检测模型应在低“候选结节数/scan”下具有高的敏感度。
为了全面测试所提方法的性能,本文设计了多组对比分析实验。首先对所提的改进网络模型进行性能检测实验(共6 组不同网络结构),验证FPN 与反卷积对Faster R-CNN 肺结节检测的有效性和性能的提升,对比结果如图4所示。
图4 中,vgg16 和r50 分别表示以VGG16 和ResNet50 作为Faster R-CNN 骨干网络。可以看出在其他网络结构保持相同的情况下,以ResNet50 为骨干网络检测效果更佳。其次,基于VGG16 和ResNet50 重建FPN 作为Faster R-CNN 的骨干网络,并在多尺度特征上采取多尺度预测的方式后,分别在图中表示为vgg16fpn 和r50fpn。可以看到,FPN 对Faster R-CNN 的检测效果带来了显著的提高,如vgg16(传统Faster R-CNN)的mAP 指 标 从0.773 提 升 至0.831,r50fpn 也 从0.794 提 升 至0.851(5.7 个百分点)。最后,分别在vgg16fpn 和r50fpn 基础上引入反卷积层(-deconv)。可以看到反卷积层对于Faster RCNN 的肺结节检测效果进一步带来了较好的提高,引入反卷积层的r50fpn-deconv检测精度mAP提升至0.862。
图4 不同网络结构的检测结果对比Fig.4 Detection results comparison of different network structures
针对数据集中正负样本以及难易样本之间的不平衡问题,本文在上述r50fpn-deconv 模型的基础上,结合Focal Loss函数分别取α和γ参数为(0.2,0.25,0.3)和(1,2)进行交叉对比实验。值得注意的是,由于引入了FPN和反卷积,结节检测效果较好,改变Focal Loss 参数对结果只有一定的影响,提升了约1 个百分点。最终,在两组γ的取值中,α=0.25 时检测效果最佳;并且当α=0.25 时,γ取值为2 检测效果更好,相比采取交叉熵损失函数的结果,其mAP 指标提升至0.869,较优结果如表3所示。
表3 损失函数中不同参数设置对结果的影响Tab.3 Effect of different parameter settings of focal loss function on results
不同骨干网络采用不同改进方法的完整检测结果如表4所示。从表4 可知,基于卷积网络重建多尺度特征金字塔网络显著地提高了Faster R-CNN 的肺结节检测准确率,并且还大幅度提高了检测效率。在效率方面的提升主要有两方面原因:一是FPN模块仅仅引入了特别少量的额外参数和计算量;二是FPN 的头部预测器仅使用两个1 024 维的全连接层将ROI特征输入线性分类层和边框回归层,而传统Faster R-CNN则是在C4 卷积层提取ROI 特征之后再通过标准的C5 层(共9个卷积层)前向传播特征,因此FPN 的头部预测器更轻量,检测效率更高。引入反卷积层之后,检测效率稍有下降,但依旧比r50检测基线快出近每秒2帧,证明了本文方法的有效性。
此外针对肺结节检测任务,本文基于ResNet50 骨干网络,分别通过无限制接受者操作特性曲线(Free response Receiver Operating Characteristic curve,FROC)比较了所提几种不同结构的肺结节检测性能表现,如图5 所示。其中,r50fpn-deconv-fl 表示采用Focal Loss 训练r50fpn-deconv 模型,可以看出该组模型在LUNA16 肺结节检测任务上获得了最好的性能表现。
表4 改进网络的性能表现对比结果Tab.4 Improved network performance comparison results
图5 不同网络结构的肺结节检测性能对比(FROC)Fig.5 Comparison of pulmonary nodule detection performance of different network structures(FROC)
综合这些实验结果可以看出,引入FPN 和反卷积,采用Focal Loss,改进的方法能够显著提升肺结节的检测性能。
最后,本文将所提肺结节检测方法与其他算法在LUNA16数据集上进行了相关指标的评估,对比结果如表5所示,表中其他方法直接引用相关文献所给出的结果。
从表5 可知,在使用了相同数据集的实验条件下,本文方法的敏感度指标(0.957)优于其他算法。文献[3]方法通过人工方法提取形状指数和曲率等特征,肺结节检测敏感度指标为0.856,每个CT扫描件的候选结节数为335.9。文献[8]方法基于传统Faster R-CNN 算法检测肺结节,实验结果获得0.864 的敏感度及较低的候选结节数(每个scan 4.7)。文献[1]方法采用UNet++网络作为检测基线,提出改进最终实验获得敏感度为0.943,候选结节数为50.2/scan。文献[9]方法在Faster R-CNN 的基础上进行改进,获得0.946 的敏感度,且平均每个扫描件的候选结节数为15.0,本文方法与之相比,敏感度提高了1.1个百分点。
表5 不同方法实验结果对比Tab.5 Experimental result comparison of different methods
多组对比实验结果表明,本文基于特征金字塔网络和反卷积操作改进Faster R-CNN,在肺结节检测任务上可以获得更高的检测敏感度。本文方法虽然在平均每个扫描件的候选结节数指标方面相比其他算法不是最低,但是较高的敏感度对于下一阶段的降假阳识别、良恶性分类乃至整个肺结节检测系统性能的提升都是至关重要的,能为临床应用减小漏检率。
肺结节自动检测对医生的辅助诊断具有很重要的临床意义。本文针对CT影像中肺结节尺寸小、多尺度和形状不规则等固有特点而导致的结节检测敏感度低等问题,基于特征金字塔网络提出了改进方法。首先基于FPN提出了语义分割网络Mask FPN 高效分割提取肺实质,作为肺结节检测预处理过程;其次,结合反卷积提高基础FPN 的多尺度特征提取性能,并将FPN 引入Faster R-CNN 采取多尺度预测方法,提高了肺结节检测的敏感度;最后在改进模型的基础上,采用Focal Loss 改善了RPN 中正负样本不平衡的问题。在公开数据集LUNA16 上进行的多组性能评价实验结果和与其他方法的对比结果表明,本文方法在肺结节检测中具有较高的敏感度,也具有较快的处理速度。
本文针对肺结节的特点改进检测方法以提高结节检出率,然而提高检测率的同时也存在候选结节数较多的问题,如果将检测结果再输入一个分类模型,或许会来降低候选肺结节数,进一步提高临床应用价值,这值得进行后续研究。