基于YOLOv7通道冗余改进的飞机蒙皮损伤检测*

2024-05-08 03:52单腾飞张晓瑜陈玖圣郭润夏
航空制造技术 2024年6期
关键词:蒙皮颈部卷积

吴 军,单腾飞,黄 硕,张晓瑜,陈玖圣,郭润夏

(中国民航大学,天津 300300)

飞机蒙皮损伤检测对于保障飞行安全至关重要。目前,飞机蒙皮损伤常用检测方法是人工目视检测[1],但其效率低下,受人为因素影响较大,存在错检和漏检的情况[2]。随着深度神经网络的发展,卷积网络 (Convolutional neural networks,CNN) 已经广泛应用于目标检测和图像分类。许多主流目标检测模型及其改进算法被提出,并应用于飞机蒙皮损伤检测任务,例如SSD、Faster R–CNN、YOLO系列算法等[3–7]。

陈从翰[8]把YOLOv3引入飞机蒙皮表面损伤检测,通过与Faster R–CNN对比,发现YOLOv3检测更加迅速,但是精度低于Faster R–CNN。李慧[9]通过收集与人工标注制作了飞机蒙皮损伤图像数据集,并搭建了Faster R–CNN、YOLO和SSD目标检测模型,主要解决飞机蒙皮损伤数据集样本不均衡、检测目标的形状不规则而难以分类和定位的问题,最后将损失函数替换成焦点损失函数(Focal loss),借鉴倾斜预测框机制并做出调整,以改善检测结果。农昌瑞等[10]将YOLOv4改进算法应用于飞机蒙皮损伤检测,主要解决YOLOv4对小目标难识别、原有先验框尺寸与真实框不匹配,以及正负样本不能自动划分等问题。王童等[11]提出基于BBAVectors改进的旋转目标检测方法,主要解决其制作的飞机蒙皮损伤数据集存在大量背景噪声和蒙皮损伤分布方向任意等问题。但是,以上这些工作都没有关注到飞机蒙皮损伤数据集背景单一的特点,并且所用的目标检测模型存在检测速度慢、参数量大、检测精度低等缺点。

相较于COCO等背景复杂的数据集,飞机蒙皮损伤数据集存在背景单一的特点,图像中其他部分对目标的干扰较小。在物体检测过程中,图像通道表征的是目标物体不同维度的信息,通道数越多描述目标物体的维度越多,即有更多的信息去描述目标与图片中其他部分之间的联系。这种多维的目标信息描述,对于飞机蒙皮损伤数据集等图片背景单一的数据集是冗余的。在相同体量下,YOLOv7模型的检测精度和检测速度均超过之前所有的检测器,因此可选用YOLOv7作为基础的检测模型。

本文针对飞机蒙皮数据集图片背景单一的特点,提出增强型颈部特征融合改进算法;针对主干特征提取过程中卷积通道冗余的情况,提出主干特征提取网络轻量化改进,即将P–PWConv模块融入YOLOv7主干特征提取网络[12],在显著降低模型计算量的同时,减少频繁的内存访问,有效提高了模型的特征提取能力。

1 YOLOv7模型及YOLOv7通道冗余改进

1.1 YOLOv7目标检测模型

因具有其较高的精度和较快的速度[7],YOLOv7目标检测模型被广泛应用于系统的实时检测。根据发布代码的运行设备不同 (边缘GPU、普通GPU和云端GPU),相应设置3种基础模型,即YOLOv7–tiny、YOLOv7和YOLOv7–W6。本文选择YOLOv7作为飞机蒙皮损伤检测的基础模型,其模型结构如图1所示。

图1 YOLOv7目标检测模型框架Fig.1 Framework of YOLOv7 object detection model

YOLOv7包括输入部分(Input)、主干部分 (Backbone)、颈部 (Neck)和头部 (Head)模块。首先,图片经过数据增强等操作进行预处理,被送入主干部分;接着主干特征提取网络对输入的图片数据进行特征提取;随后提取到的特征经过颈部进行特征融合,得到包含不同尺度信息的3个特征层;最后将这3种不同尺度的特征送入检测头进行检测,得到预测结果。

主干部分主要由E–ELAN(Extended–ELAN)模块、MPConv(Maxpooling Conv)模块和SPPCSPC模块构成,激活函数是Silu。E–ELAN模块以ELAN为基础,不改变原来的过渡层结构,保留了原来的梯度,以此增强网络的学习能力。在主干网络部分第24、37层和50层,分别输出8倍、16倍、32倍的下采样,输出3个不同大小的特征信息;颈部采用Concat融合方式,采用邻近插值的上采样方式;Head部分包含重参数化结构REP[13],会输出3个不同的预测结果,方便后面的算法部署。

