中国测试  2024, Vol. 50 Issue (5): 160-166

文章信息

李澄非, 蔡嘉伦, 邱世汉, 梁辉杰, 徐傲
LI Chengfei, CAI Jialun, QIU Shihan, LIANG Huijie, XU Ao
基于改进YOLOv4的铝材表面缺陷检测方法
Defect detection method in aluminum material surface based on improved YOLOv4
中国测试, 2024, 50(5): 160-166
CHINA MEASUREMENT & TEST, 2024, 50(5): 160-166
http://dx.doi.org/10.11857/j.issn.1674-5124.2022050145

文章历史

收稿日期: 2022-05-21
收到修改稿日期: 2022-07-01
基于改进YOLOv4的铝材表面缺陷检测方法
李澄非 , 蔡嘉伦 , 邱世汉 , 梁辉杰 , 徐傲     
五邑大学智能制造学部,广东 江门 529020
摘要:针对铝材表面缺陷检测精度不高,容易漏检的问题,提出基于改进YOLOv4的缺陷检测方法。在CSPResblock模块中引入注意力机制SE模块,赋予各个通道相应的权重,加强网络对于重要信息的训练,提升网络的特征提取能力;改进SPP模块,使用不同宽高比的池化核,有利于保留更多的短边信息,提高网络对大宽高比缺陷的检测能力;对PANet结构进行改进,在对应特征层级上拼接输入信息,主要融合主干网络的三层输出,获得更多较浅的特征信息,提升对小目标的检测能力;实验结果表明,改进后的YOLOv4算法在铝材表面缺陷数据集上的精度(mAP)达79.27%,优于其他常见目标检测算法。
关键词目标检测    铝材表面缺陷    YOLOv4    注意力机制    机器视觉    
Defect detection method in aluminum material surface based on improved YOLOv4
LI Chengfei , CAI Jialun , QIU Shihan , LIANG Huijie , XU Ao     
Faculty of Intelligent Manufacturing, Wuyi University, Jiangmen 529020, China
Abstract: Aiming at the problem of low accuracy and easily missing defects in aluminum surface defect detection, a defect detection method of improved YOLOv4 is proposed. SE is introduced into CSPResblock giving channels weights, which can increase training effect for important information and improve the ability of feature extraction. Using pooling kernels with different aspect ratios is beneficial to retain more short-side information, so SPP is revised to improve the network's ability to detect large aspect ratio defects. PANet is improved to fuse more input shallow feature information from the three outputs of backbone, increasing the ability in detecting small objects. The experiment result shows that mAP of improved YOLOv4 algorithm achieves 79.27% in aluminum surface defect data set, better than other common object detection algorithms.
Key words: object detection     aluminum material surface defect     YOLOv4     attention mechanism     machine vision    
0 引 言

在铝材生产过程中,由于生产工艺技术的限制,常常会出现各种各样的缺陷,常见的缺陷有起坑、擦花、漆泡、漏底、脏点等,这些铝材表面缺陷不仅影响美观,而且会对铝材的质量和性能造成极大的影响,严重时,甚至会导致意外的发生,造成人员伤亡。因此,对铝材表面缺陷进行精准的检测,十分必要。

人工检测方法存在很大的局限性,长时间的工作会导致工人眼部疲劳,效率降低,不能准确完成任务。许多研究人员开始提出各种金属表面缺陷检测方法,这些工作大致可以分为两类,传统和深度学习检测的方法。传统检测方法,常通过人工设计的特征来提取缺陷,如HOG[1]和SIFT[2],而后经过分类器SVM[3]进行分类识别。SUVDAA B[4]等描述了对于钢板缺陷检测和分类的框架,先使用Sift进行特征提取,后通过SVM进行分类,实验表明了算法的有效性。郭慧[5]等人通过连通域对缺陷轮廓进行提取,使用几何、形状和灰度等作为特征,通过SVM进行分类,实现了对钢板缺陷的识别。人工设计的特征并不能满足检测需求,对于缺陷的提取能力不足。这些方法对于特定缺陷检测精度高,但是泛化性低,且容易受到周围环境的影响。

