APP下载

融合注意力的ConvNeXt视网膜病变自动分级

2022-09-17黄文博黄钰翔姚远燕杨

光学精密工程 2022年17期
关键词:视网膜分级卷积

黄文博,黄钰翔,姚远,燕杨

(1.长春师范大学 计算机科学与技术学院,吉林 长春 130032;2.中国科学院重大任务局,北京 100864)

1 引言

视网膜病变会导致患者视物模糊、视力下降甚至失明[1],由于缺少自动识别与分级系统,大量诊断工作主要由专家人工操作,因此基于深度学习方法的视网膜病变自动识别与分级成为研究热点[2]。

国内外学者对视网膜病变自动分级方法展开了较为深入的研究。Xu等[3]采用卷积神经网络(Convolutional Neural Network,CNN)将视网膜病变图像分类。Jiang等[4]通过预训练3个不同的CNN网络,通过Adaboost方法将预训练的模型融合实现视网膜病变识别。以上两种模型仅对患者是否存在视网膜病变进行判定,未得到具体的病变分级结果。目前,视网膜病变自动分级的方法较多,以CNN为基础模型进行改进或与其他方法相结合。Li等[5]提出了基于CNN的迁移学习方法,结合支持向量机(Support Vector Machine,SVM)实现视网膜病变分级。韦哲[6]提出利用基于迁移学习的Xception[7]模型实现视网膜病变分级。王嘉良[8]提出了基于目标检测的区域全卷积网络(Region-based Fully Convolutional Networks,R-FCN)算法,通过检测血管瘤、眼底出血及玻璃体出血等病变区域,实现对视网膜病变的图像分级。Lin等[9]提出了抗噪声检测和注意力融合的视网膜病变检测模型。郑雯[10]引入空洞卷积代替普通卷积并融合注意力机制实现了视网膜病变分级。这些方法基本解决了视网膜病变分级问题中视盘区域对病灶识别的干扰问题,但由于视网膜微血管的类间图像特征差别小,分级的特征临界值相对模糊,现有视网膜病变分级算法仍存在分级准确率较低、模型能力受限等问题,因此目前视网膜病变分级仍然是一项具有挑战性的工作[11]。

本文提出一种基于ConvNeXt网络的视网膜病变自动识别与分级方法。ConvNeXt网络使用余弦下降法动态调整学习率。针对训练网络带标记的眼底图像数据不足,导致ConvNeXt网络在训练的过程中分级精度较低的问题,通过图像增强和引入额外数据集的方法解决数据分布不均衡问题。针对类间图像特征差别小导致的低精度问题,采用迁移学习法训练模型中所有层权重,设计了能够提取更深层次特征的E-Block模块,添加到ConvNeXt网络模型中,避免参数降维,有效捕捉跨通道交互信息,显著提升了模型的准确率。

2 图像预处理

2.1 数据集

本文的主体数据集采用APTOS 2019 Blindness Detection竞赛数据集。该数据集采用国际视网膜病变分级标准,依据视网膜病变的严重程度将图片分为5个等级,如图1所示。其中,0级为正常,1级为轻度病变,2级为中度病变,3级为重度病变,4级为增殖性视网膜病变。通过观测数据集中各类数据的分布,可发现APTOS2019数据集存在严重的数据不均衡情况,导致模型更多关注样本多的类别,忽略样本少的类别,训练效果不理想。因此,这里引入由EyePACS平台提供的Kaggle(2015)竞赛数据集和IDRiD(Indian Diabetic Retinopathy Image Dataset)数 据 集。考虑到图像的采集环境,首先要对数据集进行清理,清理掉因受拍摄环境影响而出现的图像显示不正常和噪声太大的数据,如图2所示。通过数据增强对数据量较少的类别(主要针对等级3和等级4)进行数据扩充,采用水平翻转、左右变换等方法扩充数据集,使得每个类别的图像数量相对均衡,最终构建成本文的实验数据集,共10 041幅图像,各类别图像数如表1所示。

图1 APTOS 2019 Blindness Detection数据集示例Fig.1 Examples of APTOS 2019 blindness detection dataset sample

图2 清理掉的图像示例Fig.2 Examples of cleaned up images

表1 数据集扩充前后对比Tab.1 Comparison before and after dataset expansion

2.2 图像预处理

