APP下载

基于改进YOLOv7 的液压阀块表面微小缺陷检测

2023-11-18季娟娟陈亚杰卢道华

计算机工程 2023年11期
关键词:液压阀注意力卷积

季娟娟,王 佳,陈亚杰,卢道华,3

(1.江苏科技大学 机械工程学院,江苏 镇江 212100;2.中国船舶重工集团公司 上海船舶设备研究所,上海 200031;3.江苏科技大学 海洋装备研究院,江苏 镇江 212003)

0 概述

液压系统由于具有输出力大、传动可靠、可控性高、使用寿命长等优点[1],已被广泛应用于汽车[2-3]、机器人[4-5]、航空航天[6]、工程机械[7-9]等领域。液压阀块是液压系统中的关键零部件,通过控制压力油在管路中的流动来实现机械动作,在其生产过程中,铣、刨等粗加工操作都会造成液压阀块表面出现划痕、凹坑等缺陷,这些缺陷容易使液压阀块出现渗漏的情况,甚至会影响到机械的行驶安全。为了提前筛选出表面有缺陷的液压阀块,提高产品的合格率,研究液压阀块表面微小缺陷检测方法具有重要意义。

目前,许多研究人员采用传统的机器视觉技术进行表面缺陷检测。文献[10]设计一种基于形态学的边缘检测方法,通过使用Otsu 阈值算法对轴承外圈表面缺陷进行分割,可实现完整的缺陷边缘提取。文献[11]使用改进的霍夫变换与新的区域划分法,针对纹理区域与非纹理区域自动分配不同的缺陷检测方法,对铝型材料表面缺陷进行检测。然而,当工件表面缺陷类别多、背景复杂、各类缺陷表征形式不同、尺寸差异大时,缺陷特征很难量化,无法设定固定的规则来捕捉所有的有效特征,此时传统的机器视觉技术识别精度会大幅下降。

与人工检测的主观性和机器视觉检测的局限性不同,基于深度学习的缺陷检测具有精度高、性能好、泛化程度高等优点,其可通过神经网络自主地发现需要提取哪些特征更能适应复杂的检测背景。因此,近年来,基于深度学习的表面缺陷检测方法得到了广泛研究,并逐步应用在产品缺陷检测领域。YOLO(You Only Look Once)[12-14]系列算法是典型的单阶段目标检测算法,与Faster R-CNN[15]、SSD[16]等目标检测算法相比,其检测速度更快,应用范围更广。为了适应不同的应用场景,提高不同对象的检测精度,研究人员陆续提出了各种基于YOLO 系列算法的改进缺陷检测方法。文献[17]提出一种基于特征增强YOLO 的表面缺陷检测算法,通过改进的特征金字塔网络来增强多尺度检测层的空间位置相关性,结合深度可分离卷积和密集连接来降低YOLO模型规模。文献[18]针对复杂的太阳能电池图像背景、可变的缺陷形态,提出一种基于改进YOLOv5 的太阳能电池表面缺陷检测方法,将可变形卷积加入CSP 模块中,引入ECA-Net[19]注意力机制,再增加一个小缺陷预测头,从而有效完成太阳能电池表面缺陷检测任务。

然而,本文所研究的液压阀块表面缺陷尺寸非常 小,以往的YOLOv3、YOLOv4、YOLOv5 算法对小目标检测效果较差,目前只有最新的YOLOv7[20]算法在小目标检测中有较好的性能表现。除此之外,液压阀块表面的划痕与刀纹形状非常类似,当划痕与边缘的对比度较低时,容易出现误检、漏检的情况。因此,针对液压阀块表面缺陷的不同特征,本文提出一种基于改进YOLOv7 的液压阀块表面微小缺陷检测算法,主要改进有以下4 个方面:1)在多尺度特征融合模块后引入CA[21]注意力机制,在增加较少参数的前提下增强对微小缺陷的特征提取能力;2)将多尺度特征融合模块中的UpSampling 替换为改进的UpC 多支路上采样结构,通过UpSampling 与反卷积的并行上采样,在增大特征尺寸的同时丰富微小缺陷的特征信息;3)采用改进 的ELAN(Efficient Layer Aggregation Network)-RepConv 结构代替多尺度特征融合模块中的ELAN_2 结构,使算法在训练时能提取到更多的特征信息且不影响推理速度;4)采用K-means++[22]算法对数据集进行聚类,聚类生成的锚框更符合本文所研究的液压阀块表面微小缺陷的尺寸特征,从而加快模型的收敛速度并提高微小缺陷的检测精度。最后通过多个对比实验与消融实验来验证本文算法的有效性。