近年来,随着深度学习技术的飞速发展,越来越多人将深度学习应用在工业检测上[6-8],也带动了其在金属缺陷的检测。程婧怡[9]等提出了改进YOLOv3的金属表面缺陷检测方法,优化了对小目标的检测。吴越[10]等提出了基于Faster R-CNN的钢板表面缺陷检测方法,采用ROI Align作为池化模块,改善对于小目标的检测精度。李庆党[11]等提出了基于YOLOv3的钢板缺陷检测方法,采取了增加尺度的方法来提高缺陷检测的精度。基于Faster R-CNN[12]的方法,精度高,检测速度慢。YOLO系列算法取得了精度和速度上平衡,更适用于工业检测。

YOLOv4[13]算法在YOLOv3[14]的基础上进行改进,拥有着更好的性能,本文以YOLOv4算法为基础,针对算法在金属铝材缺陷检测中精度不高,容易漏检的问题进行改进。结果表明,与原YOLOv4算法相比,改进后的算法检测精度获得显著的提升。

1 YOLOv4算法 1.1 YOLOv4网络结构

YOLOv4整体网络结构可以分为四部分,输入层、Backbone主干网络、Neck结构以及最后的输出层YOLO Head。输入层是3通道的训练图片。主干网络使用Mish激活函数,引入CSP残差结构,采取CSPDarknet53作为特征提取网络。Neck结构主要由空间金字塔池化模块(SPP)和路径聚合网络模块(PANet)组成,SPP的引入增大了网络感受野,PANet的使用有利于底层信息的传输,从而获取更好的特征。输出层YOLO Head负责将获取的特征图进行整合,预测出目标的坐标,边框大小以及置信度等信息。整体网络结构如图1所示。

图 1 YOLOv4网络结构

1.2 YOLOv4预测原理

以608×608输入尺寸为例,经过主干网络时,图片会经过5次下采样,取最后3次下采样结果作为检测的特征层。最底部特征层经过SPP模块进一步扩大感受野,而后与其余两个特征层通过PANet进行自顶而下、自底向上的特征融合,获得三个尺寸为76×76、38×38、19×19的特征图,最后在输出层中进行预测,分别用于检测小目标、中目标以及大目标。

将特征图的大小设定为${{S}}$×${{S}}$,即可以看作将特征图分为${{S}}$×${{S}}$个网格。每个网格分配到了3个先验框,对应3个尺寸目标的预测,即获得了3个预测框。每个预测框包含5+${{C}}$个预测值,即边框中心坐标、边框宽高、目标置信度以及类别总数${{C}}$。其中置信度取值为1或0,表示网格中是否存在目标。边框中心坐标及宽高的计算如式(1) ~(4)所示。

$ {b_x} = \sigma \left( {{t_x}} \right) + {C_x} $ (1)
$ {b_y} = \sigma \left( {{t_y}} \right) + {C_y} $ (2)
$ {b_w} = {p_w}{{\rm e}^{{t_w}}} $ (3)
$ {b_h} = {p_h}{{\rm e}^{{t_h}}} $ (4)

式中:$ {b_x} $,$ {b_y} $,$ {b_w} $,$ {b_h} $——中心坐标和宽高;

$ {C_x} $,$ {C_y} $——每个网格在$ x $$ y $方向上距离左上顶点的距离;

$ {t_x} $,$ {t_y} $——网络预测出的中心坐标偏移量(在每个网格内),$ \sigma $函数负责将$ {t_x} $$ {t_y} $进行归一化;

$t_w$,$t_h$——网络预测出的相对宽高;

$ {p_w} $,$ {p_h} $——先验框的宽高。

获取预测框的信息后,需要进行类别置信度得分计算,如式(5)所示。

$ {\text{Score}} = P\left( {{\text{clas}}{{\text{s}}_i}|{\text{obj}}} \right) \times P\left( {{\text{obj}}} \right) \times {\text{IoU}}_{{\text{pred}}}^{{\text{truth}}} $ (5)

式中:$ P\left( {{\text{obj}}} \right) $——网格内是否存在目标,若存在则为1,否则为0;

