APP下载

改进U-Net网络的肺结节分割方法

2020-09-04钟思华郭兴明郑伊能

计算机工程与应用 2020年17期
关键词:卷积损失像素

钟思华,郭兴明,郑伊能

1.重庆大学 生物工程学院 重庆市医疗电子技术工程研究中心,重庆 400044

2.重庆医科大学附属第一医院 放射科,重庆 400016

1 引言

肺癌是发病率和死亡率最高的癌症之一,我国每年肺癌死亡病例约61 万人,及早诊断出肺癌并治疗对于提高患者的生存率具有重要的意义[1]。肺结节是肺癌的早期表现形式,在CT 图像上多表现为直径不超过3 cm的局灶性、类圆形的肺部阴影,对其轮廓准确地分割能够帮助医生实现肺结节良恶性的诊断。由于肺结节体积微小,其形态、亮度等特征与肺实质中的血管等组织相似,仅通过肉眼观察难以将其两者分开,容易对医生的判断产生严重的干扰。

为了提高医生的工作效率同时降低误诊率,近年来许多研究人员专注于利用计算机辅助诊断系统实现肺结节分割的研究[2-6]。Kostis等[7]首先采用自适应阈值法将肺结节从肺实质中分离出来,接着利用形态学操作实现了对肺结节轮廓较为精细的分割;Dehmeshki 等[8]提出了一种自适应区域生长的肺结节分割方法,该方法在待分割的肺结节区域放置种子点,根据肺结节区域与背景区域对比度不同的特性,自适应地对肺结节进行分割;冯宝等[9]通过结合肺结节的小波能量和汉森形状指数特征,利用活动轮廓模型对肺结节中的实性部分进行分割。以上方法虽然能够较好地实现肺结节的分割,但均依赖于人对于肺结节的先验知识,不同的人对分割初始条件的设定都会影响到最终的分割效果。因此需要研究一种新的方法,让机器自动地学习并提取图像特征,最终实现肺结节分割,从而排除不同的人所产生的干扰,让分割结果更加客观。

目前,深度学习广泛应用于计算机视觉领域并取得成功。神经网络通过模仿人脑构造,利用大数据,能够自动地完成对特定物体的学习,如Kumar等[10]利用卷积神经网络(Convolutional Neural Network,CNN)实现了对肺结节的良恶性分类,Wang 等[11]通过多尺度的CNN有效地对肺结节进行检测与分割。在图像分割方面,Long 等[12]在CNN 的基础上,创造性地提出了一种全卷积神经网络(Fully Convolutional Network,FCN)。他们用卷积层替换CNN中的全连接层以获得图像中每个像素的分类结果,最终实现图像分割;Ronneberger 等[13]随后提出了一种新的FCN网络,U-Net。该网络具有对称的U 型结构,通过对图像特征的编码与解码,并融合网络高低层语义特征,可以实现较好的分割效果。与FCN相比,U-Net能够在较少样本量的情况下完成模型训练并实现图像分割。由于在医学图像处理中,通常难以获取许多高质量的医学图像,因此该网络也经常应用于医学图像分割中。但是,肺结节等医学图像具有边缘模糊、目标区域小等特点,仅仅使用原始U-Net 对其训练,存在梯度消失、特征利用率低等问题,最终导致模型的分割准确率难以提高。

基于此,本文在现有U-Net 网络结构的基础上,针对其存在的不足,提出了一种改进的Dense-UNet 网络的肺结节分割算法。该算法加强了网络对特征的传递与利用,能够有效缓解类不平衡问题,并对肺结节等小目标区域的分割具有较大的改善。本文利用LIDCIDRI 肺结节公开数据集对改进网络的有效性进行验证,结果表明该网络能够显著提高肺结节分割的准确率。本文的主要贡献有以下两个方面:

(1)损失函数:在传统语义分割中所使用的二值交叉熵(Binary Cross Entropy,BCE)损失函数的基础上,结合Dice 相似系数(Dice Similarity Coefficient,DSC)损失函数,组成混合损失函数。该混合损失函数保证了网络能够稳定且有针对地对难以学习的样本进行优化,从而缓解类不平衡问题,改善网络的分割结果。

(2)网络结构:借鉴了DenseNet 中密集连接(Dense Connection)的概念,在U-Net网络的卷积层之间引入密集连接,将网络中上下卷积层之间的特征结合起来。针对部分小目标区域存在提取特征困难的问题,通过密集连接方式,可以加强网络对特征的传递与利用,同时解决梯度消失的问题。

2 方法

2.1 数据来源及预处理

本文所使用的肺部CT图像来源于LIDC-IDRI肺结节公开数据库[14]。该数据库是由美国国家癌症研究所发起收集,其中一共包含了1 018 个病例。对于每个病例中的CT 图像,都有4 名放射科医生对肺结节的轮廓及其他征象信息进行标注,并将其存放至XML 格式的文件中。

