一种基于卷积神经网络的中医舌色苔色协同分类方法
文献发布时间:2023-06-19 11:32:36
技术领域
本发明属于计算机视觉和中医诊断学领域,具体涉及计算机图像处理、深度学习、中医舌诊等技术。
背景技术
舌诊是中医四诊中的核心内容,医生通过观察患者的舌色、苔色、腐腻、胖瘦等各种舌象特征(以下简称舌象诊察特征)来诊察病症,是中医辨证施治的关键环节之一。随着时代的变迁,舌诊现代化已成为中医发展的必然之路。
中医诊察特征的精准分析是中医舌象客观化中的基础性难题。常用的中医舌象诊察特征包括舌色、苔色、舌苔厚薄、腐腻、润燥、裂纹等多种类别,其中舌色、苔色是中医诊疗中最重要的两种诊察特征。中医舌色可以分为淡白、淡红、红、暗红、紫等5类,苔色则可以分为薄白苔、白苔、白厚苔、薄黄苔、黄苔、黄厚苔、褐苔、灰苔、黑苔等9类。在利用计算机进行中医舌色苔色的自动分析时,往往将其看作是分类问题,采用模式识别的方法加以实现。
传统的中医舌色苔色分析普遍采用“人工设计特征+分类器”的处理框架,首先针对舌色、苔色的特点分别设计专门的特征提取方法,然后利用提取的特征训练不同的分类器,进行舌色、苔色的识别。这种处理方法存在以下不足:
(1)由于人工特征的表达能力有限,因此舌色、苔色分析的准确度不高,距离临床应用尚有很大的距离;
(2)对于舌色、苔色,分别提取不同的特征、设计不同的分类器加以实现,导致算法的实现复杂度比较高。
近年来,深度学习在图像分类、目标检测以及语义分割等诸多领域取得了巨大成功。相较于传统的机器学习方法,深度学习可以直接从海量数据中自动学习层次式的特征表示,通过构建一个多层神经网络,使机器自动地学习隐含在数据内部的关系。与人工设计特征相比,深度特征更具鲁棒性、表达能力更强,在表达图像的多层次和上下文信息方面具有非常突出的优势。
本发明将深度学习技术应用于中医舌诊中,提出了一种基于深度卷积神经网络的舌色苔色协同分析方法。由于舌色、苔色都是利用颜色特征来进行识别,均需要对舌体区域提取颜色特征,二个任务具有相似性。因此本发明采用多任务学习的思路来实现舌色、苔色的协同识别。该方法不是采取常见的“特征提取+分类器”的思路,而是采用“特征提取+映射”的思路,即:首先,设计一个共享的深度神经网络架构,提取中医舌图像中包含的舌色苔色共有深度特征,以及舌象的特有语义特征;然后,对舌色、苔色的标签进行编码、组合,得到舌色苔色的组合标签向量;最后,设计一个深度神经网络,通过训练,建立舌色苔色共有深度特征和组合标签向量之间的映射模型。采用这样的映射方式,在一个框架下,就可以同时实现舌色、苔色两种诊察特征的识别,不仅实现简单,而且充分利用了舌色、苔色两种属性之间的内在关联关系,可以获得更高的识别准确率。
发明内容
目的:提出一种中医舌色苔色协同分类方法,通过挖掘利用舌色、苔色之间的潜在关联关系,仅采用一个深度卷积神经网络架构,就可以同时实现舌色、苔色两种诊察特征的精准分析。
为了达到上述目标,本发明提出了如下的技术方案:首先,采用ResNeXt作为主干网络提取舌图像中舌色、苔色的共有深度特征;然后,将舌色、苔色原有的标签进行二进制编码、组合,形成一个二进制标签组合向量;最后,设计一个深度神经网络,建立舌图像深度特征与二进制标签组合向量之间的映射关系,实现中医舌色、苔色的协同识别。
该方案包括构建数据集、舌体区域舌色苔色共有深度特征的提取、舌色苔色协同识别模型的建立等三个步骤。下面详细介绍每一个步骤。
步骤1:构建数据集
深度学习需要以大数据作为支撑。本发明首先需要构建数据集,用于训练深度神经网络模型。
1.1舌体分割
本发明通过SIPL型中医舌象仪采集中医舌图像,得到的图像中不仅包含舌图像,还包含人脸、嘴唇等其他区域。由于人脸部分和舌体部分的颜色相近,为了减小人脸部分对舌色苔色分类的干扰,需要将舌体区域分割出来。本发明采用SegNet分割网络进行舌体分割,得到舌体区域。
1.2舌色苔色标签的二进制编码组合
每幅舌图像的舌色、苔色均由有经验的中医医师进行了手工标定。本发明将原有舌图像的舌色苔色标签进行二进制编码,并进行组合,得到一个二进制的标签组合向量。
经过这样的处理,每个分割后的舌体区域均对应着一个二进制标签组合向量,这些一一对应的数据样本对构成数据集,用于深度神经网络模型的训练、测试。
步骤2:舌体区域舌色苔色共有深度特征的提取
本发明利用深度残差卷积神经网络ResNeXt来提取舌色苔色的共有深度特征。这种方式可以把舌色、苔色分类这两个相关的任务放在一起学习,通过共享隐含在两个相关任务中的知识,同时训练2个任务,同时提升两个任务的性能,从而提高学习的效率。与单任务学习相比,由于使用了相似任务之间的共享表示信息,在对多个任务同时进行训练时,可以减少训练数据量以及整体模型参数的规模,使预测更加高效,具有更好的泛化效果。
步骤3:舌色苔色协同识别模型的建立
针对舌色和苔色的分类任务,本发明设计了一种包含多个全连接层的深度神经网络结构,该网络结构的输入为采用步骤2得到的舌体区域舌色苔色共有深度特征,输出为通过步骤1.2得到的该舌体的二进制标签组合向量。通过训练,建立共享特征与标签组合向量之间的映射模型。
在识别时,将舌体区域提取的深度特征输入到训练好的映射模型中,输出的是一个14维的向量,包含的是判别概率。从前5维中挑选出概率最大的类别,作为舌色的识别结果;而后9维中概率最大的类别则作为苔色的识别结果。
1、分类准确性高。与传统的舌色、苔色分别进行识别相比,基于多任务学习的思想实现舌色苔色特征的共享,使得分类任务之间可以实现知识的相互补充,相互学习,增加了网络的泛化能力,提升了分类的准确率。另外,由于充分利用了舌色、苔色之间的关联关系,也有助于提升分类的准确率,能够满足实际应用需求;
2、实现复杂度低。本发明通过舌色、苔色特征共享和标签的二进制编码组合,利用深度神经网络来实现共享特征与标签组合向量之间的映射,这样可以在一个架构下同时实现舌色、苔色的识别,无需为舌色、苔色识别分别设计不同的特征提取方法和分类器。
附图说明
图1用于舌体分割的SegNet网络结构图
图2ResNeXt网络结构图
图3ResNeXt网络训练图
图4面向舌色苔色协同识别的深度神经网络结构
具体实施方式
步骤1:构建数据集
步骤1.1舌体分割
本发明使用SegNet网络进行舌体分割,其网络结构如图1所示。SegNet网络采用的是编码器+解码器的架构,编码和解码分别对应着4层的下采样和4层上采样。编码部分采用的是VGG-16的前13层卷积网络,用于提取深度特征,并将池化的索引值保存;解码部分刚好与编码部分相反,采用的是反卷积与上采样的组合方式。反卷积可以使分类后的特征得以重现,上采样可以恢复原始图像的尺寸。最后,利用Softmax将不同分类的最大值输出,得到分割后的舌体区域。
1.2舌色苔色标签的二进制编码组合
本发明将舌色、苔色的原有标签进行二进制编码、组合后,得到一个标签组合向量。每幅舌图像都对应着2种属性、共计14个类别,其中舌色属性有5个(淡白,淡红,红,暗红,紫)类别,苔色属性有9个(薄白苔、中厚白苔,厚白苔、薄黄苔、中厚黄苔、厚黄苔、灰黑苔、褐苔、少苔)。将14个属性类别按照固定的位置排列,如表1所示。
表1舌色、苔色属性标签组合顺序
根据原有舌象属性的标注结果,如果该舌图像的舌色、苔色对应着某一类别,则将相应位置处的值设为1,其他位置处的值设为0。
例如,如果一个舌图像的标注为:舌色为红色,苔色为薄白苔,则按照上述的规则进行编码、组合后,会得到一个14维的二进制标签向量[0,0,1,0,0,1,0,0,0,0,0,0,0,0]。其中前5维用来表示舌色对应的类别,后9维表示苔色对应的类别。那么,14维的二进制数据中,前5维数据中只能有1个值为1,其余4个值均应为0。类似地,在后9维数据中,只能有1个值为1,其余8个值均应为0。
这样,每个分割后的舌体区域均对应着一个二进制标签组合向量,这些一一对应的数据样本对构成数据集,用于后续识别网络模型的训练。
步骤2:舌体区域舌色苔色共有深度特征的提取
本发明采用ResNeXt网络作为主干网络来提取舌体区域的深度特征。ResNeXt是ResNet网络的一个变形,其融合了Inception网络思想,网络架构如图2所示。该网络的深度是50层,包含4个layer,其中每个layer包含的Bottleneck分别是[3,4,6,3],每个Bottleneck是将原来的每一卷积操作转化成了32个并行的卷积操作来完成,换句话说就是将原来的1*1﹣>3*3﹣>1*1三个卷积换成了3×32个卷积完成。
步骤2.1:ResNeXt网络的训练
深度神经网络的训练需要大量的数据样本。由于实际应用中医舌象数据的采集比较困难,舌象数据集的规模比较有限。本发明在训练ResNeXt时,采用了“预训练+微调”的策略,如图3所示。即:首先,利用大规模数据集Imagenet对ResNeXt网络进行预训练,得到网络模型的初始参数;然后使用舌象数据集对预训练后的ResNeXt网络模型参数进行微调,当微调到网络收敛的时候,此时得到优化后的网络模型。
训练过程共分为正向传播和反向传播:正向传播是计算输入数据经过神经网络后得到的结果,反向传播主要是通过损失函数来减小网络的计算结果与真实结果之间差距,使得经过网络计算的结果与真实标签的结果不断接近,最终在达到相等后结束。反向传播通过不断地更新网络参数,而使得网络训练性能不断得到优化。
步骤2.2舌色苔色共有深度特征的提取
首先,将分割后的舌体图像归一化到224*224大小,将其输入到训练好的ResNeXt网络模型中,将ResNeXt网络最后一个池化层的输出提取出来,作为舌体图像的深度特征。该特征共有2048维。
步骤3:舌色苔色协同识别模型的建立
本发明设计了一种深度神经网络,网络输入为采用步骤2.2得到的2048维深度特征,输出为二进制标签组合向量,有14维。通过训练,建立舌色苔色共享深度特征与标签组合向量之间的映射模型,实现舌色苔色的协同识别。
步骤3.1映射网络结构设计
该网络结构如图4所示,该网络是由全连接层组成,包括1个输入层,3个隐藏层和1个输出层,所对应的神经元个数依次是2048、1024、256、128和14。
网络在输入层和隐藏层的每一层后面都使用了归一化(BN)、(其中归一化的大小分别是2048、1024、256、128),ReLU和Dropout的方法去提高网络的分类性能,并通过分别设计损失函数,来实现舌色、苔色的协同识别。相关描述如下:
(1)Batch Normalization
归一化的操作使得每层网络的输入数据分布更加稳定,加快网络模型的收敛速度,数据在训练的过程中更加的稳定,同时使网络模型对参数不会那么敏感,使得网络学习更加稳定,批量归一化在一定程度上也有正则化的效果。
(2)ReLU
传统的激活函数在随着网络深度的增大,很容易在反向传播的过程中由于梯度之间的相乘关系而造成梯度越来越小,损失收敛的越来越慢,这就会导致出现所谓的梯度消失的现象,为了解决该问题,本发明在深度神经网络的每层后面都加上了ReLU激活函数,这样不仅解决了梯度消失的问题,同时也使得网络的收敛速度加快。
(3)Dropout
Dropout以0.5的概率将隐藏层中的神经元进行随机失活,失活后的神经元不参与神经网络的正向传播和反向传播。神经元的随机失活不仅使得训练网络的参数量大大降低,同时也决定了每次训练的神经网络的结构都会有所不同,增强了模型的鲁棒性。因此,本发明在全连接层使用Dropout策略来提高神经网络的分类性能。
(4)损失函数的设计
由于属性标签之间存在互斥性,所以本发明对舌色和苔色分别设计了损失函数,激活函数使用的是Softmax函数。Softmax函数将网络的输出映射到(0,1)之间,同时它通过指数函数的作用拉大了不同类别之间的差距,增加了区分性,可以更好地输出最大概率对应的类别。Softmax函数计算公式如式(1)所示:
p
本发明使用两个Softmax函数分别对网络输出的前5维和后9维进行激活,针对舌色、苔色设计的损失函数是交叉熵损失,如公式(2)和(3)所示。其中L
训练时总的损失L是将两部分损失相加,如公式(4)所示:
L=L
步骤3.2:舌色苔色协同识别模型的建立
将步骤2.2得到的舌体图像深度特征作为映射网络的输入,舌体图像的14维二进制标签组合向量作为输出,训练映射网络,得到优化后的网络模型。
在识别时,对舌图像首先进行分割,然后提取深度特征,将提取的深度特征输入到训练好的映射网络中,网络的输出为一个14维的组合向量,其中的各个维度表示判别概率。将前5维中概率最大值对应的类别作为舌色的判别结果,将后9维中概率最大值对应的类别作为苔色的判别结果。
本发明提出了一种基于深度卷积神经网络的舌色苔色协同分类方法,该方法不像传统的对舌色或是苔色分别进行分类,而是在统一的框架下,可以同时对舌色、苔色两种舌象诊察特征进行分类。相比于传统的分类方法,不仅实现简单,而且分类准确率有明显的提高。
- 一种基于卷积神经网络的中医舌色苔色协同分类方法
- 一种基于卷积神经网络的中医舌色苔色自动分析方法