1 YOLOv7 算法

YOLOv7 有YOLOv7、YOLOv7-X、YOLOv7-W6、YOLOv7-E6、YOLOv7-D6、YOLOv7-E6E 这6 种 变体。其中,YOLOv7 的参数量最少,检测速度最快,能够满足用户对高实时性检测的需求。因此,本文选取YOLOv7 作为基础算法进行改进。YOLOv7 的网络结构如图1 所示。由图1 可知,YOLOv7 的网络结构由Input、Backbone、Head 这3 个部分组成。将待检测对象输入Backbone 中,Backbone 部分在经过4 个CBS(Conv+BN+SiLU)操作后,使用连续的ELAN 结构与DownC 结构完成特征提取与尺寸缩放;在Backbone 部分的最后一个特征层后使用SPPCSPC 结构,增大感受野并优化特征的提取;将SPPCSPC 结构得到的特征层拼接成一个新的特征层,并和从Backbone 部分提取到的2 个特征层一起传入多尺度特征融合模块;在多尺度地融合语义信息和空间信息后,输出3 个不同尺度的目标特征层;将得到的3 个特征层分别通过RepConv 结构进行辅助训练;通过YOLO Head 中的卷积调整通道数以得到初步的预测结果;对初步的预测结果进行置信度过滤、NMS(Non-Maximum Suppression)等后处理操作,得到最终的输出结果。

图1 YOLOv7 网络结构Fig.1 YOLOv7 network structure

2 改进的YOLOv7 算法

YOLOv7 相较于YOLOv4、YOLOv3 等其他一阶段目标检测算法,对小目标具有更好的检测效果,但是,其在目标物都很微小的情况下并不能得到理想的检测结果。因此,针对液压阀块表面缺陷尺寸微小、对比度低等特点,本文对YOLOv7 进行改进,改进的YOLOv7 算法网络结构如图2 所示。

图2 改进的YOLOv7 网络结构Fig.2 Improved YOLOv7 network structure

2.1 CA 注意力机制

液压阀块的表面缺陷尺寸小,在整个图像中占有较少的信息量,背景复杂且存在过多干扰信息。为了提高小目标检测的准确性和减少无关信息的干扰,本文采用注意力机制自适应地聚焦与小目标有关的细节信息,降低对其他信息的关注度。不同于SE(Squeeze-and-Excitation)[23]通道注意力机制只考虑内部通道信息、CBAM(Convolutional Block Attention Module)[24]只考虑局部空间位置范围内的信息,CA 注意力机制在增加较少计算量的前提下,既考虑到不同通道之间关系的重要性,同时又考虑到空间位置间的长期依赖关系。因此,本文在多尺度特征融合模块后添加3 个CA 注意力机制来提高模型的检测精度。CA 注意力机制结构如图3 所示。为了获取图像宽度和高度上的注意力并对精确位置信息进行编码,CA 注意力机制首先将传进的输入特征使用全局平均池化沿水平方向与垂直方向进行特征编码,获得在宽度和高度2 个方向上的特征图;接着将宽度方向特征图的输出维数调换后与高度方向特征图进行拼接,拼接后使用1×1 的卷积将得到的中间特征图通道数压缩为C/r(r为缩减因子);随后使用BN(Batch Normalization)批量归一化与非线性操作对特征图进行特征映射,映射后使用1×1 卷积沿着空间维度将特征图分解成2 个独立的张量,其中,宽度方向特征图的输出维数恢复至输入状态;然后利用 Sigmoid 激活函数分别得到2 个方向上的注意力权重;最后在原始特征图上通过乘法加权计算,得到在宽度和高度方向上带有注意力权重的特征图。

