基于改进YOLOv5s 的铝材表面缺陷检测方法*

2024-01-16 14:09杨召岭
制造技术与机床 2024年1期
关键词:轻量化精度特征

谢 昆 方 凯 陈 娟 杨召岭

(①湖北汽车工业学院电气与信息工程学院,湖北 十堰 442000;②东风(十堰)有色铸件有限公司,湖北 十堰 442000)

在制造过程中难免出现工件损伤,能够快速精确地检测出零件缺陷是智能制造的关键[1],早期表面缺陷的检测主要依赖于人工目视检查,尽管该方法可以有效地发现较为明显的缺陷,但对于微小且不明显的缺陷,漏检概率很高;后来又出现了基于红外线的机器检测手段,通过光线扫描,有缺陷的地方会出现信号变化,但检测速度存在很大局限性[2-3]。之后传统的机器视觉方法被应用在缺陷检测中,对采集的工件图片进行处理,效率较高,实现了不接触式检测,但极易受到现场环境和人为操作等干扰,特征提取的识别分类能力有待提高,难以大规模应用到实际生产中[4]。

随着AI 领域的快速发展,传统的缺陷检测方法逐渐被基于深度学习的目标检测方法所代替,主要算法可分为One-Stage 和Two-Stage。两种算法各有优缺点,Two-Stage 代表算法有RCNN[5]、Mask-RCNN[6]和Faster-RCNN[7],将检测对象先生成候选框,再进行分类,检测的精度高,但实时性不如One-Stage 算法;One-Stage 代表算法有YOLO[8-9]和SSD[10]算法,使用了回归机制将检测对象的整个图形直接检测,把目标检测当作回归问题进行分析,完成直接从原始图像的输入到物体位置和类别的输出,实现了端到端的训练,能达到较高的实时性,但精度不如Two-Stage 算法。

李超贤等[11]针对铝型材瑕疵的特点,对传统图像处理结合SVM 机器学习的算法与改进的Gaussian-YOLOv3 算法进行了试验对比,证明了该算法的检测效果更好;张建国等[12]采用anchor-free方法简化人工设计YOLOv5s 参数的步骤,利用解耦检测器解决YOLOv5s 检测中分类与回归任务冲突的问题,加快损失函数的收敛速度,同时引入γ参数,解决弱缺陷样本不平衡的问题;李澄非等[13]在 CSPResblock 模块中引入注意力机制 SE 模块,赋予各个通道相应的权重,加强网络对于重要信息的训练,提升网络的特征提取能力。

YOLOv5 算法是在YOLOv4 基础上的一项改进算法,拥有更好的性能。本文以 YOLOv5 算法为基础,针对目前铝材表面缺陷检测算法在实际工程应用中检测精度低以及不够轻量化难以部署等问题进行改进。结果表明,与原 YOLOv5 算法相比,改进后算法的检测精度和轻量化程度有显著的提升。

1 YOLOv5 算法

YOLOv5 是一种单阶段目标检测算法,通过单个前向传播过程同时完成目标检测和边界框回归。它引入了多尺度检测机制,在不同特征图上检测目标,提高准确性。为了提高模型在不同数据集和任务上的性能,算法采用的自适应训练策略可自动调整超参数。最后通过后处理技术包括NMS 和对象性置信度阈值,来减少冗余边界框,提高检测稳定性。YOLOv5 的网络架构主要由骨干网络(Backbone)、颈部网络(Neck)和头部网络(Head)组成。Backbone 采用CSPDarknet53(cross-stage partial network)结构,由多个卷积层和池化层组成,通过交叉阶段连接来提高信息流的效率和性能,用于从输入图像中提取特征。 Neck 采用PANet(path aggregation network)结构,用于进一步增强特征的语义信息和上下文信息。Head 包括多个卷积层,用于生成目标检测的预测。这些预测包括目标的位置(边界框的坐标)和类别置信度分数。

2 改进的YOLOv5 算法

2.1 改进算法的整体框架

文中算法针对上述问题主要做了三处改进,将ShufflenNetV2-Block 网络单元融合在Backbone 当中,降低模型复杂度;添加SE 注意力机制,能够更好地区分类别之间的差异;优化损失函数,采用SIoU替代CIoU,提升网络定位精度。改进后的YOLOv5s算法网络结构如图1 所示。

图1 改进后的YOLOv5 算法网络结构

2.2 融合ShufflenNetV2_Block 算法

在实际生产线工件检测中,对于实时性有较高的要求,需要对模型进行轻量化处理以便提升检测速度,但不能过多影响检测精度。综合以上考虑本文选择引入ShufflenNetV2_Block[14],将其融合在YOLOv5s 的Backbone 当中。它是一种轻量化模型,综合考量了检测精度和速度,网络架构如图2 所示,包括基本单元和下采样单元。

图2 ShuffleNetV2 网络单元结构

