基于深度学习的心脏核磁共振图像自动分割算法*
2022-09-21刘从军徐佳陈肖志勇柴志雷
刘从军,徐佳陈,肖志勇,柴志雷
(1.江苏科技大学计算机学院,江苏 镇江 212003;2.江南大学人工智能与计算机学院,江苏 无锡 214122)
1 引言
心血管疾病是世界三大常见病之一,其致死率已经达到了每年1 500万人[1]。心脏核磁共振成像技术CMRI(Cardiac Magnetic Resonance Imaging)是诊断心血管疾病的重要手段之一,被视为评估心脏功能的金标准。因此,如何对CMRI进行精确的分割已经成为一个重要的医学图像学问题。
在过去的几年中,卷积神经网络在医学图像学领域展现出了强大的分割能力。比如,U-Net(U-shaped Network)[2],自2015年提出以来不断发展成为了医学图像分割任务中最常用的框架,人们对其的改进层出不穷。Zhang等[3]提出了可以连接多尺度特征的MDU-Net(Multi-scale Densely connected U-Net);Chen等[4]提出了适用于样本数量较小的桥连接网络Bridge U-Net;Oktay等[5]在U-Net结构中添加注意门机制(Attention Gate),使得目标器官在训练过程中能够获得更高的权重,让网络更集中于分割目标器官;孙锦峰等[6]根据肝静脉和肝门静脉在三维结构上的差异,将2个U-Net结合起来提出了一种自动学习全部肝血管特征的W-Net。同时,由于医学图像大多数为3D数据,研究人员对U-Net的研究也扩展到了3D领域。Milletari等[7]在U-Net的基础上提出了适用于3D数据的V-Net;Isensee等[8]提出了一种基于自适应框架的nnU-Net(no new U-Net),在MICCAI (international conference on Medical Image Computing and Computer Assisted Intervention)2018年十项全能的比赛中取得了较好的成绩;Huang等[9]提出的3D U2-Net(Universal U-Net)利用可分离卷积获取跨通道相关性。
3D网络的表现虽然优于2D网络,但没有考虑到切片的厚度,在实际情况下切片的厚度也是影响分割结果的一个重要因素。文献[10]已表明,当数据集Z轴较厚时,Z轴的信息量比较稀疏,3D卷积的边界效应会影响中间可用信息,从而影响分割效果。因此,对于Z轴切片较少的厚层数据,2D网络的分割效果往往会好于3D网络。本文选取的ACDC(Automated Cardiac Diagnosis Challenge)[11]心脏分割挑战数据集为短轴动态磁共振图像,是典型的厚层数据,其Z轴切片数仅为8~16,厚度为5~10 mm,因此Z轴的信息量比较稀疏。针对这一情况,本文选择以2D U-Net++[12]作为网络的基础框架,构建了由5个编码块与10个解码块组成的U型全卷积神经网络MFF U-Net(Multiscale Feature Fusion U-Net)。
本文所提算法的特点:首先,在编码部分,为了充分利用每一次下采样生成的特征图信息,本文在残差模块(Res Block)[13]的基础上引入了密集连接网络dense-Net[14]中密集连接的思想,提出了密集残差模块,显著地增加了特征图的复用率,从而提高了网络的分割能力;其次,在解码部分首先参考VGG(Visual Geometry Group)的思想,用多个卷积核来扩大网络的感受野,并利用长距离依赖模块GC block(Global Context block)[15]来获取图像全局的上下文信息,从而使得网络编码还原的结果更为可靠;最后,考虑到目标器官的唯一性与连贯性,本文在网络的最后添加了获取最大连通域以及填充细小孔洞的后处理操作。
2 自动分割算法
2.1 数据集及其预处理
实验数据选取ACDC心脏分割挑战数据集,该数据集包含150名志愿者的舒张末期(ed)与收缩末期(es)的心脏核磁共振图像。该数据集将其中的100名志愿者的相关图像划分为训练数据集,将剩余的50名志愿者的相关图像划分为测试集。该数据集未公布测试集数据对应的真实标签图(Ground Truth),本文的实验结果来源于官方在线评估网站(https:∥acdc.creatis.insa-lyon.fr/)。数据集的真实标签由2名超过10年经验的医生手动绘制。每幅图像的标签有4个值:0,1,2和3,分别表示背景、右心室(Rv)、心肌(MYO)和左心室(Lv)。
本文对ACDC数据集做了如下预处理:(1)为消除异常点(Outliers)对于图像的影响,本文选择图像中从小到大排列第1%与第99%的灰度值作为鉴定异常值分布的界限来修正异常值。并对每一幅图的灰度值进行归一化处理。(2)对于图像沿Z轴进行二维切片时出现的大小不一的情况,本文将每一张切片裁剪为224×224大小,以方便网络训练和进一步减少无关信息对于分割结果的影响。
2.2 密集残差模块
受文献[16]的启发,本文在U-Net++的编码部分应用了密集残差模块。
残差模块是将网络单元的输入x与输出F(x)相加后再作为输入一起输入到下一个单元,如式(1)所示:
H(x)=F(x)+x
(1)
残差模块利用式(1)中包含的恒等映射:当F(x)=0时,H(x)=x,将相对低层的输入直接传播到任意高层单元,在一定程度上解决了网络退化的问题。
与残差模块不同,dense-Net提出了一个更为密集的连接方法,它使得每一个网络单元都会接受前面所有单元的输出作为其额外的输入,如式(2)所示:
xl=Hl([x0,x1,…,xl-1])
(2)
其中,下标l表示当前网络单元所在的层数,Hl(·)表示第l层的非线性激活函数,[·]表示通道连接操作。由式(2)可以看出,dense-Net中的密集连接是将其他层的输入与当前层的输入进行通道连接,而非直接相加。这种密集连接实现了特征复用,缩短了层与层之间的距离,有利于特征的传播。同时,它也可以将底层的输入直接传播到任意高层单元,同样起到了避免网络退化的作用。
由文献[17]可知,将残差模块与dense-Net相结合可以进一步强化特征传播,实现特征复用,提升网络性能。因此,本文设计了在残差模块中引入密集连接思想的密集残差模块DR block(Dense_Res block),密集连接残差块内部的卷积,缩短残差块内部的距离,其具体结构如图1所示。图1中CL表示第L层的通道数,H和W分别表示特征图的高和宽。图1中一个卷积层包括3个部分:Conv(3×3)、BN和ReLU。其中,Conv(3×3)表示卷积核大小为3×3的卷积、BN表示批量归一化,ReLU是线性修正函数。
Figure 1 Structure of DR block图1 密集残差结构图
密集残差模块将第1卷积层的输出与第2层的输出密集连接后再输入到压缩(Compression)层。压缩层是由卷积核大小为1×1的卷积、BN与ReLU函数构成,其作用是压缩特征图的通道数,避免网络过宽。图1上半部分是一个1×1的卷积w1和批量归一化操作,其作用是增加当前单元输入的通道数,使其与压缩层的输出相一致。最后,再将右半部分的输出与压缩层的输出相加,得到该模块的输出。
2.3 VGG-GC 模块
鉴于图像中左心室、右心室、左心肌的位置关系(即左心肌包裹着左心室,右心室紧贴着左心肌)较为固定,解码过程中能否尽可能地获取全局的上下文信息显得尤为重要。基于此,本文在解码部分参考VGG的思想,利用多个小卷积核代替大卷积,以此来增加网络的感受野,并结合长距离依赖模块,提出了VGG-GC模块。
普通的n×n大小的卷积核在进行卷积操作时,处理的仅仅是n×n大小的局部的信息。通过增大卷积核尺寸的方法来增大感受野,会导致计算量暴增,从而降低网络计算效率。VGG模块的基本思想是利用多个3×3的小卷积核来代替5×5和7×7的大卷积核。这样做的好处在于利用小卷积核来代替大卷积核,可以明显地减少参数量;而且卷积核数量的增加可以使网络的感受野更广,对于不同类别的区分能力更强。然而一味地通过添加3×3的卷积核来达到大卷积核的效果又会导致网络深度过深,易产生网络退化、梯度爆炸等问题。为了解决这一问题,本文设计了VGG-GC模块,其结构如图2所示。该模块利用2个3×3大小的卷积核代替5×5的卷积核,并在第2个卷积后面添加了长距离依赖模块,使网络在上采样过程中可以获得全局的上下文信息,进一步扩大卷积的感受野。
长距离依赖模块的主要思想是获取一个全局的注意力矩阵(Attention Map)来聚集全局的上下文信息,并对所有位置共享该矩阵。该模块可以抽象为2个步骤:(1)获取图像全局信息:在获取全文信息阶段首先利用卷积wk和Sigmoid函数来获取图像权值;再将得到的权值与图像进行元素相乘,得到全局信息。(2)特征信息转换:利用2个1×1的卷积wv1与wv2来捕获通道间的依赖关系,并为了降低优化难度在2个卷积之间加入层归一化(Layer Normalization)[18]。长距离依赖的计算如式(3)所示:
(3)
(4)
其中,Np为图像中所有的位数;i的取值在[1,Np],表示第i个位置;xi与zi分别是输入与输出;αj是获取全局信息阶段得到的权值;LN(·)是层归一化操作。
Figure 2 Structure of VGG-GC block图2 VGG-GC模块结构图
2.4 网络模型
本文所提出的算法以U-Net++作为基本网络框架。与传统U-Net相比,U-Net++通过将不同尺寸的子U-Net结构融合在一个网络里解决了U-Net到底要有多深的问题。
U-Net结构由编码块、解码块与跳跃连接组成。
跳跃连接将编码块学习到的高层特征图与上一层解码块还原出的特征图进行通道连接后再进行解码操作。图3a是深度为2的U-Net。
U-Net++则在U-Net的基础上做了更进一步的改进,它将处于同一层中不同尺寸的子U-Net的解码块特征通道连接后输入到后面的所有模块中去,因此U-Net++的每一个编码块的输出结果如式(5)所示:
(5)
由式(5)可以看出,在U-Net++的结构中深层网络可以直接获得浅层网络的还原结果,这样可以使网络自己去学习不同深度特征的重要性。同时,将深层网络的结果与浅层网络的结果融合起来,又避免了在下采样过程中出现信息丢失的情况。图3b是深度为3的U-Net++,其融合了深度为2和3的2个子U-Net结构。
Figure 3 Framework of U-Net图3 U-Net算法结构
本文算法的网络结构如图3c所示,采用的是5层的U-Net++的架构。该架构包含5个编码块与10个解码块,网络每一层的通道数由上往下分别是32,64,128,256和512。编码块的内部结构包括密集残差模块DR block与最大池化层。最大池化层的卷积核大小为2×2,步长为2,其作用是将特征图缩小为原有的1/2。解码块由上采样(Upsampling)层与VGG-GC模块组成。上采样层的作用是将缩小的特征图还原成原始尺寸,然后通过跳跃连接与对应的编码阶段形成的特征图合并,最后输入到VGG-GC模块。最后网络的输出结果通过Sigmoid函数输出。
本文算法是将三维数据沿着Z轴做二维切片后再进行训练。这种方式虽然适合厚层数据,但因为在训练过程中忽略了图像三维序列上的相关信息,会在少量切片上出现分割异常点。为了尽可能地消除这些异常点,本文对于改进后的U-Net++的分割结果还进行了后处理:考虑到目标器官的唯一性,选取每个目标器官的最大连通域;考虑到双心室的连贯性,对双心室进行细小孔洞填充。本文连通域与空洞的判定方式都选用的是8邻接判定,细小孔洞的面积阈值为5 000。
2.5 损失函数
本文使用联合损失函数,包括交叉熵(Cross Entropy)损失函数与Dice损失函数。交叉熵损失函数常用于图像分割领域,它表示图像中每一个像素与真实标签进行结果对比的平均值。Dice损失函数是评价2个样本的重叠部分,重叠部分越大,Dice损失函数值就越小,分割效果越好。本文使用的联合损失函数的计算公式如式(6)所示:
L=Ldice+0.5Lce
(6)
其中,Lce表示交叉熵损失函数,其定义如式(7)所示:
(1-y(i))log(1-logp(i)))
(7)
Ldice表示Dice损失函数,其定义如式(8)所示:
(8)
其中,N为样本总数,i表示第i个样本,y(i)表示第i个样本的真实标签值,p(i)表示第i个样本的预测值。
3 实验与结果分析
3.1 实验环境与参数设置
实验选用的处理器为Intel Core i7,显卡为NVIDIA GTX1080Ti。深度学习框架是1.4.0版的PyTorch。网络的优化器选用了Adam[19]优化器,学习率设置为0.03。图4为损失函数的收敛图。
Figure 4 Convergence of the loss function图4 损失函数收敛图
3.2 实验环境与参数设置
为定量评估本文算法的性能,使用在线评测网站给出的2种评价指标,包括相似性系数DSC(Dice Similarity Coefficient)与豪斯多夫距离HD(Hausdorff Distance),对舒张末期(ed)与收缩末期(es)的左心室(Lv)、左心肌(MYO)和右心室(Rv)的分割结果进行评估。DSC和HD的计算分别如式(9)和式(10)所示:
(9)
HD(P,Y)=max{dpy,dyp}=
(10)
其中,P表示算法的预测结果,Y表示真实标签值,Y∩P代表预测结果与真实标签值的交集,p和y分别表示P与Y上对应的像素点。
本文提供的精度值均由官方在线测试平台给出。
3.3 后处理对实验结果的影响
为探究后处理对于目标器官分割结果的影响,本文对比了在测试集上添加了后处理的分割结果与没有添加后处理的分割结果。表1和表2分别展示了相似性系数与豪斯多夫距离上的结果对比。
由表1和表2可以看出,后处理在不影响相似性系数精度的基础上有效地减小了目标器官的豪斯多夫距离。这是因为选取最大连通域可以有效地删除异常点,填充细小空洞可以使分割结果更光滑,更加接近真实标签图。
Table 1 Comparison of DSC with post-process and without post-process
Table 2 Comparison of HD with post-process and without post-process
图5显示了随机选取的训练集中2组数据的分割结果。该2组数据在分割时都将无关信息误分割成了目标器官,违背了目标器官的唯一性,且第2个例子中左心室存在孔洞。这2种异常由于所占像素较少对相似性系数精度的影响较小,但对豪斯多夫距离的影响较大。观察经过后处理的分割结果可以看出,通过选取最大连通域和填充细小孔洞可以有效地消除这类问题。
Figure 5 Comparison of effect with post-process and without post-process图5 后处理使用前后的效果对比
3.4 网络结构对于实验结果的影响
为了探究VGG-GC 模块以及密集残差模块对双心室和左心肌分割效果的影响,本文在原始U-Net++架构的基础上分别添加VGG-GC block与密集残差模块,训练出了2个算法:VGG-GC block+U-Net++算法和VGG-GC block+dense_res block+U-Net++算法,分别记为GC-U-Net++和MFF U-Net。同时也训练了原始的U-Net++算法与原始的U-Net算法。其相似性系数和豪斯多夫距离对比结果分别如表3和表4所示。可以看出,本文算法在2个指标上都优于其他算法。
对比表3和表4中GC-U-Net++算法与原始U-Net++算法的结果可以看出,通过添加VGG-GC模块对所有位置共享图像的全局上下文信息,可以使网络较好地学习目标器官之间的关系,增强网络对于目标器官形状大小多变的适应能力,使其具有较好的鲁棒性。
Table 3 DSC comparison of four algorithms
Table 4 HD comparison of four algorithms
对比GC-U-Net++算法与MFF U-Net的结果可以看出,在GC-U-Net++的基础上加入密集残差模块后分割精度有了进一步的提升,这说明密集残差模块可以有效地增加特征图的复用率,提高网络的抗退化性,从而提升网络的性能。
Figure 6 Comparison of the 3D segmentation results of four algorithms图6 4种算法的三维分割效果对比
为了更好地说明本文所提MFF U-Net算法的分割性能,本文在验证集中随机选取舒张期末期(ed)和收缩期末期(es)图像在4种算法下的分割效果图。如图6所示,其中前2行为舒张期末期图像,后2行为收缩期末期图像。从图6可以看出,直接用U-Net分割的效果不太理想,尤其是左心室与左心肌的边界分割得比较模糊。使用U-Net++后分割效果有了一定的改善,但依旧与真实标签图存在较大的区别,甚至在一些数据中出现了左心肌外包了右心室的情况。在U-Net++中添加长距离依赖模块有效地避免了这种失误,这说明长距离依赖模块在每个单元中共享了图像的全局上下文信息,使得网络能够更好地学习目标器官的相对关系,从而具有更好的鲁棒性。再对比图6中GC-U-Net++与MFF U-Net的分割结果可以看出,添加了密集残差模块网络的分割结果更加接近真实标签图,这说明密集残差模块能够有效地实现特征复用,缩短网络内部距离,更有利于特征的传播。本文所提的MFF U-Net相较于其他的对比算法可以更为准确地分割出目标器官,且分割细节更为细腻,分割效果更加接近真实标签图。图7为MFF U-Net在测试集上的相似性系数箱型图。
Figure 7 DSC box diagram of the proposed algorithm on test set图7 本文算法测试集相似性系数箱型图
3.5 与其他算法的实验对比
本节将本文算法与其他论文所提出的算法进行对比。
Grinias等[20]提出的基于时间序列对整个感兴趣区域的切片进行跟踪的算法记为Algorithm1;Wolterink等[21]提出的将随机森林与卷积神经网络相结合的算法记为Algorithm2;Khened等[22]提出的用密集卷积网络进行分割的算法记为Algorithm3;Chang等[23]提出的利用YOLO[24]网络提取感兴趣区域,再将感兴趣区域反馈到全卷积网络的算法记为Algorithm4;Liu等[25]提出的残差双向长短记忆网络记为Algorithm5。实验结果如表5和表6所示。
由表5和表6可以看出,本文MFF U-Net算法通过优化U-Net++的编码结构与解码结构以及添加后处理操作有效地完成了双心室与左心肌的分割任务,获得了较好的性能指标。
4 讨论
U-Net是医学图像分割领域最常用的神经网络框架。U-Net++通过共享编码块来融合不同尺寸的U-Net,并将所有子网络的解码结果都连接起来。这样做不但解决了网络到底要有多深的问题,也使得网络的内部连接更为紧凑,减少了编码块与解码块之间的信息差距。本文研究基于U-Net++网络,通过分析左右心室与左心肌的特性,改进了U-Net++的编码结构与解码结构,并在网络的最后添加了后处理操作。通过大量的实验结果表明,本文改进后的编码块能够提取出更加具有区分度的特征图,这是因为本文通过密集连接残差块内部卷积层,提高了特征的复用率,避免了一些有用信息在卷积过程中丢失。但是一味地增加残差块内部卷积核的数量会形成高密度的密集连接块,这样反而会导致分割精度的降低,这主要是因为在卷积核过多的情况下进行密集连接,本应舍去的无用信息的数量也会增加,进而影响实验结果。本文在解码阶段还结合了长距离依赖模块与VGG模块来使得网络在解码过程能最大程度地获取图像的全局上下文信息,以此来限制网络产生不符合目标器官相对关系的分割异常点。然而由于做的是二维切片,算法依旧会产生一些异常点,这些异常点在二维上符合目标器官的相对关系,但在三维上忽略了目标器官的连贯性与唯一性,因此本文在网络最后又增加了后处理操作,通过选取最大连通域和填充细小孔洞来解决该问题。
Table 5 DSC comparison of five algorithms
Table 6 HD comparison of five algorithms
本文在舒张期末期的分割结果上取得了相当不错的效果,然而对收缩期末期的左心室的分割效果还不太理想。后续将针对这一问题展开研究工作。
5 结束语
针对左右心室和左心肌的特性,本文提出了MFF U-Net算法:首先在编码部分,通过密集连接残差模块内部的卷积,提高特征图的复用率,使得网络能提取更多的有效特征;在解码部分,利用多个卷积核与长距离依赖模块尽可能地提高了网络的感受野,使得每次解码过程都能获得图像的全局上下文特征,让分割结果更加接近真实图像。从实验结果可以看出,本文提出的算法相较于传统的U-Net、U-Net++和现有的其它算法,其分割准确性都有明显的提升。