APP下载

YOLOv5-GC:一种用于自动检测肺结节的改进YOLOv5 框架

2023-11-14尹冬生杜玲艳徐小入

现代计算机 2023年17期
关键词:结节肺部函数

尹冬生,杜玲艳 *,徐小入

(1. 四川轻化工大学自动化与信息工程学院,自贡 643000;2. 四川轻化工大学人工智能四川省重点实验室,自贡 643000)

0 引言

肺癌作为发病率和死亡率都很高的主要恶性肿瘤之一[1],一直威胁着人们的健康和生命。大多数肺癌患者确诊时已是晚期,其5年生存率仅为10%左右,但及早发现相关病灶并及时治疗,可将生存率提高至50%以上[2]。肺结节是肺癌的早期表现之一,因此肺结节的早期筛查和诊断具有重要意义。随着肺结节低剂量CT 筛查的广泛开展[3],CT 图像数量成倍增加,给放射科医师的工作带来了极大的负担,增加了主观性和疲劳性造成误诊的风险。

计算机辅助诊断(CAD)系统可以帮助医生提高诊断的速度和准确性。肺结节检测是通过提取图像特征并用机器学习相关分类器对结节进行分类来实现的。传统的肺结节检测方法依赖人工提取特征信息,无法有效挖掘肺部CT 图像的丰富信息,导致检测效率低下,严重影响诊断准确性。此外,传统算法缺乏泛化能力,难以适应大量复杂数据集[4]。近年来,随着大数据集的出现和深度卷积神经网络的兴起,基于深度学习的肺结节检测可以获得更好的特征表示能力[5-7],从而在检测领域取得了一系列突破。该方法在肺结节检测中的应用[3,8-9]。例如,Zhu 等[10]提出了一种基于Faster R-CNN 的两阶段检测方法来解决结节误报问题,但由于训练时间长,检测效率受到影响。Mao 等[11]提出了一种基于U-Net的改进网络模型结构,可以融合肺部结节的语义特征和低级特征,提高检测能力,但直径小于12 mm 的结节检测精度不高。Xu 等[12]使用实时交互式肺结节分析系统帮助放射科医师识别更多病灶,尤其是在胸部DR/CR图像上更容易被忽视的小病灶,但整体灵敏度并不是特别出色。Su 等[13]设计的Faster-R-CNN算法,在肺部疾病的诊断中具有较高的准确性和潜在的临床价值,但其数据集较小,仅由医生对大的肺结节进行标记,缺乏特异性,对小的肺结节的敏感性较低。尽管随着上述基于深度学习的方法的发展,肺结节检测的性能有所提高,但仍然存在许多挑战。目前需要一种灵敏度高、训练时间短、速度快的肺结节检测模型。

针对以上问题,本文提出了一种改进的YOLOv5s 肺结节检测算法。在该方法中,使用GELU 作为网络结构的卷积激活函数。注意力机制CA 嵌入在骨干网络中。采用Ghost 轻量级网络改进C3 为C3Ghost,并在Head 结构中加入小目标检测层,提高小目标检测的准确率。该模型训练时间短,并且在检测小的肺结节方面具有非常好的准确性。

需要注意的是,“YOLO-GC”是我们正在改进的模型的首字母缩写词,其中字母“G”和“C”分别表示激活函数高斯误差线性单元(GELU)和协调注意力(CA)。本文的主要贡献如下:

(1)用高斯误差线性单元(GELU)的激活函数来描述神经元输入的概率;

(2)在特征提取网络中加入CA 注意力机制,提高特征表达能力;

(3)引入Ghost 轻量级网络,参数数量减少14.9%,速度提升19.7%;

(4)添加小目标检测层,改变特征融合的方式,使特征融合更加完整,提高小型、微小型肺结节的检测精度。

在LUNA16 上的实验证明了所提出模型的可行性和有效性。

1 材料和方法

1.1 YYOOLLOO

YOLO(you look only once)模型由Redmond等人提出,用于物体检测[14]。 YOLO 模型通过单个前馈网络直接预测边界框。YOLO 家族包括YOLO、YOLO9000[15]、YOLOv3[16]、YOLOv4[17]、YOLOv5、YOLOv6[18]和YOLOv7[19]。

本文使用的是YOLOv5算法模型。

1.2 YYOOLLOOvv5

