Capsule网络的心脏磁共振图像病患识别

2020-08-11 04:19刘书樵寇逸飞李孝杰
关键词:磁共振矢量胶囊

刘书樵,寇逸飞,李孝杰

(成都信息工程大学计算机学院,四川成都 610225)

传统医疗影像诊断方法需要依靠临床医生多年的经验与临床研究才能人工辨别病患是否患有相应疾病.机器学习方法的出现为医学领域识别问题提供了一种智能化的解决方案.其中,深度学习方法已经广泛用于各个研究领域.如 ResNet、VGG、UNet等分类、分割网络在计算机视觉的各个邻域表现出优良的性能.该类网络均以卷积神经网络(Convolutional Neural Network,CNN)为基础发展出来的各种变体.同时,该类方法已成功应用于医学图像研究领域医学如阿尔茨海默病、前列腺癌的识别与预测[11-12].

基于CNN的网络结构在计算机视觉及医学等研究领域已取得了很大的成功[4-10].相对于传统医疗影像人为设计或指定图像特征从而进行病患诊断,机器学习尤其是深度学习方法可辅助医师对医学诊断提供初步的定量和定性的评价,以此节省大量的人力成本.然而心脏磁共振病患图像与正常人图像的差异性不显著(如图1所示),多层CNN、SVM等较浅层分类方法难以从差异性较弱的图像间提取有效的图像分类特征,因此不能达到很好的识别效果.

CNN擅长检测图片中特定的特征,如检测鼻子、眼睛等特征,但却难以挖掘出特征间的关系,如视角大小、方向等.一张眼睛与鼻子交换的人脸照片可能被CNN错误识别为一张真正的人脸.基于Hinton提出的可视化系统理论,胶囊(Capsule)及胶囊网络(Capsule Net,CapsNet)应运而生[1],旨在克服 CNN方法的缺点.Hinton指出对于每个固定的视觉位置有一个树状的解析结构,而每一个解析树由固定的多层神经网络组成[1].每一层神经网络由许多不同的“胶囊(Capsule)”神经元组成[2].与传统神经元输出标量值不同,胶囊神经元则是包括一些特殊信息的矢量,如相似度、方向、大小、角度等信息,最终根据矢量的模长确定胶囊神经元的激活值(输出值).CapsNet采用压缩(squashing)算法作为矢量激活函数,并使用动态路由(dynamic routing)算法代替CNN中全连接网络的dropout,使得该网络特征更具有多重性,获得更好的算法性能.

由于心脏磁共振患病图像与正常人图像之间的差异不显著性,多层CNN网络难以达到较好效果的问题,而CapsNet可以在较浅层网络的情况下,容纳更多的特征信息,而得到更好的分类效果.本文基于文献[3],首次设计和使用浅层的胶囊网络对心脏磁共振T1-mapping图像做二分类病患识别,以测试胶囊类网络结构对与此类医学数据的识别性能.本文使用该方法在心脏磁共振成像T1-mapping数据集进行实验,并与VGG16、SVM等方法进行比较,实验结果表明CapsNet在正确率、敏感度、特异性三个常用医学指标均优于CNN网络.相比于传统方法和多层CNN网络,胶囊网络在心脏磁共振成像识别方面表现了优异的性能表现,能够有效的识别心脏磁共振成像图像是否为病患,同时表明胶囊神经元作为一种网络结构单位性能更优于传统CNN.

1 胶囊网络

1.1 整体结构

针对脑部磁共振原始数据中3D图像空间尺寸、体素尺寸不统一问题,我们首先将图片重新采样使得分辨率都为1.0×1.0×1.0 mm3.然后,接选出3D图像中中间位置的三张2D图像,并将resize成128×128大小.根据预处理操作,本网络的输入尺寸固定为128×128.

图2 CapsNet网络结构Fig.2 CapsNet structure

CapsNet网络结构如图2所示.该网络是一个浅层的网络结构,仅包含两个卷积层和一个全连接层(即Digital Capsule).本网络以处理后的128×128 2D图像作为网络输入.该图像首先经过无pooling操作Pre-Conv层.针对CMR T1-mapping病人与正常人图像差异性较小,我们设计该层步长为2、卷积核为9×9大小、输出通道数为256、激活函数为ReLU的传统卷积层进行图像的局部特征预提取,该层输出为60×60×256,可减少感受域重叠问题.传统上CNN与全连接网络中使用标量作为实体,而胶囊使用的多维化的矢量作为实体,这样有利于网络对实体进行特征提取.其中,Pre-Conv层是多维化实体的最低级别[3].Pre-Conv层输出传送至胶囊层(Capsule Layer,如图2红色虚框所示).胶囊层主要包括两部分:主胶囊子层和数字胶囊子层.