$ P\left( {{\text{clas}}{{\text{s}}_i}|{\text{obj}}} \right) $——在存在目标的情况下,属于第$ i $类目标的置信度概率;

$ {\text{IoU}}_{{\text{pred}}}^{{\text{truth}}} $——计算预测框与真实框的交并比。

最后,通过非极大值抑制对获得的预测框进行筛选,得分高的预测框作为检测框。

1.3 YOLOv4在铝材缺陷检测中的问题

1)铝材缺陷数据集中存在着不同种类的复杂缺陷,对于算法的特征提取能力要求高。YOLOv4算法采取CSPDarknet53网络,同时引入SPP和PANet结构,加强了网络的特征提取能力,但是在铝材缺陷数据集中仍显不足,对于特征不明显的缺陷以及宽高比例大的缺陷容易漏检。

2)铝材缺陷数据集中既存在大目标,也存在小目标,原YOLOv4算法在检测时,很难同时兼顾大小目标的检测,小目标检测精度低。

2 改进的YOLOv4算法 2.1 SE模块

为了提高网络的特征提取能力,在网络中引入了挤压与激励模块(squeeze and excitation, SE)[15]。整体结构如图2所示。

图 2 SE结构

首先将输入Input进行挤压,通过全局平均池化,使得每个通道都被压成1×1的维度,接着通过全连接层去寻找各个通道间的相关性,比起一个全连接层,使用两个全连接层具有更多的非线性,可以很好地拟合各个通道之间地相关性,同时在参数量和计算量上也没有增加多少。然后通过sigmoid激活函数对各个通道权重进行归一化,最后再与输入进行scale操作,即各个通道权重与输入Input对应通道的二维矩阵相乘。

图3所示,是本文实际使用的SE模块,由于此处全连接和1×1卷积是等价的,为了统一,将2个全连接层都替换成1×1卷积,在权重归一化上,使用Hard-sigmoid激活函数来替代Sigmoid,前者是后者的近似,计算速度更快,不需要经过幂运算,能够在保证引入SE模块提高精度的同时,又不会带来复杂的运算,花费代价小。两种激活函数曲线如图4所示。

图 3 使用的SE结构

图 4 Sigmoid和Hard-sigmoid激活函数

2.2 改进SPP

YOLOv4网络中的最大池化层SPP,采取的是3个池化核,尺寸分别是5×5,9×9,11×11,具体实现是将输入特征图分别进行最大池化,将池化后的特征图与输入特征图进行通道拼接,即为输出结果。由于铝材缺陷数据集中存在着宽高比例大的缺陷,所以原池化核尺寸并不完全适用。本文将3个池化核改为2个,池化核尺寸分别为3×1和1×3,对应水平和垂直方向的特征信息,将水平和垂直方向的信息分别提取,然后再与原输入特征图拼接,这种方式更适用于铝材数据集,在对长条形缺陷进行池化时,能够保留短边的信息,改善训练效果。

2.3 改进PANet

图5是YOLOv4中的PANet结构示意图,P3、P4、P5是3个输入,表示特征提取网络输出的3个特征层,通过自底向上和自顶向下的方式进行连接,最后获得三个输出,P3_out、P4_out、P5_out。

图 5 PANet结构

改进PANet如图6所示,P3,P4,P5在经过卷积层后才进行拼接,其中P5不仅经过更多卷积层,还经过了SPP层,在进行拼接时,由于扩大了感受野,损失了很多浅层信息。为了保留更多的信息,将输入信息也拼接进来,即做一个通道维度上的拼接,这样能够融合更多的特征,不仅能优化对小目标的检测,网络整体的特征提取能力也获得提高。

图 6 改进PANet结构

2.4 改进后的YOLOv4整体结构

改进后的YOLOv4整体网络结构如图7所示,注意力机制SE模块被添加进了CSPResblock中,与之搭配,在主干网络的三个特征输出层后采用了Mish函数,有利于模型的训练,提高网络的特征提取能力。SPP模块中的3个池化核被2个尺寸分别为3×1和1×3的池化核替代,改善对于大宽高比缺陷的检测能力。PANet模块也进行了改进,将浅层输入信息与后续的输出进行拼接,整合了更多浅层的信息,有利于小目标的检测。

