APP下载

基于轻型卷积神经网络的舌苔颜色分类方法

2019-09-20

测控技术 2019年3期
关键词:舌象舌苔卷积

(北京工业大学 信号与信息处理研究室,北京 100124)

中医舌诊是中医学中望诊的重要组成部分,指通过观察舌象的变化,了解人体生理功能和病理变化。舌苔颜色作为舌象最基本的特征之一,其颜色变化可反映脏腑的寒、热、虚、实、病邪的性质和病位的深浅[1]。从人眼视觉的角度,舌苔颜色一般有白苔、黄苔和灰黑苔三类,然而,在中医临床舌诊中,这种苔色分类方法对于中医辨证论治的指导意义并不明显,中医大夫常常将舌苔的厚度与舌苔的颜色相结合,通过观测舌苔颜色和厚度的变化,得出身体真实的病理情况。因此,根据中医专家对舌苔颜色的划分,舌苔颜色主要分为薄白苔、白厚苔、薄黄苔、黄厚苔和灰黑苔5类。在实际舌诊中,舌象特征的诊断通常取决于医生的主观判断,不同的光源和亮度等外界因素会对医生产生干扰,不可避免地影响了舌诊的可靠性和可重复性。因此,利用计算机对舌苔颜色进行精准化分析,对促进中医舌诊客观化研究具有重要的实际意义[2]。

在利用计算机对舌象特征进行分析时,常常结合中医医师的先验知识,提取舌图像的语义特征,从舌图像中得到与机体的生理功能和病理变化相关的舌象特征[2-3]。舌苔颜色作为舌象最基本的特征之一,其分类的准确程度决定了后续舌象自动分析的有效性,因此对舌苔颜色进行分类研究,对促进中医舌诊客观化研究具有重要的实际意义。

1 相关工作

以计算机图像分析技术为主要手段进行舌象特征自动分析,是20世纪80年代发展起来的一种舌诊客观化研究方法,此后,香港理工大学[4]、台湾蓬甲大学[5]和北京工业大学[6]等各大机构纷纷开展相关工作,在舌象颜色校正、舌象分割和舌象特征分析等方面取得了一定的研究成果。笔者所在的北京工业大学信号与信息处理研究室早在20世纪90年代末期,就在国内率先开展了中医舌象数字化、客观化和定量化的研究工作,在中医舌面象信息的数字化采集与自动分析方面取得了丰厚的研究积累[2-3,6-11]。

目前,关于中医舌苔颜色的研究工作有很多,总的来说,这些工作的基本思路是将中医舌苔颜色的自动分析看作是分类问题,在分类时,通过提取舌苔的颜色特征和纹理特征等手工特征,然后通过“特征+分类器”或“特征+相似性度量”的分类模式进行舌苔颜色分析。其中较为常用的舌苔颜色分析方法有:基于支撑向量机(Support Vector Machine,SVM)的分析方法[8-9]、基于人工神经网络的分析方法[10]和基于稀疏表示分类器的分析方法[11]等。文献[8]提出了一种基于聚类树算法的舌苔颜色分类方法,对舌苔颜色和厚度进行了定量化描述。文献[9]将Universum SVM应用于舌象样本的分类中,在舌苔颜色分类中取得了84.44%的分类准确率。文献[10]采用学习矢量量化神经网络分类器进行舌苔颜色自动分析,能够获得85%的识别效果。文献[11]采用稀疏表示分类器的中医舌苔颜色自动分析方法,通过重建最小残差的方式实现舌苔颜色分类,识别准确率达到90.51%。在这些分析方法中,SVM与ANNs是两个常用的分类器,SVM比较适合解决小样本、非线性等模式识别问题[12],但其最终性能依赖于核函数的选择,需要投入大量的理论分析工作。而人工神经网络特有的非线性适应性信息处理能力,能够较好地适用于苔色分析方面,具有较强的泛化能力,但其训练易陷入局部最小值。稀疏表示分类器虽然对数据的缺损并不敏感,但字典的质量对稀疏编码的性能具有非常重要的影响。

虽然基于传统手工特征的舌苔颜色分析方法已经取得了一定的研究成果,但是总的来说,以手工特征建立的分析模型对光照比较敏感,分析性能的好坏常常依赖于手工特征的选择。若光照条件发生变化,以手工特征建立的分析模型将失去作用,使得这些研究成果的识别性能尚不能达到中医舌诊实际应用的要求,所以需要引入新的信息处理技术来解决这些问题。

近几年来,深度学习在图像分类等计算机领域取得了巨大成功[13-14]。其中,卷积神经网络(Convolutional Neural Networks,CNN)凭借其强大的特征学习与表达能力被广泛应用于图像分类。虽然目前CNN网络模型多种多样,但其网络结构主要由卷积层、池化层和全连接层3种类型的层级成,如图1所示。CNN通过交替进行卷积、池化等操作,逐层提取特征,底层学习到局部特征,高层学习到全局特征,随着网络层数的增加,学习到的特征越来越抽象,特征经全连接层与分类器相连,输出分类类别。

