基于条件生成对抗网络的舌体图像分割∗
2021-06-29王亚刚
刘 明 王亚刚
(西安邮电大学计算机学院 西安 710121)
1 引言
中医历史悠久,在亚洲乃至全球已经是一种补充与替代西方医学的治疗手段,中医理论认为舌体的不同区域对应着人体的不同内脏器官,不同舌体区域的不同颜色特征对应着人体不同的身体状态。目前在计算机辅助诊断系统中需要重现中医对舌体的辨别,从获取的面部图像中准确获取舌体图像是前期工作中最为关键的一步。
目前已经提出了许多针对舌体图像的分割方法。姜朔,胡洁等提出了基于Otsu阈值法与形态学自适应修正[1]的舌像分割方法。这种方法相对于传统的自动阈值选取法(Otsu)方法及灰度投影-Otsu方法,分割的准确率有了很大的提升。但是,这种方法在利用形态学自适应修正的过程中多次开启运算,使用了过多的时间,导致总体分割所使用时间较长,最终使得舌体分割的效率有所降低。吴佳,张白水等所提出的将分水岭变换与主动轮廓模型[2]结合的方法,在分割过程中分割精度得到进一步提高,但是对于舌体上纹理较为复杂的舌头并不能进行有效准确的分割。
综上所述,虽然这些方法能够在一定程度上提升分割效果,但是仍然存在着不同的问题,很难找到一个效果好并且适用性广的方法。所以寻找一种鲁棒性好,舌体分割准确且运算速度较快的方法仍是计算机辅助诊断中的一个难点所在。针对上述问题,本文设计一种可分离式条件生成对抗网络模型用于分割舌体,该模型不仅解决了舌体分割适用性差问题,而且在分割精度与运行速度上能达到理想效果。
2 基于神经网络的分割方法
近年来,深度学习发展迅猛,神经网络结构在不断地更新与优化,其在图像分割领域的应用也不断扩大。图像分割的主要任务就是将像素点归类,从而实现图像的分割。Shelhamer[3]等设计完成了端到端的图像分割网络FCN,它解决了传统CNN网络在分割时对区域多次特征提取导致分割速度慢的问题。Olaf Ronneberger[4]等提出的U-Net网络通过使用浅层网络定位目标深层网络分类目标相组合的方式来进行图像分割。在国内的学者中赵兵[5]使用卷积网络对葡萄病灾害图像进行图像分割,通过不断卷积池化进行信息提取然后使用反卷积操作获取分割结果。邓金成[6]将全卷机网络与空洞卷积相结合提高网络获取图像信息能力,从而实现放射治疗中的图像分割。
针对舌体图像中舌体与唇部边缘界限模糊,使用方法适用性差,分割运行时间较长等问题,本文提出一种基于条件生成对抗网络的舌体图像分割方法。目前生成对抗网络[7]在许多方面已经取得很好的应用效果,桑亮[8]针对相机成像时图像模糊问题,利用生成对抗网络复原模糊图像。何子庆[9]使用生成对抗网络对图像进行识别。通过与现有方法对比,本文方法具有以下优点:1)在分割中引入分割网络与判别网络,通过对抗训练能够提升分割结果。2)在网络中引入可分离卷积与残差结构,在提升分割效果的同时,提升网络运行速度。3)在模型训练成功后,加入形态学优化算法提高分割图像质量。
3 基于条件生成对抗网络的舌体分割方法
生成式对抗网络模型最早在2014年由Good⁃fellow提出,它是一种生成式模型,而条件生成对抗网络则在原始的对抗模型中加入约束条件,通过附加信息来获得更加准确的完成图像翻译等工作,该网络模型主要由生成器(G)与判别器(D)两个子网络框架构成。
图1 舌体分割网络基本框架
生成对抗网络的最终目的是生成一个能够从随机噪声z到输出图像y之间的映射模型。而条件生成对抗网络则是观察图像x与随机噪声z到输出图像y之间的映射模型。相比于生成对抗网络,条件生成对抗网络加入图片标签来约束两个子网络。子网络中G训练的目的是学习样本分布,使得生成样本尽可能地接近于人工标注样本,最终让判别器无法区分数据是生成器生成还是人工标注样本。子网络D训练的目的是对人工标注样本与原始图像组成的正样本组合D(x,y)值接近1,使生成器生成图像与原始图像组成的负样本组合D(x,G(x,z))的值接近0。整个模型的优化方向是需要最大化判别器鉴定正确的概率,同时最小化生成器生成出来的样本数据被鉴别出来的概率。其目标函数可以表示为
其中x为输入的人体面部图像,y为人工分割的标准舌体图像,函数D(x,y)表示输入图像来自人工分割的概率,D(x,G(x,z))表示输入图像来自生成器的概率。
为了使生成器生成的舌体图像能够更加接近人工标定的标准分割舌体图像,本文在损失函数中加入L1[10]距离:
将原有的目标函数与L1距离函数相结合得到新的目标函数如下:
为了平衡两个目标函数,设置λ为100。
G和D是两个相对抗的训练过程。首先固定G训练D,然后固定D训练G,如此循环,最终两个子网络能力都能得到提升。当G生成的样本图像被D判定为人工标注图像时就结束训练,此时新输入的图像经过G后,G生成的图像就可以当做正确的分割图像使用。
4 可分离条件生成对抗网络
舌体图像的分割与普通自然图像的分割不同:1)舌体图像边缘界定模糊,需要提取更多边缘信息来进行准确分割。2)在中医智能化阶段不仅仅需要高精度也需要高效率,设计的网络需要同时兼备这两种要求。而传统的分割算法与现有的语义分割算法不能同时满足高精度与高效率的要求,基于上述目标与挑战,本文设计了一种高效的条件生成对抗网络模型,称为可分离条件生成对抗网络(SC⁃GAN),改进的方法主要有以下三点:
1)可分离卷积结构
在神经网络中,随着网络层数的加深,虽然网络模型的效果越来越好,但是参数的大量增加导致运行所占用的计算资源与存储资源也会递增,并且会增加训练所需要的时间,为了在可以减少网络模型参数的情况下不影响最终的分割效果,本文使用可分离的卷积结构[11]代替标准的卷积,通过将标准卷积分解为深度卷积与逐点卷积的方式如图2(b),达到减少计算量加快网络模型收敛速度的效果。
模块A为标准卷积结构,将大小为Di×Di×N大小的特征图作为输入,目的为输出一个大小为Do×Do×M大小的特征图,其中步幅为1,填充为0。模块B为可分离卷积结构,首先使用N个k×k×1大小的单通道卷积核对输入特征图进行一对一的单独处理,即就是每个卷积核处理一个特征,得到Do×Do×1大小的特征图,然后将这些特征图进行堆叠,得到Do×Do×N大小的特征图。第二步使用大小为1×1×N大小的卷积核进行1×1卷积,经过1×1×N的卷积后得到大小为Do×Do×1的特征图,为了得到有M层通道数的特征图,需要经过M次1×1的卷积,最终得到大小为Do×Do×M的特征图,模块A的计算成本为M×K×K×K×Do×Do对于同样的变换,使用模块B的方式所使用的计算成本为
图2
2)加入残差网络结构
使用神经网络时,为了能够获得更多的图像特征信息,往往会使用池化操作,特征图的尺寸大小会逐渐变小,所以边缘特征在传播中会逐渐消失,而传统的上采样操作仅仅只对最终映射得到的结果进行上采样,用来得到与输入相同尺寸的图像,往往忽略了图像中的浅层信息,这种方式在舌体分割中是不利的。而且随着网络模型层数的不断加深,往往会出现梯度消失的问题。所以设计的网络需要既能够准确标记舌体轮廓又能检测舌体边缘信息特征。这里使用残差网络[12]的结构,在可分离卷积操作中使用残差结构,通过使用跳跃链接增加网络权重敏感性,增加对细小特征的获取能力,完成准确分割。带有分离残差结构的生成器结构由两个可分离卷积构成,每个可分离卷积层是由3×3深度卷积与1×1的逐点卷积组成,同时加入short⁃cut与1×1的瓶颈层将残差块的输入与输出连接。
如图3所示,提出的网络中的生成器中将原始的卷积结构改变为可分离卷积结构并加入残差模块,首先使用卷积池化操作,通过使用最大池化层将不同的带有跳跃连接的可分离卷积层连接起来,池化层的目的主要是减少内存消耗,同时提高网络感受野的大小,其窗口大小设置为2×2,通过每一次的池化操作翻倍卷积核的数量,直到512停止,然后使用上采样操作,上采样可以认为是卷积的逆操作,通过使用这一操作将之前获得的特征图恢复到原尺寸大小,在上采样操作中同样使用BN[13]操作ReLU[14]激活函数与带有跳跃连接可分离卷积结构。
图3 生成器网络结构
判别器网络如图4所示,相较于生成器网络其网络结构较为简单,其目的是区分输入数据的真假进行二分类判别,通过不断地使用卷积获得更小的特征图谱,由于层数较少并未使用残差结构。判别器中包含2×2卷积层,BN层与ReLU激活函数,在网络的512通道层最后使用sigmod[15]函数激活,输出0或1的判别结果。
图4 判别器网络结构
3)基于形态学优化
当可分离条件生成对抗网络训练结束后,生成器生成的样本图像就可以被当做正确的舌体分割结果,这时将生成器产生的样本通过使用形态学的方法进行进一步优化得到最终分割结果。通过形态学的优化可以减少舌体边缘更加平滑,能够去除舌体内部的孔洞区域。操作过程如下:
Step1.首先将生成器产生样本图像进行二值化处理,并选择接近舌体轮廓形状的椭圆形结构对二值化后的图像进行多次腐蚀操作,然后对其使用同样次数的膨胀操作。
Step2.需要将第一步得到的二值图转变为布尔型数组,首先将舌体区域作为主体部分,通过去除小的连通区域可以去除被误分的背景噪点,然后进行取反操作,将舌体背景作为主体部分,通过去除小的连通区域去除舌体内部孔洞。通过这步操作即可得到完整精确的分割结果所对应的布尔类型数组。
Step3.将第二步得到的具有分割信息的布尔类型数组与原始图像进行相乘操作,这样就可以获得最终优化后的精确分割图像。
5 实验结果与分析
实验的目的是研究出一种高效准确的舌体图像分割方法。实验是在cpu内存:20G;显卡:NVID⁃IA DGX-1;开发环境:python3.5,神经网络训练使用Tensorflow深度学习框架。训练中使用Adam优化器(β1=0.5,β2=0.99,ε=1e-7),学习率lr=0.001,mini-batch=1。为了提高网络的泛化性能,在生成器(G)的上采样层都加入了Dropout[16],将keep_prob设置为0.5每次删除50%节点,一共进行1500次的迭代训练。由于目前没有用于舌体分割的公开数据集,所以本文通过临床采集的方法进行数据收集整理,主要包括志愿者移动端采集与专业舌像采集仪器进行采集。
神经网络训练需要学习大量数据样本,在数据量不足的情况下,为了增加训练效果,于是本文引入图像增强[17]的方法扩充数据量。常见的数据增强方法包括:翻转变换,crop变换,旋转变换,像素颜色变换,PCA白化与ZCA白化等。为了能够保留更多的原始图像信息,本文并未使用多规则变换去处理数据,只引入翻转变换与平移变换。由于本文数据集中获取的图像大小没有统一,所以首先将图像统一裁剪到512×512×3大小,通过数据增强方法使训练数据从263张数据图像增强到1000张数据图像,具有一定的规模性,能够增强网络泛化能力[18],避免在后面训练时产生过拟合现象[19]。
本文使用精确度(Precision,P),召回率(Re⁃call,R)、F-measure(F)等针对图像分割的指标进行定量评价。
其中TP为被正确分割的舌体像素数目,FP为被错误分割成舌体像素的背景像素,FN为被错误判定为背景的舌体像素。
图5 本文算法分割实验结果对比图
选取Ostu算法、Kmeans算法两种传统算法,以及同样基于深度学习的U-net算法、CGAN算法与本文算法进行对比。为了证明本文算法的普适性,选取不同类型的舌体进行试验,由于移动设备采集图像受环境干扰较多,分割难度往往较大,所以下面主要展示这类分割结果。前四行舌像来自志愿者使用移动设备采集,由于采集数据尺寸不同需要经过人工裁剪再分割,第五行为舌像专业采集仪器采集。从图5中可以看出,本算法分割的舌体图像很大程度上避免了像素点的漏分与错分的情况,对不同类型的舌像都能得到较为理想的分割结果,表明了该算法具有较高鲁棒性与准确性,能够满足后续识别工作的要求。
表1 不同分割算法结果比较
P值越高代表算法对舌体区域错分的概率越低,R值越高代表算法对舌体区域漏分率越低,从表1中可以看出基于深度学习的U-net算法、CGAN算法以及本文算法都能够得到较高的F值与P值,验证了基于深度学习的方法在舌体图像分割领域的可行性。相比于原始CGAN算法,本算法在P值上提升1.03%,R值上提升1.51%,使得总的F值提升1.36%,每张图像处理所用时间减少0.2s。在分割精度与速度上均优于U-net算法与传统算法。
本文算法是在条件生成对抗网络下实现的,并在后续加入形态学方法进行优化,为了验证形态学方法的效果,将算法拆分成两部分进行实验结果验证。从表2可以看出由于加入形态学的优化,使得舌体边缘会有细微变化,导致精度略微降低,但由于实际分割过程中舌体会出现空洞[20]与噪点的情况,所以加入形态学的方法是有必要的。
表2 加入形态学优化结果对比
6 结语
本文针对舌体边缘细节界限模糊,分割方法鲁棒性差,速度慢等难点提出了一种应用于舌体分割领域的可分离条件生成对抗网络模型。所提模型在条件生成对抗网络的基础上使用U型网络思想设计生成器网络,之后结合可分离卷积与残差网络,使模型能更迅速、准确地得到分割图像,最后加入形态学的方法来进一步优化分割图像。实验证明,与传统分割算法以及其他神经网络分割算法相比,本文算法在不同数据中获得了更好的效果,保留了舌体图像更多边缘细节。本算法能够为整一套中医自动化诊断提供准确的前期数据处理,后期利用更多数据的训练,数据集的扩充,分割的准确率会逐步提高。本算法灵活性强,另外未来会使用本文算法对更多图像进行有效分割,扩展本文算法的应用性。