Py学习  »  机器学习算法

【深度学习】YOLO-HMC:一种改进的印刷电路板表面缺陷检测方法

新机器视觉 • 2 周前 • 22 次点击  


YOLO-HMC:一种改进的印刷电路板表面缺陷检测方法


作者:Minghao Yuan, Yongbing Zhou, Xiaoyu Ren, Hui Zhi, Jian Zhang, Haojie Chen


论文创新点

  1. 提出新型YOLO-HMC框架:论文提出了基于改进YOLOv5的YOLO-HorNet-MCBAM-CARAFE(YOLO-HMC)框架,在保证检测精度和速度提升的同时,实现了网络模型的轻量化,能够更准确、高效地识别微小尺寸的PCB缺陷。
  2. 改进骨干网络骨干部分采用HorNet结构,通过递归门控卷积和深度可分离卷积等操作,增强了特征提取能力,深化了信息交互,有效提高了网络对复杂背景下微小缺陷特征的分辨率。
  3. 优化注意力机制:设计了改进的多卷积块注意力模块(MCBAM),它将输入图像划分子空间矩阵,提取子空间最大响应值并进行空间信息聚合和通道注意力计算,提升了模型从相似PCB基板背景中突出缺陷位置的能力 。


摘要

印刷电路板(PCB)在制造过程中产生的表面缺陷会对产品质量产生不利影响,进而直接影响设备性能的稳定性和可靠性。然而,由于PCB布局紧凑,在复杂背景下准确识别其表面的微小缺陷仍面临巨大挑战。为解决这一问题,本文提出了一种基于改进YOLOv5框架的新型YOLO-HorNet-MCBAM-CARAFE(YOLO-HMC)网络,以更少的模型参数更准确、高效地识别微小尺寸的PCB缺陷。首先,骨干部分采用HorNet来增强特征提取能力并深化信息交互。其次,设计了一种改进的多卷积块注意力模块(MCBAM),以提高模型从高度相似的PCB基板背景中突出缺陷位置的能力。第三,使用内容感知特征重组(CARAFE)取代上采样层,在大感受野中充分聚合PCB图像的上下文语义信息。此外,针对PCB缺陷检测与自然检测的差异,对原始模型检测头(DH)进行了优化,以确保YOLOv5能够准确检测PCB微小缺陷。在PCB缺陷公开数据集上进行的大量实验表明,与几种最先进的模型相比,该模型具有显著优势,其平均精度均值(mAP)可达98.6%,验证了所提出的YOLO-HMC的准确性和适用性。


三、方法

YOLOv5在各种目标检测任务中广受欢迎。但与包含多种尺寸检测目标的自然检测任务相比,PCB检测任务中的微小尺寸缺陷远小于其他尺寸的缺陷。缺陷图像与无缺陷图像的颜色和形状难以区分,这导致在产品质量检测过程中误报率和漏检率较高。因此,有必要根据PCB制造的实际工业质量检测要求,进一步提高YOLOv5的检测精度和速度。


(一)YOLO-HMC的总体框架

如图1所示,作者设计了一种基于改进YOLOv5的新型YOLO-HMC框架,它由用于特征提取的骨干部分、用于特征融合的颈部部分和用于最终识别结果的检测头(DH)部分组成。

图片

由于PCB基板上分布着大量微小尺寸的焊盘、过孔和密集的走线,这对模型准确提取关键缺陷特征造成了一定干扰。这个问题通常通过提高网络模型的通道和空间注意力来解决。Zheng等人在网络中添加了坐标注意力(CoordAtt)模块和HorBlock模块,以在通道域和空间域增强特征提取过程的有效特征,削弱无效特征,从而适应复杂背景。基于YOLOv7架构,Chen等人通过HorBlock的全局滤波生成空间和频域特征,提高了算法在皮革缺陷数据集上的准确性。在本文中,使用C3HB模块的递归门控卷积结构,在特征区域提取前后增强显式空间交互,使提取的特征信息包含更丰富的语义信息,增强了网络模型在复杂PCB背景下的抗干扰能力。

在YOLOv5的颈部部分,原始模型无法在PCB复杂背景下快速准确地定位缺陷目标,因为缺陷仅占据电路板的一小部分,难以快速捕捉。因此,之前一些学者在特征处理前引入了CBAM注意力机制,以突出缺陷特征信息。Chen和Dang将CBAM注意力机制与特征融合模块相结合,使模型能够有选择地关注相关特征通道和空间位置,从而增强特征表示的判别能力。然而,当前的CBAM模块常常仅对整个特征区域中响应最大的特征值提供反馈,这使得它无法同时满足PCB缺陷检测过程中对多个具有相似特征的微小缺陷目标的检测要求。因此,需要对CBAM进行自适应改进,以增强对多目标问题的检测性能。

通过多次上采样、下采样和卷积操作,颈部部分融合了浅层特征的位置信息和深层特征的语义信息,增大了整体感受野,获得了更丰富的特征表达。然而,原始模型中的上采样模块扩展特征信息的能力较弱,在这个过程中容易丢失深层特征信息。为解决这个问题,使用CARAFE模块,Yang等人在大感受野中集成上下文语义信息,并集成额外的大检测层以增强对小目标的检测。Liu等人使用PVT v2B2-Hi作为骨干网络,并使用CARAFE上采样模块丰富缺陷目标的语义特征,以提高算法对PCB缺陷的判别能力。因此,作者引入了能够根据输入特征输出相应上采样特征图的CARAFE模块,以减少信息丢失,优化网络特征处理结果。

