基于残差结构的三维U-Net肺结节检测算法
2022-05-26宋长明彭方达
李 阳, 宋长明, 王 浩, 彭方达
(中原工学院 理学院, 河南 郑州 450007)
肺癌是发病率、死亡率最高的癌症之一,全世界每年约有110万人死于肺癌。肺部小结节属于胸外科很常见的一种疾病,有良性和恶性之分,恶性肺部小结节可能引发肺部肿瘤。肺结节在胸部CT中表现为结节阴影,放射科医生可以通过分析胸部CT扫描图像发现肺结节,并做进一步检查来判断癌症,及早地从CT扫描中发现肺结节是进行肺癌治疗的关键。由于放射科医生的数量有限,而患者的数量比较多,放射科医生只有很少的时间分析每一次扫描,这就可能让他们很难发现每一个结节,在某种程度上导致厌诊和误诊。随着深度学习在医学领域的应用,如果能设计一个有效的卷积神经网络在计算机辅助检测系统中为放射科医生提供帮助,这将很大程度上减轻医生的压力,同时减少漏诊率和误判率。计算机辅助检测可以协助放射科医生有效地发现结节,肺结节计算机辅助检测系统首先需要完成候选结节的检测,并且达到高灵敏度的检测目标,之后需要再进行假阳性减少,达到低假阳性率。然而,由于目前的肺结节检测系统还达不到那么高的精确度,所以计算机诊断还没有广泛地用于临床。
随着人工智能算法的发展,深度卷积神经网络在医学图像处理领域已经成为研究热点。例如,Ronneberger等[1]提出了用于生物医学图像分割的U-Net算法,该算法在IEEE生物医学成像国际研讨会(ISBI)细胞跟踪挑战中表现出了良好的性能。自此以后,U-Net算法被广泛应用于分割任务[2-5]。这种架构的变体很快被提出,例如Zhou等[6]提出的改进模型U-Net++,它通过设计更复杂的跳跃连接,减少了编码网络和解码网络提取特征的语义差距,从而使训练更有效。考虑到用于图像分类的网络架构,Tan等[7]证明,通过缩放深度、宽度和分辨率,Efficient-Net对于CIFAR-10数据集上评估的对象分类更加准确。Xie等[8]提出用两个二维卷积神经网络来做肺结节检测和分类。受到密集卷积网络[9]的启发,Huang等[10]通过添加多尺度块开发了一种更有效的图像分类体系结构。同时,许多作者提出了使用深度学习的自动肺结节检测算法。为了进一步减少假阳性,马巧梅等[11]采用2D U-Net和3D CNN的肺结节检测网络,通过将2D网络和3D网络相结合的方式来检测肺结节。Wang等[12]提出了一种结节大小自适应模型,从三维图像中测量结节的大小、类型和位置。Dou等[13]利用三维卷积神经网络提取多级上下文信息以减少假阳性,Liao等[14]提出了用三维Deep Leaky Noisy-or 卷积神经网络来检测肺结节。有些检测系统是针对特定类型的结节开发的,例如,钟思华等[15]提出了改进的Dense-Unet网络用于肺结节分割,解决了存在的类不平衡问题。李莉等[16]提出了一种多尺度卷积神经网络模型,结合了肺结节的平面特征信息与空间形状信息对肺结节进行检测,避免了单一尺度学习不全面可能引发的漏检现象,有效降低了假阳性率。Tekade等[17]提出将U-Net与三维多路径类VGG网络相结合来完成肺结节的检测与分类,并且可以对肺结节恶性程度进行评估。但是,考虑到有些肺部CT图像中存在肺结节目标较小,并且其大小和形状具有多样性的问题,仅仅使用原始的U-Net网络与原始的VGG网络相结合,可能会导致梯度消失、提取结节特征不完全的问题,从而影响结节的检测与分类。
针对肺结节的大小差异和形状多样性的问题,提出一种融合了残差结构的类似于U型结构的3D肺结节检测网络,整个肺结节检测网络包含解码网络和编码网络,在两者之间建立跳跃连接,以便更好地检测目标,同时为了防止训练过程出现梯度消失的现象,在每个特征层的生成中还采用了残差连接。完成肺结节检测任务后,所生成的候选结节存在大量假阳性,使用改进的三维VGG网络以减少假阳性。另外,由于肺结节数据集中正、负样本的数量相差较大,考虑先通过数据增强(旋转、平移、翻转等)的方法将包含肺结节的图像数量扩充40倍,然后对非肺结节的图像进行随机采样20%的数据,让正、负样本数量达到平衡。
1 模型
本文提出的肺结节检测算法,如图1,主要包含两个部分:首先使用结合残差模块的三维“U”型网络对LUNA16数据集中的肺结节进行检测,获取候选结节空间形态特征;然后再由融合残差模块的改进三维VGG网络进行肺结节的假阳性减少。
图1 肺部CT图像肺结节检测流程Fig. 1 Lung nodule detection process in CT image
1.1 肺结节检测网络
1.1.1 网络结构
肺结节检测阶段就是要以较快的检测速度和较高的灵敏度来检测出肺部CT图像中的所有肺结节,提出了一种融合残差学习方式的三维改进U-Net网络来检测肺结节,在LUNA16数据集上进行训练和测试,该算法对肺结节检测表现出了较高的灵敏性,网络结构如图2所示。
图2 肺结节检测网络Fig. 2 Lung nodule detection network
原始的U-Net网络是由编码器、解码器构成的。编码器就是通过卷积层,再由最大池化层进行下采样操作来获得一个个特征层,然后再进行逐步的反卷积得到解码器,最后,编码器与解码器之间建立跳转连接,这样就构成了U-Net的网络结构。但是这样的U-Net结构在对肺结节检测时可能存在空间信息缺失,对特征的表达不准确的问题。针对U-Net网络在医学图像处理中存在的缺陷,有学者提出了 MultiResNet[18]和CE-Net[19]等改进结构,在处理不同数据集的医学图像问题时都获得了很好的效果。
针对U-Net网络在医学分割领域存在的问题,提出了一种引入残差学习方式的深层次网络:分别在U-Net网络中的编码器、解码器阶段,将每个特征层的输入和输出用残差结构连接起来,防止训练过程中梯度消失现象,结合深层网络与浅层网络获取的结节信息,提高检测灵敏度。具体残差结构如图3所示。
图3 残差结构Fig. 3 Residual structure
在肺结节检测网络中,连接输出层的卷积层采用的是1×1×1大小的卷积核,剩下的卷积层均采用3×3×3大小的卷积核,下采样层采用3D最大池化层,然后通过逐步的反卷积得到上采样层,最后将下采样层与上采样层的相同特征层结果进行堆叠。
1.1.2DiceLoss函数
DiceLoss函数是一种计算相似度的度量,一般被用于对比预测样本与真实样本的相似度(范围为[0,1])。
(1)
在语义分割中,A是正确标注的分割图像,B是预测结果。
DiceLoss作为图像分割的一个评判标准,它的值表示预测的分割结果与真实的分割结果之间的交并比,它能直观地反映预测的分割图像与正确的分割图像的差异,它能够将相同特征的所有像素看成一个整体。因为DiceLoss评判网络的性能是以分割的最终效果,同时还在计算交并比的过程中忽略了大量的背景信息,所以收敛速度很快。
1.2 肺结节假阳性减少网络
在肺结节检测阶段,提高了对肺结节的检测性能,但是会获得大量的假阳性信息,肺结节假阳性减少任务就是要从真实结节中剔除假阳性结节,由于结节图像是不同方向的轴向切片,所以具有较为复杂的空间形态特征,二维卷积神经网络在进行分类任务时可能会忽略掉结节的三维空间信息。
针对以上问题,提出一种结合残差结构的三维VGG网络,如图4所示,在原始VGG网络中,采用与肺结节检测网络中相同的残差结构,在VGG网络每个特征层的输入和输出之间建立残差连接。在提出的肺结节假阳性减少网络中,所有卷积核大小是3×3×3的,然后通过3D最大池化层进行下采样得到5个特征层。最后是全连接层,第一个全连接层后使用Relu激活函数,第二个全连接层后使用Softmax激活函数,损失函数采用交叉熵损失函数。
图4 假阳性减少网络Fig. 4 False positive reduction network
根据肺结节检测网络学习到结节的空间形态特征,获得了丰富的结节位置信息和特征信息,然后传入假阳性减少网络,通过标签信息与肺结节图像中的候选结节作对比,从而确定结节的良恶性。
2 实验
LUNA16数据集是常用的肺结节检测数据集,因此采用这一公开数据集对提出的肺结节检测算法进行训练和测试。实验使用的操作系统为64位Windows 10系统,处理器为1.7 GHz的Intel Xeon Bronze 3104,GPU显存为8GB,运行环境为Anaconda3,python3.6,tensorflow-gpu1.8.0的深度学习框架,同时安装CUDA9.0和cuDNNv7的GPU计算加速库。
2.1 实验数据
2.1.1 LUNA16数据集
LUNA16数据集来源于LUNA16挑战赛,该数据集保留了LIDC/IDRI数据集上直径大于或等于3 mm的结节,其中一共包含了888例CT数据,标注文件中包含了1 186个结节的空间坐标和直径信息,候选结节文件中包含了551 065个候选结节的空间坐标和类别信息。
2.1.2 数据预处理
肺部CT图像中包含了整个胸腔的器官,还可能含有CT床金属线等噪声信息,不去除掉多余的器官信息,会对检测过程造成干扰,为了提高检测的精度,需要对肺部CT图像进行预处理操作。
HU值,反映了组织对X射线的吸收程度。以水的吸收程度为分界线,HU值大于水的为正数,HU值小于水的为负数,设置肺部区域的HU值范围,过滤除肺部区域外的其他像素信息。HU值计算公式如下:
(2)
式中:μ为吸收系数或衰减系数,与X射线强度有关。在对LUNA16数据集进行数据预处理时,首先根据结节的坐标和直径信息,以坐标为中心,直径为边,生成正方形区域,然后输出为掩膜图像。去除CT图像中的噪声,例如骨头的亮点、CT床的金属线等,最终通过归一化处理将图像窗宽窗位设置为(-1000, 600),并将其归一化为(0, 1)。
另外,由于正负样本相差很悬殊,需要进行数据增强处理。针对正样本肺结节图像扩充40倍(旋转,平移,翻转等),对负样本非肺结节图像进行随机采样20%的数据。
2.2 评估指标
从医学的角度,根据准确度A、灵敏度S两个方面来评判模型的性能。
(3)
(4)
式中,T和F分别代表正确(True,T)和错误(False,F),表示预测结果是否正确,P和N分别代表阳性(Positive,P)和阴性(Negative,N),表示预测的类别结果。具体预测结果如表1所示。
表1 预测结果
2.3 实验结果
2.3.1 肺结节检测实验结果
在候选结节检测阶段,根据提出的加入残差学习方式的改进三维U-Net网络对LUNA16数据集上的肺结节图像进行分割,能够达到很好的分割效果。例如图5中是其中一例肺结节图像(由16张不同的轴向切片组成)的分割结果,其中图5(a)是测试图片,图5(b)是真实框的信息,图5(c)是预测结果,即分割出的肺结节形状。
(a) 肺结节图像 (b) 真实框 (c) 分割结果 图5 候选结节检测结果Fig. 5 Candidate nodule detection results
通过提出的结合残差结构的三维U-Net肺结节检测网络,在候选结节检测阶段取得更高的分割效果,这样为下一阶段去除假阳性获得了充分的结节位置和特征信息。但是在候选结节检测阶段,仍然存在了大量的假阳性信息,后面再在假阳性减少阶段对结节做出良恶性分类。
2.3.2 肺结节假阳性减少结果
在假阳性减少阶段,用加入残差学习方式的三维改进VGG网络进行肺结节的良、恶性分类,去除假阳性结节。
进行假阳性减少时,首先是将肺结节的图像分为80%的训练集和20%的测试集;其次分别对两部分数据集进行数据增强,肺结节图像的训练集数据增强到45 344个,测试集数据增强到10 047个;然后随机选取非肺结节图像中的110 000个,也分为80%的训练集和20%的测试集,得到非肺结节训练集里图像数量90 047个,测试集里图像数量19 953个;最后再分别与肺结节图像的训练集和测试集结合在一起,得到总的测试集图片数目30 000个,训练集图片数目135 391个。
实验时,用ResAdd-Unet肺结节检测算法与其他肺结节检测算法的性能作对比,Liao等[14]提出了用三维Deep Leaky Noisy-or 卷积神经网络来检测肺结节;马巧梅等[11]采用2D U-Net和3D CNN的肺结节检测网络,通过将2D网络和3D网络相结合的方式来检测肺结节;Zhu等[20]提出了DeepLung网络,设计了自动肺结节分类和检测深度三维双通道网络;Xie等[8]提出用两个二维卷积神经网络来做肺结节检测和分类,相较于其他算法节省了时间和空间;Gong等[21]利用一种融合“Squeeze-and-Excitation”网络块的三维深度卷积神经网络来检测肺结节,实验结果见表2。
除了上述实验,另外选取LeNet、AlexNet、SegNet 3个网络与ResAdd-Unet网络作对比试验,LeNet最初被用于完成手写字体识别的任务,它的网络虽然简单,但是定义了卷积神经网络中从卷积层到池化层到全连接层的整体架构,从而解决对图像的分类问题。AlexNet相比于LeNet有了更深的网络,并且用Relu代替Sigmoid作为激活函数来加快收敛速度,同时引入Dropout有效缓解模型过拟合。SegNet是在FCN的基础上增加了解码器,形成了目前在图像分割任务中最流行的编码-解码结构。为了验证本文算法的有效性,将每个网络的分类结果存储到excel表格中,并输出对应的混淆矩阵(见图6)。
表2 不同肺结节检测系统性能对比
(a) ResAdd-Unet网络 (b) LeNet网络
(c) AlexNet网络 (d) SegNet网络图6 混淆矩阵Fig. 6 Confusion matrix
将LeNet、AlexNet、SegNet这些传统方法与ResAdd-Unet肺结节检测算法在LUNA16数据集上进行比较,对比结果见表3。
表3 不同模型性能对比
从表2和表3可以看出,不同的肺结节检测系统对肺结节分类的准确度和灵敏度都存在较大差异,在几种检测算法的对比中,本文算法对肺结节分类的准确度和灵敏度都是最高的,证明了该算法对肺结节良、恶性分类有良好的性能。ResAdd-Unet网络不仅本身就结合了编码-解码的结构,加强全局上下文之间的信息交流,还利用残差结构将深层网络与浅层网络的语义信息进行融合,从而获得更好的检测性能。
为了测试本文算法有效性,将引入残差结构后检测系统与原始的检测网络做了对比。检测性能得到提升,对比结果见表4。
表4 两种算法性能对比
结果表明,本文算法在假阳性减少阶段实验结果为98.21%的平均准确度,相比于改进前的检测系统提高了2.61%;并且有97.79%的平均检测灵敏度,相比于改进前的检测系统提高了肺结节检测算法的性能。相比于原来的算法,使用残差结构将深层网络与浅层网络的语义信息进行融合,获得了更好的检测性能。
3 结语
本文提出了一种结合残差结构的三维U-Net网络肺结节检测算法。首先在候选结节检测阶段,利用结合残差结构的三维改进U-Net网络对候选结节进行分割,这样检测到候选结节空间形态特征,之后再在假阳性减少阶段利用三维改进VGG网络,对前面网络学到的肺结节特征再进行结节和非结节的分类。实验结果表明,本文提出的肺结节检测算法,在准确度和灵敏度上都要高于其他算法,并且可以节省一定的时间,对肺结节检测时具有很好的检测性能。