万 霞,赵为鑫,张文超,王晨曦,王明伟*,姜 瀚

(1.大连工业大学 机械工程与自动化学院,辽宁 大连 116034;2.科斯特数字化智能科技(深圳)有限公司,广东 深圳 518101)

粉末冶金是将金属粉末通过烧结后成型的工艺技术[1],广泛应用于地下管道运输、石油化工、汽车医疗器械等领域的工件制造[2]。但粉末冶金制品在压制成型的过程中,零件内部压应力瞬间释放可能造成表面出现裂纹、内部发生孔隙等问题[3]。因此,零件缺陷检测对于保证产品的质量至关重要。传统检测主要以人工检测为主,该方法检测速度慢、准确性低,且容易受环境、人为因素干扰。

随着计算机性能的提升和深度学习技术的发展,卷积神经网络(convolutional neural network,CNN)所带来高效率和高精准度的优势,逐渐应用于缺陷检测中。目前目标检测算法主要分为2 类,一类是根据候选区域提取目标类别和位置的二阶段(two-stage)检测算法,如R-CNN[4]、Faster R-CNN[5]、Mask R-CNN[6];第二类则是直接对目标物体进行回归预测的单阶段(onestage)检测算法,解决了二阶段检测算法中先生成候选框后进行分类任务的繁琐操作,其中主要包括SSD[7]、YOLO[8-10]等算法。翁玉尚等[11]等采用调整后的Mask R-CNN 检测带钢表面缺陷,在去掉掩码分支的同时,重新改进建议网络锚框生成方法,尽管在mAP 上有所提升,但检测速度仅为5.9 fps。王淑青等[12]对YOLOv5模型的输入端采用多尺度训练,优化边界框的损失,并替换原有的激活函数,有效提高太阳能电池片的表面缺陷检测识别率。Teng 等[13]通过迁移学习和数据增强的方式,结合高分辨率和低分辨率图像,提高YOLOv3检测桥梁表面缺陷的效率。

本文以粉末冶金工件表面裂缝和孔洞作为检测目标,针对缺陷检测中表面裂缝复杂、缺陷大小位置多变、缺陷细小等问题,提出了一种基于注意力机制的轻量化金属缺陷检测YOLOv5 检测算法,提高对复杂环境下的识别能力。本文算法实现了对表面缺陷的精确、高效检测,满足实际的生产要求,具体做法如下。

1)针对生产线要求更高的检测速度以及便于部署在移动终端,采用轻量化卷积网络替换原有的特征提取网络,在获得更多特征信息的同时,减少参数量,大幅度提升检测速度。

2)针对孔洞等细小特征丢失的问题,将坐标注意力机制(Coordinate Attention,CA)嵌入特征融合模块中,引入通道信息和空间信息,提升算法对小目标的检测能力,改善远距离小尺度目标检测的鲁棒性。

3)为获得更符合金属缺陷的先验框,提升网络检测能力,采用K-means++算法对数据集锚框重新聚类,生成符合数据集的anchor 值。

4)针对数据集正负样本不均衡,损失函数发生剧烈震荡的问题,重新定义分类惩罚指标,调整样本损失权重,加快收敛速度与模型的识别精度。

1 YOLOv5 目标检测算法存在的问题

YOLOv5[14]是在YOLO[8]系列算法新阶段的目标检测算法,其检测速度和精度有很大提升,并在目标检测任务上取得广泛的应用。尽管YOLOv5 在检测上有很好的效果,但由于单阶段检测是将分类问题转化为回归问题,实现缺陷的定位和分类,在提高检测速度的同时,对于细小、模糊的缺陷检测精度仍有待提升。

