石陆魁,马红祺,张朝宗,樊世燕
(1.河北工业大学人工智能与数据科学学院,天津 300401;2.河北省科学技术情报研究院,石家庄 050000)
(*通信作者电子邮箱shilukui@scse.hebut.edu.cn)
近年来,肺癌患者的死亡率一直位居肿瘤患者发病率及死亡率的首位[1]。肺癌是由肺组织内不可控的细胞不规则生长所造成的疾病,这种不规则生长所形成的肺组织通常被称为肺结节,是肺癌早期阶段的征象,因此CT 图像肺结节检测对发现早期肺癌具有极其重要的价值。
传统肺结节检测方法中,候选结节特征提取的算法有很多,比较经典的算法有阈值法[2-3]、区域增长法[4-5]、形态学法[6-7]、聚类法[8]等。在去除假阳性方面,常用的方法有支持向量机[9]、K-近邻[10]等。传统肺结节检测方法过程复杂,检测结果依赖于每个环节的执行质量和执行效率,肺结节的形状、尺寸及纹理等特征均需人工提取,自动化程度较低,如果选择的肺结节特征不合适,就有可能遗漏部分结节信息,从而影响肺结节检测结果。
近年来,卷积神经网络由于其提取图像特征能力强、参数量小、训练时间短及泛化能力强等特点,被广泛应用于医学影像诊断领域。相较于传统方法,深度学习方法可以自动提取数据的高级抽象特征,输出的特征可以直接用于识别、分类和检测,自动化程度高,也能达到较高的准确率。在肺结节检测方面,研究人员提出了多视角卷积神经网络[11]、多尺度卷积神经网络[12]、多输入卷积神经网络[13]、3D 卷积神经网络(3D Convolutional Neural Network,3D CNN)[14-15]以及二维卷积神经网络(2D Convolutional Neural Network,2D CNN)与3D CNN结合的网络结构[16]等模型,这些研究都是利用卷积神经网络实现检测肺结节的目的。在这些研究中,由于CT图像本质上是3D 的,2D 网络会忽略肺结节的空间特征,影响肺结节检测准确率,3D CNN 可以考虑到CT图像的三维特性,提取到肺结节的三维特征,更好地结合图像的层间信息。但是卷积核尺寸限制网络所能达到的最大感受野,更多专注于细节和局部特征,丢失了一定的全局信息,且3D网络的参数很多,从而导致模型复杂度很大。除此之外,由于肺部CT 图像数据量不足,正负样本不平衡,网络的过度复杂会导致模型过拟合现象严重,平均假阳性率高,影响检测结果。
为此,本文采用Faster R-CNN[17],结合U-Net[18]的优点,利用深度可分离卷积[19]设计了一个改进残差结构3D Res-DSC(3D Residual Depth Separation Convolution),并将此运用于肺结节检测模型。该模型首先对肺部CT图像进行数据预处理,将肺实质与肺间质分割;然后把增强后的数据输入到具有改进残差结构和U-Net 结构相结合的Faster R-CNN 模型中进行训练,得到训练好的模型;最后通过十折交叉验证得出检测结果,实现肺结节的精准检测。
肺结节检测模型主要分为四个步骤:首先对原始CT图像进行数据预处理,统一分辨率,去除噪声、空洞等干扰因素;然后提取肺实质,减小图像的搜索空间;接下来使用基于改进残差结构3D Res-DSC 的检测模型提取肺结节特征,去除假阳性结节的干扰;最终得到肺结节检测结果。
本文采用LUNA16 竞赛数据集。LUNA16[20]是公开可用的肺结节数据集LIDC-LDRI[21]的子集,LIDC-LDRI 几乎包含了所有低剂量肺动脉CT的相关信息,包括多位医生对结节大小、位置、诊断结果、结节纹理、结节边缘等信息的标注。而LUNA16是从LIDC-LDRI中删除了层厚大于3 mm 的CT、层间距不一致或者缺失的层,只保留检测标注,共计888 例低剂量肺部CT 图像,其中共有1 186 个结节标签。LUNA16 将这888例CT 图像显式地分为0~9 共10 个子集,方便进行十折交叉验证。
为了减小肺结节的检测范围,减少运算量并便于后续提取肺结节特征,需要对计算机断层扫描所得到的原始肺部CT图像进行预处理操作,以实现肺实质分割。预处理主要分为五步:
1)加载原始CT 数据和数据掩码,对数据掩码非零部分进行重采样,将分辨率统一。
2)在肺部CT 图像处理中,由于肺的灰度值HU(Hounsfield Unit,亨氏单位)值在-500 左右,因此将HU 值在[-1200,600]内的区域保留(从空气到骨骼),超出此范围的区域可以认定为与肺部疾病无关,因此为了便于归一化,将原始数据范围外的数据置为-1200 HU 或600 HU,保证数据范围在[-1200,600]HU,再将数据归一化至[0,255]。
3)对掩码进行膨胀操作,去除肺内的小空洞。
4)将重采样后的数据转化为体素坐标,对其应用新的分辨率。
5)删除背景区域,分割出肺实质,将预处理后的数据和标签用数据特定格式.npy 的格式存储,完成数据预处理部分。
1.3.1 模型总体架构
在自然图像检测领域,多数研究采用现有的网络结构进行训练,而医学图像检测与自然图像检测的差别较大。自然图像检测的类别非常多,它的目标是用更深的网络提高目标的特征表示能力;医学图像的目标检测,是针对一个特定的类别,更多的是一些细粒度类别的东西以及更多网络结构的技巧,所以医学图像的检测网络不能太深,因此需要重新搭建一个适用于肺结节检测的网络模型。
为了使卷积神经网络适应肺结节检测任务,本文的改进主要从两个方面着手:首先由于Faster R-CNN 在解决复杂的计算机视觉问题上取得了很好的效果,并被广泛应用在许多领域[22-23],因此本文采用Faster R-CNN 作为基础检测网络。将预处理后得到的肺实质图像输入到改进U-Net结构(U-Net-Like)作为特征提取主框架,然后将提取结果送入RPN 等后端检测网络执行目标检测,从而得出肺结节检测结果。采用基于3D Res-DSC的肺结节检测模型如图1所示。
图1 基于3D Res-DSC的肺结节检测模型Fig.1 Pulmonary nodule detection model based on 3D Res-DSC
在基于3D Res-DSC 结构的肺结节检测模型中,特征提取网络参照U-Net结构加以改进,形成本文采用的U-Net-Like结构,如图2 所示。U-Net-Like 结构包括4 个卷积层、2 个反卷积层、4 个池化层和6 个3D Res-DSC 结构。由于GPU 内存限制,将整张CT图像输入到网络不太现实,因此需要对图像进行切割。首先将预处理后的CT图像随机地分割出96 ×96 ×96的结节和非结节立方体数据输入到网络中进行训练,网络的第一层和第二层卷积层的卷积核尺寸是3×3×3,步幅为1;接下来是四层步幅为2 的最大池化层和3D Res-DSC 层,将特征图降维至6 ×6 ×6;然后再经过两层反卷积和3D Res-DSC 操作,将特征图升维至24 ×24 ×24;最后经过两层3×3×3 的卷积层,输出特征图大小为24 ×24 ×24。将输出特征图输入到RPN 网络中进行后续目标检测的训练。训练过程同时检测出候选结节,并判定该候选结节是否为真实结节。测试过程是将训练后的模型应用到测试集做测试,得出预测肺结节的坐标及概率,与真实肺结节标签做对比,得出测试结果。
图2 基于3D Res-DSC的U-Net-Like结构Fig.2 Structure of U-Net-Like based on 3D Res-DSC
1.3.2 改进的残差结构
ResNet 是一种常见的CNN 结构模型。它的主要思想是在网络中增加了直连通道,以保留之前网络层的一定比例的输出,实现特征重用,是消除深层网络中梯度消失现象的一种有效方法[24]。因此基于残差结构思想,本文提出一种改进的残差结构3D Res-DSC,该结构保留原有基础残差结构的直连通道,使用矩形卷积核、深度可分离卷积以及预激活模块,利用这三者的优势,提高肺结节检测模型的检出率,降低模型的计算量和复杂度。改进的残差结构示意图如图3所示。
图3 基础残差结构与3D Res-DSC结构示意图Fig.3 Schematic diagrams of basic residual block structure and 3D Res-DSC structure
首先,本文用3×5大小的矩形卷积核替换基础残差结构中的3×3 卷积核,相比原有的残差结构,矩形卷积核可以获得更大的感受野,关注肺结节全局特征,并捕获更多的空间上下文。
其次,矩形卷积核会导致模型的计算量和复杂度有所增加,这可以通过采用深度可分离卷积操作来简化网络结构,控制模型的计算量和复杂度。深度可分离卷积将标准卷积分解为深度卷积和逐点卷积:深度卷积就是在普通卷积的基础上,将卷积按照通道数进行分组后分别进行卷积;然后使用逐点卷积,即1×1大小的卷积核,保证特征图大小不变,单独对通道数进行卷积,从而实现卷积操作区域和通道相分离,原理图如图4 所示。深度可分离卷积可以在确保肺结节检测的准确率情况下降低模型的计算量和复杂度,使肺结节检测模型符合轻量级发展的要求。
图4 深度可分离卷积操作原理图Fig.4 Operation schematic diagram of deep separable convolution
最后,将基础残差结构中的后激活改为预激活,预激活模块包含BN(Batch Normalization)和ReLU(Rectified Linear Unit)。原始的残差单元尽管已经对信号进行了标准化,但是这个信号很快被合并到了快捷连接上,组合的信号并不是被标准化的,这个非标准化的信号又被用作下一个卷积层的输入。这就导致提取到的肺结节特征的复杂化,从而导致过拟合严重。因此,在基础残差结构的基础上,将BN 算法处理后的肺结节数据通过ReLU 激活函数进行激活,添加到每个卷积操作之前,保证所有卷积层的输入都是经过标准化和激活操作。ReLU 激活操作不仅可以增加两个卷积层间的非线性关系,也可以在保证网络稀疏性的同时减少参数间的相互依存关系。BN 算法可以起到正则化的作用,改善特征复杂性。因此,在预激活模块的作用下,肺结节的特征信息可以在整个网络里自由地前向传播和后向传播。
1.3.3 损失函数
本文模型所使用的损失函数由两部分组成:分类损失(Lcls)和回归损失(Lreg)。分类损失Lcls是交叉熵函数,定义如下:
其中:
式中:n为批量大小,wn为权重,yn为anchor box的真值标签,为预测概率。而回归损失为:
其中:ti是一个向量,表示预测的结节框的4 个参数化坐标;是与positive anchor对应的真实结节框的坐标向量。H使用平滑L1损失函数:
其中:σ=3,。
实验中采用灵敏度(Sensitivity,Sen)、无限制接收者操作特征曲线下面积(Free-response area under the Receiver Operating Characteristic curve,FROC)得分、平均假阳性个数(average number of False Positives,FP)以及平均假阳性个数下的平均召回率(Challenge Performance Metric,CPM)指标来评估肺结节检测算法的性能。灵敏度公式如下:
式中:Sen为灵敏度,TP为所有被正确检出的结节的个数,FN为非肺结节被分为肺结节的个数,TP+FN为所有被检出结节的个数。FROC 得分代表了检测召回率和可容忍假阳性个数的综合指标,FROC 得分越高,模型的性能越好。FP指检测结果中出现的假阳性结节的数量,该值越小说明模型生成的平均假阳性数越少,模型性能越好。此外,取FROC 曲线上横轴为1/8,1/4,1/2,1,2,4,8FP/s(False Positives per scan)的点的平均召回率作为评价指标CPM,CPM指标公式如下:
式中:Rc(i)为容忍CT 图像中平均出现i个假阳性肺结节时肺结节的召回率。
现使用LUNA16 数据集的十组数据集,取其中九组病例作为训练集,剩余一组病例作为测试集,对提出的检测模型进行十折交叉验证。在训练中,针对每折验证,通过随机翻转图像、按比例裁剪图像方法对数据进行数据增强,以缓解正负样本不均衡的问题。对于每个模型,总共训练200 个批次。此外,使用随机梯度下降优化器对模型进行优化,其中随机梯度下降的动量为0.9,权重衰减系数设为0.000 1。批处理大小参数受到GPU 存储器的限制设置为8。采用学习率衰减策略,初始学习率设为0.01,当运行到67 批次变为0.001,134批次之后为0.000 5,160 批次之后为0.000 1。实验比较了优化器、矩形卷积核、深度可分离卷积、预激活操作激活函数及结果的影响,并验证了所提出的3D Res-DSC结构有效性。
本文实验使用的操作系统环境为Ubuntu16.04 系统,GPU 显卡为NVIDIA GeForce GTX 1080Ti,所有实验都是基于Python 的Pytorch深度学习库来实现。
2.3.1 优化器对模型的影响
针对Faster R-CNN 模型中优化函数选择的问题,比较了随机梯度下降(SGD)、Adam、AdaGrad、AdaDelta四种优化函数的实验效果。在其他参数设置相同的情况下,采用SGD、Adam、AdaGrad、AdaDelta 四种优化器函数在部分数据集上分别进行实验,实验结果如表1所示。
从表1 可以看出,在灵敏度性能上,前三者的性能相同,略低于AdaDelta;在FROC 性能方面SGD 和Adam 算法不相上下;SGD优化器函数能达到最好的FP值和CPM指标。综合四种参数的实验结果,在后边的实验中采用SGD优化器函数。
表1 优化器函数对模型的影响Tab.1 Influence of optimizer function on model
2.3.2 矩形卷积核对检测结果的影响
为了比较基础残差结构中的卷积核大小对实验结果产生的影响,分别使用3×3 卷积核、3×5 矩形卷积核进行实验。图5是十折交叉验证下每折数据的实验结果,表2是十折交叉验证的综合结果。
表2 不同尺寸卷积核条件下的综合指标结果Tab.2 Results of comprehensive indexes under convolution kernels of different sizes
从图5 十折交叉验证的独立结果来看,矩形卷积核的灵敏度共有8 折数据结果高于正方形卷积核,FP平均假阳性个数有6 折数据少于正方形卷积核,而FROC 得分和CPM 指标与正方形卷积核相比呈现持平状态。综合来看,使用矩形卷积核提高了肺结节检测精度,降低了平均假阳性个数。由表2 十折交叉验证的总体结果可知,使用矩形卷积核能达到较高的灵敏度和较低的假阳性率,FROC 得分和CPM 指标保持在较平稳的水平。实验结果表明,适当地增加卷积核大小,可以增大卷积操作的感受野,更广泛地提取肺结节特征,提高检测效果。
图5 十折交叉验证下,不同卷积核条件下的灵敏度、FROC得分、FP值以及CPM指标比较Fig.5 Comparison of sensitivity,FROC score,FP value and CPM index under different convolution kernel conditions under 10-fold cross-validation
2.3.3 深度可分离卷积对检测结果的影响
采用矩形卷积核在提高精度的同时,也增加了网络的复杂度,这可以利用深度可分离卷积操作来解决。为了测试深度可分离卷积操作的效果,选取部分数据进行测试,实验(A)表示在基础残差结构上的结果,实验(B)表示在基础残差结构的结构上使用矩形卷积核的结果,实验(C)表示在基础残差结构上使用深度可分离卷积的结果,实验(D)表示使用矩形卷积核、深度可分离卷积和预激活操作的改进残差结构的结果,实验结果表3 所示。其中用RCK(Rectangular Convolution Kernel)表示矩形卷积核操作,DSC(Depth Separable Convolution)代表深度可分离卷积操作,PAO(PreActivation Operation)表示预激活操作。
由表3 可以看出,在部分测试集上,当基础残差结构增加深度可分离卷积操作后,灵敏度稍有下降,但是FROC 得分、CPM 指标提高了近5 个百分点。而在计算量和复杂度方面,当单独使用深度可分离卷积操作时,生成模型大小约为基础残差结构的1/13。而单独使用矩形卷积核操作时,生成的网络模型大小相比基础残差结构增加了近3/5。通过结合矩形卷积核、深度可分离卷积和预激活操作,3D Res-DSC 模型不但提高检测效果,且生成模型的规模大幅度降低。结果表明:相比基础残差结构,使用深度可分离卷积操作,可以保证肺结节检测的精度的同时,模型计算量和复杂度大幅度降低。
表3 深度可分离卷积在部分测试集上的性能测试结果以及模型大小Tab.3 Performance test results and model sizes of deep separable convolutions on some test sets
2.3.4 预激活对检测结果的影响
预激活的作用主要是改善模型的正则化,减少模型的过拟合。为了验证预激活操作对模型的有效性,选取部分数据进行测试。实验(A)表示在基础残差结构上的结果,实验(B)表示在基础残差结构的基础上增加预激活操作的结果,实验(C)表示在预激活的基础上使用矩形卷积核的结果,结果如表4 所示。从表4中可以看出,当使用预激活操作时,灵敏度保持平稳的同时,FROC 得分增加近一个百分点;在此基础上再增加矩形卷积核,进一步提高了灵敏度和FROC。结果表明通过增加预激活操作可以提高模型的检测效果。
表4 采用预激活操作在部分测试集上的性能测试结果Tab.4 Performance test results on some test sets using pre-activation operation
2.3.5 3D Res-DSC结构实验结果
为了验证3D Res-DSC 结构的有效性,在888 例病例中的1 186 个结节上进行十折交叉验证,实验结果如图6、7 和表5所示。
在图6中,FROC 曲线横轴代表平均在每个CT 图像中可容忍检测出的假阳性肺结节(False Positives per scan,FP/s),纵轴代表检测正确肺结节占所有肺结节的比率,即召回率。FROC 曲线得分越高,模型的性能越好。由曲线可以看出,在检出率和假阳性方面,3D Res-DSC 结构优于基础残差结构。数据显示,基础残差结构模型的平均假阳性个数为64,而3D Res-DSC 结构模型的平均假阳性个数降低到51,在提高了检出率的同时降低了假阳性率。
图6 3D Res-DSC和基础残差块在反映灵敏度与平均假阳性个数关系的FROC曲线Fig.6 FROC curves of 3D Res-DSC and basic residual block on reflecting relationship between sensitivity and average number of false positives
由表5可以看出,相比基础残差结构模型,3D Res-DSC 改进残差结构模型将灵敏度提高了3.8个百分点,FROC 得分提高了3.43个百分点,CPM指标也提高了近4个百分点。
表5 基础残差块与3D Res-DSC的综合性能指标对比Tab.5 Comparison of comprehensive performance indexes of basic residual block and 3D Res-DSC structure
由图7可以看出,对每折数据,3D Res-DSC 结构都提高了灵敏度和FROC得分。
图7 基础残差块与3D Res-DSC的灵敏度、FROC得分、FP值及CPM指标比较Fig.7 Comparison of sensitivity,FROC score,FP value and CPM index of basic residual block and 3D Res-DSC
为了直观地展示基于3D Res-DSC 结构的肺结节检测模型的效果,需要检测出肺结节的可疑区域以后,将其在原始CT 图像上显示出来,具体做法为找出肺结节对应的切片,并圈出结节。首先,读取原始CT 图像的信息,里面包含CT 图像的全部信息。根据原始图像标签信息,框出该CT图像切片中肺结节的位置所在。其次,根据模型生成的检测结果,圈出检测后各个切片的肺结节所在位置。需要强调的是,由于检测结果中存在假阳性结节,因此检测出的肺结节不止有一个,且分布于不同的切片,有些结节位于同一张切片,一般来讲,单张切片的肺结节个数不会超过三个。对于位置相近的切片,将肺结节的位置集合在同一张切片上,以供检验。
两种结构的模型检测结果展示如图8 所示。在图8中,(a)是真实的肺结节标签,(b)是基础残差块模型的检测结果,(c)是3D Res-DSC结构的检测结果。在测试病例1,2中,基于基础残差结构的模型和基于3D Res-DSC 结构的模型均可检测到真阳性肺结节,但前者的假阳性数量明显多于后者。在测试病例3中,基于基础残差结构的模型没有检测出真阳性肺结节,然而基于3D Res-DSC 结构的模型可以检测到真实的肺结节位置。结果表明,基于3D Res-DSC 结构的模型提高了肺结节检测的灵敏度,降低平均假阳性个数。
图8 两种结构的模型检测结果Fig.8 Detection results of models based on basic residual block and 3D Res-DSC structures
为了验证算法的有效性,将本文算法的检测结果与其他检测方法进行了比较,实验结果如表6所示。
表6 不同方法在LUNA16数据集上的结果比较Tab.6 Comparison of different algorithms on LUNA16 dataset
文献[25]首先将肺结节进行三维重建,然后将不同视角的2.5D切片输入到深度信念网络中进行训练,最后通过不同的融合策略完成肺结节的识别。该方法虽然达到了较高的灵敏度,但是并未充分利用肺结节的三维特征。文献[19]使用二维卷积神经网络来学习肺结节的图像特征,相比传统算法,二维卷积神经网络所达到的准确率有了大幅提升,但是基于单一的2D切片所构造的模型无法充分获取结节的立体信息,所以达不到理想的结果。文献[26]采用基础残差结构和DPN双路径网络结构,达到了较高的检测结果,但是模型复杂度和平均假阳性相对较高。文献[27]使用三维特征金字塔网络,网络层数较深,模型复杂度高,且只关注FROC 得分指标,并没有综合考虑其他检测指标。本文提出的3D Res-DSC 方法,取得了较高的灵敏度,降低了假阳性指标,且模型复杂度也有了较大幅度的降低。在表6中,文献[25]、文献[19]中只给出了灵敏度一个评价指标,这里也只列出该指标。文献[26]中涉及到双路径网络和残差网络两个肺结节检测模型,表中第3行和第4行分别列出来了两个模型的结果。
从实验结果可以看出,本文所提出的基于改进残差结构的3D Res-DSC 卷积神经网络肺结节检测模型不但在灵敏度、FROC 得分、平均假阳性个数以及CPM 指标方面优于其他算法;而且该模型复杂度低,计算量小,具有较高的计算效率。
肺结节是肺癌早期阶段的征象,从CT图像中准确地检测肺结节对肺癌预防和治疗具有重要的作用。为了有效检测CT 图像中的肺结节,本文以Faster R-CNN 为基础,结合CT 数据的三维特性以及U-Net 编码解码器结构,提出了一个基于三维改进残差结构3D Res-DSC 的Faster R-CNN 模型。该模型通过使用矩形卷积核、深度可分离卷积操作以及预激活操作改进残差结构,对各种复杂特征的肺结节图像具有更强的特征提取能力,同时降低了模型的计算量。在LUNA16 数据集上的实验结果表明,所提模型在提高了肺结节检测的灵敏度的同时,有效降低了肺结节检测结果的平均假阳性个数,同时降低了模型的复杂度,能够有效提取3D医疗图像中的肺结节。下一步将在数据规模扩充、总体网络结构以及参数的优化等多个方面对模型进一步优化。