主胶囊子层:主胶囊子层(Primary Capsule)是胶囊层的第一层,由一个无激活函数与无池化的卷积层和重构层(Reshape)组成.该层旨在将上层的非“胶囊化”的Pre-Conv层特征输入转化为“胶囊化”的特征以供后层处理.针对CMR T1-mapping数据,我们设计其步长为2,卷积核大小为9×9,输出为一个26×26×256大小的传统卷积层以保持较小的空间维度.与传统CNN不同的是,此层没有设计池化层或者是使用激活函数,而是将输出转化为26×26×32×8的胶囊层输出.其中,该输出中32*8可看作32个通道、维度为8(8D)的矢量输出,也可看作676(即26×26)个32通道的8D的“一维”的矢量输出,且在26×26大小的区域中,这些胶囊之间共享权重以缩减训练参数减少过拟合问题.此处的维度转换是Caps-Net的灵魂,亦是胶囊的设计初衷.该处理可包括一些特殊信息的矢量信息,如相似度、方向、大小、角度等信息更利于提高分类性能,最终根据矢量的模长确定胶囊神经元的激活值(输出值).

数字胶囊子层:数字胶囊子层(Digital Capsule)是胶囊层的第二层.相较于传统神经元中输入为标量,数字胶囊层使用矢量作为输入.该层主要作用就是代替传统全连接层(Fully Connected Layer,FC),将主胶囊子层的676×32的8-D胶囊转化为2个(针对二分类问题)8-D的胶囊,最后利用两个胶囊的矢量模长表示相应二分类的预测概率.数字胶囊子层是胶囊网络的核心.主要的两个针对胶囊的算法都应用于此层.其主要的模型如图2所示.

设第l层胶囊的输入为K(l)个D(l)维的矢量单个胶囊具体实现公式如(1)-(4)所示.

图3 “胶囊”结构Fig.3 “Capsule” structure

中每一行或每一列和为1,而Wij是权重矩阵.

其中,权重ci是通过“路由softmax”操作得到,bij是胶囊i与胶囊j的对数先验概率,通过“动态路由”算法迭代计算而得出(详细见3.3).

其中,sj是“预测矢量”通过计算得到的加权和.

其中,vj是sj通过公式计算得出(关于函数Squashing,详细见3.3).其中,公式(3)等价于传统神经元的加权求和操作aj|i=wijxi+b;公式(4)等价于传统神经元的激活函数如sigmoid、ReLU、tanh等.

重构层:重构层(Reconstruction)紧邻胶囊层,有三个全连接层组成.我们针对CMR T1-mapping数据集大小分别设计维度为 512、4 096、128×128=16 384.其中,为引入重构误差损失函数以优化模型,设计该重构块最后一层的输出为输入图像大小.此网络结构引入重构误差可以有效的提高整体模型的准确度.

1.2 Squashing算法

由图2和公式(4)可知胶囊激活函数为Squashing函数,其具体计算公式如公式(5)所示.该函数是一个非线性的、能够保持输入矢量维度不变的激活函数.该函数具有如下特点:

图4 Squashing函数输入与输出模长Fig.4 The norm of input and output of Squashing function

即Capsule的“激活函数”实际上是对向量长度的一种压缩和重新分布.其函数输出矢量的模与输入矢量的模的关系如图4所示.Squashing函数的函数曲线类似于Sigmoid函数的正半轴部分,输入sj模长趋于无穷时,输出vj越趋近于1.

1.3 Dynamic Routing算法

由公式(2)可知,胶囊网络需要通过动态路由算法迭代计算胶囊i与胶囊j的对数先验概率bij.Hinton指出“找到最好的(处理)路径等价于(正确)处理了图像”.这也是 Capsule框架中引入动态路由的原因之一.

而找到“最好路径”的方法之一就是选出与输出向量最符合的输入向量.符合度是通过输出向量和输入向量(线性变换后的向量)的内积所表征.算法通过更新迭代权重,使对输出向量贡献更大的输入向量获得更大的权重.具体算法如算法1所示,其作用区域如图2中红色虚框所示.该更新算法容易收敛.文献[3]认为该算法迭代3次足以.与其他算法类似,动态

●vj的值域被限制在[0,1)之间,所以输出向量的长度可以表征某个实体出现的概率,其模值越大,该实体出现的概率越大.