1.2 YOLOv7通道冗余的改进

本研究提出YOLOv7通道冗余改进算法,以降低飞机蒙皮损伤检测应用场景下的模型计算复杂度,并提高检测精度。改进部分主要包括增强型颈部特征融合改进算法和Backbone轻量化两部分,YOLOv7改进的框架如图2所示。改进部分见图2中红色虚线框,首先在Backbone部分使用P–PWConv替换部分E–ELAN模块中卷积核为3的常规卷积,其次在颈部应用增强型颈部特征融合算法。

图2 改进之后的YOLOv7目标检测算法框架图Fig.2 Improved framework of YOLOv7 object detection algorithm

1.2.1 增强型颈部特征融合改进算法

Add和Concat是常用的特征融合操作[14–19],两者都可以整合特征层的信息,但是Add操作比Concat更加节省计算量,其简易过程如图3所示。

图3 特征层融合操作Add和Concat原理对比图Fig.3 Schematic comparison diagram of feature layer fusion operation for Add and Concat

Add特征融合方式是将特征层对应像素的值进行相加,丰富了描述图像自身特征的信息,但是不改变描述图像的维度信息;而Concat特征融合方式是将图像特征层在通道维度进行堆叠,这种方式不易造成信息丢失,但是对于背景单一的数据应用场景会存在信息冗余。另外,Add特征融合方式的计算量比Concat操作少,假设有两路通道数相同的输入,并且特征融合操作后都带有卷积,则Add操作相当于Concat操作后的对应通道共享一个卷积核。

对飞机蒙皮损伤等单一背景数据集的特征层进行逐像素相加,可以增加通道的信息量,使模型进一步聚焦前景目标,降低模型的参数量。因此针对飞机蒙皮损伤等背景单一数据集,提出增强型颈部特征融合改进算法,即将YOLOv7模型中颈部的PANet结构中Concat图像特征融合方式换成Add方式[20]。颈部其他模块按照原来各特征层输出形状进行适当调整,改进后的模型框架如图4所示。由于Add操作不会改变特征层的通道数,仅将Concat换成Add之后,会破坏YOLOv7原来的颈部结构,经过不断试验将YOLOv7原有的ELAN–W结构换成YOLOv7中最基本的CBS结构,并且适当调整各个特征层输出的形状。

图4 基础颈部框架与增强型颈部特征融合改进算法原理图Fig.4 Basic neck frame and framework of improved algorithm for enhanced neck feature fusion

为了进一步说明增强型颈部特征融合改进算法在单一背景的数据集具有良好的应用优势,增加该改进点的可解释性,本文在飞机蒙皮损伤数据集上,使用Grad–CAM算法对仅使用增强型颈部特征融合改进算法的模型,进行特征层可视化。可视化位置如图4中的位置1~4。Grad–CAM特征层可视化如图5所示,其中的线框标注为掉漆损伤,可以看出,改进之后的模型在目标区域的颜色更深,即在目标部分的权重值更大,其他部分的权重值较小,即仅使用增强型颈部特征融合改进算法更关注目标物体区域内的像素。同时相比于Concat操作,Add使模型描述目标物体的通道数更少,同时增加了对应通道内目标的权重。在模型检测过程中,过多的目标信息描述对于飞机蒙皮损伤数据集等图片背景单一的数据集是冗余的。因此在YOLOv7模型颈部特征融合时,Add特征融合方式更加适用,验证了增强型颈部特征融合改进算法的有效性。

图5 飞机蒙皮损伤数据集改进前后Grad–CAM特征层可视化对比Fig.5 Visualization and comparison of Grad–CAM feature layers before and after improvement of model for aircraft skin damage dataset

1.2.2 Backbone轻量化

由于在特征提取网络的卷积运算过程中,不同通道的特征层具有很高的相似性。部分卷积PConv利用了特征图中的通道冗余[21–23],仅在一部分输入通道上应用常规卷积,同时不影响其他通道的信息传递。因此PConv可以在降低FLOPs(Floating point of operations)的情况下,保持高FLOPS(Floating-point operations per second)[12]。

为了充分有效地利用所有通道的信息,在部分卷积PConv模块后附加一个逐点卷积PWConv,将它们组合成P–PWConv,作为一个独立的模块融入YOLOv7主干特征提取网络的E–ELAN。改进之后的主干特征提取网络如图6所示。