其中,粉末冶金表面的缺陷形态多变,裂缝长度大小不同,在现场光照条件较差的情况下,特征提取时易受到周边环境的影响。其中,孔洞缺陷小、目标位置较为随机,导致原始的算法在对极小目标检测时,容易出现漏检、误检的现象。YOLOv5 网络结构引出3 个尺度的特征图,通过深层的卷积网络进行特征提取,期间会产生大量的特征图和参数,不利于网络模型的部署和搭建。金属缺陷数据集中的锚框尺寸差异较大,YOLOv5 原始的锚框不能很好匹配金属缺陷,造成缺陷定位和分类的不准确。YOLOv5 的采用交叉熵损失函数,预测框在水平或垂直方向优化较为困难,影响模型的收敛速度和准确性。

针对上述问题,考虑到粉末冶金工件表面缺陷特点,本文从替换轻量级卷积、增加注意力机制、设计合适的先验框及损失函数这4 个方面,对YOLOv5 算法进行改进,以实现该算法在实际生产中的应用。

2 改进的YOLOv5 算法

结合粉末冶金工件表面存在缺陷长度不一致、现场条件复杂、缺陷形态多变、要求更快的检测速度等实际问题,在满足表面缺陷检测速度和精度的同时,便于部署的需求,本文在YOLOv5 的基础上更换骨干网络,采用线性变换和普通卷积结合的方式生成更多的特征图,并在特征提取后添加注意力机制,在特征融合时包含更多的细节信息,增强对小目标的检测能力,使用K-means++算法聚类适合该数据集的先验框,重新整合损失函数提高网络的收敛速度和检测的准确率,具体的网络结构如图1 所示。

图1 改进的YOLOv5 网络结构

2.1 更换GhostNet 网络

YOLOv5 的Backbone 采用大量的卷积核组成卷积神经网络,产生丰富甚至冗余的特征图,保证对输入数据有全面的理解。但同时也会产生大量的数据,导致模型又大又慢,不利于模型的部署和应用。GhostNet[15]通过普通卷积和线性变化生成更多的特征图,使用GhostNet 网络替换原有的骨干网络,在不改变特征图尺寸大小的前提下,参数总量和计算复杂度均有很大程度地降低。

Ghost Bottleneck 如图2 所示。首先,对于给定的图像数据X∈Rc×h×w,通过卷积运算Y=X×f+b,得到Y′=X×f′,其中f′∈Rc×k×k×w为该层的卷积核。然后,对Y 采用Yij=Φi,j(Yi′),∀i=1,…,m,j=1,…,s 的线性变化,得到更多的特征图。式中,Yi是第i 个特征图,Φi,j表示第i 个特征图进行第j 个特征变换的线性变换函数,Φi,s是用于保留原始特征图的恒等映射。

图2 Ghost Bottleneck 模块

GhostNet 通过堆积Ghost bottleneck 模块组成,利用全局平均池化和卷积层将特征图转化为特征向量进行最终分类,将原始模型转化为更紧凑的模型,增强特征信息的同时降低参数量,提升了检测效率和准确性。

2.2 引入坐标注意力机制

YOLOv5 算法通过骨干网络进行特征提取,并通过FPN 和PANet[16]进行特征融合完成对语义信息的提取,增加网络的感受野,但通过多次深层次的卷积后,会导致小目标区域的特征信息丢失。通过引入注意力机制可以增强模型选择特征,完成识别、分类任务。大部分注意力机制用于深度神经网络带来很好的性能提升,但有些注意力机制会带来额外的计算量。本文引入坐标注意力机制CA[17],将位置信息嵌入到通道信息中,获得更大的区域信息同时避免引入额外的计算量。

CA 注意力机制的整体结构如图3 所示,将输入的特征图分为宽度和高度2 个方向分别进行全局平均池化,经过卷积、标准化最后得到宽度和高度方向上带有注意力权重的特征图。其中,骨干网络中的浅层网络主要包含图像的细节特征,这些细节特征经过自底向上、自顶向下的方式进行特征融合,有利于小目标的检测。同时,经多层的卷积导致纹理信息和轮廓信息的丢失,不易提取有用的特征信息。因此,本文将CA 模块嵌入骨干网络特征提取后,通过注意力机制突出关键信息,屏蔽无用信息,再经过特征融合模块,完成对目标的检测功能。