●该函数单调递增,所以“鼓励”原来模较长的向量,而“压缩”原来模较小的向量.路由也存在过拟合问题.虽然增加动态路由的迭代次数可以提高识别准确率,但会降低算法的泛化性.

在公式(3)中的ci是对上层输入胶囊计算对数先验概率的和(其值的更新见算法1步骤③),在首轮迭代中初始化为0,通过算法1的第⑥步迭代更新.权重ci通过第③步softmax函数计算出.最后使得胶囊i以其先验概率从大到小排序,传递至下一层的胶囊.公式中的“预测矢量”sj通过算法1第④步计算得出.最后,输出第 (l+1)层胶囊vj通过算法1第⑤步计算得出(Squashing函数见公式).最后将输入与输出vj点乘并与bij相加,其值即为bij更新后的值.动态路由算法如算法1所示.

算法1动态路由算法

输入:输入矢量, 路由次数r, 当前层数l

输出:矢量vj

①对于所有的l层胶囊i和所有 (l+1)层的胶囊j:bij←0

②Whiler≠0 do

③对于所有的l层的胶囊ii:

④对于所有的 (l+1)层的胶囊i:

⑤对于所有的 (l+1)层胶囊j:

⑥对于所有的l层的胶囊i和所有 (l+1)层的胶囊j:

1.4 损失函数

我们将损失函数分为两部分:边界损失和重构损失.在胶囊网络中,我们通过一个胶囊的矢量长度作为这个实体存在的概率.

边界损失:使用与SVM类似的损失函数.

其中,Tc为c类类别信息,当分类c存在时设置Tc=1,反之,Tc=0.在公式(6)与公式(7)中,m+与m-分别取0.9与0.1,作为‖vc‖的上下边界,以避免假阳性与假阴性.

重构损失:该损失由最后三层全连接网络计算得出(见图2).最后的输出与原输入图片大小相等的特征图即128×128.

其中,X代表网络输入的原图像,Xdecode代表最后重构网络输出的特征图.该式计算x与Xdecode的欧式距离的平方,其两者差异越小越好.超参μ是平衡重构误差在整个训练目标函数中的权重.在本实验中,μ设置为0.0005,以保证重构损失在训练中不占主导地位,突出分类目标.

网络整体目标损失函数由LTotal得到的.在图6中,可以看到CapsNet所设置的损失函数的收敛性.

2 实验分析

2.1 实验设置、数据集和评估指标

实验设置:实验基于 python 3.6.7、Ubuntu 16.04、Tensorflow 1.4.1平台下,使用型号为NVIDIA Ge-Force RTX 2080 TI的GPU上运行.为了保证对比实验(VGG16、SVM)结果的一致性,我们统一训练500个周期(batch_size大小为32).每个实验均使用五折交叉验证来选择测试集与训练集.最后由5次实验结果的各指标平均值作为评价量.各实验细节具体设置如下所示:

CapsNet超参μ、λ分别设置为 0.0005与0.5.损失函数使用公式(10).训练的优化器使用了Adam优化器,学习率调整为1E-3.总共训练轮数为500轮.

VGG16:使用了最经典的VGG16网络结构[4],训练500轮损失函数使用了对数交叉熵函数.训练的优化器使用了Adam优化器.

SVM:使用了线性SVM分类器,将输入的尺寸从128×128直接转化为16 384维度的向量进行训练.训练500轮.训练使用的优化函数为梯度下降.

数据集及增强:CMR T1-mapping数据集均来源于同一家医院的心脏磁共振成像数据.该数据集包括80张正常人图像与455张患有各类心脏疾病的病患图像,如扩张性心肌病图像.但由于正常人图像与病患图像之间的差异性不显著,图像之间的成像质量也有所差异,我们做了部分预处理.针对心脏磁共振CMR T1-mapping原始数据中2D图像空间尺寸、体素尺寸不统一问题,我们首先选取包含心脏组织的感兴趣区域(统一为128×128)以减少冗余部分.然后,将T1-mapping图像重新采样,使得分辨率都为1.0×1.0×1.0 mm3.由于数据集的不平衡性,对正常人数据进行了数据增强,在将数据五折分类后,将正常人的数据复制3倍,最后的得到320张正常人图像、455张病患图像,共计775张图片.

评估指标:本文主要采用在医学分类上常用的本个评价指标:正确率(accuracy)、敏感度(sensitivity)、特异性(specificity),ROC曲线(receiver operat-ingcharacteristic curve,ROC)进行定量评价,具体见公式(11)-(13).