图6 Backbone轻量化结构图Fig.6 Diagram of backbone lightweight structure

由于PConv的卷积核大小是3×3,步长为1,因此把部分E–ELAN结构中有相同大小卷积核和步长的常规卷积,替换成P–PWConv,并将PConv中的部分卷积通道比例设置成4。为了不牺牲检测精度,尽可能地减少模型的参数量,同时考虑到主干特征提取网络的浅层部分通道数较少不适合使用P–PWConv,通过不断试验,最终确定将P–PWConv应用在深层的特征提取网络中,即应用于主干特征提取网络后3个E–ELAN模块。

2 数据集与评价指标

2.1 试验环境与参数设置

该项目所使用的是双卡GPU,单卡配置是NVIDIA RTX3090涡轮版,具有24 GB显存和10496个CUDA核心,CPU使用的是Intel(R) Xeon(R)W–3245,3.2 GHz主频,128 GB内存。操作系统是Ubuntu20.04,Pytorch1.8.0,Python3.7版和CUDA11.1版。试验过程使用的超参数见表1。

表1 试验超参数Table 1 Experimental hyperparameters

2.2 飞机蒙皮损伤数据集

飞机蒙皮损伤数据集包含了5类常见的蒙皮损伤,为腐蚀损伤(Rust)、铆钉损伤 (Rivet_damage)、划痕 (Scratch)、变形损伤 (Deform)和掉漆损伤 (Paint_peel),共2401张图片。数据集所有图片都是在中国民航大学停机坪上拍摄的,要求手持设备离飞机蒙皮表面约1 m进行拍摄,同时进行多尺度和多角度拍摄,即对于同一个损伤会采集不同角度和尺度的图片,约5张。把数据集以训练集:验证集为9∶1的比例进行划分。实物照片如图7所示。

图7 飞机蒙皮损伤数据集损伤类别实物图Fig.7 Physical map of damage categories for aircraft skin damage dataset

2.3 评价指标

用于目标检测的常用度量指标是交并比 (Intersection over union)、准确率 (Precision)、召回率 (Recall)、平均精度AP (Average-precision),以及更加重要的mAP(Mean average precision)、FPS(Frames per second)、模型参数量等。IOU用于度量目标预测框和目标真实框之间的重叠程度,计算方法是检测结果与目标真实值之间的交集和并集比率,计算公式为

在试验时,通常会设置一个阈值。当IOU值大于该设置的阈值时,预测结果会被认为是真阳性 (TP),表示目标识别是准确的;当IOU值小于该设置阈值时,预测结果会被认为是假阳性 (FP),即表示错误的识别;没有检测到的目标的数量,被称为假阴性 (FN),即没有对应匹配检测结果的真实目标数量。

准确率也叫查准率,定义为在图像的目标检测中真阳性的比例,计算公式为

召回率也叫查全率,是在所有测试集样本中所有阳性样本识别正确的比例,计算公式为

准确率反映了模型区分阴性样本的能力。精度越高,模型区分阴性样本的能力越强。召回率表示目标检测算法准确找回阳性样本的能力。召回率越高,模型识别阳性样本的能力越强。

平均精度表示在每个召回条件下最高精度的平均值,计算公式为

在目标检测中,模型通常检测许多类别的目标,每个类别都可以计算一个AP值。mAP由所有类别的AP求均值得来,计算公式为

式中,n为模型预测类别数量。

除了检测准确度,模型检测速度和模型参数量也是目标检测算法非常重要的评估指标。FPS值越大,模型检测速度越快。浮点运算次数FLOPs用来衡量模型的算法复杂度。

3 试验与结果分析

3.1 基于不同增强型颈部特征融合改进策略的飞机蒙皮损伤数据集验证试验

相比于特征层Concat操作,Add操作可以丰富特征层的信息,同时减少通道数。直接将YOLOv7颈部特征金字塔Concat特征融合方式替换成Add,会破坏YOLOv7原有ELAN–W结构的输入输出通道数。为了探究更适合的模型改进策略,在飞机蒙皮损伤数据集上,对增强型颈部特征融合改进算法的各个改进策略进行测试。各模型改进结构如图8所示。具体改进办法是将Concat操作替换为Add,并且适当调整YOLOv7颈部其他模块结构,且各组试验的参数设置完全相同。

图8 增强型颈部特征融合改进算法对比图Fig.8 Comparison chart of improved algorithm for enhanced neck feature fusion