YOLOv5算法具有训练快、准确率高、模型高效等特点。YOLOv5有四个版本,包括YOLOv5s、YOLOv5m、YOLOv5l 和YOLOv5x,都在深度和宽度上逐渐增加[20]。 在处理成百上千张的肺结节图像时,YOLOv5 算法在高精度条件下检测速度上具有明显优势。 其输入采用增量强的Mosaic 数据。自适应锚框计算,自适应图片缩放率;主干模块基于Focus、Bottleneck、CSP(cross stage partial networks)和 SPPF(Spatial Pyramid Pooling-Fast)从输入图像中提取特征,并将它们传输到Neck模块。

1.3 YYOOLLOOvv5--GGCC:改进的YYOOLLOOvv5

1.3.1 GGEELLUU

ReLU 等分段线性函数并不光滑,且在某些间断点处不可导(特别是原点处)。然而,神经网络处理的数据一般要求是零均值的,ReLU 等函数在零点不可微,会在某种程度上影响网络的性能。此外,ReLU 等确定性非线性函数作为神经网络的激活函数时,网络往往需要加入随机正则以提高模型的泛化性能。如果一个非线性函数本身具有随机正则性,是不是就能同时保证网络的非线性和泛化性?研究学者尝试使用一个依赖于输入本身的概率统计量为激活函数提供随机正则性,同时保持输入信息,得到了一种更好的激活函数,即高斯误差线性单元(Gaussian error linear unit,GELU)[20-21]。

GELU 在激活中引入了随机正则化的思想,这是对神经元输入的概率描述,直观上更符合对自然界的理解。它是一种高性能的神经网络激活函数,因为GELU的非线性变化是一种符合预期的随机正则变换方式,公式如下:

其中(x)指的是x的高斯正态分布的累积函数。进一步地,可得该函数的具体表达为

其中μ和σ分别代表正态分布的均值和标准差。由于上面这个函数是无法直接计算的,研究者在研究过程中发现GELU 函数可以被近似地表示为

或者

其中,σ(·)表示Sigmoid 函数,GELU 的函数图像如图1所示。

1.3.2 CCAA注意力机制

在我们提出的模型中,一种称为“协调注意”的注意机制被引入移动网络,它可以将位置信息嵌入到通道注意中。相应的网络结构如图2所示[22-23]。

协调注意力通过精确的位置信息对通道关系和长期依赖性进行编码。具体操作分为两步:坐标信息嵌入和坐标注意力生成。 在坐标信息嵌入过程中,首先根据等式(5)将全局池分解为一对一的一维特征编码:

对于输入X,使用大小为(H,1)和(1,W)的池内核分别沿着水平和垂直坐标对每个通道进行编码,高度为h的通道c的输出如等式(6)所示:

宽度为w的通道c的输出如等式(7)所示:

上述两个变换沿着两个空间方向聚集特征以获得一对方向感知特征图。

为了利用上述信息,在坐标注意力生成中,首先对上述转换进行连接操作。然后使用卷积变换函数F1对其进行变换,如等式(8)所示:

其中,δ是非线性激活函数,f是在水平和垂直方向上编码空间信息的中间特征图。

然后将f沿空间维度分解为张量f h和f w,并使用两个1*1卷积变换和将f h和f w分别变换为具有相同通道数的张量,如等式(9)、(10)所示:

然后将输出gh和gw分别扩展为关注权重。最终输出y如等式(11)所示:

我们在特征提取网络结构的公共卷积层和SPPF 模块之间增加了一个CA 模块,使模型对肺部小结节的检测更加敏感。提取的特征在空间上有较好的远程依赖性,同时不丢失位置信息,生成的注意特征图与原始输入特征图相比较,YOLOv5-GC 更加重点关注肺结节存在的位置[24]。

1.3.3 轻量级网络GGhhoosstt

加入CA 注意力机制后,模型的网络层由原来的622 层变为814 层。训练过程中需要学习的参数数量仍然很大,整个网络架构承担着沉重的计算压力,计算机训练模型非常耗时。因此,在特征融合阶段,加入轻量级网络Ghost 在C3模块中,是为了对从特征提取网络中提取的部分特征进行线性扩展,减少训练中学习的参数量,减少模型特征融合阶段的时间。图3 是Ghost模块的处理流程[24]。

图3 Ghost模块流程图

Ghost 模块可以在一系列简单的线性操作后生成具有少量参数的更多特征图。它的参数和计算量都低于普通卷积神经网络。使用该模块后,与原始网络相比,需要学习的参数数量减少了14.9%,检测速度提升了19.7%,从大大减少了该网络的训练时间[25]。

1.3.4 微尺度检测层的创建