由于肺结节在原始肺部CT 图像中所占比例很小,即代表肺结节类别的像素数量远小于背景类别的像素数量,这种因正负样本数量不均衡而产生的类不平衡问题会严重影响神经网络的训练过程,最终影响网络的分割性能。因此,本文对含有肺结节的原始CT 图像样本进行裁剪以减少肺部其他组织对实验结果带来的干扰。原始CT图像的尺寸为512×512像素,根据XML文件中医生对肺结节位置信息的标注,将原始CT 图像裁剪成尺寸为64×64像素大小的图像,结果如图1所示。

图1 CT图像预处理

2.2 分割网络

由于在U-Net网络中,每一层所提取的特征通常只被学习一次,不同层次的特征之间缺乏联系,因此网络对于特征的利用率较低,影响最终的分割准确率。相比之下,DenseNet[15]利用密集连接,使得网络中当前层的特征与之前所有层的特征结合起来,并将该所得特征传递到后续的所有层。通过这种级联方式,每一层网络都能学习到前几层的特征,这不仅可以加强网络对特征的传递,从而实现特征的复用,还能够缓解网络中梯度消失的问题。假设DenseNet 网络中第l层的输出为xl,则xl的定义为:

式中,函数Hl表示第l层的非线性变换,[…]表示网络中各层特征的融合操作。

本文借鉴了DenseNet 中密集连接的概念,设计了密集连接模块,其结构如图2所示。每个密集连接模块主要包含了两个3×3 的卷积层和两次特征融合操作。对于输入密集连接模块的特征图,在每经过一次卷积操作后,所产生的特征图便与最原始的特征图进行融合形成新的特征图,最后再将特征图输入下一个密集连接模块。

图2 密集连接模块结构

此外,每个卷积层后面均添加了批量归一化(Batch Normalization,BN)层[16]和修正线性单元(Rectified Linear unit,ReLu)激活层[17],以此提高网络的性能。其中,批量归一化层是为了解决网络的训练效果容易受到初始数据分布的影响、模型泛化能力差等问题而提出的。批量归一化层首先对输入数据xi进行归一化操作:

式中,m为输入数据的批量大小,μB为均值,为方差,ε为平滑因子,避免分母为零。上述操作改变了网络所学到的数据特征分布,为了避免网络学习效果受到特征分布改变带来的影响,需要对归一化后的数据进行转换重构:

式中,γ和β为可学习重构参数。yi即为网络对输入数据xi进行批量归一化操作后的输出值。

修正线性单元激活层负责将神经网络中神经元的输入映射到输出端,为网络引入了非线性因素,由此提高了网络的非线性表达能力。其公式定义如下:

本文根据基本的U-Net 网络结构并结合密集连接模块设计了一种改进的Dense-UNet 模型,其网络结构如图3 所示。Dense-UNet 由编码器、解码器、分类器和跳跃连接(Skip Connection)组成。编码器部分包含了密集连接模块和最大池化层,其中,密集连接模块通过卷积层用于提取图像的语义特征,最大池化层用于特征图的下采样操作,在减少网络运算量的同时能够增加特征图的感受野(Receptive Field),提高图像特征的鲁棒性。对于输入网络的图像,首先会经过密集连接模块进行两次卷积操作,得到尺寸大小为64×64 的特征图,随后经由池化操作将特征图的尺寸大小减半。最终,在经过四次卷积和池化操作后,得到4×4 大小的特征图。

图3 Dense-UNet网络结构

解码器部分包含了密集连接模块和反卷积层,其中,反卷积层用于特征图的上采样操作,从而恢复特征图的分辨率。特征图每经过一次反卷积操作,其尺寸大小都增大一倍,最终可以得到大小与输入图像相同的特征图。此外,在编码器和解码器之间通过一个密集连接模块进行连接。

分类器由1×1卷积层和sigmoid激活层组成,其中,1×1卷积层用于减少特征图的数量,sigmoid激活层用于计算最终的特征图中每个像素的类别,从而输出网络的分割概率图。跳跃连接将网络中的浅层简单特征与深层抽象特征融合起来,从而可以得到更为精细的分割结果。表1为Dense-UNet模型中各层的参数设置。

2.3 损失函数

在二分类的语义分割任务中,常用的损失函数是二值交叉熵损失函数,公式如下:

式中,gi为像素点i的真实类别,pi为网络对像素点i的预测结果。

使用二值交叉熵损失函数进行优化,能够稳定地将各个类别所对应的梯度进行回传,有效地解决网络在反向传播过程中梯度消失的问题。但由于该损失函数在梯度回传的过程中对图像上的每一个类别都平等地进行评估,所以对于存在类不平衡问题的图像来说,其中最常见的类别更容易改变网络的优化方向,进而影响最终的分割结果。