图 7 改进后的YOLOv4网络结构

3 实验与分析 3.1 铝材数据集

数据来自天池铝材缺陷数据集,数据中的缺陷是在真实工业环境下收集的,包含十种铝材表面缺陷,不导电(D1)、喷流(D2)、擦花(D3)、杂色(D4)、桔皮(D5)、漆泡(D6)、漏底(D7)、脏点(D8)、角位漏底(D9)及起坑(D10)。本文使用了2774张单瑕疵缺陷图,其中训练验证集(9:1)为1938张,测试集为836张。在数据增强上,采取了离线和在线增强的方式,通过翻转(上下、左右、同时进行)操作对训练集数据进行了离线数据增强,主要针对数量较少或尺寸较小(喷流、擦花、脏点、漆泡、桔皮)的缺陷类别进行增强,避免各类别间数量差距过大,在网络输入时也结合在线增强的方式进行训练,避免过拟合,提高训练效果。离线增强后的训练集见表1

表 1 训练集
缺陷类型图片数量包含缺陷数量
不导电273321
喷流240332
擦花356708
杂色255255
桔皮242246
漆泡228664
漏底376452
脏点364628
角位漏底241241
起坑284284
合计28594131

3.2 实验条件

实验是在windows10操作系统下进行的,使用的显卡为:NVIDIA GeForce RTX 3080,处理器为:英特尔Core i9-10900@2.80GHz。网络输入尺寸为256×256,训练时采用的是带预热的余弦退火算法,基础学习率和预热学习率均设置为0.0001,最终学习率为0.000001,训练的总轮次epoch设置为200,预热轮次epoch为40。

3.3 评价指标

为了评价算法的性能,引入了三个指标,分别是精确率($ {\text{precision}} $)、召回率($ {\text{recall}} $)以及平均精确率均值($ {\text{mAP}} $)。

精确率表示算法预测的准确性,召回率能衡量算法的查全情况,是否漏检。计算分别如式(8)、(9)所示。

$ {\text{precision}} = \frac{{{\text{TP}}}}{{{\text{TP}} + {\text{FP}}}} $ (8)
$ {\text{recall}} = \frac{{{\text{TP}}}}{{{\text{TP}} + {\text{FN}}}} $ (9)

式中:$ {\text{TP}} $——真正样本,即正样本预测为正;

$ {\text{FP}} $——假正样本,即负样本预测为正;

$ {\text{FN}} $——假负样本,即正样本预测为负。

平均精确率均值($ {\text{mAP}} $)表示各类缺陷平均精确率($ {\text{AP}} $)的平均值。$ {\text{AP}} $能够评判单个缺陷的精度,实际计算值为精确率-召回率($ P $-$ R $)曲线下方的面积。$ {\text{AP}} $$ {\text{mAP}} $的计算如式(10)、(11)所示。

$ {\text{AP}} = \int_0^1 {P\left( R \right)} {\rm d}R $ (10)
$ {\text{mAP}} = \frac{{\displaystyle \sum\limits_{i = 1}^{{N}} {{\text{A}}{{\text{P}}_i}} }}{{{N}}} $ (11)

式中:$ P $$ R $——精确率和召回率;

${{N}}$——缺陷的所有类别数量。

3.4 实验结果分析

为了衡量改进前后算法的检测性能,在测试集上进行了评估。表2为改进前后算法mAP的对比,从表中可以看出,改进后的YOLOv4算法在平均检测精度(mAP)上有了明显的提升。特别的,改进后的算法对喷流、擦花、漆泡等缺陷的检测精度提升明显。不足的是,虽然缺陷检测精度有所提高,但对于擦花、漆泡、脏点等缺陷的检测精度仍然处于较低水平。究其根源,擦花缺陷容易被铝材背景所掩盖,而且缺陷中间存在断续,影响了正常检测,而漆泡和脏点目标较小,即使算法进行了优化,仍然存在局限性,与背景相似时,检测难度更是倍增。

