基于卷积神经网络和超像素的CT图像肝脏分割引言肝癌作为全球发病率较高的恶性肿瘤之一,正严重威胁我国人民的生命和健康[1]。据报道,原发性肝癌已成为我国第四位常见的恶性肿瘤以及第三位的肿瘤致死原因,每年新增病例约占全球一半以上[2],有效地治疗肝癌亦成为亟待解决的重大社会问题。随着医学影像技术的发展,尤其是计算机断层扫描(Computed Tomography,CT)技术在肝癌治疗中的广泛应用,对医生进行早期诊断、术前规划有很大帮助。从腹部CT 图像中准确地分割出肝脏是肝癌计算机辅助诊断、手术规划、医学影像导航的第一步,也是极其重要的一步。然而,由于肝脏形状的高度个体差异、肝脏内部灰度不均匀、与胃等邻近器官的边界较弱(图1)、以及与邻近器官的灰度差异小等因素,使得肝脏分割成为一项具有挑战性的任务,吸引了大量研究人员的关注。 图1 肝脏的CT影像结构图 在传统临床应用中,主要依赖于经验丰富的专业医师从CT 影像中进行手工肝脏分割,但这种方法效率十分低,需要消耗大量时间和精力,医师的主观因素对分割结果会产生较大的影响。为了提高肝脏分割的效率和精度,引入计算机图像处理技术,辅助医师分割肝脏CT 图像是必然的趋势。目前常用的肝脏分割方法[3]可分为以下两类:半自动分割和全自动分割。半自动肝脏分割方法常常需要人为进行种子点的选取等操作,分割效率较低。全自动分割过程中不需要人为的干预,具有较高的分割效率。Luo 等[4]根据肝脏自动算法中使用的图像特征,将肝脏分割方法分为以下三类:基于灰度的方法、基于结构的方法和基于纹理的方法。Punia 等[5]回顾了用于肝脏图像自动分割的机器学习方法,主要分为:基于神经网络的方法、基于支持向量机的方法、基于聚类的方法和组合方法。 Zhou 等[6]提出了一种非对比X 线躯干CT 图像中肝脏区域全自动分割的概率模型,利用概率模型估算空间位置计算出肝脏的分布概率,实现肝脏的自动分割,但分割精度不够理想。这些传统的分割方法结果好坏很大程度上依赖于配准的过程,由于肝脏较大的形状变化,使得配准难度变高,对结果影响较大。目前深度学习在医学图像分割领域的应用受到了越来越多研究者的关注,Jin 等[7]以3D U-Net 网络[8]为基础,提出一种提出了一种三维混合残差注意感知分割方法RA-UNet,能够精确分割出三维的肝脏和肝肿瘤CT 图像,但需要很高的硬件条件和大量训练时间和训练样本。本文根据肝脏CT 图像中的分割难题,提出了一种基于卷积神经网络(Convolutional Neural Network,CNN)和简单线性迭代聚类(Simple Linear Iterative Cluster,SLIC)超像素算法的肝脏分割方法。首先利用CNN 对CT 图像中的肝脏部位进行检测,以获取其大致区域及坐标,再利用SLIC 对图像进行分割,获得初步的肝脏分割结果,最后再通过腐蚀、膨胀、中值滤波等进行后处理,得到更加准确的结果。 1 方法1.1 方法的整体流程图2 为本文方法的整体流程。主要由两个阶段组成,一个是以卷积神经网络为基础的目标检测;另一个是以SLIC 为基础的图像分割。首先原始CT 图像经过预处理,将DICOM 格式转换成JPG 格式,送入CNN 目标检测模型中,产生目标检测框,获取大致的肝脏区域坐标,为下一阶段做准备。在图像分割阶段,原始CT 图像经过SLIC处理之后会产生很多小的像素块,即超像素。属于肝脏区域的超像素能够较好保留肝脏的边缘特征,以及有相似的像素值,故设置一个阈值,组合相似超像素块,得到整体的肝脏区域。为了将肝脏区域从原图中分割出来,利用上一阶段获取的肝脏区域坐标,查询在得到整体的肝脏区域之后此坐标区域内的像素,找出出现频率最高的像素值,此像素值就是肝脏区域的像素值,假设其为a。因此在以CNN 为基础的目标检测阶段中,得到的检测框只需符合框内大部分区域是肝脏即可,无须特别精确的包围整个肝脏。之后在得到整体的肝脏区域基础上,将其中像素值为a 的都设为1,其余的像素值都设为0,得到一张只有肝脏的二值图像,将肝脏区域从原图中分割出来。产生的分割结果有一些孔洞和边缘毛刺,最后做一些腐蚀、中值滤波等后处理,使效果更好。 图2 方法的整体结构图 1.2 基于CNN的目标检测卷积神经网络是一种深层前馈型神经网络常用于图像领域的监督学习问题,比如计算机视觉、图像识别、目标检测等。1998 年,Lecun 等[9]提出了最初的CNN 模型,并在之后进行了完善,在Krizhevsky 等[10]取得2012 年ImageNet 竞赛冠军之后,CNN 在图像识别领域几乎成为深度学习的代名词,在其他领域中也有越来越多的应用。卷积神经网络主要由卷积层、池化层和全连接层组成,一个卷积神经网络中有一个或多个卷积层,通常每个卷积层后都要跟随一个池化层,最后连接一个或多个全连接层。 图3 SSD网络模型的结构 SSD(Single Shot MultiBox Detector) 是Liu 等[11] 在ECCV 2016 上提出的一种基于CNN 的目标检测算法,是目前主要的检测框架之一,其模型结构见图3。SSD 网络总体由两部分组成,前部分(前五层)主要采用卷积网络初步提取图像特征,以VGG16 网络结构作为基础,包括输入层、卷积层、池化层。后部分将卷积层代替原始全连接层,卷积层逐层递减,以多尺度滑动窗口特征提取层级结构为主体。分别将VGG16 的全连接层fc6 和fc7 转换成33 卷积层conv6 和11 卷积层conv7,同时将池化层pool5 由原来的stride=2 的22 变 成stride=1 的33。然 后 移 除dropout 层和fc8 层,并新增一系列卷积层。 SSD 同样采用回归方法获取目标对象位置和类别,不同的是SSD 使用的是目标对象位置周围的特征而非全图的特征。SSD 各卷积层将特征图分割为若干相同大小的网格,称为feature map cell,对每个网格设定一系列固定大小的包围盒,称为default boxes。然后分别预测default boxes 的偏移以及类别得分,最终通过非极大值抑制方法得到检测结果。default boxes 的作用类似于Faster R-CNN 的anchor机制,不同的是default boxes 作用于不同层次的多个特征图上,这样可以利用多层的特征以最佳尺度匹配目标对象的实际区域。 SSD 模型要对目标的位置和类别同时进行预测,故其损失函数L 包括定位损失函数Lloc 和置信度损失函数Lconf定义为: 式中,N 代表匹配完整物体框的默认框数目;α 为权值,初始值为1;x 为默认框与物体框的匹配结果;c 为类别的置信度;l 为预测结果的位置信息;g 为物体框个数。 1.3 基于SLIC的图像分割在图像中由一系列位置相邻且颜色、亮度、纹理等特征相似的像素点组成的小区域,作为一个整体来处理,这个整体就称之为超像素。超像素大多保留了进一步进行图像分割的有效信息,且一般不会破坏图像中物体的边界信息。 超像素生成的算法大致可以分成基于图论的方法和基于梯度下降的方法,SLIC 就是一种基于梯度的超像素分割算法,由Achanta 等[12]提出。Wu 等[13]曾提出基于SLIC超像素的图像分割方法,实现肝脏在三维CT 图像上的自动分割。SLIC 算法主要思想将图像从三维RGB 颜色空间转移到三维CIELAB 颜色坐标空间。每个像素由一个5 维向量(l,a,b,x,y)表示,其中(l,a,b)为像素LAB 的RGB 颜色,(x,y)为像素的图像坐标。两个像素(xi,yi)和(xj,yj)的相似性由距离Dij 表示。计算公式如下: 式中,s 为超像素的面积,其与超像素块中的像素数量相关;m 是超像素的聚合度。我们称之为种子点的初始聚类,是通过均匀地划分图像而生成的。然后,通过梯度上升方法更新超像素区域,直到它通过计算超像素边界的不同两侧上的两个像素之间的距离来收敛。 SLIC 主要优点如下:生成的超像素如同细胞一般紧凑整齐,邻域特征比较容易表达。这样基于像素的方法可以比较容易改造为基于超像素的方法,不仅可以分割彩色图,也可以兼容分割灰度图。需要设置的参数非常少,默认情况下只需要设置一个预分割的超像素的数量。相比其他的超像素分割方法,SLIC 在运行速度、生成超像素的紧凑度、轮廓保持方面都比较理想。 1.4 后处理当SLIC 图像分割阶段处理完之后,产生的初步分割结果会有一些孔洞和边缘毛刺。膨胀运算可以用来填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声,腐蚀运算可以用来消除小且无意义的目标物。闭运算是对图像进行先膨胀后腐蚀的操作,可以用来弥合较窄的间断和细长的沟壑,消除物体间小的孔洞,填补轮廓线中的断裂。中值滤波是一种非线性数字滤波器技术,经常用于去除图像或者其他信号中的噪声,是图像处理中的一个常用步骤,它对于斑点噪声和椒盐噪声来说尤其有用,保存边缘的特性使它在不希望出现边缘模糊的场合也很有用。 因此,本文采用膨胀、闭运算和腐蚀等形态学运算来处理填充其孔洞,最后经过中值滤波使图像边缘变得光滑,图4 示出了整个后处理流程及相应结果。 图4 后处理流程图 2 实验及结果2.1 数据集和工具本文采用公开数据集3DIRCADb(https://www.ircad.fr/research/3dircadb/)作为实验数据集,该数据集中有20 套CT 扫描影像(共2821 张),其中10 位为女性检查者,10位为男性检查者,在20 位检查者中75%患有肝癌。 硬件设备(操作系统:Windows 10 64 位;内存:16 G;GPU:AMD Radeon R9 M370X;CPU:Inter Core i7-4870HQ(非NVIDIA 显卡,只能用CPU 训练)。 软件工具包括TensorFlow:1.9(CPU 版);Python:3.5.2(Anaconda 4.2.0);Tensorflow object detection API(https://github.com/tensorflow/models);LabelImg。 2.2 实验我们随机挑选数据集的其中10 位病人的数据(共1374张CT 影像)作为训练集,2 位病人的数据(共287 张CT 影像)作为测试集。我们主要运用的工具是谷歌的Tensorflow object detection API,是一个构建在TensorFlow 之上的可以简化构建、训练、部署目标检测模型的开源框架,十分便于目标检测的神经网络训练。 2.2.1 创建训练/测试数据集 首先我们将所有的数据从DICOM 格式转化成JPG 格式:肝脏的CT 值一般在40~70 之间,设定好窗位后进行归一化处理。然后对12 位病人的数据进行人工标记,根据数据集提出的金标准标记出肝脏区域,使用的工具为LabelImg,如图5 所示,其中红色框区域就是手动标记的肝脏区域。标注完成后保存为同名的xml 文件,为标准的VOC 目标检测数据集格式。最后调用API 库中的数据格式转化程序 create_pascal_tf_record.py,将数据集转化为TFRecord 格式。 图5 对肝脏区域进行标记 2.2.2 肝脏目标检测 创建完训练/测试数据集后,将其送入API 进行训练,选择的模型是SSD 网络模型。实验中设置初始学习率为0.004,衰减率为0.95,训练步数设定为50000 步。使用CPU 作为训练硬件平台,随着训练迭代次数逐步增加,模型的损失函数L 的值逐渐减少,并趋于1,训练完成后得到一个肝脏检测的模型。当送入一张肝脏图像至模型,就会得到该图片的肝脏区域检测框及其坐标,如图6 所示,上下分别为不同切面层的肝脏CT 影像,左边为原始输入的肝脏图像,中间红色区域为肝脏区域的金标准,右边绿色的框框就是我们检测的肝脏区域的大致范围,上面的数字表示模式判断此区域为肝脏的概率。 图6 目标检测结果 2.2.3 肝脏图像分割 最后进行基于SLIC 的图像分割,实验中设置SLIC 算法初始的种子点个数为2000,在设定阈值合并相似超像素块时,选择threshold 的值为25。在后处理阶段,膨胀、腐蚀、闭运算等形态学处理的卷积核设置为1515 的矩阵,且所有元素都是1,中值滤波中滤波窗口尺寸设置为7。以上所有参数皆是在多次对比实验中选择的合理参数,此阶段实验中先手动设置肝脏区域以调整参数,然后将目标检测阶段和图像分割阶段整合在一起。图7 是一张CT 图像经过目标检测后的肝脏分割结果,左边黄色是区域是本文方法所产生的分割结果,中间红色区域是数据集提供的金标准,右边是二者叠加显示,可以看出本文提出的方法进行肝脏分割的可行性和准确性。但是也有遇到错误分割的时候,如图8 所示。红色区域是肝脏的真实区域,黄色区域是我们的分割结果,由于在基于CNN 的目标检测阶段错误的识别了肝脏,导致了下一步在分割阶段的错误分割。 图7 实验结果比较 图8 错误分割的结果 2.3 结果评估方法本文采用标重合率DICE、体积重叠误差VOE 和相对体积误差RVD 评估指标[14-15]。定义肝脏分割结果的区域为A,期望分割结果为B,这三项指标定义如下。 2.4 实验结果在剩下的8 位病人的数据中,随机挑选一位,将其CT 序列送入本文设计的分割模型中,根据之前提到的评估指标,得到的结果,见表1,我们的分割结果的DC 为0.951,VOE 为0.0917,RVD 为-0.018。在同其他一些方法比较的时候效果也得到一定的提升,其他三种方法也是对3DIRCADb 数据集进行分析处理,再次表明本文方法的可行性和准确性。 表1 不同方法的结果比较 方法 DC VOE RVD Chirst等[16] 0.943 0.107 -0.014 U-Net[17] 0.729 0.390 0.870 Li等[18] 0.945 0.068 -0.112本文方法 0.951 0.0917 -0.018 3 讨论及总结本文提出了一种基于卷积神经网络和SLIC 超像素算法的图像分割方法,准确地分割了腹部CT 扫描影像中的肝脏区域。首先是通过基于卷积神经网络的目标检测模型,利用SSD 网络结构,准确定位出肝脏的大致区域,并获得其坐标。然后是通过基于SLIC 超像素算法的图像分割模型,得到初步肝脏分割结果。最后经过一些形态学和中值滤波等处理对结果进一步优化。该方法将深度学习方法和传统图像分割方法相结合,同已经发表的一些方法比较,分割精度有所提高。 本文提出的方法也需要做出一定的改进:① 图8 中由于基于卷积神经网络的目标检测未能检测出一个CT 序列的每一张肝脏图像,所以对这些图像就无法进行分割,要对网络结构进行进一步改进和优化;② 只训练了一种数据集,为了进一步提高分割准确度,下一步要训练更多的数据集;③ 现在很多三维的肝脏分割方法已经发表,以后需在二维的基础上向三维的图像分割进行改进。 [1] 王伟林.《原发性肝癌诊疗规范(2017年版)》解读[J].华西医学,2018,33(4):385-387. [2] Chen W,Zheng R,Baade PD,et al.Cancer statistics in China, 2015[J].CA Cancer J Clin,2016,66(2):115-132. [3] Mharib AM,Ramli AR,Mashohor S,et al.Survey on liver CT image segmentation methods[J].Artif Intell Rev,2012,37(2): 83-95. [4] Luo S,Li X,Li J.Review on the methods of automatic liver segmentation from abdominal images[J].J Comput Commun, 2014,2(2):1-7. [5] Punia R,Singh S.Review on machine learning techniques for automatic segmentation of liver images[J].Int J,2013,3(4):666-670. [6] Zhou X,Kitagawa T,Hara T,et al.Constructing a probabilistic model for automated liver region segmentation using noncontrast X-ray torso CT images[J].Med Image Comput Comput Assist Interv,2006,9(2):856-863. [7] Jin Q,Meng Z,Sun C,et al.RA-UNet: A hybrid deep attentionaware network to extract liver and tumor in CT scans[EB/OL].(2018-10-04)[2019-05-12].https://arxiv.org/abs/1811.01328. [8] Huang Q,Sun J,Ding H,et al.Robust liver vessel extraction using 3D U-Net with variant dice loss function[J].Comput Biol Med,2018,101:153-162. [9] Lecun Y,Bottou L,Bengio Y,et al.Gradient-based learning applied to document recognition[J].Proc IEEE, 1998,86(11):2278-2324. [10] Krizhevsky A,Sutskever I,Hinton GE.Imagenet classification with deep convolutional neural networks[A].NIPS’12 Proceedings of the 25th International Conference on Neural Information Processing Systems[C].Cambodia:Neural Information Processing Systems (NIPS),2012:1097-1105. [11] Liu W,Anguelov D,Erhan D,et al.SSD: Single Shot MultiBox Detector[J].Comput Vis ECCV,2016,21-37. [12] Achanta R,Shaji A,Smith K,et al.SLIC superpixels compared to state-of-the-art superpixel methods[J].IEEE T Pattern Anal,2012,34(11):2274-2282. [13] Wu W,Zhou Z,Wu S,et al.Automatic liver segmentation on volumetric CT images using supervoxel-based graph cuts[J].Comput Math Methods Med,2016:9093721. [14] Heimann T,Van Ginneken B,Styner MA,et al.Comparison and evaluation of methods for liver segmentation from CT datasets[J].IEEE T med imaging,2009,28(8):1251-1265. [15] Zhang Y,He Z,Zhong C,et al.Fully convolutional neural network with post-processing methods for automatic liver segmentation from CT[A].2017 Chinese Automation Congress (CAC)[C].Jinan:IEEE,2017:3864-3869. [16] Christ PF,Ettlinger F,Grün F,et al.Automatic liver and tumor segmentation of CT and MRI volumes using cascaded fully convolutional neural networks[EB/OL].(2017-02-23)[2019-04-12].https://arxiv.org/abs/1702.05970. [17] Ronneberger O,Fischer P,Brox T.U-Net: Convolutional networks for biomedical image segmentation[A].International Conference on Medical Image Computing and Computer-Assisted Intervention[C].Munich:Springer,2015:234-241. [18] Li C,Wang X,Eberl S,et al.A likelihood and local constraint level set model for liver tumor segmentation from CT volumes[J].IEEE T Biomed Eng,2013,60(10):2967-2977. Liver Segmentation Based on Convolutional Neural Network and Superpixel in CT Image |