图8中“改进Ⅰ”将颈部特征融合部分的Concat操作替换成Add,改变了ELAN–W模块的输出通道数比例,其他部分未变;“改进Ⅱ”在“改进Ⅰ”的基础上,将第1个上采样后的ELAN–W舍弃,将后续的ELAN–W替换成CBS模块,其卷积核大小是3×3,步长为1;“改进Ⅲ”仅仅改变特征融合金字塔的特征融合方式,不改变颈部其他结构的输入输出通道数比例。不同模型对比试验结果见表2,组别1~4分别对应图8(a)~(d);第2组破坏了颈部ELAN–W模块的输入输出通道数比例,取得mAP0.5分数负增长,参数量增加了1.8%;第3组取得的mAP0.5分数提高了1.9%,参数量减少了20.49%;第4组mAP0.5分数提高了0.6%,参数量减少了34.67%;综上所述,选择第3组改进模型作为增强型颈部特征融合改进算法。Parameters表示模型的参数量,试验结果均是在输入图像大小为640×640像素下计算得到。FLOPs只和模型有关,衡量模型/算法复杂度,表示模型的计算量大小。

表2 不同增强型颈部特征融合改进算法在飞机蒙皮损伤数据集上的试验结果Table 2 Experimental results of various improved algorithms for enhanced neck feature fusion on aircraft skin damage datasets

3.2 YOLOv7通道冗余改进算法消融试验

为了验证本文所提出的各项改进的有效性,在飞机蒙皮损伤数据集上进行了3组消融试验。消融试验结果如表3所示。可以看出,第1组试验是YOLOv7基准模型,其在飞机蒙皮损伤数据集上的检测精度是61.7%,模型FPS值是125 f/s;第2组试验应用了增强型颈部特征融合改进算法,参数量减少了20.49%,模型检测速度增加了13.9 f/s,检测精度提升了1.9%;第3组试验在原始模型上增加了Backbone轻量化,参数量减少了13.64%,FPS增加了6.6 f/s;第4组试验是最终改进后的YOLOv7模型,参数量减少了34.13%,模型检测精度提升了2.3%,检测速度增加了22.1 f/s。

表3 不同方法在飞机蒙皮损伤数据集上的消融试验结果Table 3 Results of ablation experiments with different methods for aircraft skin damage dataset

3.3 不同检测器对比试验

为了验证YOLOv7通道冗余改进算法的先进性,在飞机蒙皮损伤数据集上比较了现有的主流目标检测模型。为了公平起见,试验采用相同的训练和测试方案。试验结果如表4所示,相比于YOLOv5(L)模型,改进之后的YOLOv7模型mAP提高了3.6%,检测速度提高了124.93 f/s;相比于YOLOv7–e6模型,改进后的模型mAP提高了0.1%,FPS提高了47.1 f/s。由此可见改进之后的YOLOv7模型具有更好的性能。

表4 不同检测器试验对比Table 4 Comparative experiments with different detectors

4 结论

本文针对飞机蒙皮损伤数据集等单一背景的特点,以及主干特征提取网络中卷积运算通道冗余的问题,对YOLOv7目标检测模型进行了改进,使模型适用于飞机蒙皮损伤检测等应用场景。

(1)提出增强型颈部特征融合改进算法,提高背景单一数据集的损伤识别精度和检测速度。

(2)针对卷积运算通道冗余的问题,引入P–PWConv模块,提出Backbone轻量化,以进一步减少模型的参数量,提高损伤的识别效率。

(3)设计了基于不同增强型颈部特征融合改进策略的飞机蒙皮损伤数据集验证试验、YOLOv7通道冗余改进算法消融试验及不同检测器对比试验,验证了改进后的YOLOv7在飞机蒙皮损伤数据集上的性能优于原YOLOv7模型。

未来将会针对现有的飞机蒙皮损伤数据集存在的长尾问题和过多的模型参数量进行改进,并将改进的算法应用到实际工作任务中。

猜你喜欢
蒙皮颈部卷积
一种适用于变弯度机翼后缘的蒙皮设计方法
不同材质客车顶蒙皮与前后围蒙皮接缝处理方案
居家运动——颈部练习(初级篇)
居家运动——颈部练习(中级篇)
改良颈部重要外敷方法
基于3D-Winograd的快速卷积算法设计及FPGA实现
运载火箭框桁蒙皮结构铆接壳段多余物分析与控制
从滤波器理解卷积
飞机蒙皮上的幽默
基于傅里叶域卷积表示的目标跟踪算法