图1 CNN分类网络模型结构

卷积神经网络的出现,为更智能化的舌象特征分析提供了可能。利用卷积神经网络训练出来的分类模型,具有更高的泛化能力,能更好地适应复杂多样的数据情况。目前已有研究将卷积神经网络应用于舌象特征分析中,文献[15]利用PCANet提取深度特征,在正常舌和异常舌的二分类问题上取得91.14%的效果,但尚未对舌象特征进行后续分析。最近,笔者所在研究室也将深度学习的理论知识引用到舌象特征分析中,采用一层卷积加3层全连接的神经网络架构,对舌苔颜色进行分类研究,相比于传统方法,分类性能平均提升4.48%,但采用的网络结构相对简单,分类性能尚有待提高[16]。

舌图像虽是在自然条件下拍摄得到,但其与普通自然图像相比却具有显著不同。首先,舌图像的获取条件较为苛刻,通常要求在具有良好外界条件下拍摄,这样才能避免引入过多的外界干扰;其次,样本的标注需要依赖权威医生的标注,经验不足的医生或非专业人士标注的数据往往会导致杂乱的注释,引起歧义,同时舌图像的获取代价较为昂贵,造成实际可以用来实验的样本数量较少;最后,采集的样本来源以健康或亚健康人群居多,而常见病比例不均衡,造成采集到的样本类别之间存在样本数量不均衡的状况,以此数据建立的分类模型在对舌象特征进行识别时容易产生小样本偏向大样本类别的情况。尽管将深度学习的理论应用于苔色分析中已取得初步发展,但是样本数量有限以及类别不平衡的客观因素仍是制约客观化研究的重要因素。因此,本文针对舌苔样本数量有限且类别不平衡的特点,对舌象样本中不平衡的舌苔颜色类别进行数据扩充处理,然后通过设计轻型卷积神经网络,将特征提取和分类结合到一个框架中,通过数据驱动学习图像与其属性的映射关系,实现舌苔颜色的精确分类。

2 基于轻型CNN网络的舌苔颜色分类方法

本文提出的基于轻型CNN网络的舌苔颜色分类方法的基本思想是:首先,对已标注的舌苔训练样本通过几何变换等数据扩充方式平衡数据集;然后,设计轻型卷积神经网络,将特征提取和分类纳入到一个框架结构中,利用平衡后的数据集进行网络模型训练,通过设置网络参数和迭代次数,选择具有最优分类性能的模型作为最终的舌苔颜色分类模型;最后,利用训练好的舌苔颜色分类模型对预测舌图像进行识别,通过提取图像中的舌苔图像块进行识别,得出苔色分类结果。该方法的整体框图如图2所示。

图2 基于轻型CNN模型的舌苔颜色分类整体框图

2.1 舌苔颜色样本的不平衡处理

如前所述,由于实际采集到的舌苔颜色多以薄白苔为主,其他颜色相对来说数量较少,特别是灰黑苔样本很少见,所以舌苔颜色数据集各类别数量之间存在不平衡状况。因此在训练舌苔颜色分类模型之前需要进行平衡数据集操作,通过数据扩充手段,如镜像、翻转、平移和尺寸变换等,对舌苔数据集进行平衡处理。

根据中医理论,中医专家往往将舌苔颜色分为5类:薄白苔、白厚苔、薄黄苔、黄厚苔和灰黑苔。为了使训练样本尽可能标准且典型,实验中所使用的训练样本为若干由中医专家逐块确定类别的一系列图像子块,图像子块的大小必须兼顾统计特性和精确度。由于舌苔是舌质上附着的苔状物,透过舌苔能隐隐见到舌质的为薄苔,不能见到舌质的为厚苔[1],因此图像子块的选择必须有效区分薄苔和厚苔,以确保实验结果的精确度。舌苔实验样本块的示例如表1所示。

表1 舌苔颜色训练样本块示例

实验样本集共1158例,实验样本按照4∶1的比例随机划分为训练数据和测试数据,其中训练数据用于网络模型训练,测试数据用于计算最终的模型分类精确度。在分类模型训练之前需要平衡样本以保证训练不会偏向较大样本类别。因此,对训练数据采用镜像、旋转方式进行了数据平衡,测试数据保持不变,平衡前与平衡后的样本分布如表2所示。

表2 平衡前与平衡后的各类样本分布 单位:例

平衡策略可如下表示。

① 保持最大类的样本数目不变,在本实验中薄白苔样本有404例,为数量最大类别,因此其数量保持不变。

