陈逸远,古梦婷,李 胜
(浙江工业大学,浙江 杭州 310013)
医学图像数据蕴含了大量的生物特征信息,已经成为疾病诊疗中不可或缺的组成部分且日益重要。医学图像分类是医学图像分析中最重要的任务之一[1]。我国肠道疾病高发,严重危害人们身体健康,有效的肠道图像分类识别,对辅助医生进行肠道疾病的筛查、诊断、治疗方案制定等提供科学方法,对于提高疾病的诊断准确率、减少漏诊、提高医生工作效率等方面具有重要的实际意义。然而,医学图像数据经常面临数据不平衡和数据有限问题[2]。首先,由于疾病的多样化,发病概率不同,发病率低的病变集数量过少,每个病例中各种类别数据集分布不均衡。例如,肠道内窥镜的公开数据集Kvasir-Capsule[3]原始数据集中正常图像有34 606张,但是仅有肠道溃疡854张、出血446张,以及血红素12张等。其次,由于医学图像特别是对病例样本数据集的采集、标注和整理是一个繁琐及耗时耗力的过程。且由于病变差异很大,往往需要临床专家进行标注,另医院之间的数据共享和互通程度较低,获取用于大规模学习训练医学图像样本数据集非常困难,因此可用的标注数据规模相对较小[4]。
深度学习从样本数据中学习层次特征的特点,组合底层特征形成更加抽象的高层表示,最终提高分类或者预测的准确性,已在语音识别、自然语言处理、图像分类、人脸识别、目标检测等多领域取得突破性的好成绩[5-6]。深度学习特别是卷积神经网络已成为分析医学图像的首选方法,在医学图像分类应用取得显著的进步达到前所未有的精准度[7-8]。数据不平衡是医学图像天然存在的问题,恰恰抑制了卷积神经网络的优势,研究表明数据不平衡是导致模型准确性和泛化能力下降的主要原因[9-12],在数据集不平衡情况下,多数类控制着训练的主要过程得到过分表达,而少数类的识别情况欠表达,大大降低少数类的分类准确性。在医学图像中,少数类蕴含的信息往往更值得关注,医学诊断中误诊和漏诊可能会导致严重的难以弥补的后果,因此提高分类模型对于少数类的识别率是至关重要的。
本文主要的贡献点罗列如下:
(1)阐述了医学图像固有的数据不平衡问题及其对分类性能影响,研究现有对数据不平衡问题提供类间数据平衡分布的方法。
(2)讨论肠道图像中遇到的特殊挑战,设计了一种更适用于肠道图像数据集的类间数据平衡方法。能够高效地对抗图像中暗区过大的问题,以及识别肠道病灶所需的旋转不变性问题。
(3)通过真实肠道图像疾病数据集进行了仿真实验,验证了本文所提方法的有效性。
在过去20多年里,人们对于用机器学习技术解决数据类间不平衡问题进行广泛的研究[9,13-17]。解决数据不平衡问题的方法可分为三大类[9-11]。第一类是数据层面,对训练数据集进行操作并减少其不平衡程度,目标是改变数据集以使标准训练算法能正常发挥作用。第二类模型算法层面,对学习和决策过程的调整来强调少数类的重要性,这些方法保持训练数据集不变并调整训练或者推理的算法。第三类则是前两类的混合方法。本文方法主要关注从数据层面实现类间数据平衡。
最直接常用的方法是重采样,重采样主要分为过采样和欠采样两类方法[15]。在几乎所有分析的情景中,解决类别不平衡的方法,占主导地位的是过采样[10]。
过采样是一种在深度学习被广泛使用并验证健壮有效的类间数据平衡方法[17],通过复制、变换等操作对少数类进行扩充,使得少数类和多数类样本数量接近。最简单的是随机少数过采样ROS(random minority oversampling)方法,它简单复制从少数类随机选择的样本。它已经被证明简单重采样是有效的,虽然可能导致过度拟合[18]。(1)旨在克服过拟合问题的先进一点的算法是SMOTE[18],在现有少数样本与其最近的少数邻居之间进行插值来生成人工少数样本的方法。SMOTE的几个增强变种,例如Borderline-SMOTE[19],Safe-Level-SMOTE[20],通过考虑多数类邻居来改进原始算法。Borderline-SMOTE将过采样限制在类边界附近的样本,而Safe-Level-SMOTE定义安全区域以防止在重叠或噪声区域中过采样。(2)为了平衡当模型和训练数据的过拟合导致的无法泛化问题,已开发各种智能采样技术。JAPKOWICZ和JO[21]基于集群的过采样(Cluster-based oversampling)来解决训练数据中存在的小分离问题。少数群体和多数群体首先使用K-means算法进行聚类,然后分别对每个聚类应用过采样。这改善了类内不平衡和类间不平衡。
欠采样是另外一种使得在每个类的样本数量相同的普遍方法[17]。和过采样相反,它使用随机删除、去冗余等操作对从多数类的样本进行精简,最简单的形式为随机欠采样(RUS)。虽然有点反直觉,有实证在特定场景如只需一定程度上消除不平衡时,欠采样表现的比过采样更好[22]。欠采样比较明显的不足是它有丢弃了一部分有用信息的风险。为了克服这个缺点,一些修改引入了更仔细地选择要删除的样本。例如,KUBAT和MATWIN[23]提出了单边选择识别靠近类边界的冗余样本。比欠采样更通用的方法是数据清洗,这可能涉及重新标记一些样本[20]。
然而,简单的重复和去除对肠道图像数据集来说只能带来非常有限的性能提升,主要原因是原始病灶数据量很小,且此类方法没有考虑数据集平衡时不同类别选择的概率分布问题,多次简单的重复容易使得分类算法关注到一些非病灶相关的特点。
MASKO和HENSMAN[24]使用深度CNN探索了类不平衡和ROS的影响。实验证明了类不平衡的对训练CNN模型的影响,并验证将ROS应用于类平衡水平可以有效地解决图像数据中的轻微类不平衡问题。大多数不平衡的分布都出现了性能损失。当非常轻微的不平衡且没有过度表示,表现与原始平衡分布一样好。一些包含过度代表类的不平衡分布,则产生了完全偏向多数群体的无用模型。作者使用通过ROS生成的平衡数据训练CNN的结果对比表明,用ROS平衡训练数据可以改善所有不平衡图像数据的分类。
POUYANFAR等[25]使用动态采样技术通过深度CNN对不平衡的图像数据进行分类。基本思想是对少数类进行过采样,对多数类进行欠采样,从而减少模型已经学习的内容,而更多地显示它尚未理解的内容。该方法能够自动调整采样率,能适合不同程度的不平衡问题。
此类方法被认为能够提供更为有效的数据,因为这类数据是通过网络理解生成的新数据。然而此类方法在肠道图像数据集中难以被利用,主要原因是训练CNN时由于数据集类间差距过大难以获得优异的性能,且训练网络的过程较为复杂,面对大规模数据集时可能会带来过高的计算代价。
在文献[26]中,针对高度不平衡的医疗图像数据集提出了一个高效率的类间平衡方法,该方法能够有效提高基于深度学习的图像分类框架准确率,这一方法可以看成是过采样方式的改进方法。
首先令(xi,yi)是第i幅图像和它对应的标签,其中yi为one-hot向量,即只有一个元素为1,其他元素都为0的向量,用以表示类别信息。随后,将不同类别的图像进行混合叠加,生成新的带标签的图像,利用了以下公式:
即新的图像等于第i个图像乘上权重λ,加上第j个图像乘上权重(1-λ)。生成的新图像标签也是对应两者标签的叠加,即:
通过这一混合方法,将类间图像的数量差异缩小。假设共有K个类型的图像,又提出了一个概率:
其中q的初始取值为1或者0,当q=1时每一类都有一个不同的权重,即类内图像数量越多被选中的概率越高,称为“instance-based sampling”,就是打破不同类别的界限,图像一视同仁在整个数据集中选。当q=0时,每一类被选中的概率一样,则称为“class-based sampling”。随后可以通过改变q的值完成这两种选择模式的混合。这一方法的优势是能够快速地进行类间数量高度不平衡数据集的处理,将类间样本差距减小,有利于分类网络的训练。在一个23分类的高度不平衡肠道图像数据集中,通过仿真结果可以发现对常见的分类网络,如MobileNet V2,ResNeXt-50等都能提升一定的分类性能。
然而,这个方法的目标是医疗图像集的广泛适用性,并没有针对肠道图像的特点进行设计,存在着巨大的改进空间:
(1)单纯将图像叠加起来,有很多特征会丢失,例如肠壁褶皱和病灶边缘加在一起反而会失去两者的区分性。
(2)选取通过随机的方法进行,可能存在某些数据反复使用,而某些数据未被使用的情况,且没有考虑到数据集的特点,例如医疗图像中有些病灶不可能同时存在,会“误导”算法,可能会另算法失去全局特征的判断能力。
本文将针对肠道图像特点,提出一种高度不平衡数据集的类间数据平衡方法。
肠道图像存在一些特殊性,主要包括:
(1)存在分析意义较小的暗区部分。由于肠道的结构特点,受到器官褶皱遮挡或者视野中存在空腔中心区域时容易形成暗区。图像中的暗区部分通常无法提供足够高质量的信息进行图像分析,因此这部分通常在辅助系统设计时不会被采用。
(2)病灶识别方法需要对旋转和病灶在图像中的位置不敏感。图像中的病灶方向不一。由于采集肠道图像时没有参考方向,因此无法判断病灶的拍摄角度,这就要求分类方法对图像的旋转不敏感。此外,与自热界拍摄的图像不同,病灶会出现在肠道图像中的各个位置。
针对以上肠道图像特殊性,本文提出了一种肠道图像数据集的类间平衡方法。由于肠道图像数据集中大量存在的是正常(健康)的图像,相比之下病灶图像的数量较少。因此,本文的方法是利用正常图像为底,结合病灶图像生成新的病灶图像。该方法的结构图如图1所示,主要包括健康图像的暗区识别、有疾病图像的旋转和平移变化,以及类间混合这三个步骤。首先,通过对健康图像进行快速暗区识别,选取暗区较小的图像。其次,对原始病灶图像进行多角度旋转和平移,最后将旋转之后的图像与选取的健康图像进行类间混合,实现数据集的平衡。
图1 本文方法系统框图
如图2(a)所示为一个典型的息肉图像,可见其中包含了几乎没有分析和利用价值的暗区。若使用常规的数据类间均衡方法直接将此类图进行线性组合,那么暗区部分的叠加会极大地影响生成图像的质量。为了解决这一问题,首先利用我们已经提出的聚类方法SLICPGDPC[27]对图像进行超像素分割,使用聚类算法的好处是高效且无需训练,非常适合对数据集直接进行处理。超像素分割的结果如图2(b)所示。分割后对每一个超像素进行亮度统计,将亮度最低的超像素视为暗区部分,分析该部分占据图像的百分比,当这一部分占比大于预设的阈值时就将这一图像舍弃,不进行后续的类间混合。由于健康图像占比通常很高,因此阈值设计时可以根据剩余图像的数量进行调整,根据经验,肠道图像中阈值取值通常在0.2~0.5之间。
图2 肠道图像实例
由于肠道图像的病灶观察时没有参考方向,因此训练分类网络时必须对病灶观测的角度不敏感。针对这一挑战,本文将病灶图像进行0°、90°、180°和270°旋转。常见的肠道图像数据增强方法中也会用到这一方式,通过对病灶的旋转能够令深度学习网络降低对病灶旋转的敏感性。此外,本文还设计了一种随机平移的策略来模拟病灶可能出现在的不同位置。配合2.1中进行的超像素分割,探测与左侧边界无接触且最为接近的超像素位置,并将该超像素左侧图像区域按照循环平移的方式移动到图像的右侧,如图3所示。这一平移策略是为了对病灶在图像中的位置进行改变,同时降低病灶区域被分离的概率。通过旋转和平移的方式可以得到4张角度不同、且病灶相对位置不同的病灶图像。
图3 平移策略示例
令通过2.1方法选择出暗区部分较少的健康图像数据集中图像为H,其中第i张图像为Hi。通过2.2旋转和平移策略获取的病灶图像为L,且用Lp,q表示第p类疾病的第q张图,本文提出线性组合形式的类间混合方法,即新的病灶图像可以表示为
其中i和q均随机匹配,确保不重复出现。系数α表示原始病灶图像在新病灶图像中的权重。由于我们使用了健康图像作为所有病灶图像的基底,不会出现多种病灶图像组合的情况。此外,每一类都与健康图像组合,更容易控制每一种类别图像平衡后的数量,因此不需要特别设置类别中图像选取的概率,简化了整体的设计。
为了验证本文提出方法的有效性,基于PyTorch框架进行了实验程序的设计。配备了两块NVIDIA GeForce RTX 3080 GPU(显存均为10GB)的塔式工作站被利用来加快模型推理速度。参数设置为batchsize=32,epoch=200,每10轮保存一次训练权重。
在数据集方面,本文选取了肠道内窥镜的公开数据集Kvasir-Capsule,a video capsule endoscopy dataset[3]中溃疡和正常的图像。原始数据集中正常图像有34 606张,而肠道溃疡图像仅为854张。经过去除冗余和模糊后,我们选取了190张肠道溃疡图像,同时随机挑选了1 000张正常图像进行分析。对溃疡的190张图像,经过旋转和平移后,数据扩了4倍,变为760张。每一张溃疡图像与随机选取的两张健康图像进行组合,即得到了1 520张合成的溃疡病灶图像。通过这样的设置,溃疡图像和正常图像数量级保持一致。随后,按照以下划分方式设置训练集、验证集和测试集,见表1。需要注意的是由于本文希望提出一种能够辅助分类网络训练的数据集平衡方法,因此溃疡的测试集选取了38张未被处理和使用过的溃疡真实图像。
表1 溃疡和正常类型的图像数据量 单位:张
在分类算法方面,我们使用了经典的ResNet,性能指标包括准确率ACC,精度Precision,以及F1值。具体实验结果见表2。
表2 算法性能比较
通过对比和消融实验可见,本文提出的方法由于采用了更具有针对性的设计,在进行肠道图像二分类任务中表现出了较好的性能。健康图像去除暗区带来的性能提升幅度不如疾病图像旋转和平移带来的提升。可以理解为针对肠道溃疡分类任务,图像中病灶的旋转和位置影响要大于暗区带来的影响。
本文根据肠道图像的特点,设计了一种具有较强针对性的类间数据平衡方法。核心思路包括利用数量巨大的健康图像为基底,线性组合病灶图像。在选取图像时去除了暗区部分较大的健康图像以降低暗区对分类性能的影响,同时通过病灶图像的旋转和平移模拟了临床中肠道病灶的旋转特性和位置不确定的特点。通过这种简洁的方法,能够快速地进行高度不平衡的肠道图像数据集平衡。通过肠道溃疡和健康二分类仿真验证了本文方法的有效性。