由于数据集中多数眼底图像的对比度比较低,病灶区域和非病灶区域不容易区分,使得病变特征不易检测。另外,受制于眼底图像的拍摄环境及成像设备的性能,数据集中的图像出现不同程度的图像模糊、照明不均等问题。为了得到更好的训练效果,本文使用Graham方法[12]对图像进行预处理,减轻因不同照明条件或成像设备而产生的问题。给定一张眼底图像I,经Graham方法处理后的图像̂为:

其中:G(θ)是具有标准差θ的2D高斯滤波器,*是卷积算子,α,β和γ是加权因子。

图3 预处理前后图像对比Fig.3 Comparison of images before and after preprocessing

采用中心裁剪法去掉图像中含有无用信息的黑色区域,如图3所示。处理后的图像裁剪掉了无关区域,提亮了眼球边缘的暗部区域,出血点、絮状物、渗出物和血管等重要特征更加突出。在训练时还引入了随机裁剪、随机透视变换和高斯滤波等方法对图像进行特征增强。

3 模型设计

3.1 网络搭建

视网膜病变图像分类的难点主要是不同类别图像的病变特征差距很小且重叠率高,属于细粒度图像分类的范畴,是对大类下的子类进行分类,只有向神经网络输送大量的图像信息才能挖掘到更深层次的特征。本文搭建的ConvNeXt网络结构如图4所示,详细参数信息如表2所示。选择ConvNeXt-T网络作为基础网络,与Transfrom网络[13]相比,ConvNext网络不需要进行分块合并、窗口偏移和相对位置偏执等操作,具有更好的性能和更少的计算量。ConvNext网络的 整 体 结 构 与ResNet[14]类 似,在Block的 堆 叠次数设计上参考了Transformer网络。本网络主要由卷积层、E-Block层和线性层3部分组成。其中,E-Block层是本网络的核心部分,负责提取视网膜图像的特征,E-Block层1至E-Block层3由E-Block模块和下采样模块组成,E-Block层4由E-Block模块和全局平均池化层组成,EBlock层1至E-Block层4的堆叠次数分别为(3,3,9,3),延续使用ConvNeXt-T网络结构堆叠次数设置。

在ConvNeXt模型中,首先将经过预处理的视网膜图像输入模型,在第一部分对图像使用4×4的卷积核进行卷积处理,设置步距为4,经过层归一化(Layer Normalization,LN)处理后进入第二部分的E-Block层,最后在第三部分的线性层输出模型的预测结果。

表2 ConvNeXt网络结构详细信息Tab.2 ConvNeXt network structure details

图4 本文ConvNeXt网络的结构模型Fig.4 Structure model of proposed ConvNeXt

3.2 E-Block模块

理论上模型的网络深度越深,其性能就会越好,但是大量实验表明,盲目地加深网络的深度会适得其反,造成“退化”现象。针对这个问题,何凯明等[14]在ResNet网络的设计中提出了残差单元结构,残差单元将经过处理的参数与原参数相加,解决了网络的退化问题。本文基于残差基本思想提出了E-Block结构。E-Block结构设计如图5所示,相比于经典卷积方法,深度可分离卷积(Depthwise Separable Convolution,DSC)可在保留大卷积核的基础上减少参数量并加速模型训练。因此,本文首先利用DSC减少参数,加速模型训练。在DSC中,每个卷积核的通道数都等于1,每个卷积核只负责输入特征矩阵的一个通道数,所以卷积核的个数必须等于输入特征矩阵的通道数,从而使得输出特征矩阵的通道数等于输入特征矩阵的通道数;然后,通过两个1×1的卷积核来调整输出特征矩阵的通道数,再将调整后的特征输入到高效通道注意力模块(Efficient Channel Attention,ECA),进一步提取深层次特征;最后,为了防止模型出现过拟合现象,提高模型的泛化能力,设置了一个Dropout层和一个DropPath层。Dropout法通过随机删除神经元的方式来减少神经元之间的协同性,它强迫一个神经单元和随机挑选出来的其他神经单元共同工作。DropPath层的作用与Dropout层类似,不同的是DropPath法会将模型中的主分支结构按几率失活,即DropPath以一定的概率将主结构的输出变为0,等价于只有捷径分支构成输出。

图5 E-Block结构Fig.5 E-Block structure

图6 ECA模块结构Fig.6 ECA module structure

3.3 高效通道注意力模块