② 根据少数类与最大类的数量之间的差异,对少数类进行样本扩充,扩充方式首先选择镜像操作,如果扩充后样本类别差别很大,则再选择旋转操作,直到样本类别数目不大。例如表2中灰黑苔具有75例,首先进行镜像操作扩充数据一倍变为150例,由于镜像操作后样本数量和最大类数量相差很多,所以再进行旋转操作,分别旋转90°、180°和270°,共扩充3倍。其中,旋转的角度可以根据实际样本的数量进行选择,即在对原始样本进行旋转操作时,根据需要扩充的样本数目,选择扩充1倍或多倍,旋转角度选择90°或其他度数的组合。

③ 将扩充的样本与原有样本一起作为数据集,并保证每类样本的最终数量相同或相差不大。

2.2 舌苔颜色分类模型

在大规模数据支持的基础上,CNN 可以实现较高的识别准确率。但是在一些应用中,数据很难收集,标定过程费时费力,训练样本数据的不足将导致过拟合的发生,产生较低的识别准确率。在本文中,选择AlexNet[17]作为基础网络,这是因为AlexNet相比于其他网络模型,如VggNet[18]、GoogleNet[19]和ResNet[20]等,具有较浅的网络结构,在小样本下不容易出现过拟合的问题。对于舌苔颜色分类问题来说,因为样本数量的限制,选取的深度学习网络模型层次不宜过深。因此,对AlexNet网络结构进行修改,通过减少网络参数来设计轻型网络结构的舌苔颜色分类模型,以此来克服过拟合现象,提高识别准确率和模型的鲁棒性。

对网络结构的修改如图3所示,首先为了减少网络参数以避免过拟合,摒弃了11×11或7×7大小的卷积核,网络结构中的卷积核大小皆为5×5或3×3,并减少了全连接层的输出数目,将第一个全连接层原始输出数目从4096减少到1024,将第二个全连接层的原始输出数目从1024减少到512;然后为了提高网络的泛化能力,保留了原网络中的LRN层与Dropout层;同时为了减少特征图尺寸和参数数目,在每次卷积操作结束后均进行池化操作,池化操作可以从一个区域中通过某种方式得出一个值作为特征,从而降低卷积层输出的特征图的维度,同时非常有效地缩小参数矩阵的尺寸,从而减少最后全连层中的参数数量。

图3 舌苔颜色分类模型架构

网络采用以下几种网络优化策略和训练技巧,以提高网络模型分类性能。

2.2.1 修正线性单元

修正线性单元(Rectified Linear Unit,ReLU)函数是目前在网络结构中应用较为广泛的一种激活函数,常用于卷积操作之后和池化操作之前,可以使网络具有非线性,增加网络对于复杂函数的拟合能力,对于输入x,其输出F(x)的数学形式为

F(x)=max(0,x)

(1)

传统的激活函数sigmoid或者tanh函数都是饱和非线性函数,即函数值达到一定程度之后,变化会非常小,几乎为零,容易出现梯度消失问题。ReLU激活函数能够保留结果中的正数,不仅可以解决梯度消失问题,还可以加快收敛。

2.2.2 局部响应归一化层

(2)

式中,(x,y)为卷积操作的位置;N为该层中的核总数;i为第i个卷积核;k,n,α和β都是超参数,在网络中需要根据实际情况进行赋值。

2.2.3 Dropout策略

Dropout是一种重要的防止模型过拟合方法,指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重被保留下来,在下次样本输入时它可能又得以工作。Dropout过程就是一个非常有效的结合多模型决策的方法,通过训练大量的不同的网络,来平均预测概率。不同的模型在不同的训练集上训练,其中每个批次的训练数据都是随机选择,最后每个模型用相同的权重来“融合”,以此来使网络学习到更加鲁棒的特征,提高模型的泛化能力。

2.3 舌苔颜色分类

在分类器选择方面,选择Softmax分类器作为模型的最终分类器,通过计算当前样本属于每一类别的概率,选择具有最高概率的那一类作为当前样本的类别。Softmax回归模型是Logistic回归模型在多分类问题上的扩展。相比训练多个Logistic回归来做多分类问题,Softmax回归更适合类别间是互斥的情况。设m个训练集样本为{(x(1),y(1)),…,(x(m),y(m))},向量x(i)的维度为n+1,类标y可以取c个不同的值,则回归模型的代价函数J(θ)为

(3)

3 实验结果与分析

所使用的舌象样本是在首都医科大学宣武医院中医科采集得到,共采集了249张,并按照苔色分布情况由中医专家选取标准块,共获得1158例实验样本。在经过样本平衡处理后,共得到2257例实验样本。本实验提出的网络架构使用Tensorflow架构进行实现。系统配置为Intel®CoreTMi7-6700 CPU 3.40 GHz,16 GB内存,TITAN X Pascal显卡。具体实验中,首先对所提出的网络模型的识别性能进行测试;然后对样本平衡前与平衡后的网络模型准确率进行对比分析;最后通过不同模型分类准确性之间进行对比,验证网络模型的有效性。

