APP下载

基于改进ResNet50的皮肤病变图像分类

2023-06-10王师玮易才键

软件工程 2023年6期
关键词:空洞损失卷积

王师玮, 陈 俊, 易才键

(福州大学物理与信息工程学院, 福建 福州 350108)

1 引言(Introduction)

皮肤病目前已成为重要公共卫生问题。皮肤科医生人工识别皮肤病的过程中,一定程度地存在效率低、劳动强度大等问题,因此借助深度学习技术辅助医生进行诊疗,在临床应用中具有重要的实用价值。

近年来,各种卷积神经网络(Convolutional Neural Network, CNN)层出不穷。2012年,由KRIZHEVSKY等[1]提出AlexNet网络,在当年的ImageNet(大规模视觉识别挑战赛)上夺冠,掀起了CNN在图像分类领域的应用热潮。在此基础上,皮肤病变识别也逐渐引入深度学习的研究方法。2014年,牛津大学计算机视觉几何组(Visual Geometry Group, VGG)提出了VGGNet[2],LI等[3]使用VGG16(16层结构的VGGNet)解决皮肤肿瘤分类的任务。ADEGUN等[4]研究了一种基于DenseNet(密集连接卷积网络)的方法检测皮肤癌,该方法由密集块组成。张荣梅等[5]提出用Inception结构取代残差网络中的卷积层、池化层,并将其运用于皮肤黑色素癌的分类识别中。SAELIM等[6]提出了一种基于MobileNet(轻量级卷积网络)的皮肤病变分类方法。SATAPATHY等[7]利用CapsNet(胶囊网络)对空间姿态、方向信息敏感的特点,将其作为皮肤癌的分类器。由于皮肤病变表现出的类内相异性和类间相似性,以及不同病变类型之间存在严重的类别不平衡情况,因此在一定程度上增加了皮肤病变的识别难度。为了解决这些问题,进一步提升皮肤病变图像的分类精度,本文提出了皮肤病变图像分类模型DS-ResNet50。

2 皮肤病变图像分类模型(Image classification model of skin lesions)

ResNet50[8]网络由很多残差块构建而成,这些残差块不仅易优化,计算负担也小,使得ResNet50在网络层数加深的同时能有效解决梯度消失、梯度爆炸的现象。ResNet50网络结构包含49个卷积层和1个全连接层。残差块中的shortcut连接将输入的信息进行跨层传递,与经过卷积操作后的输出进行叠加,使底层网络能够进行充分训练。随着残差块的堆叠,网络深度不断增加,网络的正确率也会显著提升。

DS-ResNet50模型在ResNet50的基础上进行改进,构建了新的瓶颈模块:设计了双尺度空洞卷积模块,通过级联空洞率为1和3的深度卷积核,增加感受野,保留更多的原始信息,并对提取到的不同尺度的特征信息进行融合;引入轻量型注意力模块SimAM,在不增加任何参数量的同时,使模型更好地聚焦主体目标提炼关键特征,提升易混淆样本的分类准确率。采用Focal Loss损失函数调整难分类、易分类样本的权重,使模型更关注难分类样本的损失结果。模型整体结构如表1所示。

表 1 ResNet50与DS-ResNet50结构对比Tab.1 Structural comparison between ResNet50 and DS-ResNet50

续表

2.1 双尺度空洞卷积模块

增加感受野可以使神经元接触到原始图像的更大范围,从而捕捉到更全局的语义信息。传统的池化、增大卷积核都能扩大感受野,但使用此方法扩宽感受野的同时,特征图尺寸也会随之缩短,因此采用上采样的方法复原特征图尺寸。特征图尺寸缩短再放大的过程通常会造成精度上的损失,遗失有用信息,故本文通过空洞卷积扩宽感受野。空洞卷积是在标准的卷积中引入空洞,在扩宽感受野的同时保持特征图的尺寸不变,相比原来的标准卷积,空洞卷积多了一个参数,称为膨胀率。空洞卷积可以通过调整膨胀率控制感受野的大小,膨胀率越大,则感受野越大,调整的同时不会改变特征图的分辨率。假设空洞卷积的卷积核大小为k,膨胀率为r,则其等效卷积核大小k′通过如公式(1)计算:

k′=k+(k-1)×(r-1)

(1)

当r=1时,就是标准卷积。

本文模型在此基础上提出,将如图1所示的双尺度空洞卷积模块置于原ResNet50的瓶颈结构中。将2个扩张率为1和3的空洞卷积进行级联,扩宽感受野以获取多尺度的特征信息,并融合这2个空洞卷积的输出特征图,提高特征提取能力,进而获得更精细的特征结构。

图1 双尺度空洞卷积Fig.1 Dual-scale dilated convolution

2.2 轻量型注意力SimAM模块

注意机制是深度学习中一种常用的技术,基本思想是基于输入序列的不同部分与当前预测或输出的相关性加权它们的贡献,一般通过为输入序列的每个元素计算一组注意力得分,然后使用这些得分计算序列元素的加权和,使得模型在进行预测或生成输出时专注于输入序列的特定部分。通过注意力机制,模型可以关注更值得关注且更应该关注的地方。

SimAM模块[9]是一种无参数的轻量型注意力模块,可以无缝地集成到模型架构中一起进行训练。在DS-ResNet50模型中引入SimAM模块,在不额外增加参数的情况下,可以捕获更多的细节特征,使模型更加关注易混淆样本。

SimAM根据神经科学理论设计一种能量函数用于发现重要神经元,并据此实现注意力权值的计算。在神经科学中,与周围神经元相比,信息较丰富的神经元通常会展现出不同的放电模式,并且活跃的神经元往往会抑制周围神经元的活动,即所谓的空域抑制。所以,应当给予具有明显空域抑制效应的神经元更高的优先级,定义如公式(2)所示的能量函数找到这些重要的神经元:

(2)

2.3 Focal Loss损失函数

多分类实验中,数据集经常会出现类别不均衡的问题,导致模型偏向数据量大的类,对数据量小的类的学习就不够充分,最终使少样本的类别分类结果较差;数据集中也会存在难分类样本,难分类样本与其他类别样本差异细微,很容易造成误分,影响模型性能。

针对上述问题,本文所提方法首先在数据集的预处理过程中,采用数据增强方法进行样本补充,缓解数据不平衡的问题,平衡模型在训练过程中的偏好。其次选择Focal Loss[10]作为损失函数,通过调整难、易分类样本对总损失结果的权重,增加难分类样本的损失值,减小易分类样本的损失值,使模型更关注难分类样本,避免难分类样本淹没在大量易分类样本中,让模型对难分类样本进行更充分的学习,降低难分类样本的误分率,从而提升总体的分类准确率。Focal Loss函数是基于交叉熵损失函数的改进,具体表达式如下:

FL(pt)=-at(1-pt)rlog2pt

(3)

其中,pt为预测概率;抑制参数r≥0,抑制参数与权重成反比,即r越大,权重越低,一般根据经验取r=2;各类别权重at的取值范围为(0,1),根据样本数据量的相对大小取值,样本多的类别权重取值较小,样本少的类别权重取值较大。

3 实验与结果分析(Experiment and result analysis)

3.1 实验环境

本文实验在Windows 10操作系统下完成,基于Pytorch深度学习框架。硬件环境为16 GB内存的IntelCore i7-9700K CPU处理器,8 GB显存的NVIDIA GeForce RTX 2070显卡。

3.2 数据来源与数据增强

本文实验数据来自ISIC2017皮肤镜图像分类数据集,数据集由2 000张训练集、150张验证集、600张测试集组成。数据集共有3种类别的皮肤病变图像,分别为黑色素瘤(Melanoma, MEL)、脂溢性角化病(Seborrheic Keratosis, SK)、黑色素细胞痣(Melanocytic Nevus, MN)。原训练集中各类别图像的具体分布情况如图2所示。

图2 原训练集的图像分布Fig.2 Image distribution of original training set

