基于三维卷积神经网络的肝脏静脉血管的分割

2019-11-27 03:22杨倩梅张学军宁小霞
关键词:卷积准确率尺寸

杨倩梅,张学军*,2,宁小霞

(1.广西大学 计算机与电子信息学院,广西 南宁 530004;2.广西多媒体通信与网络技术重点实验室,广西 南宁 530004)

0 引言

血管是人体最重要的组织之一,为各个器官组织输送氧气和营养,维持其正常的形态和功能。血管一旦出现病变,将对人们的健康产生严重的影响。经验丰富的医生可以通过血管的形态、口径等重要参数来判断是否病变,从而更好地进行疾病的诊断。然而,目前我国的影像诊断还是医生根据临床经验进行肉眼观察及手动分割,不仅耗时耗力,甚至会出现漏诊误诊。医学图像中血管的自动分割及三维可视化,不仅可以应用于医学教学、手术模拟,还可以用于疾病的术前规划和手术治疗中。

CT图像中的血管对比度低,且结构比较复杂。传统的血管分割方法主要有阈值法、区域生长法、形态学法、匹配滤波法等。PUN[1]首先在提出了基于最大熵原则选择阈值的方法,SAHOO等[2]提出了用Renyi熵代替常规熵的最大熵原则,YEN等[3]提出用最大相关性原则选择阈值。区域生长法是由ADAMS等[4]首先提出的,SENHU等[5]先标记肝静脉的种子点,沿着标记的血管的分支用变化的阈值循环渐渐地找出血管系统,CHI等[6]利用区域特征提出一种基于血管上下文的表决系统来分割血管。区域生长法普遍需要手工标记种子点,而且耗时较长。

TALEB-AHMED等[7]等提出了一种基于数学形态学的半自动分割算法,ZANA等[8]使用形态学滤波和可识别线性一致曲率结构的交叉曲率演化方法来分割血管。Ayala[9]等使用不同长度的模糊集结构单元改进文献[18]提出的算法。SUN等[10]通过综合多尺度形态学增强、模糊滤波和分水岭变换来提取造影图像中的血管树。MIRI等[11]等使用快速离散曲波变换和多结构数学形态学来精确定位血管边缘。

CHAUDHURI等[12]使用探测技术检查匹配滤波的响应,通过迭代过程并不断改变阈值将像素划分为血管和非血管两类。POLI等[13]使用了一组高斯核线性组合而成的多方向线性滤波器来提取血管。Frangi等[14]使用基于 Hessian 矩阵的多尺度线增强滤波器来分割血管状结构。LU等[15]提出了一种跟踪带分叉的冠状动脉边界的方法。

此外,还有机器学习的方法,人工神经网络(artificial neural networks, ANN)常用于对肺CT,大脑MRI及乳腺癌X线图像分割中。秦志光等[16]用多模态卷积神经网络(convolution neural networks, CNN)有效分割出了脑血管影像,王钏[17]实现了基于卷积神经网络对颈动脉和小鼠下肢血管的分割。然而,却很少有人使用卷积神经网络的方法去分割肝脏静脉血管。只有LBRAGIMOV[18]等提出了一种神经网络的算法去分割CT肝脏中的门静脉,最终得到的DSC=0.83。

传统的血管分割算法普遍需要人工参与,不能自动分割出血管,因个体差异且CT成像的设备不一样,很难用同一个算法去分割出CT中的血管。机器学习的方法也存在小血管和低对比度血管分割效果差的问题。而且医学影像灰度在各个区域里分布不均匀,病变区域分割也会出现问题。本文提出了一种基于深度学习的三维卷积神经网络结构来对腹部CT肝脏中的静脉进行自动分割,得到了不错的分割效果。

1 图像预处理

原始CT图像在肝脏区域的对比度相对较低,将增加肝脏静脉血管分割的难度。灰度变换是一种简单可行的方法,本文可以通过灰度变换来使原始CT图像中肝脏血管与其余背景图像之间的对比度增强。本文所采用的是线性灰度变换,灰度变换的公式为如式(1)所示:

