基于改进YOLOv7-Tiny 的工业缺陷检测研究
2023-02-28刘凌峰陈洪刚卿粼波孙承行
刘凌峰,陈洪刚,卿粼波,孙承行
(1 四川大学电子信息学院,成都 610065; 2 四川省隆鑫科技包装有限公司,四川 遂宁 629200)
0 引 言
随着工业4.0 的到来以及中国制造2025 的提出,国家大力支持工业的发展。 钢材作为一种经济高效的工业材料在各个领域得到广泛应用,如建筑、化工、船舶、冶金、航空航天等行业。 拥有高质量的钢材对我国工业的发展至关重要。 在钢材的生产过程中,由于生产原材料、生产工艺和外部环境等不可控因素的影响,钢表面可能会出现各种不同类型的缺陷[1]。 因此,对钢材缺陷进行高效的检测具有极其重要的意义。
基于传统机器视觉的目标检测算法使用滑动窗口的方法来获取候选区域的HOG 特征[2]和SIFT 特征[3],并利用SVM 分类器[4]进行目标分类。 这种检测方法主要适用于待测目标特征明显、背景简单的场景,并且在检测精度以及速度上存在一定的局限。在钢材缺陷图像中,背景与目标的区分度较低且缺陷目标类型复杂多变,使用传统的抽象特征很难完成对缺陷的准确检出。
目前,基于深度学习的目标检测算法根据其是否采用多阶段的处理,主要分为2 类:Two-Stage[5]和One-Stage[6]。 Two-stage 典型算法代表为Faster R-CNN[7]和Mask R-CNN[8],其使用区域建议网络生成候选框,而后进行分类和回归;One-Stage 算法典型代表为SSD[9]、RetinaNet[10]、EfficientDet[11]、YOLO 系列等,是利用处理回归问题的方法来有效解决目标边框定位的问题,因此不需要事先产生候选框。 在Two-Stage 目标检测算法领域,LUO 等学者[12]基于CNN 构建了一种解耦的两阶段的工业目标检测网络,并在缺陷定位任务中提出了多级聚合块作为定位特征增强模块,用于PCB 板的缺陷检测。 Shi X 等学者[13]将ConvNeXt 架构作为特征提取主干,提出了一种基于Faster R-CNN 的改进网络用于钢表面缺陷检测。 在One-Stage 目标检测算法领域,KOU 等学者[14]基于YOLOv3 进行改进,使用无锚框(Anchor-free)的方式缩短了模型的计算时间,设计密集卷积块(Dense block)用于提取更丰富的特征信息,从而提升模型的准确率与鲁棒性。Yang 等学者[15]首先将钢材缺陷图像经过同态滤波预处理,然后将图片送入融合了注意力机制的改进YOLOv5 算法中进行检测,达到了更高的检测精度。
YOLO 系列作为One-Stage 算法典型的代表网络,不仅在速度上优势明显,而且模型体积小,同时维持较高的识别精度。 在2023年,Wang 等学者提出了YOLOv7 算法,相比于领域内其他算法,YOLOv7 在目标识别和定位方面具有更高的准确性和更快的速度。 但是YOLOv7 网络使用了大量EELAN 模块,导致模型的参数量和复杂度大大增加,同时钢材表面缺陷通常是小目标,在图像中所占的像素点很少,且变形类型多样、缺陷类型多样,很容易被忽略或误判,导致漏检的问题。
为了提高钢材表面缺陷检测的效率,本文基于YOLOv7 的轻量化版本YOLOv7-Tiny,进一步优化网络对目标的特征提取能力,引入混合注意力机制,增强网络的特征感知;将可变形卷积融合进网络骨干层,构建ELAN-DCNv3 模块,增强模型对不同尺寸和形状的缺陷的特征提取能力;在网络特征融合层加入了基于内容感知的特征重组模块,更加充分地利用上下文语义信息;最后,采用基于归一化Wasserstein 距离的损失函数实现对小目标缺陷更加精准的检测。
1 YOLOv7-Tiny 网络结构
YOLOv7-Tiny 保留了YOLOv7 基于级联的模型缩放策略,并改进了高效长程聚合网络(ELAN),是一种轻量级的目标检测算法,在保证检测精度没有大幅降低的基础上参数量更少、检测速度更快,更适合应用于钢材表面缺陷实时检测的需求。 YOLOv7-Tiny 网络结构如图1 所示。
图1 YOLOv7-Tiny 网络Fig. 1 YOLOv7-Tiny network
Yolov7-Tiny 算法由输入层、特征提取层、特征融合层及输出层四个部分构成。 将固定尺寸的图片作为输入,首先将其送入由普通卷积层、MP 与ELAN 卷积层构成的特征提取层。 然后,将提取的特征图送入在SPP 结构基础上优化后的SPPCSPC模块,进行处理后再送入特征融合层,采用聚合特征金字塔结构对整个金字塔特征图进行增强,将下层的显著性特征信息传递到上层,保留更丰富的特征信息。 最后,将这些语义丰富的特征图送入输出层,采用卷积对不同尺度的特征图进行预测,在目标特征图上应用锚框生成带有类别概率和目标框的最终输出向量。
尽管YOLOv7-Tiny 具有较少的参数和计算量,能保持较高的精度,但是针对钢材表面缺陷这类小目标,存在特征提取能力不足的情况。 因此,本文提出改进方法,在不增加网络参数的前提下加强特征感知,以满足钢材缺陷这类特征较弱的目标在实际应用场合的检测需求。
2 改进型YOLOv7-Tiny 钢材表面缺陷检测算法
本文基于YOLOv7-Tiny,将可变形卷积融合进网络骨干层,增强模型对不同尺寸和形状的缺陷的特征提取能力;引入混合注意力机制,增强网络的特征感知;在网络特征融合层加入了基于内容感知的特征重组模块,更加充分的利用上下文语义信息;最后采用基于归一化Wasserstein 距离的损失函数实现对小目标缺陷更加精准的检测。
2.1 构建ELAN-DCNv3 模块
钢材表面缺陷具有目标小、变形类型多样、缺陷类型多样的特点,普通卷积层对此类目标的特征提取能力较差。 本文中使用的DCNv3[17](Deformable Convolution Network v3)是在DCNv2[18](Deformable Convolution Network v2) 的基础上进行改进的。DCNv3 首先借用了可分离卷积的思想,将原始卷积权重分离成深度部分和点部分,实现了卷积神经元之间的权重共享;其次,引入了多组卷积的机制,将空间聚合过程分成多组,每组具有单独的采样偏移和调制尺度,从而为下游任务带来更强的特征;最后,通过用k个调制因子的softmax归一化代替调制标量sigmoid,整个训练过程变得更加稳定。 完整的DCNv3 运算符如式(1)所示:
其中,G表示卷积组的数量;Wg表示每组内的共享投影权重;mgk表示第g组中第k个采样点的归一化调制因子;xg表示切片输入的特征图; △pgk表示第g组中的网格采样位置(g,k) 相对应的偏移量。
本文将可变形卷积DCNv3 与特征提取层的ELAN 结构融合,重建ELAN-DCNv3 结构,结构如图2 所示。
图2 ELAN-DCNv3 结构Fig. 2 Structure of ELAN-DCNv3
使用DCNv3 算子可以弥补传统卷积在长期依赖性和自适应空间聚合方面的不足,并可使卷积算子更适合于变化多样缺陷的检测,同时通过实现稀疏全局建模并适当地保留CNN 的归纳偏差,更好地实现了检测复杂性和准确性之间的平衡。
2.2 构建ELAN-CBAM 模块
注意力机制的原理是选择性地关注更感兴趣的领域,而忽略信息的其他部分。 在钢材缺陷检测中引入注意力机制可以提高缺陷目标区域的权重。 神经网络可以更完整地区分待检测的缺陷目标和背景信息,有效地解决由于网络层次加深导致的钢材缺陷目标信息丢失的问题,使网络学习能够朝着更有利的方向学习。
在真实的钢材缺陷数据中,缺陷目标较多且种类繁杂,为了解决小目标漏检、误检的问题,需要让网络更加关注裂纹、麻点等小目标缺陷。 本文选用CBAM 注意力机制(如图3 所示),依次应用通道和空间注意力模块,强化了通道和空间两个维度上的缺陷特征,具体计算过程如下。
图3 CBAM 注意力机制结构Fig. 3 Structure of CBAM attention mechanism
给出输入特征图为X∈RC×H×W,CBAM 模块首先通过通道注意力模块(FCH∈RC×1×1) 生成通道注意力特征图,然后将其与输入图像相乘生成中间变量X′,计算过程可由式(2)来表示:
其中,“ ⊗”表示加权乘法。
此后通过二维空间注意力模块(Fs∈R1×W×H)在特征图X′的基础上生成空间注意力特征图,再将二维空间注意力模块Fs与通道自适应化后的特征图X′相乘,得到最终特征加强后的特征图F″,计算过程可用式(3)来描述:
在特征提取层中,随着网络的逐渐加深,特征图的尺度会变小,并且会丢失一些信息。 因此,本文将CBAM 注意力机制与卷积层融合,嵌入到特征提取层提取了特征后的特征图输出处,构建ELANCBAM 模块(如图4 所示),以强化随着网络深度而逐渐削弱的特征,增强网络的表达能力,提高最终检测的精度。
图4 ELAN-CBAM 结构Fig. 4 Structure of ELAN-CBAM
2.3 引入轻量级特征重组模块
在YOLOv7 的特征融合层中,使用了最近邻上采样算法进行特征图的上采样,是通过像素之间的空间距离来指导上采样的过程,利用采样点四周相邻最近的像素点的灰度值,但却忽略了其他像素点的影响,无法充分利用特征图中的空间特征,可能会造成输出图像灰度值上的不连续,从而使得图像灰度变化明显区域出现噪声,这会对钢材缺陷这类小目标的检测造成极大的困扰,导致检测精度降低。基于此,本文引入了基于内容感知的轻量级特征重组算子CARAFE[19](如图5 所示)来代替YOLOv7-Tiny 特征融合层中的最近邻上采样。 CARAFE 算子能够在更大的感受野中聚合上下文信息,摒弃了最近邻上采样算法中使用单一内核采样的方式,采用了基于自适应内容感知的采样方式,其具体计算流程如图5 所示。
图5 CARAFE 计算流程图Fig. 5 Calculation flowchart of CARAFE
在经过CARAFE 模块重建后的特征图中,每个像素都是根据邻域的特征内容进行上采样的,充分利用了上下文信息,让局部区域的相关点信息得到了更多的关注,使其语义信息更加丰富。
2.4 基于归一化Wasserstein 距离的损失函数
本文所检测的钢材表面缺陷中存在许多小目标缺陷,这对目标检测来说是一个难点,因为其中往往只包含几个像素,因此,提高检测小目标的能力对于提升整个钢材缺陷检测的效果十分重要。
目前,各类目标检测算法通常使用基于IoU(Intersection over Union)的各类损失函数作为模型优化的指引,例如CIoU、SIoU等。 但是这些度量标准对小目标的位置偏差敏感度较高,很容易受小像素分布的影响。 预测框P中几个像素的偏差就会导致P与标注框GT之间的重叠部分变化特别大,导致基于IoU的损失函数并不适用于小目标物体的检测。
针对这个问题,本文采用了一种基于归一化Wasserstein 距离[20](NWD,Normalized Wasserstein Distance)的损失函数。
首先将建模为二维高斯分布,然后使用归一化Wasserstein 距离(NWD)的计算标准来计算其相应高斯分布之间的相似性;接着将NWD 度量标准嵌入到模型的损失函数中,取代YOLOv7-Tiny 原始的CIoU损失函数。 基于NWD 的损失函数计算过程如下:
其中,Np是预测框P的高斯分布模型,Ng是标注框GT的高斯分布模型。 基于NWD 的损失函数即使在小目标缺陷检测时像素点偏差的情况下也能够拥有梯度,进一步提高钢板缺陷目标检测的精度。
2.5 改进后的YOLOv7-Tiny 模型
本文改进后的YOLOv7-Tiny 网络结构图如图6所示。
图6 改进后的YOLOv7-Tiny 网络结构图Fig. 6 Structure of improved YOLOv7-Tiny network
3 实验结果与分析
3.1 实验数据集
本文采用了东北大学发布的钢材表面缺陷数据集来验证改进的YOLOv7-Tiny 算法的有效性。NEU-DET 包含6 种钢材表面缺陷,包括裂纹(crazing)、夹杂(inclusion)、斑块(patches)、麻点(pitted surface)、轧入氧化皮(rolled in scale)以及划痕(scratches)。 每种缺陷图片的数量为300 张,共1 800张,图像大小均为200∗200。 6 类缺陷样例如图7 所示。
图7 钢材表面缺陷样例Fig. 7 Examples of steel surface defects
实验以每类8 ∶1 ∶1 的比例随机划分,选取1 260张图片作为训练集,260 张图片作为验证集,260 张图片作为测试集。
3.2 实验环境及训练参数
本文提出的钢材表面缺陷检测算法的实验硬件环境以及软件环境见表1,训练参数见表2。
表1 实验采用的硬件环境与软件环境Tab. 1 The hardware environment and software environment adopted in the experiment
表2 实验采用的训练参数Tab. 2 The training parameters used in the experiment
3.3 模型评价指标
本文采用平均准确率(mAP@0.5)、 模型大小(Model Size)作为算法性能的衡量指标。 其中,mAP是各类缺陷准确率AP的均值,AP则由各类的精准度(Precision,下文简称P) 以及召回(Recall,下文简称R) 计算得到,其值为P -R曲线与坐标轴围成的面积;研究推得的数学定义公式具体如下:
其中,TP为正确检测到缺陷的样本数量;FP是错误地将非缺陷目标检测为缺陷目标的数量;FN是错误地将缺陷目标认作非缺陷的数量。mAP@0.5表示IoU阈值在0.5 的mAP。
3.4 对比实验设计
为了验证本文提出方案的效果,在NEU-DET数据集中测试了多种目前主流的目标检测算法,包括SSD、RetinaNet、YOLOv5s、YOLOv7 以及文献[21-22]。 选取平均精度mAP@0.5 以及网络模型大小作为评价指标。 对比实验结果见表3。 通过表3 可以看出,本文提出的改进算法平均准确率mAP@0.5比YOLOv7-Tiny 高4.3%,模型大小压缩了11.3%,实际检测效果对比如图8 所示。 图8(a)~(c)中,从左到右分别是裂纹、夹杂、斑块、裂纹、轧入氧化、划痕。 可以看到,经过改进之后的网络对小目标的缺陷识别能力有着明显的提升,识别精度也有所提高。 相较于Faster-RCNN、RetinaNet、YOLOv3-Tiny、YOLOv7 算法,评价指标有着不同程度的领先。 相较于文献[21-22],在检测精度上也有着明显的优势。 由此证明,本文提出的改进算法的性能优于目前领域内的主流算法。
表3 对比实验结果Tab. 3 Comparative experimental results
图8 实际检测效果图Fig. 8 Actual test effect drawing
3.5 消融实验设计
为了进一步验证本文提出的改进方法对模型的有效性,对改进算法进行消融实验。
消融实验结果分析见表4。 从表4 的结果可知,引入DCNv3 构建ELAN-DCNv3 模块后,模型的识别准确率有着明显的提升,mAP@ 0.5 提升了1.1%,同时,由于DCNv3 采用了可分离卷积以及分组卷积的思想,模型的大小也有了一定程度的压缩;在ELAN-DCNv3 的基础上进一步引入CBAM 注意力机制,加强网络对钢材表面缺陷目标的特征感知,学习通道与空间两个维度间的相关性,使mAP@0.5提升了0.6%,但是参数有了小幅度的增加;将网络特征融合层原始的最近邻上采样改进为基于内容感知的轻量级特征重建模块CARAFE 后,更加丰富了上采样后特征图的语义信息,进一步增强了利于网络的识别能力,使得mAP@0.5 提升了0.9%;最后将网络原始的CIoU损失函数改进为更适用于小目标检测的基于NWD 的损失函数,将mAP@0.5 在之前的基础上再次提升了1.7%,达到77.5%。
表4 消融实验结果分析Tab. 4 Analysis of ablation experimental results
经过消融实验结果分析,本文确定了最终的改进方案为构建ELAN-DCNv3、构建ELAN-CBAM 模块、引入CARAFE 和采取基于NWD 的损失函数。YOLOv7-Tiny 改进前后训练效果对比如图9 所示。由图9 可以看出,在经过300 个Epochs的训练迭代后,改进后的YOLOv7-Tiny 算法在6 类钢材缺陷上的检测精度均有提升,平均准确率mAP@0.5 相较于原始YOLOv7-Tiny 提高4.3%,同时模型大小压缩了11.3%。
图9 YOLOv7-Tiny 改进前后训练效果对比图Fig. 9 Comparison of YOLOv7-Tiny training effect before and after improvement
4 结束语
本文针对工业生产环境需要对钢材表面缺陷进行高效检测的应用背景,提出了一种基于改进YOLOv7-Tiny 的钢材表面缺陷识别方法。 该方法以YOLOv7-Tiny 为基础,改进特征提取层的ELAN结构,引入DCNv3 构建ELAN-DCNv3 模块,在降低一定模型参数量的同时增强了网络对多种类型、形状缺陷的特征提取能力;增加CBAM 注意力机制,提升了网络对钢材表面缺陷的特征感知能力;采用基于内容感知的特征重组算子CARAFE 进行特征图的上采样,让局部区域的相关点信息得到了更多的关注,更加丰富了输出特征图的语义信息;此外,针对IoU损失函数对小目标缺陷位置偏移敏感的问题,采取基于NWD 的损失函数,使得网络有了更好的小目标检测性能。 实验结果表明,本文提出的方法对于钢材表面缺陷有着很好的识别效果,识别准确率达到了77.5%,同时将模型压缩了11.3%。 本文方法在不增加模型复杂度的前提下,识别准确率方面较YOLOv7-Tiny 有着较为明显的提升,在实际应用中展示出了巨大的潜力。 未来将继续优化算法,提升算法的准确率,对模型进行剪枝、知识蒸馏,进一步降低模型的推理复杂度,提升模型在边缘计算端的性能,更适应实际生产应用。 同时考虑通过数据增强的方式扩充数据集,使得模型的泛化性能进一步提高。