芮迎迎,孔祥勇,刘亚楠,董鑫,蔡健,卢严砖,况忠伶
上海理工大学医疗器械与食品学院,上海200093
移动健康技术在中医和远程医疗中的应用呈增长趋势,尤其是在新型冠状病毒肺炎(COVID-19)爆发期间。舌诊是中医诊断中的重要环节,因其无接触、有效、无创、实时、便捷、成本低等西医检测无法比拟的优势,能在任何时间、任何地点进行辅助诊断,满足全球初级保健系统的需求。舌象能够反映内脏虚实、气血盛衰、病位深浅、预后好坏[1-2]。通过对舌象的客观化研究,能够观察COVID-19 患者的舌象特征及变化,为防治COVID-19 提供治疗依据[3-4]。由于传统舌诊主要依据医师个人经验,易受环境影响,存在主观性、评判标准不一致等问题。因此,越来越多的计算机研究人员开始将其结合计算机视觉领域,建立客观、定量的中医辅助舌诊系统。
齿痕舌的客观化研究具有重要性和挑战性,齿痕舌是中医诊断的一个重要指标。临床实验结果表明在不同临床分型COVID-19患者的舌形分布研究中,齿痕舌易见于普通型患者。据研究,人群中的齿痕舌占比56%,其中严重者占比11%[5]。齿痕舌的识别更具挑战性,主要原因为:(1)齿痕形状多样,变化大,如不同颜色、不同形状、不同类型的齿痕;(2)由于个人隐私和图像获取的限制,舌部的图像数量有限;(3)用于金标准的图像数量有限。舌象的判读需要多个专家的参与,但专家在有限时间内只能将图片分类为有齿痕和无齿痕,并未在图片上标注出齿痕的位置,无法提供齿痕的位置分布、大小、深度等信息。
舌体分割[6-9]、舌象特征提取及分类取得一定进展,越来越多的学者研究舌象特征与疾病、处方之间的关系[10-12]。Li 等[13]等针对当齿痕舌不是凹入区域时,利用凹入区域信息对齿痕舌进行分类性能不稳定这一问题,提出一种使用多示例学习和卷积神经网络(CNN)三阶段的方法。Sun 等[14]提出一种视觉解释方法来解决神经网络学习到的特征可视化问题,该方法将整个舌头作为输入,使用卷积神经网络来提取特征,然后对舌头进行分类并生成粗略的定位图,最后使用梯度加权类激活映射齿痕标记区域。Kanawong 等[15]使用机器学习方法中的AdaBoost 和SVM 以及多层感知网络建立舌象和相应的症之间的关系,通过对舌头上的瘀斑点大小、尺寸、分布,来研究其与胃炎之间的联系。Xiao 等[16]通过使用CNN构建舌诊的寒症、热症、正常3种状态的识别,实验结果表明该模型对二分类问题识别准确率高于三分类问题。Hu等[17]构建真实世界的舌部图像和相应处方对应的神经网络模型,为移动医疗系统中的医疗服务提供新思路。
深度学习的对象检测取得巨大成功[18],为提高舌象特征识别准确率提供了契机[19]。本文针对齿痕形状大小多样难以识别、用于金标准的舌象数据有限等问题,提出一种基于Mask Scoring R-CNN(以下简称MS R-CNN)[20]和迁移学习的舌象特征识别方法,能够识别齿痕特征、准确定位齿痕位置、标定齿痕大小、提取齿痕个数,可以在一定程度上降低小样本数据上应用深度学习技术的难度系数,获得较高的分类准确度。
本实验舌象分类流程如图1所示。在离线训练阶段,首先筛选符合条件的舌部图片,构建舌象数据集。接着对图片进行预处理,并由多个中医专家对舌象进行标注,最后使用迁移学习的方法训练模型。在线测试阶段,使用测试图片对模型进行测试,并评估模型性能。
图1 舌象特征识别实验流程图Fig.1 Flowchart of tongue feature recognition experiment
本课题组与上海中医药大学附属曙光医院合作,根据采集标准使用专业采集设备,采集1 500 张临床舌象照片。为了提高后续研究舌象特征的准确率,由多位专业中医从业人员帮助标注,完成一致性评价确认。本次实验共筛选出无齿痕舌400例,齿痕舌756例,分辨率为2 816×2 112。对筛选后的图片首先进行统一命名,接着使用训练好的舌部分割网络模型对采集到的舌部图像进行裁剪,如图2所示。一是以减少图片中面部其他区域对后续工作的影响;二是原图像数据分辨率大小为2 816×2 112,分辨率较大会增大网络训练的难度和训练时长。最终得到的图片分辨率大小为563×397,可以直接输入神经网络。
图2 原始图像与处理后的图像Fig.2 Original image and processed image
MS R-CNN 网络的训练不仅需要图像还要有与之相对应的掩膜信息。使用基于Python 的Labelme开源图像标注软件,对舌部区域进行标注和制作掩膜,得到舌体图像中齿痕的分割信息,如图3所示。为了保证有充分的数据用于模型的训练,同时预留一定量的数据用于验证和测试,避免因数据划分引入其他偏差,参考数据集划分的常见方法:留出法。将所有标注完成的数据随机分为训练集、验证集、测试集,最后将训练集和验证集的注释信息按照COCO数据集格式整合到JSON格式文件中。
图3 使用标注软件Labelme对舌象特征进行标注Fig.3 Marking tongue features by Labelme
1.3.1 特征提取网络模型构建MS R-CNN 是首个解决实例分割假设打分问题的框架,简单、有效、通用。Huang 等[20]在Mask R-CNN 的基础上增加用于了解预测掩码质量的网络块,可以检测目标并同时能够更准确地评估预测的质量[21-22]。该网络结合了用于目标检测的Faster R-CNN 和用于语义分割的FCN,在Faster R-CNN 检测到目标后,将FCN 用于掩膜预测、边框回归、分类、掩膜评分。MS R-CNN 在Mask R-CNN 的基础上增加一个网络块,用来学习预测的实例掩膜的质量。掩膜评分策略校正掩膜质量与掩膜得分之间的偏差,提高实例分割性能,为实例分割的改进提供一个新的方向。
MS R-CNN方法分为4个阶段,其网络结构如图4所示。第一阶段为特征提取,将预处理后的舌图片输入ResNet+FPN的主干网络,从特征金字塔的不同层次提取特征。第二阶段为感兴趣区域(ROI)生成,通过RPN提取出候选ROI。第三阶段使用ROIAlign从每个候选ROI中提取特征,并进行边框回归、softmax分类和掩膜预测。最后一个阶段是MaskIoU Head,在预测的掩膜和groundtruth掩膜之间进行回归运算。
图4 基于Mask Scoring R-CNN 的舌象特征提取网络结构图Fig.4 Network architecture of tongue feature extraction based on Mask Scoring R-CNN
1.3.2 迁移学习的应用本文应用迁移学习方法减少训练时间,防止神经网络的过拟合。尽管尽量减少神经网络模型参数可以避免过拟合,然而医学图像本身数据难以采集、可以作为金标准的数据量少,无法与十几万的开源数据集相比。迁移学习是将在一个任务上训练好的模型通过调整应用到另一个任务上[23-26]。在本实验中,使用在COCO 数据集上预训练的ResNet 主干网络,删除预训练模型的最后一层。因为预训练的模型是为了不同的分类任务而训练的,去除全连接层和与分类得分、边界框预测、掩膜预测层相关的权重和偏差。使用未经训练的层来替换移除的层,将类别调整为3 类,最后将数据集和相关的掩码输入到MS R-CNN 模型架构中,如图5所示。
图5 用于舌象数据集上迁移学习的Mask Scoring R-CNN 结构Fig.5 Mask Scoring R-CNN architecture adopted for transfer learning on the tongue image data set
本实验采用深度学习中目标检测任务常用的评价指标:准确率、精确率、召回率(recall)、F1分数。将神经网络预测类别与真实类别的组合划分为真阳性(TN)、假阴性(FN)、真阴性(TN)、假阳性(FP),以判别非齿痕舌和齿痕舌为例,若真实类别为齿痕舌,预测类别相同为真阳性,预测类别为非齿痕舌则为假阴性;若真实类别为非齿痕舌,预测类别相同为真阴性,相反为假阳性,具体计算公式如下所示:
模型训练在Ubuntu64 位操作系统中离线完成,CPU 为Intel Core i7-9700F,内存32 G,GPU 为GeForce GTX 2080Ti。本文选取Pytorch 作为学习框架,与Tensorflow 相比,PyTorch 的优点是动态图,能够在强大的GPU 加速的基础上实现张量和动态神经网络。而Tensorflow等都是静态图,不利于扩展。
实验中使用的主干网络是由50 层或101 层残差神经网络(ResNet-50、ResNet-101)衍生而来的特征金字塔网络,使用ResNet-50 主干网络模型的计算量低于ResNet-101,使用ResNet-101可以在不改变模型或者训练的情况下显著改善结果。
本实验使用最初在COCO 数据集上训练的Resnet-101 网络,并删除全连接层,因为预训练的模型识别88 类样本。全连接层的去除删除了与classscore、Bbox 预测、mask 预测层相关的权重,然后使用未经训练的层替换。接着将数据集和相应的掩膜输入到MS R-CNN模型架构中。
在迁移学习阶段,冻结预训练的Resnet-101主干网络的权重,使模型能够从舌象数据中提取通用的低级特征。然后训练新添加的全连接层,根据新数据集的分布调整权值。在模型训练中,网络进行了更新和微调。
使用232 张舌部测试图片(包含无齿痕和不同齿痕严重程度的齿痕舌)对模型进行评估。TP=101,FN=15,FP=1,TN=115,得到模型F1分数为0.95,准确率为0.93,精确率为0.99,召回率为0.914。从预测结果来看,该模型具有良好的泛化性,针对齿痕舌不同严重程度(图6)(轻度、中度、重度),舌型(图7)(圆形、三角形、椭圆形、方形等),不同伸舌方向(图8)具有较好的识别效果。其中,共有15 例无齿痕舌被误识别为齿痕舌,通过与中医专家共同分析得出,被模型识别错误的无齿痕舌中包含先天性和由牙齿畸形导致的非齿痕凹陷。因此,在下一步工作中将加入更多非齿痕凹陷信息。
图6 对不同齿痕程度的齿痕舌识别效果Fig.6 Recognition of different degrees of tooth marks
图7 对不同形状的齿痕舌识别效果Fig.7 Recognition of different shapes of tooth marks
图8 对不同伸舌方向的齿痕舌识别效果Fig.8 Recognition of tongue marks with different tongue extension directions
从可视化角度来看,相比于简单给出舌象的分类,该模型通过提供齿痕部分位置和大小的局部高分辨率可视化,结合置信度、齿痕的数量使研究者更好地理解网络,为齿痕严重程度分析提供依据,更加适用于移动医疗、远程医疗。
本实验将图像处理领域的最新研究成果应用到中医齿痕舌象特征提取及分类中,解决目前舌象识别方法未提供齿痕部分位置和大小的局部高分辨率可视化,深度学习技术难以应用在小样本医学数据的问题,提高齿痕舌象分类精度,对提高舌诊客观化分析准确度和医疗保健中的实际应用具有重要意义。该方法首先根据舌象特征识别任务的特点结合深度学习选择合适的神经网络;然后为提高算法的分类准确率和多种场景下齿痕舌象分类的鲁棒性,采用迁移学习方法。最后对模型进行测试和分析,得到较高的齿痕舌象分类准确率、准确的齿痕位置和齿痕数量。
未来,该研究将朝着以下3个方向继续深入。首先,提升模型的准确率。接下来将针对舌诊客观化改进模型,使模型更具轻量化,并提高准确率。其次,通过MS R-CNN 的分析与实验,已了解MS RCNN 在处理中医舌象分类具有良好的表现。齿痕只是中医舌象中的一种,该研究继续将问题扩展到更多分类问题,研究更多舌象分类问题可以更好地帮助诊断和治疗。最后,该实验重点研究舌象特征提取与分类,然而,从中医的角度来看,要分析一个人的身体健康,应收集望、闻、问、切这四诊的所有信息。因此在接下来的工作中,将结合先前的面诊、问诊等研究,建立更全面的深度神经网络。希望该工作可以促进医疗健康信息化进一步发展!