图3 CA 注意力机制结构Fig.3 CA attention mechanism structure

2.2 改进的UpC 多支路上采样结构

YOLOv7 使用DownC 结构代替原有的stride 为2 的卷积对特征层进行尺寸减半操作。DownC 结构使 用MaxPooling 和stride 为2 的3×3 卷积对 特征层进行同步下采样。MaxPooling 考虑到局部区域的最大值信息,卷积操作考虑到局部区域中所有值的信息,因此,结合两者的特性做同步下采样并对结果进行特征拼接,可以有效避免特征信息丢失。

参考DownC 结构,本文提出改进的UpC 多支路上采样结构,如图4 所示。

图4 改进的UpC 多支路上采样结构Fig.4 Improved UpC multi-branch upsampling structure

2 条支路一开始都使用1×1 卷积进行通道压缩,减少计算量;然后分别使用UpSampling 与ConvTranspose2d 对特征图进行上采样;最后在通道上进行特征图拼接。其中:UpSampling 通过邻近点的值进行插值上采样,没有参数可以学习;ConvTranspose2d 为卷积的逆过程,在训练过程中会自动学习最优参数进行上采样。因此,通过上述2 种方式的结合可以提取到更多的特征信息。反卷积计算公式如下:

其中:sstride为卷积步长;kkernel为卷积核大小;ppadding为边界填充;sin_size为输入尺寸;sout_size为输出尺寸。

反卷积的具体步骤如下:

步骤1在输入对象的每个元素后根据sstride-1做补0 扩充操作,若sstride为1 就不补0。

步骤2在步骤1 的基础上按照ppadding再对整体补0。

步骤3将步骤2 所得的结果作为真正的输入,并使用sstride为1 的卷积对其进行计算,获得反卷积后的输出结果。

2.3 改进的ELAN-RepConv 结构

ELAN 结构共有2 条分支,通过2 条分支的多个特征融合,使网络能够学习到更多的特征信息。第1 条分支先使用一个1×1 卷积做通道数调整,接着使用多个3×3 卷积做特征提取;第2 条分支使用1×1卷积减少计算量。在2 条分支的特征提取结束后,从第1 条分支引出多个特征图,与第2 条分支的特征图拼接在一起得到最后的特征图。

本文提出的改进ELAN-RepConv 结构是将多尺度特征融合模块中的ELAN_2 结构中的部分3×3 卷积替换成RepConv 结构。RepConv 结构可以在训练时通过多分支的特征提取学习到更多特征;在推理时可通过结构重参化将其转换成卷积核为3×3 的Conv+BN+SiLU+BN 单路结构,此时,ELAN-RepConv结构与原来的ELAN_2 结构基本一致。因此,改进的ELAN-RepConv 结构能够在不增加过多计算量的前提下进一步提升模型的特征学习能力。改进的ELAN-RepConv 结构如 图5 所 示。

图5 改进的ELAN-RepConv 结构Fig.5 Improved ELAN-RepConv structure

2.4 K-means++锚框聚类

YOLOv7 使用的 先验框 尺寸是通过K-means[25]算法在MS COCO 数据集上聚类而得到的。MS COCO数据集大约包含41%的小目标(area<32×32),其余都是中等目标与大目标。而液压阀块的表面缺陷基本都为微小缺陷,面积约占整个图像的0.05%,没有大目标的存在,原先设定的先验框不符合本文研究对象的尺寸特性。因此,需要采用聚类算法针对本文所研究的数据集重新生成更利于模型收敛的先验框尺寸。聚类算法中最常用的是K-means 算法和K-means++算法,聚类中心初始值设定的好坏对聚类结果有着一定的影响。K-means 算法随机选取数据集中的K个点作为初始聚类中心,其聚类中心的随机初始化可能使聚类结果陷入局部最优状态[26],从而产生错误的收敛结果。而K-means++算法的聚类中心是在选择过程中自动调优的,在K-means 算法的基础上解决了聚类中心的初始化问题,可以有效地避免局部最优问题。因此,本文采用K-means++算法对数据集进行聚类,聚类结果如图6 所示(彩色效果见《计算机工程》官网HTML 版)。

