基于深度迁移学习的舌象特征分类方法研究*
2021-09-24许家佗
宋 超,王 斌,许家佗
(1.南京财经大学信息工程学院,江苏 南京 210023;2.上海中医药大学基础医学院,上海 201203)
1 引言
中医讲究“望、闻、问、切”,而舌诊作为中医望诊中一个重要组成部分,在中医临床诊断中起着重要的作用。舌诊是指医生通过观察患者的舌质和舌苔形态的变化来判断诊查病症的方法。舌象指的是舌的表象,从计算机的角度来看就是舌体图像的特征信息,一般可以观察到的舌象种类有舌色、舌苔、裂纹、点刺和瘀点等。
传统中医舌诊过程是医生通过肉眼观察舌体的形态特征加以诊断,所以经常受环境因素和医生主观经验的影响,难以达到标准化和客观化。随着计算机技术的飞速发展,人们尝试通过计算机技术来解决中医诊断客观化问题。基于计算机技术的舌象分类方法主要由2部分组成:舌体分割和舌象识别。传统方法对舌体的分割多采用手工或阈值法等方式,在面对大量数据时会耗费很大的成本,所以如何精确高效地将舌体部分从大量面部图像中分割出来存在一定的困难。同时,传统的舌象分类方法是从舌体的颜色和纹理等特征入手,通过统计学的方法进行特征分类,这些分类方法存在准确度低、泛化能力差的问题。如何更加精确地进行舌象特征分类是推进中医舌诊标准化和客观化的一个亟需解决的问题。
自Hinton等[1]提出深度信念网络的概念,深度学习一直是研究者们研究的热点。2012年,Krizhevsky等[2]在ImageNet大赛上提出了AlexNet并获得冠军,再次证明深度学习在图像识别与分类任务中的表现优异。而之后出现的深度网络如VGG(Visual Geometry Group Network)[3]、GoogLeNet[4,5]和残差网络ResNet(Residual Network)[6]在图像识别的能力都已经接近甚至超越了人类。随着深度学习的发展,各种各样的深度学习框架被研发出来,包括 TensorFlow[7]、Theano[8]、Cuda-Convnet[9]、Caffe[10]和Torch[11]等。近年来,一些学者尝试将深度学习应用于医学图像分析,如将深度学习应用于肿瘤检测任务,在肿瘤的预防、早期发现、诊断和干预、预后评估等方面都取得了成果[12]。
本文重点研究用深度学习解决中医舌象特征分类问题,以提高中医舌象的机器识别性能,促进中医自动诊疗技术的发展。值得指出的是,尽管深度学习已成功应用于许多领域,但是医学图像本身样本数量不足的问题阻碍了深度学习方法在医学图像分析领域的应用。针对传统舌体分割方法费时费力以及深度学习在小样本数据上分类效果差的问题,本文提出了一种基于深度迁移学习的舌象分类方法,即通过基于LBP(Local Binary Pattern)特征[13]的级联分类器[14]的方法来实现舌体的自动定位分割,再在不同的卷积神经网络上进行迁移学习,实现对不同舌象特征的分类识别,达到了94%以上的准确度。
本文的主要创新与贡献有如下几点:(1)虽然已有工作将深度学习方法应用于舌象特征分类问题,但由于舌象样本的稀缺所带来的训练样本不足的问题,该类方法的分类性能并不理想。本文首次提出用深度迁移学习的方法来进行舌象特征分类,有效地克服了训练样本不足的局限性,大幅提升了分类性能。(2)舌体目标的定位是舌象分类的重要一环,为提高分类准确度,在现有的舌象分类方法中,为了提高分类的准确度,一般采用手工定位的方式,从而不能达到舌象分类的全自动化。而传统的图像分割方法在应用于舌体分割时,其分割效果依赖于大量的参数设置和图像质量,且计算复杂,不具有稳定性和鲁棒性。本文首次提出用基于级联分类器的机器学习方法来实现舌体目标的精确定位,保证了舌象分类的准确度,减少了舌象分类系统的人工干预。(3)跟其它医学图像一样,舌象数据也存在稀缺性的问题,在样本采集过程中会出现样本量不足的情况。而本文建立了一个有2 245幅图像的舌象数据库,用于舌象特征分类的研究。数据库中的图像从专门中医诊疗机构采集,并由专家标定。
2 相关工作
舌象分类主要分为舌体分割和舌象识别2个阶段,其中传统的舌体分割方法主要依据舌体的颜色、纹理和形状等特征进行目标分割。有效分割的舌体图像数据是提升舌象识别准确率的前提条件,而舌象识别算法的设计又是决定识别准确率的关键。
舌体图像分割的主要任务是将舌体部位从人的脸部、嘴巴及牙齿等背景中分割出来,对分割后的舌象区域进行特征提取,可以有效地提升分类准确度。传统的舌体定位分割方法有GrabCut[15]、Otsu阈值法[16]和图论法[17]。舌体与相邻区域(尤其是嘴唇)之间有着相似的颜色特征,传统方法通常仅使用单一的颜色分量和先验知识来进行舌体分割,这导致了分割结果的不稳定与不准确。为了解决这一问题,结合稀疏表示和颜色分解等技术的舌象分割方法相继出现[18,19]。
2003年,许家伦等[20]为探讨舌诊客观化的方法,应用灰度差分统计方法,结合对比度(CON)、角度方向二阶矩(ASM)、熵(ENT)、平均值(MEAN)4个参数对舌象纹理进行识别。2006年,张衡翔等[21]提出把HSV颜色空间中极坐标系的H、S分量转化为直角坐标系的X、Y分量,并以此作为颜色特征,比较了这2种颜色特征表达方法对分类结果的影响,实验结果表明,(X,Y,V)颜色特征表示方法具有更好的分类效果。
近年来随着计算机设备的更新和互联网技术的进步,人工智能得到快速发展,目前在医学影像学和临床诊断领域取得了一定成果。2000年,王爱民等[22]提出了基于学习矢量量化LVQ(Learning Vector Quantization)神经网络分类器,实现了舌象分析中的舌色、苔色自动分类。在分类器的设计中,提出了基于“2σ”准则的训练样本筛选方法,有效提高了分类准确率。2007年,肖洪涛等[23]分析了现有舌象颜色分析方法的不足之处,设计了基于像素的舌颜色分类系统结构,提出了一个基于半监督学习的像素分类算法,解决了基于像素的苔色质色分布模型的建立问题。同年,张新峰等[24]采用一种基于粗糙集与支撑向量机概率输出相结合的方法研究中医舌象的多特征融合。
本文提出的方法与上述方法不同:(1)在舌体分割方面,本文提出了一种基于LBP特征的级联分类器方法来实现舌体区域的自动定位分割,有效避免了传统分割方法针对不同数据需要单独提取图像特征的问题;同时也提升了方法的稳定性和性能,自动化程度高,在面对不同环境下采集的舌体图像定位分割任务时鲁棒性较高。(2)在舌体分类方面,为了解决传统舌体分类方法识别率较低以及深度学习方法所需要的大样本数据的困难,本文采用深度迁移学习的方法来解决中医舌象特征分类的问题,在拓宽深度学习的应用范围的同时进一步提高了智能中医舌象分类的准确度。
3 舌体图像预处理
通过图像采集设备获取的人的面部原始图像,除含有舌体目标外,还有其他跟舌体目标无关的信息,如图1所示。因此,本文提出一种基于LBP特征的级联分类器的舌体区域自动定位分割方法。
Figure 1 Original tongue images图1 舌体原始图像数据
3.1 LBP特征描述算子
局部二值模式LBP是一种用来描述图像局部纹理特征的算子,LBP特征描述的是图像在局部范围内对应的纹理信息,如图2所示,它具有旋转不变性和灰度不变性等显著优势。由于舌体在纹理上与面部的其他器官有着显著的区别,所以本文通过提取原始图像的LBP特征来对舌体图像进行特征提取。
Figure 2 Tongue image and LBP feature extraction effect图2 舌体图像及其LBP特征提取效果图
原始的LBP算子定义在3×3的区域内,以区域中心像素为阈值,相邻的8个像素的灰度值与区域中心的像素值进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3×3区域内的8个点经过比较可产生8位二进制数,将这8位二进制数依次排列形成一个二进制数字,这个二进制数字就是中心像素的LBP值。中心像素的LBP值反映了该像素周围区域的纹理信息。
LBP算子的公式如式(1)所示:
(1)
其中,(xc,yc)为中心像素的坐标,p为区域中的第p个像素,ic是中心像素的灰度值,ip为邻域像素的灰度值,s(x)为符号函数,具体定义如式(2)所示:
(2)
3.2 基于LBP特征的级联分类器
为了降低人工提取舌体特征进行目标检测的成本,实现舌体部位的自动定位分割,本文提出将LBP特征与AdaBoost(Adaptive Boosting)算法相结合,组合成一个筛选式的级联分类器对舌体图像像素进行二分类。
本文提出的级联分类器工作流程为:将舌体部分标定为正样本,非舌体部位标定为负样本,训练级联分类器,生成强分类器。然后通过小窗口在目标图像上不断地滑动,每滑动到一个位置,就对该小窗口内的区域进行特征提取,设置大小为50×50的最小窗口和大小为300×300的最大窗口,按1.1倍的比例递增地对小窗口进行增大,以获取不同区域的图像特征。若提取的特征通过了训练好的强分类器的判定,则判定该小窗口所在的区域中含有舌体部分。最终将检测到的舌体区域分割出来。具体流程如图3所示。
Figure 3 Workflow of cascade classifier图3 级联分类器工作流程
本文选取了预先截取好的300幅舌体区域图像作为正样本和1 000幅不包含舌体区域的图像作为负样本,其中正样本图像的像素统一为40×40,负样本图像大小不一。
通过以下几个指标来评判分类器的性能:
(3)
(4)
(5)
(6)
其中,TP表示正样本被正确检测的数量,FN表示正样本被漏检的数量,TN表示负样本被正确检测的数量,FP表示负样本被误检的数量;precision表示精度,即所有被检测到的目标中正样本所占的比例;recall表示召回率,度量检测器对正样本的通过能力,越接近1越好;hitRate表示命中率,定义与召回率recall相同;falseAlarmRate表示误检率,表示负样本被误检为目标的概率。在训练分类器时,需要设定hitRate的最小值和falseAlarmRate的最大值,以保证训练具有较高的效率。本文将minHitRate设定为0.999,maxFalseAlarmRate设定为0.2。在进行舌体定位分割实验之前,本文预先将原始图像的长和宽均缩小10倍,以适配级联分类器训练产生的模型。
4 基于深度迁移学习的舌象特征分类方法
对舌体区域进行目标检测的预处理后,用深度学习的方法来提取舌体区域的特征。与传统的机器学习方法相比,深度学习依赖大规模的数据样本,这为数据准备和模型训练2个阶段都带来了巨大的困难。在某些特殊的领域,数据不足更是不可避免的,比如医学图像,很多疾病的案例本身就比较特殊,能采集到的数据比较少,而做好标签的医学图像数据就更加难以获取。为了解决因样本量不足而带来的深度网络无法提取到有效特征的问题,本文提出通过改进3种不同的具有代表性的卷积神经网络(Inception_v3、ResNet18和ResNet50)并分别进行深度迁移学习训练来实现舌象特征的分类,如图4所示。
Figure 4 Flow chart of tongue feature classification图4 舌象特征分类流程图
传统的卷积神经网络中,卷积层和池化层是顺序连接的。通常有2种方式提高神经网络的性能,即增加网络的深度和宽度。其中,深度指的是网络层次数量,宽度指的是网络中神经元的数量。舌象数据具有丰富的特征,因此需要一个足够深的神经网络来提取舌体图像上的特征。但是,随着网络深度的增加会产生以下问题:(1)参数过多,在训练集有限的情况下,很容易产生过拟合;(2)网络越大、参数越多,计算的复杂度就越大,使得网络本身难以应用;(3)网络越深,容易出现梯度弥散的问题。
为了解决上述问题,本文选取了Inception_v3、ResNet18和ResNet50 3种不同的神经网络,它们既拥有较深的网络层次,可以提取足够丰富的图像特征,同时它们又具有不同的网络优化策略,可以进一步提升网络的性能。
4.1 用于迁移学习的3种深度神经网络
为了在增加网络深度和宽度的同时能够减少参数,GoogLeNet团队提出了Inception网络结构,即构造一种“基础神经元”结构来搭建一个具有稀疏性且具有高计算性能的网络。如图5所示,Inception模块由4个主要结构组成:1×1卷积核、3×3卷积核、5×5卷积核和3×3池化,核心思想是通过多个卷积核提取图像不同尺度的信息,最后进行融合,从而得到图像更好的表征。
Figure 5 Inception module图5 Inception模块
由级联分类器定位分割的舌体图像中,舌体部分占整幅图像的比例不定,会干扰神经网络对舌象特征的学习训练,而Inception_v3网络采用不同的卷积核来代替单一的卷积核,可以提取不同尺度的图像信息,有效地避免了因舌体在图像中所占比例的不同而带来的识别准确度下降的问题。
与Inception_v3相似,ResNet也是一种较深的网络结构,如图6所示,但与Inception_v3采用多种卷积核提取不同尺度信息不一样,残差网络利用残差模块的思想来解决随着网络加深,网络准确度反而下降的问题。残差网络借鉴了Highway Network思想,相当于开了个“捷径”使得输入矩阵X可以直达输出,优化的目标由原来的拟合输出变成输出和输入的差。因此,残差网络可以很好地解决随着网络层数的加深而导致网络退化的问题。
Figure 6 Residual module图6 残差模块
残差网络主要有5种不同深度的神经网络结构,深度分别为18,34,50,101,152层。这些残差网络不仅在网络深度上不同,在网络结构上也有区别,它们由不同的基本模块构成。其中ResNet18和ResNet34由BasicBlock(如图7a所示)组成,而ResNet50及更深的残差网络由BottleNeck(如图7b所示)组成。与BasicBlock不同,BottleNeck分别使用1×1,3×3和1×1的卷积核来压缩维度、卷积处理和恢复维度,因为随着网络层数的加深,需要考虑网络模型的计算效率,而引用BottleNeck结构可以有效节省网络的计算成本。
Figure 7 BasicBlock and BottleNeck图7 BasicBlock和BottleNeck
这3种深度神经网络不仅在网络深度上有所不同,在网络结构上也有着各自的优化策略。因此,本文通过改进这3种网络来进行舌象特征分类的深度迁移学习训练,既验证了不同的网络在解决舌象特征分类问题上的有效性,也分析了神经网络的深度对分类准确度的影响。
4.2 基于深度迁移学习的舌象特征分类方法
本文将深度迁移学习和舌象特征分类问题相结合,通过改进上述3种不同的神经网络,提出了基于深度迁移学习的舌象特征分类方法。将经过分割后的舌体图像作为神经网络的输入,再用不同的深度神经网络对舌象特征进行提取,最后训练生成舌象特征分类模型,实现对3种不同舌象特征的分类预测。本文将深度迁移学习应用于舌象特征分类问题,有效避免了因样本量不足导致分类模型性能下降的问题,提高了网络模型的稳定性和分类准确度。
Figure 8 Tongue feature classification based on deep transfer learning图8 基于深度迁移学习的舌象特征分类
本文选取的3种深度神经网络有不同的网络优化设计,能够对图像数据进行有效的特征提取。但由于本文选取的舌体图像数据集与原网络使用的ImageNet数据集在样本规模和分布上存在较大差异,因此这些网络在网络结构和训练参数设置上无法适应本文的舌象特征分类问题,容易出现过拟合和梯度消失的情况,从而导致网络模型无法得到有效收敛。为了实现网络模型的有效收敛以及提升网络的稳定性和性能,本文在原有的神经网络上进行了如下改进:(1)保留原网络的特征提取层,删除网络原有的输出层,加上一层全局池化层(Global Average Pooling Layer)和一层全连接层(Fully-connected Layer)并通过Softmax函数进行输出;(2)选用随机梯度下降SGD(Stochastic Gradient Desent)算法来优化网络训练;(3)针对不同的网络模型,设置不同的学习率以实现有效的特征拟合。通过对网络的改进,有效防止了网络模型过拟合的发生,提高了网络的稳定性和分类准确度。
如图8所示,首先将预处理后的舌体图像数据按照神经网络输入层所需要的数据输入尺寸进行缩放,将输入图像的大小分别改为224×224(ResNet)和299×299 (Inception_v3),再通过3种不同的神经网络对舌象特征进行特征提取,根据本文的舌象特征分类需求重写原网络的输出层并进行深度迁移学习训练,最终更新了网络的模型参数,建立了新的舌象特征分类模型。
本文使用分割后的舌体图像数据作为深度迁移学习的数据集,有效降低了使用原始图像数据时背景区域对舌象特征分类识别的干扰。同时采用迁移学习的方法可以有效避免因舌体图像样本量的不足对网络训练带来的影响。由于原有网络中全连接层参数量过大,降低了训练的速度,同时容易产生过拟合,因此,本文采用全局池化层代替原有的全连接层输出,改进了原有的网络结构,使整个网络在结构上实现正则化,从而防止过拟合的发生。针对每一个网络结构,选择3种不同的舌象特征分类问题对网络性能进行测试,以分析神经网络在学习不同舌象特征时的表现。同时,在3种不同深度的神经网络上进行迁移学习,通过对比3种网络的分类准确度,分析了不同的网络结构在解决舌象特征分类问题时的性能,同时也分析了神经网络的深度对舌象特征分类结果的影响。
5 实验
为了验证本文提出的基于深度迁移学习的舌象特征分类方法的有效性,使用从专业中医医疗机构获取的舌体图像作为数据集并进行测试。首先通过级联分类器对舌体图像进行分割处理,然后将分割好的舌体图像数据在不同深度的神经网络上进行迁移学习训练,并针对3种不同的舌象特征分类问题进行了对比实验。
5.1 数据集
本文的实验数据由上海中医药大学许家佗教授实验室提供,这些图像数据来自多个医院采集点,通过许家佗实验室自主研发的中医舌诊仪进行采集,并由中医专家进行分类标定。其中包括:齿痕舌516幅,非齿痕舌566幅,裂纹舌391幅,非裂纹舌250幅,厚苔舌392幅,薄苔舌130幅,原始舌象图像的大小固定为5568×3172像素。在进行分类实验之前,对数据进行数据增强,包括旋转角度、平移、翻转等操作,以保证不同舌象特征的舌象数据具有相同规模的训练集、验证集和测试集,其中训练数据800例,测试数据100例,验证数据100例。
本文用于分类的舌象特征分别是:齿痕舌与非齿痕舌、裂纹舌和非裂纹舌以及厚薄舌苔,它们的基本特征如图9所示。
Figure 9 Six typical tongue features图9 6类典型舌象特征
5.2 性能评估指标
在机器学习领域,对模型的测量和评估是至关重要的,只有选择与问题相匹配的评估方法,才能快速地发现在模型选择和训练过程中可能出现的问题,迭代地对模型进行优化。而在分类问题上,通常用分类准确度来评估网络模型的好坏,根据分类器在测试数据集上的预测或正确或不正确可以分为4种情况:TP指将正类预测为正类的数目;FN指将正类预测为负类的数目;FP指将负类预测为正类的数目;TN指将负类预测为负类的数目;P表示所有正类的数目;N表示所有负类的数目。模型的准确度计算方法如式(7)所示:
(7)
由式(7)可知,模型准确度指的是测试集中的样本被正确预测的比例。通过分析准确度可以评估一个网络模型是否具有良好的识别性能。
5.3 实验结果与分析
本文在3种网络上进行迁移学习,训练参数如表1所示。
Table 1 Training parameters of deep transfer learning network proposed in this paper表1 本文提出的深度迁移学习网络训练参数表
为了研究网络深度对舌象特征分类性能的影响,将本文方法与另外3种具有不同深度的神经网络(LeNet-5[25]、AlexNet、VGG16)进行对比。同时直接在ResNet18、ResNet50和Inception_v3上进行特征学习,与改进后的迁移学习方法进行比较,进一步分析神经网络深度和网络结构对网络分类性能的影响。
本文对不同深度的神经网络采用非迁移学习和迁移学习的方式来进行特征提取和分类,由表2所示的分类准确度对比可见,对于浅层的网络,随着网络层数的加深,特征分类的准确度总体呈现上升的趋势,这是因为网络层数越深,网络能够学习到更加抽象的特征,有利于对不同舌象进行分类识别。然而,当网络层数继续加深时,网络的分类准确度却陡然下降,这是因为训练样本量少,网络产生了过拟合的情况。
Table 2 Comparison of accuracy of tongue feature classification between deep transfer learning method and other networks表2 本文提出的深度迁移学习方法 与不同网络的舌象特征分类准确度对比 %
而本文提出的迁移学习方法在面对小样本的数据时,依然呈现出良好的分类性能,实现了深度神经网络下的小样本舌象数据的迁移学习。通过对实验结果的分析,可以得到以下几点结论:(1)与非迁移学习的方法相比,本文提出的深度迁移学习方法在舌象特征分类准确度上得到了提升,同时降低了深度神经网络的学习成本,加快了网络模型的训练速度; (2)本文改进的3种卷积神经网络在深度迁移学习任务上表现各异,对3类不同的舌象特征达到了85%以上的平均分类准确度,其中基于Inception_v3的迁移学习方法表现最佳,平均分类准确度达到94.88%;(3)由于表2中的神经网络层数是依次增加的,可以看出,随着网络层数的加深,分类识别的准确度在不断提高,其原因是网络层数越深,网络能够提取的图像特征就越丰富,生成的分类模型就具有更好的稳定性和性能。
5.4 不同图像预处理方法对舌象特征分类的影响
为了进一步探究不同的舌象数据集对深度迁移学习特征提取过程的影响,本文选取3种不同的训练数据:原始舌象图像、基于GrabCut分割的舌体图像和基于级联分类器定位的舌体图像(如图10所示),通过在VGG16网络上进行深度迁移学习来探究不同分割效果的数据在深度迁移神经网络中的特征提取性能。
Figure 10 Segmentation images of 3 kinds of tongue images图10 3种舌象分割图
Table 3 Tongue feature classification accuracy based on different segmentation methods
通过表3所示的实验结果可知,对比原始图像,经过GrabCut分割和级联分类器定位分割后的舌象图像在进行深度迁移训练后的分类准确度都有了明显的提升。基于GrabCut算法虽然实现了舌体分割的自动化过程,但在分割的稳定性和准确度上有所欠缺。而本文方法在分类准确度上高于传统分割方法,同时在时间、人力成本上又远低于传统分割方法。因此,本文选择通过级联分类器的方法来对原始数据进行自动舌体定位,为后续探究不同网络结构和网络深度对舌象特征分类的影响提供了良好的数据基础。
6 结束语
本文提出了一种基于深度迁移学习的舌象特征分类方法,首先利用级联分类器实现有效的舌体定位分割;然后再通过改进3种不同的深度神经网络模型来对分割后的舌体数据进行迁移学习训练;最终实现舌象特征的分类识别,提升了舌象特征分类的准确度。其中,改进后的Inception_v3网络在3种舌象特征分类问题上都表现优异,平均准确度达到94.88%。ResNet50网络在厚薄苔分类问题上表现突出,达到了96.88%的准确度。由此可见,深度学习方法可以很好地解决传统中医舌象分类问题,这将有力地推动中医舌诊的智能化和客观化发展。