表1 Dense-UNet网络各层的参数设置

此外,另一种用于分割任务的损失函数为Dice相似系数损失函数,公式如下:

Dice 相似系数损失函数能够指导网络通过不断学习,让预测结果逐渐逼近真实结果。但是一旦预测结果中有部分像素预测错误,会导致预测目标的梯度变化剧烈,从而使得网络的训练过程变得困难。

本文根据二值交叉熵和Dice 相似系数损失函数的特点,提出了一种混合损失函数,公式如下:

式中,α为权重因子,用于调节两种损失函数所占权重。

3 实验及结果分析

本文实验的环境是基于深度学习框架Keras 结合Python编程语言进行搭建的。计算机配置如下:操作系统为Windows10;处理器为Intel Corei7-8700K;显卡为NVIDIA RTX 2080Ti,11 GB内存;系统内存为32 GB。

3.1 数据集

本文从LIDC-IDRI 数据库中筛选出切片厚度不大于3 mm的CT图像作为实验所需的数据集,最终得到总共5 108 张经过预处理的图像,并按照8∶1∶1 的比例分别将其划分为训练集、验证集和测试集。其中,训练集用来训练模型,验证集用来调节模型参数使其性能达到最优,测试集用来验证所训练模型的性能,三者之间互不重叠。最后,根据XML中医生对肺结节轮廓的标注,生成与肺结节图像尺寸相同的肺结节轮廓标签,结果如图4所示。

图4 实验数据集

3.2 评价指标

为了对肺结节的分割结果进行评估,本文采用Dice相似系数值(DSC)、准确率(Precision)和召回率(Recall)作为评价指标:

式中,gi为像素点i的真实类别,pi为网络对像素点i的预测结果。Dice 相似系数值是用来衡量预测结果与真实结果之间的相似程度,准确率是指被正确预测为肺结节的像素总数占被预测为肺结节的像素总数的比例,召回率是指被正确预测为肺结节的像素总数占实际为肺结节的像素总数的比例。上述指标用于肺结节分割结果的综合评估,它们的值越大代表分割结果越好。

3.3 参数设置及训练

神经网络在训练过程中,选择混合损失函数作为目标函数,采用Adam优化器进行优化,其中,batch-size设置为32;初始学习率设置为10-5;动量参数设置为0.9。

3.3.1 权重因子的选择

本文对损失函数中的权重因子α的选择进行了探究,将α分别设置为0、0.2、0.4、0.6、0.8 和1。通过五组对比实验最终得到效果最优的权重因子。

表2 展示了混合损失函数在不同权重因子下对Dense-UNet 性能的影响。从表中可以看出当α取值为0.6时,网络的性能表现最佳。特别地,当α取值为0时,此时损失函数为二值交叉熵损失函数;当α取值为1时,此时损失函数为相似系数损失函数。因此,本文实验中的α设置为0.6。

表2 不同权重因子对Dense-UNet性能的影响 %

3.3.2 训练迭代次数的选择

训练迭代次数的选择对网络的分割性能至关重要。如果训练迭代次数太少,模型无法很好地拟合训练数据的分布而容易出现欠拟合状态;如果训练迭代次数太多,模型过度依赖训练数据的分布而容易出现过拟合状态。本文通过采用Early Stopping策略确定合适的训练迭代次数。

图5 展示了在训练过程中Dense-UNet 在训练集和验证集上的损失值与训练迭代次数的关系。从图中可以看出网络的损失值随着训练迭代次数的增加而降低,当训练迭代次数超过30 时,验证集的损失值趋于稳定。因此,本文实验中的训练迭代次数设置为30。

图5 Dense-UNet损失值与迭代次数的关系

3.4 实验结果及分析

3.4.1 不同损失函数的对比分析

为了探究不同损失函数对模型性能的影响,本文针对二值交叉熵损失函数、Dice相似系数损失函数和混合损失函数进行了对比实验。表3列出了U-Net和Dense-UNet在三种不同损失函数下的分割效果,分别用BCE、Dice 和Hybrid 代表三种损失函数。从实验结果可以看出,两种模型使用混合损失函数均可以达到最优的分割结果,其原因在于肺结节区域在图像上的占比面积较小,使用单一的损失函数进行优化时,肺结节区域所对应的梯度变化容易受到其他背景区域梯度的影响,导致网络训练困难,而混合损失函数综合了两种损失函数的特点,在网络反向传播过程中能够对难以学习的样本进行稳定且有针对的优化,从而能够缓解类不平衡的问题,提升模型的分割性能。