ECA模块通过不降维的局部跨信道交互策略和自适应选择一维卷积来实现。该模块可在只引入少量参数的情况下获得明显的性能提升,如图6所示。通过全局平均池化,将每个通道上对应的空间信息(H*W)压缩到对应通道中变为1个具体数值,此时一个像素表示一个通道,最终变为1×1×c,形成一个向量。随后,通过一个卷积核尺寸为k的一维卷积对该向量进行特征提取,得到权重信息。在获得权重信息的过程中,通过参数k来控制第0~k个通道参与计算,这样就得到了第一个通道的权值。卷积核向下滑动1格,控制第1~k+1个通道参与计算,这样便实现了局部跨通道交互,再通过卷积核滑动依次算出所有通道的权重信息。最后,将计算出的权重信息与对应通道的特征像素相乘就完成了特征图的重校验。为了避免在交叉验证时手动调整参数k,ECA模块以自适应方式来确定k值,见式(2)~式(4),其中,交互的覆盖范围(卷积核尺寸为k)与通道维度成正比。

假设在k和C之间存在映射φ:

由φ(k)=γ*k-b可知,其中γ=2,b=1,线性函数是最简单的映射方式,但是以线性函数为特征的关系非常有限。由于通道维数C通常是2的指数倍,因此通过将线性函数φ(k)=γ*k-b拓展到非线性函数来解决这个问题:

给定通道维数C后可得:

4 实验结果与分析

图7 不同方法视网膜病变分级混淆矩阵Fig.7 Classification confusion matrix of retinopathy for each model

实验在Pytorch深度学习框架下搭建,实验环境为python 3.8,pytorch 1.10,cuda 10.2。把数据集中,80%的图像划分为训练集,20%的图像划分为测试集。使用自定义学习率LambdaLR=6×10-4,warmup=10,在 达 到最大学 习率后采用余弦下降法动态调整学习率,优化器为AdamW,训练epoch=200,batch_size=64。本文使用迁移学习法,将ConvNeXt网络在ImageNet_1k上训练好的权重作为本文网络模型的初始权重。

4.1 评价标准

本文模型利用灵敏度(Sensitivity)、特异度(Specificity)和准确率(Accuracy)这3个指标来评估性能,主要由TP(True Positive)、FP(False Negative)、FN(False Negative)和TN(True Negative)4个基础指标计算,即:

表3 不同算法的视网膜病变分级结果Tab.3 Results of diabetic retinopathy grading by different algorithms (%)

由表3可见,使用ConvNeXt网络训练扩充后的数据集相比扩充前各项指标均有提高,由此证明了本文数据均衡方法的有效性。使用本文方法训练Densenet网络和Shufflenet网络均取得了较好的分类结果,证明本文的训练策略具有优秀的鲁棒性。由于CBAM(Convolutional Block Attention Module)机制有助于网络提取更深层次的特征信息,所以本文在ConvNeXt网络中引入了CBAM注意力模块。实验结果表明,CBAM机制的引入与原ConvNeXt网络的表现几乎没有差别,其原因是引入CBAM的同时增加了更多参数,网络更加复杂,计算量增大,结果不如预期。本文还比较了SE(Squeezeand-Excitation)通道注意力对网络的影响。实验结果表明,加入ECA模块的网络兼具通道注意力参数少、轻量化的优点,性能更好。改进的ConvNeXt网络的3项评价指标都在95%以上,对比其他算法,各项指标均有显著的提高且各项指标之间的参数差较小,说明本文设计的网络性能更稳定。

5 结论

本文提出了一种结合E-block模块的改进ConvNeXt视网膜病变自动分级模型。利用迁移学习方法在训练时提高了模型训练速度,加快了模型收敛;改进模型的残差结构并设计具有高性能、低参数特性的E-block模块,避免参数降维,有效捕捉跨通道交互信息,在只增加少量参数的情况下获取到更多的图像细节,提升了模型准确率。实验结果表明,本文模型对视网膜病变的识别与分级敏感性为95.20%、特异度为98.80%,准确率为95.21%,各项指标均有显著提高,可为临床提供借鉴。

猜你喜欢

视网膜分级卷积
深度学习在糖尿病视网膜病变诊疗中的应用
基于3D-Winograd的快速卷积算法设计及FPGA实现
家族性渗出性玻璃体视网膜病变合并孔源性视网膜脱离1例
高度近视视网膜微循环改变研究进展
球结膜下注射庆大霉素致视网膜损伤1例
卷积神经网络的分析与设计
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
分级诊疗路难行?
分级诊疗的“分”与“整”