(1)

式中fmax为CT图像中血管灰度值的最大值,fmin为图像中血管灰度值的最小值。原CT图像中灰度值的变换范围为[0,255],经过灰度变换后CT图像中的血管对比度增强,其余背景图像的灰度值相对得到抑制。原始CT图像如图1所示,经过灰度变换后的图像如图2所示。

图1 原始CT图像

Fig.1 Original CT image

图2 灰度变换后的CT图像

Fig.2 CT image after gradation transformation

不同于其他图像,医学图像样本数量少,不易获取,并且样本标记需要专业医师完成,需要耗费大量的人力,因此,在模型训练时很难像其他图像一样获取数万甚至数十万样本。而深度学习网络训练时样本数量过少容易产生过拟合现象,训练得到的模型泛化能力较差。因此,需要对医学图像进行分割,增加样本数据量。血管识别分割任务是像素级的识别,网络训练后需要对每一个图像子块Vi中的最中心点的像素进行分类,如果是血管,将其灰度值设置为255,非血管设置为0。

每张CT图像只包含像素点在二维平面上与其他像素点的相关性,训练过程中以二维子图为输入,只能提取像素点在平面上的特征,则损失了相邻CT图像中像素点的相关性。而实际中,每张肝脏CT图像都是肝脏切片图,多张连续的CT图像能够反映图像像素点的三维信息。不同于传统的血管识别算法以二维图像作为网络的输入,本文提出的识别算法以三维图像块作为卷积神经网络的输入,提取肝脏血管的三维特征。因此,在对一张肝脏CT图像进行识别时,需要取此图像前后各N张图像,与此CT图像构成三维CT图像V。以大小为M×M矩阵为滑动窗口,V被分割成大小(2N+1)×M×M的子块Vi。以每个图像子块中心像素点的类别作为此子块的类别,通过窗口滑动的方式对V进行分割,理论上,V可分割的子图数与一张图像像素点个数一致。

2 血管分割算法

神经网络或支持向量机(support vector machine, SVM)等一些传统的机器学习识别分类方法需要人为设计特征量,机器学习算法的性能依赖于所提取的特征的准确度。而深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题,这是深度学习与传统机器学习算法的主要的不同。

一般认为人对外界的认知是从局部到全局的,而图像的空间联系也是局部的像素之间联系比较紧密,距离较远的像素之间相关性则比较弱。因此,每个神经元没有必要对全局图像进行感知,只需要对局部进行感知即可,然后在更高层将局部信息综合起来得到全局信息。参数共享主要是指每个神经元的参数在本地连接中是相同的,并且在图像中共享卷积核。由于卷积核只能学习一种特征,这可能导致特征提取不足,因此可以通过添加多个卷积核来学习多个特征。

2.1 卷积神经网络结构

常见卷积神经网络结构见图3,主要包括卷积层,激活函数,池化层,全连接层,有些网络还有批量归一化(BN)层。

图3 常见卷积神经网络结构

卷积神经网络的主要通过卷积来实现,具体如式(2)所示:

(2)

其中K是卷积核,XL是L层的输出,它是(L+1)层的输入,X0是原始数据。低级卷积提取图像的局部特征,并将获得的特征图用作下一层的输入,并将本地信息集成在下一层中,直到最终获得全局特征。

基于三维卷积神经网络血管分割算法结构如图4所示。首先,分割后的大小为(2N+1)×M×M的图像块作为卷积神经网络的输入。然后,6块卷积层进行串联,每个块由3×3×3和1×1×1的卷积核组合在一起,激活函数使用ReLu函数,池化层采用最大值池化。此外,在后3块中引入了BN层。卷积层之后是全连接层和BN层。最后,采用cross-entropy损失函数计算损失并更新网络的参数。

图4 基于三维卷积神经网络血管分割算法的网络结构

2.2 设定卷积神经网络结构参数