表3 不同损失函数对网络性能的影响%

3.4.2 不同肺结节分割方法的对比分析

为了验证改进的Dense-UNet 模型的分割性能,本文选取了:FCN_32s[12]、SegNet[18]、U-Net[13]和使用了批量归一化的U-Net 四种分割网络与之进行对比。根据3.3节中的网络参数设置,分别对以上五种网络进行训练,并利用测试集对训练好的模型性能进行测试。

表4 展示了不同网络在测试集上的分割结果。从表中可以看出,FCN_32s和SegNet的分割结果明显低于另外三种模型的分割结果,这是由于这两者没有充分利用各层网络所提取的图像特征,网络对于编码器部分所提取到的特征,只是单纯地进行了上采样操作将其恢复到输入图像大小,而忽略了多尺度特征在空间上进行像素定位和分类之间的联系,因此模型的分割结果比较粗糙。不同地,在以U-Net 结构为基础的网络,如U-Net、UNet+BN 和Dense-UNet 中引入了跳跃连接,网络得以将浅层的简单特征和高层的抽象特征结合起来。由于高质量的医学图像数量少,且目标区域与背景的对比度低,对其提取特征较为困难,所以这类网络更适合于医学图像分割任务。通过跳跃连接方式,利用简单特征用于像素准确定位以及抽象特征用于像素准确分类的特点,将两者结合从而帮助网络得到更为精细的分割结果。

表4 Dense-UNet与其他网络分割结果对比%

本文方法的Dice相似系数值、精确率和召回率分别达到了84.48%、85.35%和83.81%,与U-Net和UNet+BN相比,最终的分割结果均有不同程度的提升,这是由于一方面改进的Dense-UNet模型中不仅采用了跳跃连接方式,而且还通过密集连接模块将相邻网络层中提取的特征融合起来,既能够进一步加强网络对特征的传递与利用,同时也能够缓解网络中梯度消失的问题,因此改进的Dense-UNet对图像中的微小或边界模糊的肺结节区域具有更强的学习能力;另一方面,改进的Dense-UNet模型通过批量归一化操作能够有效地统一训练数据的分布,从而提高了网络的收敛速度,改善了网络的优化性能,获得更为精确的分割结果。

五种网络的分割结果的可视化如图6所示,图中第一列是输入模型的肺结节图像,第二列是医生标注的肺结节轮廓金标准,最后一列是使用本文算法对肺结节分割的结果。由于方法[12]和[18]忽略了多尺度特征融合的重要性,使得最终的分割结果非常粗糙,只能实现对肺结节的大致定位。对比观察图中最后四行的图像,肺结节在图像中所占比例较小,且其像素值与背景区域中的血管等组织相近,未改进的网络容易受到与病灶相似的干扰区域的影响,错误地将背景区域预测为肺结节区域,并且分割结果误差较大。相比之下,本文提出的Dense-UNet能够有效地区分肺结节与其他肺部组织,对肺结节轮廓的预测更为精确,同时分割结果中的假阳性样本也较少。综上所述,改进的Dense-UNet 网络与其他分割网络相比,分割效果得到显著提升,在针对微小或边界模糊的肺结节的分割过程中鲁棒性高,具有良好的分割性能。

4 结束语

准确地对肺结节进行分割对于肺癌的早期诊断至关重要。本文在U-Net网络结构的基础上,提出了一种用于肺结节分割的Dense-UNet 网络。改进的Dense-UNet 网络在卷积层之间引入密集连接模块,将网络上下层的特征融合起来,进一步加强了网络对特征的传递和利用,有效地提高了网络的分割性能,并且能够解决梯度消失的问题;同时采用改进的混合损失函数帮助网络对难以学习的样本进行稳定且有针对的优化,以解决网络在训练过程中面临的类不平衡问题。本文实验数据来源于LIDC-IDRI 肺结节公开数据库,通过与FCN_32s、SegNet、U-Net 和使用了批量归一化的 U-Net 四种分割网络的实验结果对比,表明了改进的Dense-UNet网络能够有效地区分肺结节与背景区域,实现对肺结节的准确分割,具有良好的分割性能。然而本文算法仍然存在一些局限性,由于肺结节病灶存在于多张CT 切片中,本文方法只关注了单张切片中的病灶区域,而忽略了相邻切片图像之间的联系,对于较小的肺结节病灶难免出现一些错检或漏检的现象。因此,利用相邻切片中肺结节病灶之间的像素联系以提高分割准确率将是下一步的研究重点。

图6 不同模型的肺结节分割结果图

猜你喜欢

卷积损失像素
像素前线之“幻影”2000
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
卷积神经网络的分析与设计
“像素”仙人掌
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
ÉVOLUTIONDIGAE Style de vie tactile
高像素不是全部