孙晓晗,孔祥勇,吴滢,王平,蔡健,彭瑞阳,王钰泽
1.上海理工大学健康科学与工程学院,上海 200093;2.上海交通大学医学院附属儿童医院病理科,上海 200040;3.上海交通大学医学院附属儿童医院肾脏风湿免疫科,上海 200040
肾活检在肾小球病变的检查中至关重要,特别是在病理类型查明、患者病因确认以及对患者提供合适的治疗方案中具有重要作用[1]。即使医学发展迅速,组织病理诊断仍然被认为是诊断肾脏疾病的黄金标准[2-3]。因此,发展自动化、高精度的组织病理学图像分析方法至关重要[4]。
根据医学图像的性质及临床的实际需求,如何对图像进行高效的检测及分类一直是研究人员关注的重点课题。在病理图像分类的研究领域,Spanhol等[5]利用AlexNet 网络模型对病理图像进行分类,准确率比传统的机器学习算法提高了6%。Vesal 等[6]提出了一种基于迁移学习的方法,微调Incepinationv3和ResNet50网络,通过多数投票法获得分类结果,在乳腺病理图像分类问题中,Inception-V3 网络的平均测试准确率达到了97.08%,ResNet50 网络的平均准确率达到 了96.66%。Wang 等[7]将Inception-ResNet-v2 和VGG-19 网络应用于甲状腺病理图像的多分类,最终VGG-19 的诊断准确率更高,在组织病理学鉴别甲状腺肿瘤的任务上取得了令人满意的准确性,达到了97.34%的准确率。Halicek 等[8]提出了一种检测头颈部鳞状细胞癌和甲状腺癌的新方法并取得了良好的检测效果,鳞状细胞癌和甲状腺癌检测的ROC 曲线下的面积(AUC)分别可达到0.944 和0.995。Yan 等[9]基于乳腺癌组织病理图像,提出了一种新的卷积与递归混合深度神经网络用于图像分类,融合了卷积神经网络(Convolutional Neural Network,CNN)和递归神经网络(Recurrent Neural Networks,RNNs)的优点,在4 类分类任务中取得了91.3%的平均准确率。Iizuka等[10]应用CNN 和RNNs对胃和结肠的活检组织病理学图像进行训练,试验结果表明在胃腺癌及结肠腺癌的分类任务中,准确率分别达到0.97 和0.96。Li 等[11]提出一种用于病理图像分类的基于DenseNet 深度学习网络,该网络通过将卷积融合到稠密块中实现多尺度特征提取,在宫颈癌病理图像分类任务中精度达到了92.05%。Kohl 等[12]为对乳腺癌病理图像进行分类,建立DenseNet161 分类模型,利用稠密连通卷积并使用ImageNet 图像数据进行预训练,对比多种分类模型,该方法达到最优,分类精度为96.24%。Coudray等[13]建立Inception v3 分类网络对肺癌病理图像中腺癌、鳞状细胞癌和正常病理图像进行分类,结果表明AUC为0.97,相比较于病理学家分类表现更加良好。
在对肾病进行诊断时,医生需要仔细观察所有的肾小球,并对病变肾小球进行分类计数,从而进行肾病病理学诊断,这是一项耗时耗力的工作[14]。近年来,受益于计算能力不断提升,深度学习在医学图像处理领域取得了巨大成功,尤其是在图像识别与分类、病灶分割、计算机辅助诊断等方面[15]。相对于传统的图像分类检测技术,基于深度学习的图像处理算法表现更加优异[16]。鉴于以上现状,本课题组与上海交通大学医学院附属儿童医院进行合作,通过深度学习技术对肾脏病理图像中肾小球病变(系膜细胞增生、节段性硬化、新月体形成)进行分类,辅助医生完成肾病的病理学分级,提高医生工作效率。本研究基于肾脏病理图像中肾小球病变分类这一问题,提出一种基于SE-ResNet的肾小球病理图像分类方法。
1.1.1 ResNet 深度学习随着网络深度的增加,梯度消失和梯度爆炸的问题愈加明显,使用传统的数据初始化及正则化,又会带来网络退化的问题。ResNet提出了一种易于优化、计算负担小的残差学习网络框架,其思想是加深浅层网络并通过恒等连接以及残差连接将上下两层进行连接,跳跃结构的增加能够增强浅层网络的影响从而避免精度衰减的问题[17]。综合考虑分类的效果及训练难度,实验选取ResNet50作为主干网络。ResNet50共包含49个卷积层及1 个全连接层,由5 个部分组成,第一部分是对input 输入图像的预处理,后4 个部分由Bottleneck 组成,分别包括3、4、6、3 个Bottleneck。网络的输入数据的尺寸为224×224×3,图像经过残差块不断进行卷积操作,像素通道矩阵数越来越深,然后经过扁平层Flatten,输入全连接层,最后经SoftMax 层输出对应类别概率。
1.1.2 SE 模块SE-Net(Squeeze-and-Excitation Networks)是由Hu等[18]提出的图像分类网络,其核心在于SE 模块,该模块核心思想在于保持特征通道不变的情况下,对不同通道之间特征的重要程度进行学习,根据重要程度的不同分配相应的权重从而提升重要特征,抑制无用特征,从而对网络性能有较大的提升。SE 模块主要操作由3 部分组成,即Squeeze、Excitation和Reweight操作。
Squeeze操作利用全局平均池化的方法对特征图U 沿着空间维度的方法进行压缩,将特征图U 沿通道方向的二维特征图压缩为一个实数使其变为1×1×c2的特征图,Squeeze的公式如式(1):
其中,Fsq为Squeeze 操作,W、H、C代表提取特征图的3个维度。
Excitation 操作引入参数W对Squeeze 操作获得的1×1×c2的特征图按照特征通道重要性的不同分配相应的权重。其公式如下:
s=Fex(z,W)=σ(g(z,W))=σ(W2δ(W1z))(2)其中,Fex为Excitation 操作,z为Squeeze 操作的结果,W1、W2为引入参数,r为缩放参数。
Reweight操作将Excitation 操作得到的权重即特征通道的重要程度,加载到原始特征通道中,从而完成特征重要性的标定。其公式如下:
其中,Fscale为Reweight操作,s为特征通道的重要程度即相应权重。
理论上,SE 模块可以嵌入到现在几乎所有的网络结构中。通过在原始网络的结构单元中嵌入SE模块,可以获得不同种类的SE-Net。
1.1.3 改进SE-ResNet50 模块网络模型设计本实验中采用以ResNet50 为基础的网络框架,在ResNet50的网络中嵌入了SE结构体系单元,构建SE-ResNet50网络模型,将两者的优点结合起来,从而提升网络的分类性能。使用Bottleneck进行堆叠,使用GAP作为Squeeze 操作,连接两个全连接层组成构建通道相关性。两个全连接层首先将特征维度下降为输入的1/16,经RELU 激活后通过另外一个全连接层上升输入的维度,最后通过Sigmoid 进行归一化操作获得权重,并加权到通道特征上。ResNet残差块嵌入SE模块后结构如图1所示。
由于模型的不断深化,CNN 的参数量也变得巨大,容易造成过拟合,因此除了对训练数据进行数据增强外,另外一个解决方法为减少CNN的参数量,受到Jiang 等[19]的启发,决定将原有的ResNet 残差块变为1×3、3×1、1×3、3×1 的残差结构。其结构如图2所示。
现在对卷积层的参数量进行计算,计算公式如下:
其中,C×H×W为卷积核的尺寸,K为卷积核的数量。
经过计算对比可得,该结构与原有的Basic、Bottleneck 残差结构相比参数量分别降低33.3%、29.4%,能够保证在特征提取能力不变的情况下,减少网络的参数量,使得网络的训练效率提高。
本文以ResNet50为主干网络,在改进后的ResNet残差块中嵌入SE 模块构成改进SE-ResNet 模块,将SE-ResNet 模块进行堆叠即构成本文的SE-ResNet50分类网络。使用降采样的方法对原输入图像大小转换为224×224 作为网络输入,经过7×7 卷积及最大池化操作后特征图像大小变为56×56,维度变为64,接下来经过4 个阶段即4 个由改进SE-ResNet模块堆叠的网络结构。经过阶段一后特征图大小变为56×56,维度变为256,经过第2、3、4阶段后特征图大小减半,维度变为原来输入特征图像的两倍,最后特征图像经过平均池化,Flatten 操作将多维特征转化为一维,再经过全连接层进行输出,得到分类结果。同时,使用来自ImageNet 的预先训练的权重,并对其冻结百分比进行试验调整。本文的肾小球分类模型结构如图3所示。
1.2.1 Dropout由于在实验过程中,训练所得到的已收敛分类网络模型出现了在训练集上表现良好,准确率较高,在测试数据集中分类识别准确率下降的过拟合现象[20]。在实验中使用Dropout解决过拟合问题,其思想是在每一次训练过程中以某一概率丢弃一部分神经元(图4)。
1.2.2 动态衰减学习率在实验中使用优化器每次更新网络参数的幅度即学习率的设置至关重要,学习率设置不当会出现算法优化后期在最优值两侧浮动无法收敛或收敛速度慢的现象。在实验中,为了提高分类网络收敛速度及稳定性,使用动态衰减学习率进行网络模型训练,公式如下:
其中,lrnew表示得到的新学习率,lrinitial表示初始学习率,γ表示更新学习率的因数即学习率调整倍数,milestones 是一个递增的数组,存放更新lr时的epoch。本实验中milestones设置为[60,120,160],即在训练迭代至设置的次数时,学习率会按照设定倍数进行调整,同时,设定初始学习率为0.1。
上海交通大学医学院附属儿童医院提供了将患者信息匿名处理后的共计169张包括HE、PAS两种染色的全视野切片图像,在169张全视野切片图像中手动提取包含1个主要肾小球的矩形肾小球图片,共得到2658张高质量肾小球图像,使用openslide工具将肾小球图片转换为JPG格式,并保存为单个图像文件。为保证算法研发的普适性,将提取的所有肾小球均作为实验对象。
根据肾小球的类别分布及其视觉特征,对肾小球系膜细胞增生(Mesangial Proliferative Glomerulonephritis,MsPGN)、肾小球局灶性节段性硬化(Focal Segmental Glomerulosclerosis,FSG)、肾小球新月体形成(Crescentic Glomerulonephritis,CGN)及正常肾小球(Normal)4种肾小球病变进行诊断。为了完成肾小球分类的任务,构建了肾小球标注系统(图5),方便临床医师对肾小球进行分类标注,由上海交通大学医学院附属儿童医院的两名临床医师为提取后的单一肾小球图像进行标注。
为了能够让有限的数据产生等价于更多数据的价值,减少数据集中不相关的特征,增加训练模型的泛化能力,对数据集进行扩充[21]。由于对肾小球进行位置的变换、噪声数据增加不会影响肾小球病变的分类,同时,mixup 在本文中对随机抽取同种分类中的肾小球进行混合,混合后的图像同样不影响肾小球病变的分类。因此,本文中采用了3种数据增强手段:旋转、增加噪声数据、mixup,数据增强完成后将数据集扩充至13 471张。
由于肾脏病理切片的制作过程复杂繁琐,尽管使用相同的染色剂对切片进行染色,但是由于制作病理切片时使用的染色剂的来源和质量不同,或者扫描病理切片时使用的扫描仪器不同等原因造成图像与图像之间的颜色出现差异,从而对训练算法造成较大影响。因此,对同一染色类别的病理图像在颜色空间内进行归一化操作,使得图像染色标准化。
使用Vahadane等[22]提出的颜色归一化方法,其主要思想在于将RGB图像分离为染色浓度通道然后进行归一化操作。首先,对RGB图像进行转化使其变为染色通道,再利用稀疏约束与染色通道相结合的方式,实现染色分离;其次,在保持源图像染色浓度不变的情况下,改变源图像颜色外观进行归一化,并且与目标图像保持一致。m×n的RGB图像矩阵进行非负矩阵分解(Nonnegative Matrix Factorization,NMF),并在图像矩阵中的染色浓度矩阵中增加L1稀疏正则化从而实现染色分离。利用此方法分别对源图像和目标图像进行染色分离,并将目标图像染色浓度矩阵归一化为源图像染色矩阵,进行颜色变换,最后映射到RGB空间中,实现染色标准化,表示为:
其中,W为m×r的矩阵(r为染色数,m代表通道数),H为r×n的矩阵(n为像素的数量),V为相对光密度。
由于本数据集采用PAS 及HE 两种染色的肾小球,需对两种染色图像分别进行归一化操作。在PAS染色和HE染色图像中分别挑选1张肾小球病理图像作为标准染色图像;对同一染色不同颜色的病理图像进行染色归一化操作从而使得图像颜色变得标准化。图6和图7为针对病理图像HE 及PAS 染色各展示了肾小球病理图像根据目标图像进行染色归一化的结果。
t-SNE(t-distributed stochastic neighbor embedding)作为一种非线性降维的方法,能够将高维数据降维至二维或三维,并能够对数据进行可视化。为验证本节染色归一化方法能够较好地保留病理图像中的组织结构,使用t-SNE 方法进行数据可视化,较为直观地验证数据结构是否改变。选用PAS 染色肾小球病理图像中染色归一化前后t-SNE 图作为对比,结果如图8所示,可以看出两者数据结构并没有大的改变,说明该方法能够较好地保留图像中的组织结构。
2.3.1 实验设置本文的实验平台为NVIDIA GeForce RTX 2070 SUPER GPU 及32 GB 内存的服务器,Windows 系统,Python 3.6,在pycharm 64 位操作系统中完成模型训练。实验模型选取pytorch作为学习框架,该框架较其他框架在灵活性、易用性、速度3方面具有优势。
实验中将图像缩放至统一的224×224,并对图像数据进行归一化处理,将处理后的图像按照6:2:2 的比例划分为训练集、验证集和测试集。在实验中所有的超参数,包括批次大小(batchsize)、学习率(learning rate)、冻结ImageNet 数据集的预先训练的权重及冻结百分比(100%、75%、25%、0%),在实验中都要进行测试选择。经过多次实验,每次训练进行200 批次的训练迭代即epochs 为200,最终确定本实验构建的分类模型中,在验证数据集上表现最好的参数组合为:batchsize 为16,learning rate 为0.000 1,冻结0%的预训练权重。
2.3.2 实验结果首先与其他分类模型进行对比实验,对比了VGG16[23]、Inception V3[24]及ResNet50[17]来验证本文算法的有效性。根据不同分类模型在测试集中的准确率,对模型的分类效果进行评价(表1)。经以上实验对比可知,在相同的训练集及测试集下,本文方法在肾小球的分类任务中取得了更好的效果。其中,ResNet50 的分类准确率与本文算法接近,但是本文模型大小小于ResNet50,说明用更小的参数量达到了相似甚至更优的效果;而VGG16 的分类效果不理想,相比较于其他网络来说,分类识别能力相对较差。其中本文模型的训练性能曲线如图9所示。
表1 不同分类模型分类效果对比Table 1 Comparison of classification performance of different classification models
训练完成后,使用测试数据集对本文中构建的肾小球分类模型进行评估,生成的混淆矩阵见图10。
接收者操作特征曲线(Receiver Operating Characteristic curve,ROC)可显示本实验网络模型对于肾小球分类的诊断效能,实验中为每个标签绘制的ROC 曲线如图11所示。通过曲线可以看到,本模型在4种肾小球病变分类中表现优秀。其中,对于正常肾小球及MsPGN 分类的AUC 的值可高达1,对于CGN、FSG分类的AUC值也能达到0.99。
根据以上结果,分类实验中CGN 及FSG 分类表现相对MsPGN 较差的原因为小部分肾小球表现为伴新月体形成的肾小球硬化,其同时具有肾小球新月体形成及节段性硬化两种病变特征,从而造成模型区分这部分肾小球较为困难。综合以上结果,表明本模型在肾小球的分类任务中依然具有优秀性能。
相对于人工诊断肾小球病变,计算机视觉方法识别肾小球病理图像病变具有成本低、准确率高、时延短的优点[25]。本文病理图像诊断是目前发展的最新技术,将先进的研究成果应用在肾小球图像的分类任务中,提出了基于SE-ResNet 50的肾小球病理图像的分类方法,实现对病理图像的高精度分类,同时相较于其他分类模型在肾小球病理图像分类问题中的准确率更高,结果显示在测试集上的准确率为96.93%。
在未来的研究中,第一,可以改进分类模型,使用更加轻量化的模型,同时能够保持并提高分类准确率;第二,可以更为深入地探索人工智能在肾脏病理领域的应用,除了能够应用于肾小球结构及病变识别中,还可应用在肾小管间质识别、肾脏整体结构识别、肾脏病理指标与病理分级等,助力肾脏精准医学进展;第三,本文中基于残差神经网络的分类模型在肾小球病理图像的分类任务中已经取得了较高的准确率,可以将该模型拓展应用于更多医疗影像的分类任务中;第四,基于深度学习的肾病诊疗一直都是充满挑战的医学研究领域,构建涵盖大样本的数据集,并将深度学习与医院病理系统集成构建可解释的肾病诊疗模型和临床应用具有广阔的发展前景。