3.1 模型分类结果

基于上述的舌苔样本库,进行舌苔颜色分类模型训练。分类模型训练采用Adam梯度下降算法,其相比于SGD随机下降算法具有更好的收敛速度。网络输入统一归一化为100像素×100像素大小,训练参数设置如表3所示。

表3 网络训练参数设置

在实际模型训练中将训练数据集全部训练一遍称为一个epoch,在实际模型训练中,训练样本共进行了1000个epoch的训练,每100个epoch保存一个模型,并用训练模型在测试集上进行了分类性能测试,如果分类器对测试样本的分类结果与舌象样本标注相同,则认为分类正确,否则则认为分类结果错误。不同epoch下的分类准确性如图4所示。

图4 不同epoch下的分类准确率

从图4中可以看出,不同epoch下的分类准确率存在一定的差异,在实际模型选择时,应设定适当的迭代次数来获得最优的识别准确率。因此,选择在epoch为900时训练出的模型作为苔色分类的最终模型,此模型在测试数据集下能取得约94.85%的分类准确率,所得到苔色分类结果的混淆矩阵如表4所示。

表4中,矩阵中对角线上的数值为每类分类正确的样本数量,其他为误分类的样本数量。如混淆矩阵的第一行中被正确分类的薄白苔有98例,有2例被误分为白厚苔,有1例被误分为薄黄苔。

表4 舌苔颜色分类的混淆矩阵

除此之外,在同一模型上对数据不进行平衡处理和进行平衡处理两种情况下训练的模型准确率进行了比较,实验结果如图5所示。

图5 样本平衡前与平衡后的分类准确率对比

从图5中可以看出,未进行数据平衡处理的数据集训练的分类模型各类别的分类准确率之间相差较大,且在多数类上的分类准确率明显高于少数类;但在经数据平衡处理的数据集训练的分类模型上的各类别的分类准确率之间相差较小。如在未进行样本平衡之前,薄白苔样本因为数量最多,其分类准确率达到99.01%,但在薄黄苔、白厚苔类别上的分类准确率则比较低,分别为78.38%、84.62%,而样本经过平衡处理后,虽然薄白苔的准确率下降到96.04%,但在薄黄苔、黄厚苔类别上的分类准确率则分别提高到94.59%、92.31%。因此样本平衡后与样本平衡前的分类结果相比,虽然由于样本扩充改变了数据的分布,使得样本各类的训练更加均衡,在多数类上的分类准确率有所下降,但在少数类上的分类准确率得到提升,且整体平均准确率由93.13%提高到94.85%。

3.2 不同卷积神经网络分类结果

为了验证所采用的网络的有效性,将所设计的网络架构与目前主流的网络架构LeNet、AlexNet、VggNet16、ResNet18以及文献[16]的分类模型采用相同训练方式在相同的数据集下的模型分类准确率进行了对比。对比结果如图6所示。

图6 不同分类模型的分类准确率对比

从图6中可以看出,上述几种网络模型在相同数据集下分别取得94.42%、93.13%、93.99%、93.56%和92.71%的分类准确率。因此,所设计的网络架构能够取得更好的94.85%分类性能,相比其中最高的网络模型准确率可以提升0.43%。

4 结束语

本文结合中医医师的诊疗经验,提出一种基于轻型卷积神经网络架构的舌苔颜色分类方法。首先,对样本中不平衡的舌苔颜色类别进行数据扩充;然后,根据舌象样本的特点,设计了一种轻型卷积神经网络,将特征提取和分类纳入到一个框架中统一进行处理;最后,通过数据驱动学习图像与其属性的映射关系,得到苔色分类模型,从而实现舌苔颜色的分类。实验证明,所提出的方法在舌苔颜色分类方面能取得更好的分类性能。未来,将通过完善数据集和优化网络结构的方式,进一步提高舌苔颜色分类的准确率。希望通过进行这一研究,能够促进中医舌诊智能化分析的发展,同时对辅助中医临床诊疗及临床研究具有现实意义。

猜你喜欢

舌象舌苔卷积
574例新型冠状病毒肺炎康复者舌象特征分析
基于Citespace的国内肿瘤舌象研究可视化分析(2001-2020年)
基于Citespace糖尿病舌象研究的文献计量与可视化分析
基于3D-Winograd的快速卷积算法设计及FPGA实现
舌象仪临床应用研究的方法学及报告质量评价
卷积神经网络的分析与设计
从滤波器理解卷积
宝宝需要清洁舌苔吗
基于傅里叶域卷积表示的目标跟踪算法
刷牙别忘清理舌苔