孙旭豪,傅中添,严玲,周作建
(南京中医药大学人工智能与信息技术学院,江苏 南京 210023)
望诊是中医诊断最常用的方法之一,而目诊在其中占有十分重要的地位。所谓目诊,即通过有目的性的观察患者眼睛各部位的神色、形态等的变化,来了解人体的健康状况,推断病机。传统的目诊法通过医生肉眼观察眼象,易受光线、角度等环境因素影响,使得目诊结果易产生偏差;且医生的诊断主要是基于其医疗实践经验的积累,往往会受到主观因素的影响,没有有效的量化手段,缺乏客观评价依据。不同地域、流派的中医师对于辨证均具有各自独到的见解,即使是对同一种症状也往往会出现不同的诊断结果,这给包括目诊在内的中医临床诊断、科学研究等工作带来许多不便[1]。
近几年,对中医客观化的需求愈发凸显。通过对患者症状以及中医辨证模型的量化,达到用数学方法模拟中医诊断过程的目的,类似的思路目前已广泛应用于以舌诊为代表的望诊客观化研究中。阚红星等通过色差校正、K均值聚类等算法分离出舌图像中的舌质区域与舌苔区域,提取颜色、裂纹等特征值,并使用随机森林构建舌图像的2型糖尿病识别模型[2]。许家佗等对207名大学生的面部图像在RGB、HIS、L*a*b*等颜色空间中进行颜色特征分析,得出了健康与亚健康人群在局部面色上具有显著差异的结论[3]。
然而,目前针对中医辨证客观化的研究还处于薄弱阶段,国内尚无基于目诊辨证客观化的研究。针对这种情况,本文提出了一种通过open-cv将图像切割并增强后输入基于EfficientNet[4]构建的卷积神经网络提取阴虚证特征并进行分类,完成针对阴虚证的眼象识别。
Retinex算法常用于消除图像色彩偏差,强化图像特征。Retinex由retina(视网膜)以及cortex(皮层)两个单词组成,意为人类肉眼所感知到的颜色是外界不同波长的光线被视网膜接受后经由大脑皮层的处理产生的,因此物体的颜色是由物体反射不同波长光线的能力而不是反射光强度所决定的,不会受到外界光线的波长及强度的影响。因此Retinex算法可以对光照不均衡的图像进行自适应的增强,对图像特征进行全方位的强化。
由于原始图像中不仅记录了眼象数据,还包含有眼象仪支架以及眼睛周围部分等无关图像数据(如图1),会对模型的特征提取造成干扰。因此本文应用了一种针对眼象的图像定位方法。
图1 原始图像
2.1.1 白平衡处理
在大多数情况下由于不同色温的光源影响,导致图像的色调会随之出现一定程度的偏差。人类的肉眼可以自动调节这种偏差,使得图像更接近其原本的色调。而图像白平衡(White Balance)算法则模拟了该过程。本文所用白平衡算法将图像转到L*a*b色彩空间,再将每个像素的a、b色值根据整幅图像a、b色值的均值进行调整。L*a*b色彩空间基于肉眼对颜色的感知建立,拥有比RGB、CMYK更为广阔的色域,能够表示人眼所能感知到的所有颜色。具体公式如下:
(1)
(2)
其中Ix,y,l、Ix,y,a、Ix,y,b分别为图片第x行第y列像素的明度、a色值以及b色值(如图2)。
图2 白平衡处理后的图像
2.1.2 轮廓检测
将纠正偏差后的图像转到HSV色彩空间后采用OTSU阈值二值化处理,根据灰度将图像分为背景和目标,再进行轮廓检测(如图3)。
图3 轮廓检测结果
由于所得图像中虹膜部位颜色普遍偏深,反映到RGB色彩空间中表现为虹膜部位R、G、B三通道色值均趋于0,不利于后续的特征提取。
Retinex理论认为物体的颜色是由物体对不同波长光线(即颜色)的反射能力而不是由反射光决定的,即:
S(x,y)=R(x,y)*L(x,y)
(3)
其中S(x,y)为反射光线,L(x,y)为环境光,而R(x,y)就是携带着物体信息的反射分量。
本文使用基于Retinex理论的MSRCP算法[6],即多尺度且带有色彩保护的Retinex,公式如下,其中I为图像中任一像素,σ1、σ2、σ3为高斯模糊的3种尺度,s1、s2表示像素的两种剪切尺度,其效果可以显著增强图像特征(如图4)。
(4)
图4 MSRCP处理效果
神经网络对特征的学习需要大量经过人工标记的训练以及测试样本,如用于人脸识别的LFW数据集中包含了超过5 000人的总计13 000张面部图片,而用于视觉对象识别的ImageNet数据集更是拥有1 000个类别的超过120万张高分辨率图片,数据集的收集和标注是一个庞大的工程。在大多数情况下,数据集的规模是无法满足深度神经网络的训练要求的,因而会出现过拟合(Overfitting)的现象,即神经网络学习到了在训练数据中完全没有意义的特征,导致模型在训练集上的表现远远超过在测试集上的表现,网络模型不具有鲁棒性。本文使用多种数据增强方法扩大数据集,在抗过拟合的同时可以增强模型在各种数据采集环境下的抗干扰能力。
3.1.1 仿射
仿射变换是指对一个向量进行一定的平移运动以及线性变换,在保留向量原有特征的前提下转化为另一个向量的过程。对图像中任意像素点的变换可表示为:
(5)
仿射变换根据变换矩阵的不同可分解为平移、缩放、旋转、错切等基本变换手段,可以在不破坏图像原有特征的情况下将图像的观测角度从正面变为侧面,从而降低识别模型对观测角度的敏感度。本文将输入图像沿顺时针或逆时针随机旋转0°~20°,水平及垂直旋转,横向及纵向随机缩放0.8~1.2倍,将数据集扩充了1 024倍。
3.1.2 高斯噪声
本文使用高斯扰动对图像的红色(R)、绿色(G)、蓝色(B)通道分别加上一个均值为0、标准差为16的高斯噪声,模拟在不同光线环境下的观测。扰动效果如图(2)。此种方法可以降低模型对光线以及图像质量的敏感度。
图5 高斯扰动结果
在训练模型之前需要对原始数据进行预先处理,消除无关信息,强化有用信息,使模型能够更容易地学习到图像特征。
3.2.1 图像缩放
由于在预处理阶段已经将图像进行分割处理,所得图像长宽不一致,不利于模型的训练以及数据迁移,需要将图片统一缩放为300×300的尺寸。定义Z为缩放矩阵,M为原矩阵,则:
Zx,y=(1-u)×(1-v)×Mi,j
+(1-u)×v×Mi,j+1
+u×(1-v)×Mi+1,j
+u×v×Mi+1,j+1
(6)
其中:
i+u=300(i∈N)
j+v=300(j∈N)
(7)
3.2.2 白化
图像中像素与像素之间的相关性和两者之间的距离呈正相关,同一片区域内的像素通常拥有相似的信息,用作训练数据是冗余的,而图像白化(Whitening)可以降低数据之间的相关性,使数据所包含的特征更加集中,增加特征提取网络的训练速度[7]。
(8)
其中Xrotate为原数据在主成分轴上的投影。
本文采用EfficientNet卷积神经网络作为特征提取模型。该模型在ImageNet数据集上获得了84.4%的Top-1精度和97.1%的Top-5精度,超越了此前表现最好的GPipe,并且参数量减少了8.4倍,速度快了6.1倍(如表1)。
表1 模型性能对比
3.3.1 模型尺寸的选择
EfficientNet模型重新思考了在原有网络结构基础上进一步增加模型精度的方法:增加网络的深度、宽度以及分辨率。单独增加其中任意一项都会提高网络的精度,但是这一项参数的不断增加又会导致参数增长的精度回报率降低,于是在模型最大参数量不变的情况下找出深度、宽度、分辨率的最优组合就变成了如下的优化问题:
(9)
EfficientNet根据不同尺寸的图像构建了8个模型,本文根据眼象图片的尺寸选择EfficientNet-B3。
3.3.2 基线模型
EfficientNet模型缩放的高效性严重依赖于其基线模型,因此基线模型的选择是构建EfficientNet的重要一环。Mingxing Tan等人并没有使用MobileNets等现有的高性能模型,而是通过网络结构搜索[14-16]自动构建了基线模型EfficientNet-B0,令后续的模型缩放能够将精度最大化。
传统卷积神经网络在获得图像Feather Map后会接全连接层,而全连接层的参数量会占据整个模型参数量的90%以上,大大降低了模型训练速度,而且过度密集的参数会使过拟合更易发生。因此本文将EfficientNet输出的Feather Map后接全局平均池化层,取矩阵中每一层特征映射的平均值组成一维向量,相当于将全连接层中的展开卷积层以及对特征映射分类的过程合二为一,通过这种手段适当降低模型的拟合能力,以提高模型泛化能力,削弱过拟合现象;剔除了全连接层黑箱的特征,直接赋予了每个通道实际意义。值得一提的是,全局平均池化忽略了每一层特征映射的大小,从而赋予了网络可以接受任意大小图像输入的能力。
为了能加快模型的学习速度,本实验使用迁移学习,将已经在ImageNet数据集上训练好的EfficientNet参数作为特征提取模型的初始参数,从而继承模型从ImageNet数据集上学习到的特征提取能力,再在此基础上进行微调(fine tune)。ImageNet数据集的1 000个分类涵盖了几乎所有常见物品,且数据量十分庞大,可以赋予模型极强的特征提取能力以及泛化能力。该方法不仅可以节省大量的训练时间和计算资源,更可以一定程度上削弱过拟合现象,使模型拥有比随机初始化参数更好的表现[13]。
特征提取模型共有3个超参数(Hyper-parameters),分别为学习率、批尺寸以及amsgrad(是否使用Adam[17]算法的AMSGrad[18]变种)。AMSGrad算法针对Adam算法收敛性证明的缺陷,对Adam的更新规则作出了一些改进,在某些应用场景下拥有超过Adam算法的收敛速度。本文采用正交实验法对这3个超参数进行考量,建立3因素2水平正交实验因素表(见表2),使用眼象数据集对不同超参数组合下模型的综合性能进行评估。对于每组参数迭代20次,以验证准确率作为性能指标确定最佳超参数组合。
表2 正交因素水平
本文根据表2的正交因素水平设计了8组实验(如表3),第3组超参数取得了最佳性能。因此采用学习率为1e-3,批尺寸为128,Amsgrad优化器的方案(迭代过程如图6)。
图6 损失值优化过程
表3 超参数正交实验结果
本文使用Python的深度学习库Keras构建阴虚证眼象识别模型,通过EfficientNet模型迁移学习,设置学习率1e-3,批尺寸128,采用Amsgrad优化器及交叉熵损失函数,模拟中医目诊对眼象图片的阴虚证特征提取以及分类。使用验证数据集对该模型的阴虚证候识别准确度进行验证,得到了90.01%的准确率。
本研究首次尝试使用图像识别技术以及EfficientNet,对目图像进行特征提取以及证候识别,并取得了较好的结果。这表明通过深度学习实现中医辨证客观化的技术路线是可行的,填补了目前在目诊以及辨证客观化研究领域的不足。
目前通过深度学习实现中医辨证客观化的研究尚处于初级阶段,下一步的研究目标将不仅限于目诊的客观化,而是舌诊、目诊、面诊的综合客观化研究,同时扩充数据集,进一步提高模型精度。