在原始模型的头部部分,设计了三个具有不同下采样倍数的检测头,分别用于检测大、中、小目标。与自然检测任务不同,PCB缺陷检测主要针对大量微小尺寸的目标。YOLOv5中的大、中型物体检测头会过度压缩这些小缺陷目标,导致在特征提取过程中缺陷目标的特征信息丢失,这对检测精度产生了负面影响。因此,本文保留了更适合检测微小缺陷的小目标检测头,舍弃了其他检测头及相应的特征处理结构。


(二)改进内容描述

基于HorNet的特征提取方法:在PCB缺陷检测过程中,存在大量无缺陷元素,且检测目标区域与基板背景的区分度较低,这会对提取的特征信息造成严重干扰,从而严重影响缺陷特征提取效果。

如图2所示,检测图像中的各种组件排列密集紧凑。在从检测图像中提取深度信息的过程中,通道维度()会加深,特征图的高度和宽度()会被压缩。同时,为确保网络模型感受野的稳定性,特征提取结构中卷积核的大小不会有明显变化,这导致卷积核在卷积计算过程中会将缺陷结构周围较大区域的无缺陷结构带入计算。这些无缺陷结构与缺陷结构相似且排列密集,严重干扰了卷积网络的特征提取结果。

图片

为解决这个问题,作者引入C3HB模块来增强模型的特征提取能力。与C3模块相比,C3HB添加了HorNet结构。HorNet的主要结构是轻量级卷积操作深度可分离卷积(DWConv),它仅需传统卷积三分之一的计算量就能达到与传统卷积相同的效果。如图3所示,当输入特征进入HorNet时,首先通过卷积增加维度,然后按照预定比例分为两组特征图经过DWConv结构后,输出多组子特征图。随后,进行点积运算,并通过卷积增加维度得到。重复这个迭代过程,直到最后一个子特征图。通过上述多次信息交互,HorNet通过生成自加权参数连接特征信息,使网络模型获得具有更强语义信息的高阶深度特征,有效提高了网络的分辨率。

图片

假设输入,HorNet的过程可以用以下公式表示:

其中,函数表示卷积操作,函数表示深度可分离卷积,表示HorNet过程中设置的空间阶数。

基于CBAM的注意力机制:由于PCB中背景和缺陷区域难以区分,快速缺陷检测对检测模型来说成为一项具有挑战性的任务。鉴于此,本研究将CBAM模块融入骨干层,以增强模型对关键区域的关注。如图4所示,与仅关注通道特征的传统注意力机制(如SENet)相比,CBAM结合了空间和通道两个层面,通过双重注意力有效地提高了各种模型的检测性能。

图片

值得注意的是,CBAM主要强调整个图像的最大响应值对模型的影响,而实际检测过程通常涉及多个目标的识别。如果不进行改进,很容易遗漏一些缺陷。因此,本文提出了MCBAM来解决这个问题,如图4所示。首先,MCBAM会将输入图像在不同空间划分为的子空间矩阵,其中是每种缺陷类型的平均缺陷数量。相关计算如公式(5)所示。其次,对每个子空间中的最大响应值进行一次提取,以确保模型能够以这种形式快速注意到子空间中的缺陷。然后,通过两个平均池化层聚合特征图的空间信息。通道注意力机制通过共享的全连接层压缩输入特征图的空间维度,对每个元素求和并归一化,生成通道注意力图。

的计算如下:

其中,表示缺陷类型的数量,表示第种缺陷的第个图像样本中的缺陷数量,表示第 种缺陷的图像样本总数。

上采样方法 - CARAFE:上采样是神经网络中广泛使用的方法之一,包括线性插值上采样、基于深度学习的转置卷积上采样等方法。YOLOv5采用最近邻上采样方法。原始的上采样方法仅考虑最近的像素,忽略了其他相邻像素的信息以及像素之间的平滑关系。在这个过程中,相邻区域之间容易变得模糊,尤其是当相邻像素的像素值接近时,容易出现色块现象。如残铜和短路等缺陷在图像上显示为细小的绿色条纹,且缺陷周围的电路结构在颜色和形状上与它非常相似。

如图5所示,CARAFE的结构分为两个模块:上采样核预测和特征重构。与最近邻上采样方法相比,CARAFE根据输入特征设计匹配的上采样核,然后基于预测的上采样核进行特征重组。CARAFE具有更大的感受野。在面对如PCB缺陷检测这样密集的检测任务时,它可以通过上下文聚合全局特征,并输出更有利于检测的上采样结果。

图片


四、实验与结果

图片
图片


声明

本文内容为论文学习收获分享,受限于知识能力,本文对原文的理解可能存在偏差,最终内容以原论文为准。本文信息旨在传播和学术交流,其内容由作者负责,不代表本号观点。文中作品文字、图片等如涉及内容、版权和其他问题,请及时与作者联系,作者将在第一时间回复并处理。



本文仅做学术分享,如有侵权,请联系删文。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/179311
 
22 次点击