YOLOv5在三个尺度上进行检测,将输入图像的尺寸分别为下采样32、16、8,准确得到三个尺度。在这项研究中,我们检测不同尺度的不同大小的峰。但是在肺部CT 图像中,有些肺部结节体积较小,只有3 mm~6 mm,YOLOv5的小尺度检测层不太适合这些肺部小结节。因此,YOLOv5-GC 通过对输入图像的维度进行四次下采样来添加一个新的微尺度检测层,这个微尺度层通过提取较低的空间特征并将它们与更深的语义特征融合来生成特征图。新的微尺度检测层使得检测网络结构更宽更细,适用于肺阴影图像中微小肺结节的检测[26]。图4 所示为改进后的YOLOv5-GC 的网络结构,增加的小尺度检测层分支就是图中的红框。

图4 改进后的YOLOv5-GC的网络结构

1.4 实验数据

1.4.1 数据预处理

为了验证该模型的检测效果,本文对LUNA16 数据集进行了测试。LUNA16 数据集是LIDC-IDRI的一个子集,而LIDC-ID-RI是肺部结节检测的一个常用数据集。LUNA16数据集删除了LIDC-IDRI 中肺结节小于3 mm 和断面厚度大于3 mm 的CT 图像。其特点是数据量大,肺结节大小偏小,由多名具有数年放射科诊断经验的临床医师标注而成,其中肺结节直径范围为3~28.6 mm的结节标签,平均大小为8.3 mm。总计1186 例经多名放射科医师标注过的肺结节样本。整个数据预处理过程如图5所示[27]。

图5 数据预处理流程

图6的(a)和(b)分别显示了肺部结节中心点的分布和肺部结节的大小与原始图像的数据集的关系。

图6 肺结节分布

1.4.2 数据集设置

深度网络模型必须首先用足够的数据进行训练,以获得理想的检测精度。在一个具有复杂结构的网络模型中,如果用于训练的数据量太小,很容易发生过度拟合,最终会影响检测的准确性。本文对1186张肺部结节的CT图像进行裁剪、翻译、旋转和镜像,将其扩展为5930张图像的数据集。

本文随机抽取90%的图像作为训练集,5%作为测试集,5%作为验证集。

1.5 评价指标

本文的肺结节检测模型以Precision(精度)、Recall(召回率)和AP 作为评价指标。如公式(12)、(13)和(14)所示。

其中:TP是正确预测的阳性样本的数量;FP是错误预测的阳性样本的数量;FN是错误预测为阴性的样本的数量[28-29]。

2 实验与结果

2.1 设备参数

梯度向量有大小和方向,其中大小被称为学习率。如果学习率设置得太低,每一步都太小,下降速度太慢,就可能需要很长的时间才能找到最小值。而学习率太高时,每一步都太大,虽然收敛速度很快,但最小值被越过或忽略了,这会导致持续的来回振荡和不收敛。因此,学习率对算法的性能至关重要。

从表1可以看出,当学习率为0.01时,精度最高,效果最佳。

表1 学习率对实验结果的影响

在实际训练中,批量大小是非常重要的。如果批处理量过小,相邻小批之间的差异比较大,相邻两次迭代的梯度振荡会比较严重,不利于收敛;批处理量越大,相邻小批之间的差异越小。虽然梯度振荡会比较小,在一定程度上有利于模型收敛。但如果批处理量极大,相邻小批量之间的差值太小,相邻两个小批量的梯度不会不同,整个训练过程是向一个方向下移,很容易卡在局部最小值。因此,有必要为我们的模型训练选择适当的批次量。根据实验设备,设置2、4和8批处理量进行测试。

从表2 可以看出,当批次大小为8 时,效果最佳。

表2 批量大小对实验结果的影响

本文网络是基于PyTroch 深度学习网络,为了节省训练时间,在GTX3060上训练。这个模型的编程语言是Python;GPU 使用CUDAv11.2 和CuDNNv8.1进行加速。训练的参数设置如下:批次大小为8,初始学习率为0.01,动量为0.937,epochs设置为300,预训练权重为YOLOv5s.pt。

2.2 激活函数对AAPP的影响

从表3 的实验数据可以看出,激活函数对YOLOv5有一定影响。使用YOLOv5原始的ReLU激活函数,最终AP 值为81.0%;使用ELU 得到的AP 值为80.8%;使用GELU 激活函数,AP 值增加了0.3%,达到81.3%。结果表明,使用GELU激活函数略微提高了肺部结节的检测精度。

表3 ReLU、ELU和GELU三个激活函数在YOLOv5上的表现

2.3 消融实验

