基于改进YOLOv4算法的铝型材表面缺陷检测*
2022-11-25杨畅畅李慧玲潘广通
杨畅畅,李慧玲,潘广通
(湖北汽车工业学院电气与信息工程学院,十堰 442002)
0 引言
铝型材广泛应用于汽车、轨道交通、航空航天、建筑等行业,在中国经济高速发展的背景下,其需求不断增加[1]。铝型材生产过程中受到材料特性和加工工艺等因素影响,使得表面产生缺陷,对产品质量造成影响。因此,铝型材在出厂之前,需要进行严格的表面质量检测。
随着工业自动化的快速发展,基于机器视觉的检测系统以其无接触测量且准确的优点迅速应用于表面缺陷检测[2-3],与人工检测相比,其检测效率高、成本低、效果更好。早期利用机器视觉进行表面缺陷检测,主要是通过对缺陷照片进行图像处理提取缺陷特征,这类方法能对特定缺陷较准确的进行检测[4-6]。但对于缺陷形态较多的铝型材表面缺陷,存在特征提取工作复杂、泛化性差的问题。
随着计算机算力的提高以及各种优秀深度学习网络的不断发展,表面缺陷检测逐渐转变为基于深度学习的缺陷检测。其中以YOLO为代表的One-stage检测算法[7-8],采用回归机制对图像中的目标进行直接检测,检测效率高,效果好,目前在实时缺陷检测领域得到了广泛研究与应用。刘浩等[9]对YOLOv3算法进行改进并应用在机床刀具表面缺陷检测上,代替现有人工目检对刀具进行缺陷检测;孙永鹏等[10]提出一种轻量化YOLOv4算法应用于冲压件缺陷检测,通过将主干网络替换成改进后的MobileNetV3网络,提高了检测速率;ZHAO等[11]在YOLOv4架构的基础上进行创新,在模型颈部添加特征金字塔网络模块,提高了对金属材料表面缺陷的检测精度;庾彩红等[12]将YOLOv4算法应用在空心杯电枢表面缺陷检测中,实现了较好的检测效果。
上述研究将YOLO系列算法应用在表面缺陷检测上,避免了繁杂的特征提取工作,具有较好的泛化性和检测效果。但是铝型材中存在脏点、擦花等类型缺陷,相较其他类型缺陷,其在图像中所占像素面积过小且特征不明显,YOLO模型对这类表面缺陷检测精度仍有待提高。为此本文提出一种改进YOLOv4的铝型材表面缺陷检测方法,在颈部网络PANet结构中增加与主干网络中的浅层特征层融合以提升对较小表面缺陷目标的检测精度,并在网络中嵌入通道注意力机制模块SENet增加有用特征权重[13],抑制无用特征权重,进一步提升网络性能。最终通过对比实验,验证改进方法的可行性。
1 YOLOv4算法概述
YOLOv4[14-15]模型主要包含4个主要部分,分别为CSPDarkNet53特征提取主干网络、SPP空间金字塔池化层、PANet特征融合网络、YOLO head网络预测头部分,如图1所示。
图1 YOLOv4网络结构
输入尺度大小为416×416的铝型材表面缺陷图像进入CSPDarknet53主干网络进行5次下采样,不断提取目标的特征信息,从浅层P1层到达深层P5层获得尺度分别为208×208,104×104,52×52,26×26,13×13的特征层[15]。在最后一个特征层输出之后加入SPP空间金字塔池化层,分别利用13×13,9×9,5×5,1×1(无处理),4个不同尺度的最大池化进行处理。经过SPP模块处理后,能够更好地增强感受野,分离出更显著的图像特征。
PANet是一种实例化分割算法,通过上采样和下采样两部分结构反复进行特征提取,获取信息更为丰富的特征层。YOLOv4延续了YOLOv3预测思想,采用了先验框机制,将得到的特征图划分为S×S个网格,使用K-means均值聚类算法在每个尺寸的特征图上生成3个先验框,通过对先验框内目标信息进行分析,最终确定预测框。预测框示意图如图2所示。
图2 预测框示意图
预测框位置如式(1)~式(4)所示。
bx=σ(tx)+cx
(1)
by=σ(ty)+cy
(2)
bw=pwetw
(3)
bh=pheth
(4)
式中,Cx,Cy为网格坐标,是距离左上角顶点的偏移量;Pw,Ph为先验框的宽度和高度;bw,by为实际预测框的宽度和高度;tx,ty为目标中心点相对于该点所在网格左上角的偏移量;σ为归一化函数Sigmoid,使偏移量范围限制在[0,1]之间;tw,th为预测框的宽和高。通过设置置信度阈值,筛选并淘汰达不到要求的预测框,最后采用非极大值抑制方法调整先验框确定最终预测框。
2 算法改进方案
2.1 嵌入通道注意力机制SENet
基于YOLOv4算法对铝型材表面缺陷进行特征提取时,对于图像各个通道以相同的权重进行信息提取,导致对特征不明显的铝型材表面缺陷检测精度较低。SENet通过获取输入特征层的每一个通道的权值,根据权值大小对通道信息进行筛选,以增强网络对有用信息的提取。SENet结构如图3所示。
图3 SENet网络结构图
其工作过程可分为3部分:①进行压缩操作,使用全局平均池化使单个通道的特征层池化为具体的数据;②进行激励操作,赋予两层全连接层各自一个权重值,以创建不同通道之间的依赖性;③为权重赋值操作,采用Sigmoid函数归一化权重使之范围固定在[0,1],再将获得的权值乘上原先输入的特征层完成加权工作[13]。具体实现如式(5)~式(7)所示:
(5)
s=Fex(z,w)=σ(g(z,w))=σ(w2δ(w1z))
(6)
xc=Fscale(uc,s)=sc⊗uc
(7)
式中,z为压缩通道得到的权重;uc为每一个特征通道;w1,w2为全连接操作权重;δ为激活函数ReLU;σ为归一化函数Sigmoid;⊗为逐个元素相乘,通过以上方式实现对通道的权重赋值。
2.2 改进特征检测网络
YOLOv4中PANet结构可以将不同特征层的语义信息进行融合补充,当输入铝型材表面缺陷图像尺寸大小为416×416时,特征图的尺寸大小分别为原图像大小的1/8(52×52)、1/16(26×26)、1/32(13×13)。但由于铝型材产品的表面缺陷存在脏点这种在图像中占比尺寸小的表面缺陷,YOLOv4原有的PANet结构对这类缺陷检测能力差。所以本文在原始特征层基础上将浅层特征和深度特征融合,获取尺度大小为原图像大小1/4(104×104)的新特征图,增大特征检测尺度以提高对铝型材表面缺陷的检测能力,由于自浅到深路径增强结构对小目标缺陷检测发挥作用有限[16],同时防止增加尺度后检测速度降低,因此去除自浅到深的路径增强结构。结合嵌入通道注意力模块SENet,得到改进部分网络结构如图4所示。
图4 YOLOv4改进部分网络结构图
通道注意力模块SENet作为一个即插即用的模块,可以嵌入任意卷积层中,由于主干网络所用的特征是后续网络的基础,为了防止破坏主干网络部分的权值,将通道注意力机制模块嵌入在PANet的输出位置,可以提高YOLO Head特征信息提取能力,进而提升整个网络的性能,同时其参数量小,仅增加4.1 MB的参数量。
3 实验及结果分析
3.1 实验环境及参数设定
实验所用的操作系统为Windows10系统;CPU为酷睿i5 10300H;GPU为NVIDIA GeForce GTX1650;采用PyTorch深度学习框架搭建网络。迭代轮数Epochs为300轮,IOU阈值为0.5,学习率为0.001,Batchsize设置为4。
3.2 数据集
铝型材表面缺陷数据集来源于某平台,缺陷图像采集于某铝型材厂有限公司。实验使用缺陷图像经过筛选以及使用旋转、噪声、增亮等数据增强手段获取缺陷图片共4056张,包含“擦花”、“碰凹”、“凸粉”、“脏点”4种缺陷。其中3635张有缺陷,421张无缺陷,并根据VOC2007建立数据集格式,按照9:1的比例划分为训练集和检测集。使用标注工具labelImg对铝型材表面缺陷图像中缺陷目标加以标注,图5是部分表面缺陷标注图像。
(a) 擦花 (b) 碰凹(c) 凸粉 (d) 脏点
3.3 评价指标
本文采用平均精度AP、分类平均精度mAP来衡量算法的检测性能。具体计算表达式为:
(8)
(9)
(10)
(11)
式中,P为精确率;TP为正样本中检测结果为正确的缺陷数目;FP为负样本中误检测为正确的缺陷数目;R为召回率;FN为正样本中误检测为缺陷的数目;AP为各类缺陷精度;mAP为所有类别检测精确率的均值。
3.4 实验及结果分析
为了验证嵌入注意力机制SENet和改进特征网络的检测效果,在实验中设置原YOLOv4算法;YOLOv4-a:单改进特征层网络不嵌入注意力机制;YOLOv4-b:改进特征层网络并嵌入注意力机制。通过3组实验进行对比。得到3种算法训练过程mAP对比曲线如图6所示。
图6 训练mAP值对比图
可以看出,YOLOv4-a和YOLOv4-b算法整体mAP比原YOLOv4算法要高,且在精度变化上随着Epochs轮数增加比原YOLOv4表现出更好的稳定性。训练的每个类别缺陷的AP和mAP值如表1所示。
表1 各类别缺陷精度结果对比表 (%)
可以看出,提出的YOLOv4-a算法较原YOLOv4算法在mAP上提高了5.3%,在嵌入注意力机制模块后YOLOv4-b算法较原YOLOv4算法mAP提高了7.84%。对比各个类别缺陷的检测精度,YOLOv4-a和YOLOv4-b的mAP都较原算法有所提升,尤其在脏点这类小目标缺陷上,YOLOv4-a较原算法提升了13.67%,YOLOv4-b较原算法提升了17.49%。
对比文中算法与YOLOv3、YOLOv4算法的mAP与检测速度,结果如表2所示。
表2 不同算法检测性能对比
可以看出,本文提出的YOLOv4-b算法检mAP相较YOLOv3算法提升了13.36%,检测速度提升了5.67 fps。相较于YOLOv4算法在检测速度上由于删去自浅到深的路径增强结构,因此在增加特征融合层的情况下,检测速度并没有损失。YOLOv4-b增加了通道注意力机制模块检测精度进一步提升了2.54%,虽然损失了少部分检测速度,但是32.8 fps的检测速度足够满足工厂实时检测要求。部分缺陷检测结果如图7所示。
(a) 擦花检测 (b) 碰凹检测 (c) 凸粉检测 (d) 脏点检测
由此可知,本文提出的YOLOv4-b算法在检测精度和检测速度上都取得了良好的效果,可以实现对铝型材表面缺陷的准确检测。
4 结论
本文将改进YOLOv4算法引入铝型材表面缺陷检测中,并设计实验验证改进方法的有效性。结论如下:
(1)在颈部网络PANet中增加与浅层特征层融合,提高了模型对于小尺度缺陷目标的检测能力;为了进一步提升检测精度在网络中嵌入通道注意力机制SENet,最终mAP值提高到94.87%。改进后的算法相较原算法在各类缺陷的检测精度上都有提高。
(2)在检测速度方面,改进后的YOLOv4算法相较原算法损失0.96 fps,但也达到32.8 fps,满足工业生产现场检测实时性要求。
(3)改进后的YOLOv4算法满足铝型材生产现场表面缺陷检测的精度与速度要求,同时对于有类似问题的缺陷检测领域具有一定的借鉴意义。