三维卷积神经网络卷积操作每一层的输入都是三维图像。在三维卷积神经网络中,卷积操作如图5所示。输入有5张图像,从前向后编号分别为A、B、C、D、E、;黄色的卷积核在A、B和C三张图像组成的三维图像中滑动;粉色的卷积核,在B、C和D三张图像组成的三维图像中滑动;橙色的卷积核,在C、D和E三张图像组成的三维图像中滑动。多个卷积核对输入图像进行卷积操作,生成多个特征图,然后将特征图进行堆叠,形成新的三维图像,作为下一层网络的输入,进行新一轮的卷积操作。对于输入层,假设输入图像为M,卷积核大小为a×a×a,则至少需要(M+1-a)个卷积核,输出层特征图个数也是(M+1-a),也可以多个卷积核在相同的图层进行卷积,得到更多的特征图。神经网络的深度也受输入图像个数和卷积核尺寸的约束,要确保每一个卷积层输入三维图像深度不小于卷积核的深度。

图5 多卷积层卷积流程

在卷积核尺寸选择的过程,大尺寸的卷积核可以通过小尺寸的卷积核多层卷积堆叠得到,并且小尺寸的卷积核计算量要小于使用大尺寸的卷积核。此外,卷积核越大,要求输入层图像数量越多,在输入层图像数目一定的情况下,卷积核尺寸越大,神经网络的深度越小。因此,在三维卷积神经网络中,选择3×3×3大小的卷积核。

池化层在卷积神经网络中主要用来降低特征维度,只保留提取出来的主要特征。除此之外,池化层能够实现非线性变换,增加网络的学习能力。并且,池化层可以增大感知视野。具有平移不变性、尺度不变性。池化层主要分为两类:最大值池化和均值池化。最大值池化输出的是滑动窗口中最大值,而均值池化输出的是滑动窗口中的均值。鉴于最大值池化能更好地保留图像的纹理信息,本文在网络中采用最大值池化。

由于卷积是线性变换,如果网络结构中只使用卷积层,每一层的输出都是输入的线性变换,此时,无论网络怎么构建,输出都是输入的线性变换。线性模型的表达力较差,无法完成非线性分类的任务。激活函数能够通过非线性函数把特征保留并映射到非线性空间,这也是神经网络能完成非线性任务的关键。激活函数最常用的有simoid、tanh、ReLu等几种。由于使用ReLu激活函数收敛较快,而且不会出现梯度饱和的现象,此外,ReLu函数相比于simoid和tanh函数计算比较简单,所以本文在网络结构中使用ReLu作为激活函数。

Batch Normalization是由google提出的一种训练优化方法。使用BN层不但能够解决梯度消失与梯度爆炸的问题,还可以加快网络学习速率。此外,BN层还可以替代drop out减小网络过拟合的风险。BN层可以放在网络中的任何位置,但是一般放在线性变换之后,非线性变换之前。

全连接层的每一个结点都与上一层的所有结点相连,用来把前面网络结构提取到的特征综合起来。全连接层在整个网络结构中起分类器的作用。卷积层、池化层、激活函数等操作是把原始数据映射到隐层特征空间,而全连接层的作用是将特征映射到样本的标记空间中。全连接层由于采取每个结点都和上层结点互连的方式,所以此层的参数非常多。

3 血管分割实验

本文提出的算法将目标分割任务转化为常见的二分类任务。与传统方法不同,本文提出的算法使用三维数据作为原始输入数据。在实验中,原始CT图像的尺寸为512×512,格式为bmp,分割的图像块用作输入样本。在实验中,使用每个像素作为分段样本,足够的样本大小可以避免欠拟合。此外,本文使用BN层来避免过度拟合。分别有14 976个正样本和负样本,其中75 %被用作训练集,25 %被用作测试集,此外,训练集和测试集不交叉。所有训练样本随机分为256批次,实验设置50个周期。图像分割尺寸设定为11×11×11、11×25×25、11×31×31、11×49×49、11×65×65,通过比较不同分割大小下识别结果的准确性来选择最佳分割尺寸。