图3 坐标注意力机制

2.3 先验框的优化设计

先验框的实际尺寸在很大程度上影响网络模型的检测精度。由于粉末冶金工件表面缺陷的尺寸、形状存在很大差异,原始YOLOv5 基于VOC 数据集得到的先验框尺寸并不能满足该检测的要求,且原始算法采用K-mean 算法生成anchor 值时,聚类中心易受初始值的影响。本文选择K-means++[18]算法,对聚类中心重新计算,避免出现局部最优解的问题,并生成9 组不同高宽比的anchor。该聚类结果见表1,算法生成的anchor尺寸更满足数据集实际大小。

表1 anchor 聚类

2.4 改进损失函数

YOLOv5s 将GIOU[19]作为损失函数,在关注重叠区域的同时,也关注其他非重叠区域,但无法很好地衡量两者之间的相对位置关系。预测框在水平或垂直方向优化较为困难,导致其收敛速度较慢。本文考虑回归之间的向量角度,在原有的分类损失Lc、置信度误差Lcon和定位损失Lloc的基础上,重新定义了惩罚指标,整合并得到新的损失函数SIOU[20],加快后期的收敛速度。SIOU 损失函数由4 个成本函数组成,分别是角度成本、距离成本、形状成本和IOU 成本。最后,得到回归损失函数的公式为

式中:LCLS是损失函数(focal loss),WCLS和WBOX分别为框和分类的损失权重。

3 实验环境与数据集

3.1 实验环境

实验采用的硬件配置:CPU 为Intel(R)Xeon(R)W-2223,GPU 为NVIDIA RTX 4000,运行内存16 G。网络模型开发框架为Pytorch,Python 版本为3.8。为实现更好的训练效果,在训练过程中,batch_size 设置为16,采用Mosaic 数据增强方式,提高网络泛化能力,初始学习率Ir0=0.01,权重衰减系数为0.000 5,学习动量设置为0.937,采用余弦退火策略更新学习率、SGD 函数优化参数,训练150 个epoch。

3.2 实验数据集

本文选用的是数据集为某公司生产的粉末冶金工件,该工件在烧结后出现裂缝、孔洞缺陷问题。通过对工件的缺陷采集,一共得到1 039 张缺陷图像,其中孔洞(holes)共有213 张,裂缝(crack)共有826 张。按照训练集和测试集的比例为8∶2 划分数据集,采用labelimg 软件进行标记,格式为VOC 数据集,完成准备工作。图4 为数据中部分样本。

图4 粉末冶金工件表面缺陷

4 实验与结果分析

4.1 评价标准

本文采用精度(Precision,P)、召回率(Recall,R)和均值平均精度(mAP)评估算法的性能。其中,精确性用来描述检测正样本的比例,召回率描述检测为正样本占总正样本的比例,mAP 为衡量多类别目标检测中模型整体检测精度的指标。计算公式为

式中:TP 表示将正类预测为正确,属于正确检测;FP表示将负类预测为正确,属于误检;FN 表示为将正类检测为错误,属于漏检。

4.2 消融实验

为验证GhostNet 网络、坐标注意力机制、K-means++聚类改进方法对模型检测效果的有效性,通过消融实验对比,在相同的实验设备和数据集下,运行5 组不同的网络模型,选取mAP 作为实验的评价指标,验证各个改进点的实际优化效果。实验对比效果见表2。

表2 消融实验

