亢 洁,丁菊敏,万 永,雷 涛
(1.陕西科技大学 a.电气与控制工程学院; b.电子信息与人工智能学院,西安 710021;2.西安交通大学第一附属医院 老年外科,西安 710061)
为了方便医生对肝脏病症患者进行疾病诊断、功能评估和治疗方案制定,需要对肝脏区域进行精准分割[1]。目前,临床多采用计算机辅助的人机交互方式进行肝脏分割,分割一个病例通常需要30 min~40 min,因此,研究一种快速准确且适合临床应用的肝脏CT图像分割算法具有重要意义。然而,肝脏与毗邻器官灰度值相近,准确判断肝脏边界位置具有一定难度,因此,肝脏CT图像的自动分割仍是一项极具挑战的任务。截至目前,研究人员已提出大量肝脏图像分割算法[2],这些算法可大致分为传统算法和深度学习算法两大类,其中,传统算法主要包括水平集法[3-4]、区域生长法[5-6]、图割法[7-8]和阈值法[9-11]等,而深度学习算法主要有全卷积神经网络(Fully Convolutional Network,FCN)[12-13]和U-Net[14-15]等。
在传统肝脏图像分割算法中,研究人员主要依靠先验信息设计有效的肝脏描述子,然后对特征进行分类进而实现图像分割。文献[16]在利用区域增长算法提取肝脏区域的基础上通过统一水平集优化分割结果,减小肝脏灰度分布不均对分割准确性的影响,但是该方法对弱边缘肝脏CT图像的分割结果不理想。文献[17]利用传统图割理论对背景简单的肝脏图像进行分割,文献[18]在其基础上进行改进,将亮度和外观模型融合到图像分割的能量函数中,提高肝脏与周围组织的对比度,从而减少误分割现象,但其不能排除病变区域的干扰。为了提高算法的泛化能力,文献[19]结合图形的先验信息,使用马尔科夫随机场作为驱动目标运动的内力,将稀疏表示作为约束目标运动的外力,建立最优搜索框架,该算法分割精度较高,但运算时间复杂度较大。传统肝脏分割算法主要采用人工设计的特征模板提取图像特征,其提取的特征数量较少,易将灰度值相近的非肝脏组织错分为肝脏区域。
相比于传统肝脏图像分割算法,深度学习算法能够利用大量训练样本有效学习肝脏器官的图像特征,其肝脏分割结果优于传统算法。卷积神经网络(Convolutional Neural Network,CNN)[20]是一种经典的深度学习算法,可以学习输入与输出之间的非线性映射,而FCN可直接实现端到端的图像分割[21]。文献[22-23]分别采用VGG-16修改的FCN以及RV-FCN实现肝脏分割,但上述2种方法的分割结果不够精细,存在误分割现象。文献[24]采用级联的U-Net模型实现肝脏与肿瘤的分割,取得了较好的分割结果。尽管卷积神经网络能够有效捕获肝脏图像的语义信息,但其池化层导致肝脏图像的细节信息丢失,影响肝脏分割的精度。
鉴于分水岭算法对弱边缘响应良好,本文提出一种基于分水岭修正与U-Net的肝脏分割算法。利用U-Net模型融合浅层特征与高维特征,得到肝脏初始分割结果并进行形态学膨胀处理。根据原图得到肝脏扩大区域,并应用分水岭算法形成的超像素块对U-Net初始分割结果的边界进行修正,使最终的肝脏分割边界更加平滑准确。
U-Net是一种轻量级的全卷积神经网络,其由收缩路径(编码器)和扩张路径(解码器)两部分组成[25],共包括23个卷积层、4个最大池化层(下采样)和4个反卷积层(上采样)。其中,收缩路径遵循典型的卷积网络结构,在每两个3×3的卷积层后,放置一个2×2最大池化层,其步长为2。使用修正线性单元(Rectified Linear Unit,ReLU)作为激活函数,每经过一次下采样操作,特征通道数量加倍。扩张路径利用2×2的卷积核对特征图谱进行上采样,使特征通道数减半,将上采样后的特征图谱与来自收缩路径的特征图谱相结合,然后利用2次3×3的卷积进行卷积运算,并同样使用ReLU作为激活函数。最后,利用1×1的卷积核将每一个64维的特征向量映射到网络的输出层,即可得到类的数量。
U-Net是对FCN的优化与改进,其结构简单,参数量小,适用于小数据集和二分类的使用场景[26],而FCN在经过一系列卷积池化后,所得到的高维特征图丢失了目标位置等浅层细节信息,导致目标定位的精度降低。两者的不同之处在于,U-Net在卷积层后添加了上采样过程,其在每个阶段都通过编码器和解码器之间的跳跃连接,将各阶段编码器与解码器生成的特征图在对应位置进行叠加,并利用卷积操作融合图像的浅层特征与深层特征。由于浅层特征一般为目标位置、边缘等细节信息,用来解决像素目标的定位问题,而深层特征主要是目标的语义信息,用于进行最终的像素分类,因此,U-Net可兼顾图像的底层特征与高层语义特征,避免细节信息丢失,进而提高目标分割精度。
虽然U-Net对于小数据集具有较好的分割结果,可以有效避免过拟合现象,但是U-Net的多个池化层导致其难以对肝脏边缘细节进行精确分割,影响肝脏区域的分割精度。因此,本文将分水岭算法与U-Net进行结合,以提高肝脏分割的精度。
分水岭算法是一种建立在数学形态学理论基础上的区域图像分割算法[27]。图像中像素的灰度值可以看作测地学上的拓扑地貌,像素灰度值表示该点的海拔高度,每一个局部极小值及其影响区域称为集水盆[28],集水盆的边界即为分水岭。
图1给出分水岭算法的肝脏分割结果,可以看出,该算法的分割精度较高,对腹部CT图像中肝脏区域的弱边缘具有良好的响应。此外,在利用分水岭算法分割腹部CT图像时,会形成许多封闭的超像素块和贴合肝脏区域边缘的超像素轮廓,为后续修正U-Net肝脏分割结果提供了条件。
图1 分水岭算法的肝脏图像分割结果
Fig.1 Result of liver image segmentation using the watershed algorithm
本文基于U-Net模型和分水岭算法各自的优势,提出一种新的肝脏分割算法,其基本框架如图2所示,大致可以分为3个部分。其中,第1个部分进行数据预处理,其目的是抑制无用信息,提高肝脏与其他组织的对比度,第2个部分通过深度卷积神经网络U-Net融合浅层特征与高维特征,得到初步分割结果,第3个部分利用分水岭算法形成的超像素块对初步分割结果进行优化,得到最终的分割结果。
图2 本文算法框架
CT图像与自然图像不同,即使在同一成像条件下,也会因为设备不同而使采集的CT图像有所差异。为了完整地保留目标区域,需要对获取的CT图像进行预处理。
本文应用W/L调窗算法将肝脏CT图像转换为灰度图像。由于肝脏组织的CT值一般在50 Hu~250 Hu之间,为了抑制无用信息,提高肝脏与其他组织的对比度,将窗宽值和窗位值分别设置为200 Hu和150 Hu,图片分辨率设置为512像素×512像素。在得到肝脏CT图像的灰度图以后,使用高斯滤波器对灰度图进行去噪,所得数据即为下一步U-Net的训练与预测数据。
U-Net输入图像的分辨率为512像素×512像素,经过卷积操作后,第1个卷积层组输出特征图的大小为64×512×512,第2个卷积层组输出特征图的大小为128×256×256,依此类推。由于卷积操作会使图像维度发生变化,因此本文在所有卷积层之前均使用padding=1对图像进行填充,保持图像维度不变。
反卷积层针对填充后的特征图进行卷积操作。在U-Net每一个上采样层中,通过反卷积操作恢复图像的维度,并将其与对应池化层的特征图像进行结合,实现池化层特征图的重用。输出层采用Softmax作为激活函数,以输出单通道的概率图谱,如式(1)所示。
(1)
其中,ak(x)表示每一个像素点对应类的得分,pk(x)为像素对应不同类别的概率,T为总类别数,k为其中一个类别。pk(x)越大表示分类正确的概率越大,当pk(x)≈1时,ak(x)取得极大值,像素x的分类结果最好。网络的权重计算如下:
(2)
(3)
其中,α为学习率,Ω为所有像素的集合,θj为网络的权重,通过改变θj可以优化网络的分类性能。
U-Net算法的分割结果如图3所示,其中虚线轮廓表示Ground truth,实线轮廓为U-Net分割结果。可以看出,U-Net可分割出肝脏区域的轮廓,但难以对肝脏细节进行精确分割,主要存在以下问题:
1)对肝脏内的病变区域存在误分割现象,如图3(a)所示。
2)受到造影剂影响,CT值变化较大的血管区域未包含在分割结果中,如图3(b)所示。
3)对肝脏边界存在过分割现象,如图3(c)所示。
图3 基于U-Net的肝脏图像分割结果Fig.3 Results of liver image segmentation using the U-Net algorithm
针对上述问题,本文采用分水岭算法对肝脏边缘进行优化,其核心思想是利用分水岭形成的区域块对U-Net的初始分割结果进行取补操作。首先进行结构元素为10的膨胀运算,并利用生成的掩膜图像提取原图信息,从而得到肝脏扩大区域。然后计算各分水岭区域块初始分割结果的像素数在区域块总像素中的占比Ti(i=1,2,…,N),从而判断是否对初始分割结果进行了优化,计算过程如式(4)所示。
(4)
利用式(5)判断是否利用肝脏扩大区域对U-Net初始分割结果进行修正,计算公式如下:
(5)
其中,A根据实验测试设定为0.5,Ii表示分水岭算法优化后的区域块,Mi表示区域块中肝脏扩大区域的像素数。由式(5)可知,当初始分割结果的像素数与区域块总像素数的比例大于0.5时,可以有效利用分水岭形成的区域块对U-Net的初始分割结果进行修正。
本文算法流程如图4所示,具体包括以下6个步骤:
步骤1使用形态学闭运算对U-Net初始分割结果进行膨胀,得到肝脏扩大区域。
步骤2把肝脏扩大区域在原图中相对应的部分提取出来。
步骤3使用分水岭算法对原图中的肝脏扩大区域进行分割。
步骤4将得到的分水岭线叠加在U-Net初始分割结果上,并计算每一个分水岭区域的像素点占比。
步骤5根据式(5)判断是否使用膨胀后对应分水岭区域的像素点替代初始分割结果,对肝脏边界进行优化。
步骤6输出最终的分割结果。
提高毕业设计的教学质量,必须要有严格的教务管理相匹配。学生依托学校的教学管理系统,按时保质完成各种文档的提交,并通过在线管理系统实现与指导老师的联系。通过教务管理可以规范毕业设计的进程,为毕业设计的每一个步骤提供质量保证。
图4 本文算法流程
分水岭算法的修正结果如图5所示,其中,图5(a)为U-Net分割结果,方框区域为误分割部分,图5(b)为误分割部分的放大图,图5(c)为误分割部分的分水线叠加图,可以直观地看出初始分割结果的像素占每个分水岭小块的比例,从而判断是否需要利用式(4)和式(5)进行修正。图5(d)和图5(e)分别为分水岭的最终修正结果及其误分割部分的修正放大图,可以看出,使用分水岭算法进行修正可解决U-Net模型存在的误分割和过分割问题,优化肝脏边界区域,提高分割准确度。
图5 分水岭修正结果
本文实验环境如下:CPU为Intel Core i9-9900X10,3.5 GHz,双GPU为NVIDIA GeForce RTX 2080Ti,128 GB。U-Net在PyTorch 1.0.1开源框架下实现。
选用Data A和3DIRCADb两个数据集进行实验。Data A数据集包含100位患者的腹部增强CT数据,由西安交通大学第一附属医院提供,每位患者的CT图像有200张左右,由专业人士使用mimics 20.0医学影像软件进行标注,从而形成Ground truth。3DIRCADb数据集包含20位患者的增强CT图像。在3DIRCADb和Data A数据集中分别选取10位患者和70位患者的CT影像作为U-Net模型的训练集,剩余患者的数据作为测试集。
本文U-Net模型的初始学习率为1×10-4,且每经过2个周期,学习率衰减20%,经过15个周期后完成训练,通过随机梯度下降进行反向传播,批次大小为4。由于参数A的取值决定了是否对分割结果进行修正,因此需要通过实验确定参数A的取值。图6给出不同A值的肝脏分割修正结果,其中实线代表Ground truth,虚线代表U-Net初始分割结果,点划线代表分水岭修正结果。可以看出,当A=0.2时,边界修正程度过大,导致最终修正结果过度修正,当A=0.8时,边界修正程度太小,使得最终修正结果与U-Net初始分割结果几乎没有差别,达不到边界修正的目的。根据实验测试,当A=0.5时,可以达到较满意的修正结果,因此,本文A值选取0.5。
图6 不同A值的肝脏分割修正结果
Fig.6 Results of liver image segmentation correction using different values ofA
图7为3DIRCADb数据集中部分肝脏数据的分割结果,其中第1行包含明显病变,第2行不包含病变,第3行包含轻微病变。图8为Data A数据集中随机选取的分割结果,其中第1行、第5行不包含病变,第2行有轻微病变,第3行、第4行包含明显病变。分别使用文献[17]算法、文献[18]算法、文献[22]算法、文献[24]算法和本文算法对两个数据集的肝脏影像进行分割,虚线代表对应算法分割结果,实线代表Ground truth。
图7 3DIRCADb数据集的部分分割结果
图8 Data A数据集的部分分割结果
图割算法基于颜色统计采样进行图像分割,其对前景和背景灰度值相差较大的图像具有较好的分割效果。由图7、图8可知,文献[17]方法能够较好地分割出灰度值均匀的脏肝区域,但是对于灰度相近的相邻组织会产生误识别现象,当肝脏内有严重病变时,分割效果较差(如图7(a)第1行所示)。文献[18]将亮度模型和外观模型融合在图割的能量函数中,提高肝脏区域与周围组织的对比度,减少非肝脏区域的误识别现象,但是当肝脏内有严重病变时,该算法并不能排除病变区域的干扰,完整地分割出肝脏区域。此外,图割算法需要人工标记前景与背景,难以实肝脏全自动分割。综上所述,图割算法并不能很好地解决肝脏分割问题,而FCN中的池化层受感受野扩大等因素的影响,易丢失细节信息,虽然文献[22]方法可在一定程度上避免肝内病变的干扰,但对于复杂背景的肝脏影像,仍然难以实现准确定位(如图8(c)第1行、第3行所示),导致脾脏被错分割为肝脏,出现误分割现象。文献[24]方法可分割出肝脏所在区域的轮廓,但无法获得肝脏的精确边界,且分割结果存在孔洞。本文在U-Net分割的基础上采用分水岭算法进行修正,由于分水岭算法对图像边缘具有良好的响应,可弥补U-Net分割结果不精确的缺陷,而U-Net可以在一定程度上排除肝脏病变的干扰,确定肝脏初始轮廓,因此本文算法的肝脏图像分割精度较高。
为了进一步验证本文算法可行性和有效性,采用MICCAI工作组提出的体积重叠误差(Volumetric Overlap Error,VOE)、平均对称表面距离(Average Symmetric Surface Distance,ASD)、最大对称表面距离(Max Symmetric Surface Distance,MSD)[29]以及医学图像中常见的DICE系数4个指标对分割结果进行评价,具体公式如式(6)~式(9)所示。
(6)
其中,A表示分割结果的区域,B表示Ground truth区域,|A∩B|表示A和B相交区域的像素数,|A∪B|表示A并B区域的像素数。EVOE的取值为0~1,其值越小表示分割效果越好。
(7)
其中,S(A)和S(B)分别表示A和B边界像素的集合,d(p,S)表示像素p到集合S的最短距离。对于完美分割的情况,DASD值为0。
(8)
由式(8)可知,DASD与DMSD的计算类似,当实线完全精确分割时,DMSD的值为0。
(9)
其中,CDICE表示两个区域相交的面积占总面积的比值,完美分割时,其值为1。
表1给出5种算法在测试集上的分割效果评价指标,可以看出,文献[22]算法和文献[24]算法的分割效果优于文献[17]算法和文献[18]算法,证明全卷积神经网络自动分层学习的特征比传统方式提取的特征更有优势。与U-Net模型相比,本文算法的CDICE值提高1.12%,EVOE指标降低1.19%,表明本文算法能较好地分割肝脏的细节区域,使得分割结果更加精细,此外,本文算法的DMSD值较小,说明其能够更好地获取肝脏边界。
表1 在测试集上各项指标的平均值及标准差
本文提出一种基于分水岭修正与U-Net的肝脏图像自动分割算法。利用U-Net模型融合浅层特征和高维特征,实现肝脏图像的初始分割,通过分水岭算法对初始分割结果的边界进行修正,得到最终的分割结果。实验结果表明,该算法能够更加准确地分割出肝脏区域,且泛化性能较好。下一步将对U-Net模型进行改进,在不增加网络规模的前提下,提高网络的泛化能力及预测精度,改善肝脏分割算法的性能。