其中,公式中变量的具体定义见表1所示.

表1 公式(11)(12)(13)中的参数定义Table 1 The parameter definition in equation(11)(12)(13)

2.2 实验分析

各对比实验结果如表2所示.从表2可以看出,CapsNet在CMR T1-mapping分类任务中表现出优异的性能,其在三个度量指标上均超过其他对比方法.特别地,在正确率、敏感性与特异性等评估参数上,超过次之的方法6.53%、7.08%与13.80%.这体现出了CapsNet作为一个浅层网络在性能上的优异性.

表2 各方法准确率、敏感度及特异性Table 2 The accuracy,sensitivity and specificity of each method

图5 CapsNet和VGG16的ROC分类曲线Fig.5 ROC classification curve for CapsNet and VGG16

数据类别不平衡时,正确率指标不能客观评价分类效果,而ROC指标是最常用的指标之一.为了体现CapsNet方法在心脏分类数据上的可行性,图5显示了CapsNet与VGG16的ROC分类曲线.由于SVM分类器无概率输出,本实验仅绘制了CapsNet网络与VGG16网络的ROC曲线图.其中CapsNet的AUC值为0.9643,高于VGG16对比实验的AUC值0.0339.这证明了CapsNet作为而分类器在磁共振心脏成像的二分类上有着优异的效果.

图6 CapsNet的重构损失(上)、边界损失(中)、总损失(下)Fig.6 The reconstruction loss(top),margin loss(mid)and total loss(down)of CapsNet

图6为CapsNet网络中的各损失函数的收敛性.由图6可知当边界损失迅速收敛后,重构误差在训练中可起到优化训练的作用.当重构误差训练开始就降低至以内,这也侧面说明了数据集在成像上的同一性.对比总损失与边界损失可以看出,训练的主要贡献来源于边界损失,这与设计的思路是一致的.

本实验是通过五折验证的方式来计算各个指标.三种方法在五折实验中的各折正确率曲线如图7所示.可以看出CapsNet方法整体优于其他两种方法.虽然VGG16方法在正确率上有优于CapsNet方法,但VGG16在本实验中体现出的鲁棒性不强,正确率波动较为明显,也反映出CapsNet方法作为对心脏磁共振成像做二分类检测具有相当的鲁棒性.

图7 CapsNet(蓝)、VGG16(红)与SVM(黑)的五折正确率曲线Fig.7 The 5-fold accuracy curve for CapsNet(blue),VGG16(red)and SVM(black)

3 结 论

CapsNet的网络层次浅,但在本二分类实验中可以超过VGG16这种较为深层的传统神经网络.这说明了“胶囊”结构在作为一个CNN与传统神经元的变体,有着巨大的开发潜力.相较于传统神经元,胶囊的神经输入不再是标量输入,而是矢量输入.这使得CapsNet在本实验的数据集上有着良好的表现,能够在差异性不强的二分类问题中表现优良.

但需要指出的是,由于动态路由算法需要更多维的参数去训练,所以此算法所需参数量随输入及输出大小成倍增长.因此,CapsNet的结构对于分类数过多的问题(比如图片分割等)会消耗大量GPU显示存储的资源,甚至在当前硬件环境下,无法使用单GPU进行训练.这也限制了此方法不建议作为多层网络中的中间层,而更建议作为输出层(或更靠近输出层的部分).

针对心脏磁共振成像识别算法面临的主要问题:患病图像与正常图像之间的差异不显著,使用多层CNN网络难以达到十分优秀的效果,而胶囊网络CapsNet可以在较浅层网络的情况下,容纳更多的特征信息,有利于识别心脏磁共振图像.我们设计使用了浅层胶囊网络对心脏磁共振图像做二分类病患识别,并与VGG16、SVM等方法进行比较,实验结果表明胶囊网络相比较传统方法和浅层网络,在心脏磁共振图像识别方面表现了优异的性能.我们考虑未来还会将CapsNet尝试进行图片分割及多任务的应用,这将会本文中所展示的更有难度与挑战.

猜你喜欢
磁共振矢量胶囊
国家药监局批准七蕊胃舒胶囊上市
一种矢量信息重构的最优双矢量定姿算法
一种磁共振成像谱仪数字化发射系统设计
常见专业名词缩略语及符号(Ⅰ)
一种适用于高轨空间的GNSS矢量跟踪方案设计
矢量三角形法的应用
时光胶囊
磁共振成像不同扫描序列诊断肛瘘诊断价值
CT和磁共振用于颈椎病诊断临床价值比较
时光胶囊