本实验中血管的分割结果主要通过Dice相似系数(DSC),精确度Pr和召回率Re来评估。其计算公式如下:

DSC=2TP/(2TP+FN+FP),

(3)

Pr=TP/(TP+FP),

(4)

Re=TP/(TP+FN),

(5)

TP是真阳性,表明血管的自动分割和手动分割的结果是一致的;FP为假阳性,表明自动分割与手动分割结果不一致,非血管被错误地分类为血管;FN是假阴性,将血管错误分类为背景图像。

本文通过tensorboard进行实时观察训练集和测试集准确率,样本尺寸为11×25×25时,训练集和测试集准确率及损失率变化曲线见图6;样本尺寸为11×49×49时,训练集和测试集准确率及损失率变化曲线见图7。从图6、图7中可以看出,训练样本为11×25×25的训练集和测试集趋于稳定之后的准确率略高于训练样本为11×49×49的训练集和测试集准确率,也表明了训练样本大小为11×25×25时,训练出来的血管识别模型的性能更具有一定的优越性。

(a)训练集的准确率

(b)训练集的损失率

(c)测试集的准确率

(d)测试集的损失率

图6 尺寸为11×25×25时,训练集和测试集准确率及损失率变化曲线

Fig.6 Accuray and loss rate curves of training and validation sets when size is 11×25×25

(a)训练集的准确率

(b)训练集的损失率

(c)测试集的准确率

(d)测试集的损失率

图7 尺寸为11×49×49时,训练集和测试集准确率和损失率变化曲线

Fig.7 Accuray and loss rate curves of training and validation sets when size is 11×49×49

表1 三维模型的DSC,准确率,召回率

表2 二维模型的DSC,准确率,召回率

从表1和表2可以看出,所提出的三维卷积神经网络算法的DSC,准确度和召回率明显优于使用二维数据作为输入的时候,这表明用作输入的三维数据可以提取更多的血管特征。通过比较不同样本大小的实验结果,笔者可以注意到,当单张图像样本大小为25×25时,无论二维或三维数据如何,实验结果都是最佳的,有可能是因为当样本大小为25×25时能够极大程度上保留血管图像的信息,样本间的差异不会特别大,因此通过多层卷积神经网络能够更好地学习到血管的特征。图8表示用所提出的算法分割得到的血管和人工手动分割的血管的一个对比图。图9是使用25张连续的CT图像的血管的三维可视化。虽然大多数血管可以使用本文提出的网络结构来识别,如图9(b)所示,但仍有一些非血管被错误分类成血管。在未来的实验中,本文仍然需要做很多工作来改善这些问题。

(a)原始CT图像

(b)手动分割结果

(c)实验分割结果

图8 金标准和实验分割结果对比

Fig.8 Comparison of gold standard and experimental segmentation results

(a)金标准

(b)实验分割结果

图9 三维血管分割

Fig.9 Three-dimensional vascular segmentation

4 总结

本文提出了一种基于三维卷积神经网络的肝静脉分割算法。在提出的算法中,本文将分割任务转换为分类任务,通过对每个图像子块中心的位置点的像素进行分类来实现血管分割。另外,以像素为单位的分类可以解决CT图像样本较少的问题。所提出的算法将三维数据作为输入,通过多层的卷积神经网络可以提取CT图像的三维特征,而不限于平面特征。实验结果表明,该算法能够有效地分割血管。DSC能达到92.43 %,准确率和召回率分别达到86.11 %和99.76 %。然而,该算法需对CT图像做子图像块的分割,分割存在大量重叠,这导致算法的计算复杂性增加。在未来的工作中,本文将尝试新的方法来实现有效的血管分割,同时降低时间复杂度。

猜你喜欢
卷积准确率尺寸
CIIE Shows Positive Energy of Chinese Economy
基于3D-Winograd的快速卷积算法设计及FPGA实现
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
卷积神经网络的分析与设计
从滤波器理解卷积
高速公路车牌识别标识站准确率验证法
基于傅里叶域卷积表示的目标跟踪算法
D90:全尺寸硬派SUV