从表4 可以看出,使用330×330 像素的输入图像对所提方法消融研究表明,引入GELU激活函数后,直观上更符合对自然的理解,网络的检测精度有一定程度的提高,使AP 从81.0%提高到81.3%。CA 通过通道注意和空间注意增强了网络对肺结节的语义信息和位置信息的注意,促进了不同尺度特征的更有效融合。AP 值从81.3%提高到82.0%。引入Ghost 模块后,缩短了模型训练时间,但准确率有一定程度的下降,AP 值从82.0%下降到81.7%。最关键的改进是增加微尺度检测层,提高了该模型对小型和微小型肺结节的检测精度,AP 值从81.7%提高到88.1%。

表4 使用330×330像素的输入图像对所提出方法的组分进行消融研究

2.4 不同模型的实验比较结果

为了验证所提出的YOLOv5-GC 模型的有效性,我们将其与近年来其他经典的肺结节检测算法进行比较。表5 显示了与Mask R-CNN、YOLOv3和YOLOv5s的比较结果。

表5 与其他网络的结果比较

从表5 可以看出,所提出的YOLOv5 改进后的网络结构的Precision、Recall 和AP 值分别为87.5%、86.8%和88.1%。与原YOLOv5s 相比AP值增加了7.1%,与YOLOv3 相比AP 值增加了17.6%,比Mask R-CNN 的AP 值增加了25.6%。实验结果表明,改进后的网络结构更注重对肺结节小目标的检测,特征融合更充分,能更准确地检测肺结节。

本文对四种网络模型的精度和损失函数的变化进行了比较和分析,并绘制了相应的变化曲线,如图7 所示,该实验是每5 个epochs 保存一次数据。从图7(a)可以看出,改进后的YOLOv5-GC 模型训练后的目标识别准确率高于Mask R-CNN、YOLOv3 模型和原YOLOv5s 模型。此外,改进后的YOLOv5-GC 模型在达到收敛时的波动较小。从图7(b)可以看出,改进的YOLOv5-GC 模型的损失函数值下降得更快。综上所述,与Mask R-CNN、YOLOv3 模型和原始YOLOv5s 模型相比,YOLOv5-GC 模型对肺部结节有更好的检测性能和识别效果。

图7 测试结果的比较

YOLOv5-GC 模型验证设定的混淆矩阵如图8 所示,从图8 可以看出,该模型对肺结节的识别准确率达到90%,并且假阳性率较低,该方法在肺结节自动检测中表现出良好的性能。

图8 YOLOv5-GC训练结果的混淆矩阵

2.5 可视化实验

图9显示的是肺结节实际存在位置、YOLOv5预测的位置和YOLOv5-GC 预测的位置之间的差异。从图中可以看出,原始的YOLOv5模型中对肺结节的检测只有80%的预测值,而本文提出的方法可以达到90%的预测值。总结这个可视化实验,我们的模型对较小的结节具有良好的性能和非常高的准确率。

图9 提议的方法在LUNA 16数据集上的检测结果

3 结语

本文的算法可以实现基于CT 图像的肺结节自动检测,在实际的肺结节检测操作中具有一定的应用价值。CA 注意力机制的加入有效地提高了肺结节的检测率。Ghost 模块的应用大大提高了检测速度。GELU 在激活中引入了随机正则化的思想,来描述神经元输入的概率。增加的小物体检测层对肺部结节的检测有很好的效果。该算法有效提高了结节的检测效率,减少了计算资源的使用。然而,这个实验有一定的局限性,即应该进一步扩大实验数据集。目前,本实验使用的数据量太小,而且数据比较陈旧,有些数据图像有些模糊。可供参考的良性结节不多,缺乏很多特异性。因此,今后我们可以与医院合作,获得更多新的CT 图像来训练模型,进一步提高本模型的检测精度。此外,这个实验设备的性能一般。如果有更好的设备或服务器,建议使用更大的GPU 进行训练,因为从表3可以看出,在某些情况下,批量大小的设置会影响训练的速度和准确性。肺结节是肺部的球状物,在CT 图像上只显示一个截面。未来可以使用三维(3D)CNN 进行此类实验,这样可以避免二维图像的一些干扰,可以有效地提高检测效果[30-31]。

猜你喜欢

结节肺部函数
二次函数
肺结节,不纠结
发现肺结节需要做PET/CT吗?
第3讲 “函数”复习精讲
从气、虚、痰、瘀辨治肺结节术后咳嗽
二次函数
函数备考精讲
《结缔组织疾病肺部表现》已出版
《结缔组织疾病肺部表现》已出版
《结缔组织疾病肺部表现》已出版