3 实验结果与分析

3.1 实验数据

本文所研究的液压阀块图像是从工厂实际生产线上所采集到的,共有325 张,图像大小为2 464×2 056,含有凹坑(pit)缺陷的图片有226 张,含有划痕(scratch)缺陷的图片有99 张。为了避免过拟合并提高网络的鲁棒性,降低各方面外界因素对检测结果的影响,本文结合离线数据增强与Mosaic 数据增强操作对数据集进行扩充。

考虑到工场实际生产环境中可能会出现光照不均、对比度变化等情况,为了贴合真实场景可能出现的问题,随机融合上下翻转、亮度调节、高斯平滑、对比度调整、添加高斯噪声这5 种数据增强操作将原有的数据集扩充到1 950 张。其中,含有凹坑缺陷的图片有1 356 张,含有划痕缺陷的图片有594 张。扩充完毕后使用LabelImg 图像标注工具对数据集进行标注,手动框选出图像中缺陷的具体位置并标注出对应的类别,标注结束后,缺陷的位置与类别信息会自动地保存在相应的PASCAL VOC 格式的xml 文件中。根据缺陷类别将数据集按照8∶2 的比例随机分为1 560 张图像(训练集)和390 张图像(测试集)。

3.2 评价指标

本次实验主要研究的是工业生产环境下的表面缺陷,既要满足实时性又要获得较好的检测性能,因此,采用检测速度FPS(Frames Per Second)与平均精度均值(mean Average Precision,mAP)作为评价指标来比较各算法。FPS 是每秒可检测完的图片数量,mAP 是各类缺陷检测精度的平均值。mAP 的计算公式如式(2)所示:

其中:n为缺陷类别数;AAP为每类缺陷的平均精度值,可由P-R 曲线下的阴影面积获得。

3.3 实验结果

本次实验是在ubuntu20.04 操作系统下基于PyTorch 深度学习框架实现的,GPU 选用显存大小为24 GB 的NVIDIA GeForce RTX 3090,CPU 配置是8 核 的AMD EPYC 7601,CUDNN 版本为11.1,PyTorch 版本是1.8.0,Python 语言环境是3.8.10。

实验的超参数配置如下:在模型训练阶段,参数调整使用SGD 优化器,初始学习率设为0.01,动量为0.937,使用warm up 学习率衰减,权重衰减系数设置为0.000 5。此外,批量大小设置为1,总共训练150 个轮数。本文算法检测得到的P-R 曲线如图7 所示。

P-R 曲线的横轴为召回率,纵轴为精确率。由图7 可知,各类P-R 曲线下的面积都很大,AP 值较高,即模型的检测性能较好。其中,pit 缺陷的平均精度值达到0.986,scratch 缺陷的平均精度值达到0.966。

3.4 对比分析与消融实验

3.4.1 聚类算法对比

本节通过聚类算法的对比实验,验证使用K-means++聚类算法生成的先验框对液压阀块表面微小缺陷检测的有效性。

在相同训练参数的前提下,将K-means、K-means++算法在实验数据集上聚类生成的先验框分别应用在原YOLOv7 算法上,对比结果如表1 所示。

表1 2 种先验框的平均精度值Table 1 Average precision values of two kinds of prior boxes %

从表1 可知,使用K-means++聚类算法聚类生成的先验框应用在原YOLOv7 上时平均精度值比K-means 聚类算法高3.5 个百分点,K-means++聚类可提高边框回归位置预测的精确度。

3.4.2 注意力机制对比

在多尺度特征融合模块后引入CBAM、SE 以及CA 这3 种不同的注意力机制,在K-means++算法的基础上对网络进行训练,记录得到的平均精度值,对比结果如表2 所示。

表2 引入不同注意力机制的平均精度值Table 2 Average precision values of introducing different attention mechanisms %

从表2 可以看出,引入SE 以及CA 注意力机制都可以提高平均精度值,但引入CBAM 注意力机制后平均精度值反而降低。引入CA 注意力机制后平均精度值相较于CBAM 与SE 分别提高2.6 与0.8 个百分点。综上所述,引入CA 注意力机制对提高小目标检测精度具有有效性。