表 2 改进前后mAP对比
指标算法
YOLOv4Improved YOLOv4
AP/%不导电83.77 83.74
喷流59.80 73.11
擦花37.99 54.09
杂色100.0098.18
桔皮96.82 98.74
漆泡32.90 40.23
漏底92.23 93.85
脏点49.14 50.76
角位漏底100.00100.00
起坑99.94 100.00
mAP/%75.26 79.27

部分缺陷样例的检测示例效果如图8所示,分别用YOLOv4和本文算法进行检测。图中给出4类典型缺陷(易漏检),可以看出,本文算法检测出了更多的缺陷,检测效果更好,在漏检问题上有很大的优化。

图 8 检测效果示例展示

为了进一步验证本文提出的改进方法对YOLOv4算法的影响,进行了消融实验,对每个实验进行编号,编号为1~4,实验设置和结果分别见表3表4。实验1中使用的是原始YOLOv4算法,未进行改进。实验2在CSPResblock残差结构中引入了注意力机制SE模块,同时在各个特征层的输出卷积部分采取了Mish函数,与SE相搭配,有利于各个通道权重的训练,提高网络对重要信息的关注,对比实验1,可以发现,对于D3(擦花)和D6(漆泡)的检测精度AP提升明显,mAP提高了1.7个百分点。实验3对算法中的SPP模块进行了改进,分别采取1×3和3×1的池化尺寸进行最大池化,然后进行拼接,可以适应数据中存在的大量长条形缺陷,和实验2比较,可以发现,除了D6(漆泡)和D8(脏点)外,其余缺陷的AP值基本都获得了提高,这主要是由于这些缺陷宽高比例大,获得改善后,mAP提高了0.76个百分点。实验4对算法中的PANet结构进行了改进,在输出中融合了更多输入的信息,一定程度上改善了对小目标的检测能力,网络的特征提取能力也获得增强,对比实验3,可以发现,D2(喷流)、D6(漆泡)以及D8(脏点)的AP提高明显,主要是因为喷流、漆泡和脏点属于小尺寸的缺陷,得到改善后,mAP提高了1.55个百分点。由此可见,本文提出的改进方法确实有效地提高了算法的精度。

表 3 消融实验设置
编号引入SE改进SPP改进PANet
1
2
3
4

表 4 消融实验结果
编号AP/%mAP/%FPS/(帧·s-1)
D1D2D3D4D5D6D7D8D9D10
183.7759.8037.99100.0096.8232.9092.2349.14100.0099.94 75.2634.40
282.1959.5950.6998.18 98.5737.5692.1050.76100.00100.0076.9626.73
384.8761.0356.7599.97 98.8335.9893.0846.73100.00100.0077.7226.94
483.7473.1154.0998.18 98.7440.2393.8550.76100.00100.0079.2727.24

为了检测改进后算法的效果,将其与其他目标检测算法进行比较,对比结果见表5。从表中可知,改进后的YOLOv4算法在精度上优于其他算法,mAP达到了79.27%,FPS也达到了27.24,能够满足检测的需求。

表 5 目标检测算法对比
算法mAP/%FPS/(帧·s-1)
SSD30072.4688.55
Retinanet57.5250.57
Centernet67.6076.28
YOLOv371.7154.13
YOLOv475.2634.40
Improved YOLOv479.2727.24

4 结束语

本文提出了一种基于改进YOLOv4算法的铝材表面缺陷检测方法。对铝材数据集进行了数据增强,防止过拟合,有利于模型训练。引入注意力机制SE模块,使得网络关注关键特征,提高特征提取能力。改进SPP模块,分别使用1×3和3×1的尺寸进行最大池化,然后拼接,提高网络对于大宽高比缺陷的检测能力。最后,对PANet结构进行改进,融合更多浅层的信息,提高对小目标的检测能力。与YOLOv4相比,改进后的算法具有更高的精度,mAP达到了79.27%。但本文算法也存在着不足之处,在对擦花、漆泡、脏点的检测上,精度仍处于较低水平,还需进一步研究。