ShuffleNetV2_Block 的基本单元引入了通道拆分操作,每个基本单元将输入的特征图通道分成两个分支。其中,左分支进行等映射操作,而右分支进行深度可分离卷积,包括一个深度卷积(depthwise convolution,DW Conv)和两个逐点卷积(pointwise convolution,PW Conv)用于融合通道之间的特征信息。在ShuffleNetV2_Block 的下采样单元中,左分支不再进行等映射操作,左右两个分支都进行stride 为2 的深度卷积。

这样操作的优点在于可以减小特征图的空间分辨率,同时增加通道深度,使网络能够在不同尺度上学习特征,降低模型的计算复杂性并减少内存消耗,有助于加速训练和推理过程。总的来说,融合ShufflenNetV2_Block 网络是对主干网络的一种优化,使模型更加轻量化,可以提升模型的检测速率和移动端部署能力。

2.3 SE 注意力机制融合

SENet(squeeze-excitation network)[15]是一种利用注意力机制来增强深度卷积神经网络性能的架构,其核心思想是通过引入注意力模块来动态地调整特征图中每个通道的权重,以突出对于特定特征的关注,从而提高网络的表征能力。这对于缺陷检测任务有很大的帮助,可以提升模型对缺陷特征的提取能力,忽略一些次要信息,以此来提高分类性能。本文将SE 注意力机制融合在主干网络的第7 层,它的实现可分为Squeeze、Excitation 和Scale 三个阶段,如图3 所示。

图3 SE 注意力机制结构图

首先进行 Squeeze 操作,对整个特征图进行全局平均池化,捕获每个通道在全局上的重要性,再将每个通道的特征聚合成一个单一的值,形成一个通道重要性的向量。紧接着是 Excitation 操作,利用先前获取的通道重要性向量来学习一个权重向量,该权重向量用于重新加权每个通道的特征响应。通过学习这个权重向量,SENet 可以决定哪些通道应该被加强,哪些通道应该被减弱。最后是Scale 操作,通过将Excitation 阶段的权重向量应用于原始特征图,将其重新加权。这意味着对于具有高权重的通道,其特征响应将被增强,而对于低权重通道,其特征响应将被减弱。这就使得在缺陷检测任务中,模型能够更好地区分类别之间的差异,提高分类性能和检测效率。

2.4 优化损失函数

YOLOv5 的损失函数采用CIoU(complete-intersection over union)[16]即完全交并比,CIoU 是对IoU 的改进版本,它考虑了检测框的中心点距离和宽高的差异。CIoU 首先计算了中心点距离的归一化项,然后将其添加到IoU 的计算中,以更准确地衡量两个框之间的重叠程度。

在此基础上SIoU[17]还考虑了期望与回归之间的向量角度,如图4 所示。重新定义角度惩罚度量并加入损失函数,使得预测框快速移动到最近的轴,有效减少了自由度的总数,对模型训练效果和网络收敛速度有进一步提升。并且SIoU 通过引入结构信息,可以更公平地进行竞争,避免一些检测框过度竞争而导致性能下降,综合以上分析本文损失函数采用SIoU。

图4 角度成本计算过程

角度成本函数如下:

式中:x=ch/σ=sinα,为真实框和预测框中心点之间的距离。

根据式(1),SIoU 定义的距离成本函数如下:

由以上分析可知, ∆ 在α=π/4时取得极大值,SIoU 定义的形状损失函数如下:

其中:

Ω的值受θ控制,θ的取值通常取2~6 的整数,本文取θ=4。

最终SIoU 的计算公式定义为

3 实验与分析

3.1 实验环境和数据集

实验所用操作系统为Windows11;硬件环境中,CPU 为Inter Core i5-10500,GPU 为NVIDIA GeForce RTX 3060;软件环境为CUDA11.7,Cudnn8.4,采用Pytorch2.0.1 深度学习框架。

数据集图像由工业相机采集,包括pinhole(针孔)、scratches(划痕)、spot(斑点)、wrinkle(褶皱)等类型缺陷,共 1 412 张,按照9∶1 的比例分为训练集和验证集。部分数据集如图5 所示。

图5 不同缺陷类型数据集

3.2 模型训练和评价指标

在模型训练过程中,设置输入图像大小为640×640,初始学习率为0.01, batch_size 为 64,epochs为100。引用R(recall)、P(precision)、AP(average precision)和mAP作为模型性能评价指标,各指标计算公式如下:

式中:P表示正样本中被正确预测为缺陷的样本比例,用于衡量检测结果的准确性;R表示被正确预测为缺陷的正样本占总正样本数的比例,用于衡量模型的召回率;mAP表示在不同目标类别下的平均精准度,用于综合评估目标检测性能的指标;TP表示被正确预测为缺陷的正样本数量,即模型成功检测到的缺陷;FP表示被错误预测为缺陷的负样本数量,即模型误报的缺陷。FN表示被错误预测为正常的正样本数量,即模型漏报的缺陷;n表示目标检测任务中涉及的不同缺陷目标类别的数量。同时,选取mAP用来综合评估目标检测性能,一般情况下值越高,模型性能越好,见式(7)。

3.3 实验结果分析