3.4.3 YOLOv7 算法与本文算法的对比

从数据集中分别抽出4 张图片进行对比,标注出真实框的4 张原图如图8 所示。使用YOLOv7 与本文算法对这4 张图片进行检测,将检测到的缺陷部分截取出来进行对比,结果如图9 所示。由图9 可知,YOLOv7 算法相对于本文算法更容易出现漏检的情况,且部分缺陷无法被识别或者识别出的置信度值较低,而本文算法能够尽可能准确地检测出图上存在的微小缺陷。

图8 标注出真实框的原图Fig.8 Original drawing marked with real frame

图9 2 种算法的检测结果对比Fig.9 Comparison of detection results of two algorithms

3.4.4 不同算法的对比

选择本文改进的YOLOv7 算法与Faster R-CNN、YOLOv4、MobileNetv3-YOLOv4、YOLOv5-X、YOLOv7、YOLOv7-W6、YOLOv7-E6E 这7 种检测算法进行对比实验,将测试时的参数量、精确率、召回率、pit 精度值、scratch 精度值、平均精度值以及检测速度作为评估指标,对比结果如表3 所示。由表3 可知,改进后的YOLOv7 算法在所有算法中检测精 度最高,比 Faster R-CNN、YOLOv4、YOLOv5-X 以 及MobileNetv3-YOLOv4 这4 种算法的平均精度值至少高出45 个百分点,可见这4 种算法对本文数据集中的微小缺陷检测能力非常差,漏检率高。虽然YOLOv7-W6 与YOLOv7-E6E的检测精度相较于原YOLOv7 算法高,但是参数量非常大,导致检测速度很低,不符合实际工业应用场景的要求。本文算法检测速度高于YOLOv7-W6 与YOLOv7-E6E,平均精度值比两者分别高出4.9 和1.8 个百分点。综上所述,本文算法能够在保证高实时性的前提下准确检测液压阀块表面的微小缺陷。

表3 不同算法的结果对比Table 3 Comparison of results of different algorithms

3.4.5 消融实验

在使用相同训练参数的前提下,对改进模块进行消融实验。逐步加入K-means++锚框聚类算法、CA 注意力机制、改进的UpC 多支路上采样结构与改进的ELAN-RepConv 结构,通过多个评价指标验证每一步改进方法对检测精度提升的有效性。消融实验结果如表4 所示。由表4 可知,通过添加K-means++聚类算法,平均精度值提高3.5 个百分点,引入CA 注意力机制后又提高1.4 个百分点,添加UpC 多分支上采样结构,平均精度值进一步提高,最后使用ELAN-RepConv 结构将平均精度值提高到97.6%。可知,与原始YOLOv7 算法相比,改进算法使液压阀块表面缺陷检测的平均精度值提高了8.4 个百分点。

表4 消融实验结果Table 4 Results of ablation experiment

4 结束语

本文针对液压阀块表面缺陷尺寸微小、背景复杂、对比度低的特点,提出一种基于改进YOLOv7 的液压阀块表面微小缺陷检测算法。通过引入CA 注意力机制,同时使用改进的UpC 多支路上采样结构与改进的ELAN-RepConv 结构,提高对微小缺陷的特征提取能力并减少特征信息丢失。同时,为了增强本文算法的鲁棒性,采用离线数据增强融合Mosaic 数据增强以及K-means++锚框聚类算法来提高算法的性能。多个对比实验和消融实验结果表明,改进的YOLOv7 目标检测算法平均精度值达到97.6%,比原YOLOv7 算法提高8.4 个百分点,检测速度达到55.2 frame/s,符合实际生产需求。下一步将在模型的主干特征提取部分采用Transformer 网络对算法结构进行改进,在提高检测速度的前提下进一步提升液压阀块表面微小缺陷检测精度。

猜你喜欢

液压阀注意力卷积
液压阀块数控加工工艺的研究
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
关于液压阀块的设计及制造过程质量控制分析
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
液压阀的设计、应用及其维护
徐工液压阀产品首次实现外部市场销售