参考文献
[1]
DALAL N, TRIGGS B. Histograms of oriented gradients for human detection[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, 2005: 886-893.
[2]
LOWE D G. Distinctive image features from scale invariant key points[J]. International Journal of Computer Vision, 2004, 60(2): 581-588.
[3]
VAPNIK V N. The nature of statistical learning theory[J]. Technometrics, 1997, 8(6): 1564.
[4]
SUVDAA B, AHN J, KO J. Steel surface defects detection and classification using SIFT and voting strategy[J]. International Journal of Software Engineering and Its Applications, 2012, 6(2): 161-166.
[5]
郭慧, 徐威, 刘亚菲. 基于支持向量机的钢板表面缺陷检测[J]. 东华大学学报(自然科学版), 2018, 44(4): 635-639. GUO H, XU W, LIU Y F. Steel plate surface defect detection based on support vector machine[J]. Journal of Donghua University(Natural Science), 2018, 44(4): 635-639.
[6]
殷鹰, 谢罗峰, 黄泰博. 基于深度学习的磁瓦内部缺陷声振检测方法[J]. 中国测试, 2020, 46(3): 32-38. YIN Y, XIE L F, HUANG T B. A deep learning method for magnetic tile internal defect inspection based on acoustic vibration[J]. China Measurement & Test, 2020, 46(3): 32-38. DOI:10.11857/j.issn.1674-5124.2019050035
[7]
伊欣同, 单亚峰. 基于改进Faster R-CNN的光伏电池内部缺陷检测[J]. 电子测量与仪器学报, 2021, 35(1): 40-47. YI X T, DAN Y F. Internal defect detection of photovoltaic cells based on improved Faster R-CNN[J]. Journal of Electronic Measurement and Instrument, 2021, 35(1): 40-47.
[8]
彭伟康, 陈爱军, 吴东明, 等. 基于改进Faster R-CNN的水准泡缺陷检测方法[J]. 中国测试, 2021, 47(7): 6-12. PENG W K, CHEN A J, WU D M, et al. Defect detection method of level bubble based on improved Faster R-CNN[J]. China Measurement & Test, 2021, 47(7): 6-12. DOI:10.11857/j.issn.1674-5124.2020090072
[9]
程婧怡, 段先华, 朱伟. 改进YOLOv3的金属表面缺陷检测研究[J]. 计算机工程与应用, 2021, 57(19): 252-258. CHENG J Y, DUAN X H, ZHU W. Research on improving metal surface defect detection of YOLOv3[J]. Computer Engineering and Applications, 2021, 57(19): 252-258. DOI:10.3778/j.issn.1002-8331.2104-0324
[10]
吴越, 杨延竹, 苏雪龙, 等. 基于Faster R-CNN的钢板表面缺陷检测方法[J]. 东华大学学报(自然科学版), 2021, 47(3): 84-89. WU Y, YANG Y Z, SU X L, et al. Surface defect detection method for steel plates based on Faster R-CNN[J]. Journal of Donghua University(Natural Science), 2021, 47(3): 84-89.
[11]
李庆党, 李铁林. 基于改进YOLOv3算法的钢板缺陷检测[J]. 电子测量技术, 2021, 44(2): 104-108. LI Q D, LI T L. Steel plate defect detection based on improved YOLOv3 algorithm[J]. Electronic Measurement Technology, 2021, 44(2): 104-108.
[12]
REN S Q, HE K M, GIRSHICK R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[J]. IEEE transactions on pattern analysis and machine intelligence, 2016, 39(6): 1137-1149.
[13]
BOCHKOVSKIY A, WANG C Y, LIAO H Y M. Yolov4: Optimal speed and accuracy of object detection[C]//IEEE conference on Computer Vision and Pattern Recognition, 2020.
[14]
REDMON J, FARHADI A. Yolov3: An incremental improvement[C]//Proceedings of 2018 IEEE Conference on Computer Vision and Pattern Recognition, 2018: 1-6.
[15]
HU J, SHEN L, SUN G. Squeeze-and-excitation networks[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7132-7141.