由图2可以看出,训练集中各类别图像的数据量少且各类别间数量差异很大,所以本文通过数据增强的方法产生新的样本图像,在扩充样本数据量解决样本分布不平衡问题的同时,也增强了模型的泛化能力。数据增强的具体操作为逆时针旋转90°、180°、270°、水平或垂直翻转、随机缩放等。经调整后的训练集样本分布如图3所示。

图3 数据增强后的训练集图像分布Fig.3 Image distribution of training sets after data enhancement

3.3 实验参数设置

本文实验使用Adam作为优化器,损失函数选择Focal Loss函数。设置每批次训练8张图像,模型的最大训练周期为100个,采用稳定减小学习率、早停法防止数据过拟合。初始学习率设置为0.000 5,稳定减小学习率方法的patience参数设置为7,当7个训练周期后验证性能没有提高,学习率会降低为原来的一半。早停法的patience参数设置为15,当连续15个训练周期的验证性能没有提高,就会终止训练。

3.4 评价标准

为了全面评估模型的分类性能,使用准确率(ACC)、精确率(P)、召回率(R)及F1-score值(F1)作为评价标准。

(4)

(5)

(6)

(7)

其中,TP(真阳性)表示将正例预测为正例的数量,FP(假阳性)表示将负例预测为正例的数量,FN(假阴性)表示将负例预测为负例的数量,TN(真阴性)表示将正例预测为负例的数量。一般而言,准确率、精确率、召回率和F1-score的值越高,模型的分类性能越好。

3.5 结果与分析

为了验证本文模型的有效性,在数据增强后的皮肤病变图像分类数据集上进行实验,表2展示了不同类别皮肤病变图像的分类结果。从表2中可知,本模型在3种皮肤病变类型的分类上的精确率、召回率和F1-score均表现良好。

表 2 3种皮肤病变类型的分类结果Tab.2 Classification results of 3 types of skin lesions

混淆矩阵是准确性评估的标准格式,本文的皮肤病变分类模型输出分为3类,因此用3×3矩阵表示,分类结果的混淆矩阵如图4所示。

图4 分类结果的混淆矩阵Fig.4 Confusion matrix of classification results

将本文算法与经典模型VGG16、GoogleNet、ResNet50、MobileNetV2、ShuffleNetV2、InceptionV3进行分类准确率对比,实验结果如表3所示。

表 3 不同模型分类准确率对比Tab.3 Comparative experiment of different models' performance

从表3中可以看出,本文算法在准确率上的实验结果为90.95%,分别高于VGG16、GoogleNet、ResNet50、MobileNetV2、ShuffleNetV2、InceptionV3模型4.69%、2.76%、0.88%、3.33%、5.52%、2.92%。由此可见,本文模型具有更好的分类效果,是一个高精度、高性能的皮肤病变分类网络模型。

本文模型在训练过程中的损失如图5所示,可以看出,在训练过程中采用早停法,训练损失和验证损失都不断减小,最终保存了训练过程中最低的损失值,模型得到了有效的训练。

图5 训练过程中的损失Fig.5 Loss during training process

4 结论(Conclusion)

本文模型在ResNet50的基础上进行改进,提出了一种皮肤病变分类模型DS-ResNet50:设计了双尺度空洞卷积模块,通过级联不同空洞率的深度卷积核,在特征提取阶段提取不同尺度的特征信息并进行融合;引入轻量型注意力模块SimAM,使模型更好地聚焦主体目标提炼关键特征。训练过程中选用Focal Loss损失函数,通过调节权重参数使模型更关注难分类的样本。在公开数据集ISIC2017上进行实验,并与几款经典模型进行对比,结果表明本文提出的DS-ResNet50模型在皮肤病变分类中准确率在几种模型中最高,达到了90.95%,具有良好的分类效果,可为临床医学诊断提供辅助。

猜你喜欢

空洞损失卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
胖胖损失了多少元
从滤波器理解卷积
玉米抽穗前倒伏怎么办?怎么减少损失?
基于傅里叶域卷积表示的目标跟踪算法
空洞的眼神
一般自由碰撞的最大动能损失
用事实说话胜过空洞的说教——以教育类报道为例
损失
一种基于卷积神经网络的性别识别方法