Loss曲线如图6 所示,其中Box Loss为边界框损失,用于度量模型预测的边界框坐标与真实边界框坐标之间的差异,值越小表示定位准确性越高;Cls Loss为分类损失,用于度量模型预测的类别概率分布与真实类别标签之间的差异,值越小表示分类准确性越高。可以看出Loss值在训练过程的前1/4 部分下降得较快,之后趋于稳定,训练效果较好。

图6 本文算法Loss 曲线图

3.3.1 不同算法实验对比分析

为了验证本文改进算法的综合检测能力,采用文中算法与经典的目标检测算法及文献中的算法进行对比试验。采用本文所述数据集,在相同实验条件下,设置初始学习率为 0.01,利用不同缺陷的AP、mAP、FPS 以及模型大小,对本文改进算法进行评估。训练结束时模型损失均已收敛,结果见表1。

表1 不同算法的实验结果对比结果

由表1 可知,两阶段算法FasterRCNN 的检测精度略高于YOLOv3,但因为是两步法,FPS仅有19.3,检测实时性跟不上;而SSD 算法检测速度虽有小幅提升,但mAP太低,检测精度跟不上;YOLOv5s和YOLOv3 的mAP接近,但都明显低于本文算法。特别是本文算法对于针孔和斑点这类小目标的检测精度有了很大的提升,针孔类和斑点类缺陷检测精度比原版YOLOv5s 分别提升了8.3%和9.3%,mAP提高了6.4%。虽然本文算法的FPS要略低于YOLOv5s,但训练出来的模型大小仅为原版YOLOv5s 算法的25%,更加适合移动端的部署。

划痕类缺陷的特点是有较细微的纹理或边缘特征,较简单的模型结构一般无法捕捉到划痕类缺陷的复杂特征,对于这类缺陷检测精度较高的是YOLOv3 和FasterRCNN,但它们的检测实时性远不如本文算法。这是因为它们的模型较大,特征提取器的网络结构较深且具有较多的层级,可以更好地捕捉较为复杂的特征;而本文算法和YOLOv5s 考虑了轻量化,降低了模型复杂度,在复杂特征提取方面并没有优势。

上述对比结果说明,本文算法实现了一定程度的性能优化,综合性能最佳,极大地提高了铝材表面缺陷检测效率以及减小了模型体积,有效改善了制造过程中对存在缺陷的工件漏检问题。

3.3.2 消融实验

为了证明算法的各项改进点对模型性能提升的贡献,本文进行了消融实验,设立了4 组不同条件的实验,先后对原始的YOLOv5s 网络进行融合ShufflenNetV2-Block 网络单元(SN),添加SE 注意力机制(SE),用SIoU 替代原有的损失函数。消融结果实验见表2。

表2 消融实验

由表2 可知,方法2 仅融合ShufflenNetV2-Block 网络单元,使得模型mAP有些许下降,FPS变化不大,但模型大小减少了75%,仅为原来的25%;方法3 在融合ShufflenNetV2-Block 网络单元的基础上添加SE 注意力机制,模型的mAP有所提升,但FPS降低了,意味着检测实时性下降;方法4(本文方法)在方法3 的基础上优化了损失函数,mAP值提升明显,达到了92.5,模型大小也仅为1.91 MB,虽然FPS与原始YOLOv5s 相比降低了1.1 个单位,但综合来看,方法4 在满足实时检测的条件下,精确率和轻量化程度更高。

3.3.3 缺陷检测实际效果

利用文中改进的算法进行模型训练后,4 种不同类型的工件缺陷均得到了有效识别,不同颜色的矩形框用来标识检测结果,并且给出缺陷的类别和概率,如图7 所示。

图7 缺陷检测实际效果

4 结语

针对目前铝材表面缺陷检测算法在实际工程应用中检测精度低以及不够轻量化难以部署等问题,设计了基于YOLOv5s 的改进算法。将ShufflenNetV2-Block 网络单元融合在Backbone 中,重构主干网络,减少模型计算量,提高缺陷特征的提取速度,有助于加速训练和推理过程;添加SE 注意力机制,使注意力更集中于缺陷相关区域,能够更好地区分类别之间的差异,提高分类性能和检测效率;优化损失函数,采用SIoU 替代CIoU,使得网络收敛更快、定位精度更高。实验结果表明,本文算法相较于YOLOv5s 算法在识别精度和模型轻量化方面有所提升,特别是对于针孔类的小目标缺陷识别精度提升明显,且降低了模型的大小和所占内存,更加便于移动端部署,满足加工生产现场对工件的检测需求。后续将以本文为基础,在满足检测实时性的前提下,对模型进一步优化,提升对划痕类复杂缺陷特征的检测精度。

猜你喜欢
轻量化精度特征
汽车轻量化集成制造专题主编
如何表达“特征”
不忠诚的四个特征
一种轻量化自卸半挂车结构设计
一种轻量化自卸半挂车结构设计
基于DSPIC33F微处理器的采集精度的提高
抓住特征巧观察
GPS/GLONASS/BDS组合PPP精度分析
瞄准挂车轻量化 锣响挂车正式挂牌成立
用户:轻量化挂车的使用体验