实验以YOLOv5s 为基准,依次替换GhostNet 网络、增加CA 注意力机制以及使用K-means++聚类后的检测效果。其中通过序号1 和序号2 的对比,mAP从0.585 提上至0.594,提高了0.9 个百分点。结果表明,使用GhostNet 骨干网络替换原有的Backbone 层后,对准确率的提升效果不大,但通过普通卷积和线性变化减少了参数量,使得骨干网络轻量化,对一秒处理帧数(FPS)有明显提升。序号3 和序号1 实验对比显示,增加CA 坐标注意力机制后,mAP 从0.585 提升至0.616,这表明使用注意力机制在充分利用通道信息和空间信息可以有效提高特征感知度,尤其是针对孔洞细小物体,检测效果明显提升。序号4 和序号1 实验对比显示,对锚框重新设计后使mAP 提升至0.602,表明重新计算数据集自身的anchor 值可以提升模型检测精度。通过序号5 和序号1 的对比,mAP 由原来的0.585 提升至0.636,检测速度为65 ms。两者对比分析,优化后的算法在原始算法的基础上,减少了参数的计算量,对细小物体的检测能力提升。虽然检测速度和原来的算法相比,提升幅度较小,但检测速度仍满足生产线上的实时检测,对金属表面检测实现较高的准确率,具有实际的应用价值。

4.3 对比实验与分析

本文将改进后的YOLOv5 算法模型和现有的目标检测模型,在相同环境和数据集下运行的对比分析,其中Faster R-CNN 二阶段检测算法;SSD、YOLOv3、v5 为一阶段检测算法。实验结果采用各类缺陷的检测精度、mAP和FPS 作为评价指标,具体实验结果见表3。

表3 多种检测算法结果对比

根据表3 可知,本文提出的算法在采集的数据集上的mAP 为0.636,比YOLOv5 提升了5.1 个百分点。相比于SSD、YOLO 系列算法,Faster R-CNN 作为双阶段检测算法,通过特征提取生成预选框后再检测目标物体,mAP 达到0.612。但这类算法计算量大,检测速度仅为33 fps,检测速度较慢。SSD 对于裂缝这种大物体的检测效果较好,检测速度上有优势,但孔洞这种细小物体检测则表现不佳。YOLOv3 算法在该测试集上的mAP 为0.58,虽然较SSD 有提升,但效果不明显,精度略有欠缺。综上,本文提出的方法mAP 从0.585 上升至0.636,FPS 为65 ms,在保证速度的前提下检测精度有明显的提升,降低了漏检率。

最后分别用原始的YOLOv5 算法和本文改进后的算法进行实时的粉末冶金工件表面缺陷检测,如图5所示,在正常光线下改进后的YOLOv5 算法的置信度为0.85,相较于改进前的0.72 提升了0.13,检测精度明显提升。由于工厂中光线较为复杂,且伴随粉尘、灰尘、模糊的光照等问题,通过引入注意力机制可以对提取有用信息、压制无效信息有很大帮助。对比发现,光照模糊的条件下,原始算法出现漏检,而改进后的算法表现效果良好,对光照不足环境下依旧有不错的检测能力。对于细小物体的检测,在实时检测时图像容易模糊,原算法对这种情况漏检情况较多,不能检测出孔洞缺陷,但改进后的YOLOv5 算法在针对细小孔洞有明显的提升。相比于改进前的YOLOv5 算法,在检测精度、模型权重上都有明显的提升,能够实现较高精度的同时不引入额外的计算量,便于部署和应用。

图5 不同场景的结果对比

5 结论

为解决粉末冶金工件表面缺陷检测问题,提高复杂工厂灯光环境下的表面瑕疵检测的准确率和识别速度,本文提出一种基于改进YOLOv5s 的粉末冶金工件表面缺陷检测算法。该模型采用线性变化的卷积网络替换原有骨干网络,保证精度的同时减少数据量;在修改后的骨干网络加入注意力模块,加强网络的特征提取能力;采用K-means++算法优化先验框,重新定义损失函数的惩罚机制,加快算法收敛速度、提高检测精度。模型改进前后的实验表明,在相同测试集下的mAP 由58.5%提升至63.6%,同时检测速度达到65 ms,且在检测精度和检测速度取得了良好的平衡,在模糊、光照环境较差的情况下的检测效果显着提升。