印刷电路板是电子设备中至关重要的组成部分,在电子信息产业中占有重要地位。PCBA(PCB Assemble)通过表面封装工艺将各种电子器件组装在 PCB 上,而自动化检测 PCB 缺陷是未来制造业发展的主要方向之一。目前,在 PCB 检测行业中,对于一些无法通过外观检查发现的部位以及 PCB 通孔内部和其他内部缺陷,通常需要使用 X 射线透视系统进行检测。然而,X 射线设备效率低、检测速度慢、缺陷图像识别困难,因此快速、准确、自动地检测 PCBA 的内部缺陷对电子信息制造业至关重要。
在 PCB 检测领域,很多算法已经研究了基于传统机器学习和深度学习的 PCB 裸板表面缺陷检测方法。一些方法包括提取 PCB 缺陷区域相关的边界像素,将梯度方向信息作为特征向量进行缺陷分类与识别。这种方法能够识别 PCB 表面划伤、毛刺等缺陷,但在缺陷与背景环境对比度较低时存在难以检测的问题。另一种方法利用形态学来提取 PCB 缺陷区域进行缺陷分类,降低了缺陷识别的误判率。然而,在基于形状特征提取缺陷时,对形状差异较大的同类缺陷可能无法很好地识别。
一些研究者提出了改进模板匹配的 PCB 缺陷多级检测算法,以提高 PCB 缺陷检测的准确性。但是,这也带来了在缺陷与模板差异较大时检测准确度降低的问题。还有基于加速鲁棒特征和随机森林的机器学习方法,可以在没有正常图像的情况下对 PCB 进行缺陷检测,但无法处理不同尺度的缺陷和复杂多变的外部光照环境。另外,基于残差学习的思想设计的方法利用图像下采样方法对图像感受野进行扩大,提高去噪效率,解决了 PCB 图像检测清晰度不够的问题。
而将深度学习引入到PCB 缺陷检测中也是目前PCB 缺陷检一个主流方向。例如,有的论文提出一种双流卷积神经网络,通过使用两个焊料区域来检查表面贴装技术组装缺陷,但模型的复杂度和计算量也大大增加。还有一些研究究者提出了构建一个基于特征金字塔网络的增强特征提取网络,用于检测 PCB 缺陷,但检测精度受到一定限制。虽然深度学习已应用于 PCB 缺陷检测,但仍需进一步提高识别精度和识别速度。
在 PCBA 内部,常见的五类缺陷包括:
划痕: 表面或内部的 PCB 材料出现刮擦或磨损,可能导致信号传输问题。
断线: PCB 上的导线或连接点出现中断,可能导致电路中断,影响设备的正常工作。
短路: PCB 上不同电路之间发生短路,导致电流绕过原定路径,可能导致设备故障。
杂质: PCB 表面或内部出现异物或污染物,可能导致电路故障或不良连接。
气泡: PCB 制造过程中,可能出现与 PCB 材料不相容的气泡,可能导致信号干扰或机械强度降低。
PCBA板查看内部线路连接状况:
IC芯片内部是否存在分层:
X射线具备出色的穿透能力,足以穿透许多对可见光不透明的物体。其工作原理是通过阴极射线管产生高能电子,使其与金属靶发生碰撞。在这个过程中,电子突然减速,失去的动能以X射线的形式释放。通过记录X射线穿透不同密度物质后的光强度变化,可以生成对比效果的影像,展现待测物体的内部结构。这种非破坏性的成像技术允许在不影响待测物体完整性的情况下,观察并检测其内部存在的问题。这种应用广泛用于医学、工业和科学领域,提供了一种强大的工具来检查和诊断无法直接可视的区域。
YOLOv7 是 YOLO(You Only Look Once)系列中的最新版本目标检测算法。该算法在准确度和精度方面超越了以往的目标检测器,与 YOLOv5 类似。YOLOv7 网络主要由四个模块组成,分别是输入端(Input)、主干网络(Backbone)、颈部(Neck)和预测(Prediction):
输入端(Input): 输入图像经过像素一致化和数据增强等图像预处理操作,以满足主干网络的训练要求。
主干网络(Backbone): 主要负责图像的特征提取。包括多个 BConv 卷积层、E‐ELAN 卷积层、MPConv 卷积层和 SPPCSPC 融合层。其中,BConv 卷积层提取不同尺度的图像特征,E‐ELAN 卷积层通过引导不同特征组的计算块学习更多样化的特征,MPConv 卷积层融合正常 BConv 卷积处理的特征信息与 MaxPool 扩张感受野的特征信息,SPPCSPC 融合层解决了图像失真和重复特征提取的问题。
颈部(Neck): 由传统的 PAFPN 结构组成,实现了不同层次特征的高效融合,将浅层特征信息高效传递到深层。
预测(Prediction): 通过 REPConv 卷积层对 PAFPN 输出的大、中、小三个不同尺度的特征进行图像通道数调整,以进行检测类别和置信度的预测。
整个网络结构的设计旨在提高目标检测的准确性和效率,通过不同尺度的特征提取和融合,以及特定设计的卷积层,使得 YOLOv7 在处理目标检测任务时具有较高的性能。
对于 PCB 缺陷检测中缺陷尺寸小、模型功耗大、检测效率低的问题,文章采用了一种高效的卷积方法(SDConv),通过保持检测精度的同时减轻模型的负担,更好地平衡了模型的精度和速度。SDConv 的设计如下:
高维通道映射: 利用 BConv 将输入特征映射到高维通道。这有助于更好地表达特征信息,提高检测精度。
分组通道划分: 将特征图分为两组通道,按照1∶4的比例划分。这一步的设计灵感来自 MobileNetV2 中的深度可分离卷积(DWConv)。
深度可分离卷积: 一组通道采用深度可分离卷积,这有助于减轻模型的内存消耗和计算负担。深度可分离卷积分为深度卷积和逐点卷积两个阶段。
融合操作: 另一组通道保留本身,并对深度可分离卷积的两个特征图进行融合操作。这有助于充分利用深度可分离卷积的优势。
Channel Shuffle: 最后进行 channel shuffle 操作,实现通道信息的交互。这一步可以提高特征图的表达能力。
这一设计使得 SDConv 在保持检测精度的前提下,更好地平衡了模型的复杂度和检测速度。特别是对于 PCB 缺陷检测任务,其中缺陷尺寸较小,SDConv 的设计有望在提高检测性能的同时降低模型功耗和提高检测效率。
对于 PCB 缺陷检测中缺陷尺寸小、模型功耗大、检测效率低的问题,提出了一种高效的卷积方法(SDConv),通过保持检测精度的同时减轻模型的负担,更好地平衡了模型的精度和速度。SDConv 的设计如下:
高维通道映射: 利用 BConv 将输入特征映射到高维通道。这有助于更好地表达特征信息,提高检测精度。
分组通道划分: 将特征图分为两组通道,按照1∶4的比例划分。这一步的设计借签了MobileNetV2 中的深度可分离卷积(DWConv)。
深度可分离卷积: 一组通道采用深度可分离卷积,这有助于减轻模型的内存消耗和计算负担。深度可分离卷积分为深度卷积和逐点卷积两个阶段。
融合操作: 另一组通道保留本身,并对深度可分离卷积的两个特征图进行融合操作。这有助于充分利用深度可分离卷积的优势。
Channel Shuffle: 最后进行 channel shuffle 操作,实现通道信息的交互。这一步可以提高特征图的表达能力。
在主干网络中,进行多次空间信息向信道信息的传输可能导致语义信息的部分丢失。为了更多地保留每个信道之间的连接,这里选择使用 SDConv 进行替换。由于 SDConv 可以减轻模型的负担,提高检测精度,同时为了加快预测的计算速度,在图像宽度和高度尺寸较小的 Neck 层使用 SDConv 进行替换。
此外,由于在 PCB 缺陷检测中,缺陷尺寸相对较小,Neck 区域对大尺度目标的检测部分显得多余。为了减少模型的计算量,这里参考了Yolo-tiny网络的设计思路,删除了大尺寸检测对象的特征图分支。改进后的结构如图 4 所示,其中将 Neck 区域 E‐ELAN 卷积层和 MPConv 卷积层中的 BConv 替换为 SDConv,并分别命名为 E‐ELAN‐SD 和 MPConv‐SD 以示区分。这一改进结构在提高检测精度的同时,降低了计算复杂度,适应了 PCB 缺陷检测任务的特点。
针对 YOLOv7 网络中缺乏注意力机制的问题,加入空间金字塔池化模块 SPPCSPC 中引入注意力机制的方法。这种方法通过结构简单、计算成本低的 ACmix 注意力模块,增强网络对于不同尺度目标的注意力,从而显著提高模型的准确性。
ACmix 注意力模块首先通过 1×1 卷积将输入映射到 N 个子特征,然后进行两个不同分支的处理。上分支是卷积注意力部分,通过全连接层进行通道扩展,对生成的特征进行偏移、聚合和卷积处理。下分支是自注意力部分,与传统的自注意力机制一致。最终,两个分支的输出特征通过权重参数 α \alpha α 和 β \beta β 进行融合,公式如下:
F o u t = α × F a t t + β × F e o n v \mathrm{Fout}=\alpha\times\mathrm{Fatt}+\beta\times\mathrm{Feonv} Fout=α×Fatt+β×Feonv
其中, F o u t Fout Fout 代表输出特征图, F a t t Fatt Fatt 和 F c o n v Fconv Fconv 分别代表自注意力处理后的特征图和卷积处理后的特征图,其中 α \alpha α 和 β \beta β 的参数值分别为 0.6 和 1.2,侧重于卷积注意力对尺度信息的表现能力。
在 SPPCSPC 模块中,这里引入则引入 ACmix 模块,将其放在 SPP 结构处理后。这样可以有效地对 4 个不同尺度的感受野赋予不同的权重,提高小尺度目标的识别能力。整个改进结构如图 5 所示。这一改进结构在提高精度的同时降低了计算量,对于 PCB 缺陷检测任务具有明显的优势。
YOLOv7 的损失函数包含置信度损失、分类概率损失和边界框回归损失三部分,公式如下:
L o s s o b j e c t = L D S S c o n f + L o s s c l a s s + L D S S t o g ( 2 ) {\bf L o s s}_{\mathrm{object}}={\bf L}_{\mathrm{DSS}_{\mathrm{conf}}}+{\bf L o s s}_{\mathrm{class}}+{\bf L}_{\mathrm{DSS}_{\mathrm{tog}}}~~~~~~~(2) Lossobject=LDSSconf+Lossclass+LDSStog (2)
置 信 度 损 失 和 分 类 概 率 损 失 采 用 BCEWith ‐LogitsLoss 函数进行预测,边界框回归损失采用 CIoU函数进行预测,计算公式如下:
L c l o l = 1 − I o U + ρ 2 ( b , b s t ) c 2 + α v ( 3 ) {\cal L}_{\mathrm{clol}}\,=\,1\,-\,\mathrm{IoU}\,+\,\frac{\rho^{2}\bigl(b,b^{\mathrm{st}}\bigr)}{c^{2}}\,+\,\alpha v\qquad\qquad(\,3\,) Lclol=1−IoU+c2ρ2(b,bst)+αv(3)
v = 4 π 2 ( a r c t a n w g t h g t − a r c t a n w h ) 2 ( 4 ) v\,=\,\frac{4}{\pi^{2}}\!\left(\mathrm{arctan}\,\frac{w^{\mathrm{gt}}}{h^{\mathrm{gt}}}\,-\,\mathrm{arctan}\,\frac{w}{h}\right)^{2}\qquad\qquad(\,4\,) v=π24(arctanhgtwgt−arctanhw)2(4)
α = v ( 1 − I o U ) + v ( 5 ) \alpha\,=\,\frac{v}{\left(\,1\,-\,\mathrm{IoU}\,\right)\,+\,v} \qquad\qquad(\,5\,) α=(1−IoU)+vv(5)
公式(5)中, ρ \rho ρ 代表两个中心点之间的欧氏距离; b \textstyle b b和 b g t \textstyle b_{g t} bgt分别代表预测框和真实框的中心点; c \textstyle c c 表示能够同时包含预测框和真实框的最小闭包区域的对角线距离; w \textstyle w w 和 w g t \textstyle w_{gt} wgt 分别代表预测框和真实框的宽度; h \textstyle h h和 h g t \textstyle h_{gt} hgt 分别代表预测框和真实框的高度;IoU 是预测框和真实框之间的交集和并集之比; α \alpha α 用于平衡参数; v \textstyle v v 用来衡量长宽比是否一致。
从公式(5)可以看出,当预测框与真实框的长宽比一样大时, v \textstyle v v 取 0,此时长宽比的惩罚项并没有起到作用,CIoU 损失忽略了宽、高分别与其置信度的真实差异,不利于损失函数的稳定表达。
为了解决这一问题,SIoU 损失考虑了所需回归之间的向量角度、距离和形状,增加了角度成本、距离成本和形状成本,有效减少了总自由度,降低了惩罚项为 0 出现的概率。其计算公式如下:
L s t o t = 1 − I o U + Δ + Ω 2 ( 6 ) L_{\mathrm{stot}}=1\,-\,\mathrm{IoU}\,+\,\frac{\Delta\,+\,\Omega}2\,\qquad\qquad(6) Lstot=1−IoU+2Δ+Ω(6)
Λ = 1 − 2 s i n 2 ( a r c s i n x − r i n ) ( 7 ) \Lambda\;=\;1\;-\;2\;\mathrm{sin}^{2}\Big(\mathrm{arcsin}\;x\;-\;\mathrm{rin}\;\Big)\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;(7) Λ=1−2sin2(arcsinx−rin)(7)
γ = 2 − Λ ( 8 ) \gamma\,=\,2\,-\,\Lambda\,\qquad\qquad\qquad\qquad\qquad(\,8\,) γ=2−Λ(8)
Δ = ∑ t = x , y ( 1 − e − γ ρ t ) ( 9 ) \Delta\ =\sum_{t=x,y}\left(1\ -\ \mathrm{e}^{-\gamma\rho_{t}}\right)\qquad\qquad\qquad\qquad\qquad\left(\mathbf{9}\right) Δ =∑t=x,y(1 − e−γρt)(9)
Ω = ∑ ι = w , h ( 1 − e − w t ) θ ( 1 0 ) \begin{array}{l l l l l l l}{{\displaystyle{\cal{Ω}}=\sum_{\iota\,=\,w,h}\left(\,1\:-\:\mathrm{~e^{-w_t}~}\right)^{\theta}}}&{{\;\;\;}}&{{\;\;\;}}&{{\;\;\;}}&{{\left(\,1\,0\,\right)}}\end{array} Ω=ι=w,h∑(1− e−wt )θ(10)
公式中,Λ、Δ 和 Ω 分别代表角度成本、距离成本和形状成本;γ 表示被赋予时间优先的距离值;θ 代表形状损失的关注程度; ρ x ρ_{x} ρx和 ρ y ρ_{y} ρy代表预测框和真实框中心点与对角线距离的比值的平方; w w w_{w} ww 代表预测框与真实框宽度差值的绝对值与最大值的比; w h w_{h} wh代表预测框与真实框高度差值的绝对值与最大值的比。
由于角度成本的增加,使得损失函数收敛更加平稳,改善了回归精度,从而降低了预测误差,因此采用性能更优的 SIoU 损失作为边界框回归损失函数。
在实际工业生产中,由于待测PCB位置误差、相机拍摄角度等不确定因素的影响,采集到的PCB待测图与模板图在空间上通常不完全对齐。因此,在进行缺陷检测之前,需要对待测图和模板图进行配准,以确保后续差分运算和缺陷检测的准确性。
目前,图像配准算法主要分为三大类。第一类是基于获得图像的灰度状况,通过得到图像的灰度特征并量化,以此为依据进行配准。尽管这种基于灰度的配准方法实现简单,但计算量较大,而且受光照强度影响较大,使用范围有限。第二类是通过获取图像的局部像素变化,检测并记录图像的特征角点,然后以这些特征角点为关键点(KeyPoint)进行图像配准。尽管这一过程相对较为复杂,但它具有高配准精度、良好的抗噪性和不易受光照影响的特点。第三类是基于变换域的图像配准算法,其抗噪性较好,但配准时计算量大,配准过程耗时较长。
ORB(Oriented FAST and Rotated BRIEF)算法是一种用于特征点提取和描述的算法,具有计算速度快的特点。相比于其他经典算法如SIFT和SURF,ORB的计算速度更快,仅为SIFT的1%和SURF的10%。在图像配准中,ORB算法能够有效地提取特征点并描述其周围区域,从而实现图像的对齐。
ORB算法的基本步骤如下:
在图像预处理阶段,首先对整幅待测图进行二值化处理,然后依次采用直方图均衡化、Laplace图像锐化和中值滤波进行图像增强。这些操作有助于促进缺陷与背景的分离,提高图像质量。直方图均衡化和Laplace图像锐化通常用于增强图像的对比度和轮廓,而中值滤波则可有效滤除由图像增强引入的椒盐噪声。
通过比较自适应阈值分割法与全局阈值分割法的分割效果,选择了自适应阈值分割算法来对PCB图像进行分割。这有助于减小PCB表面各处亮度差异对图像分割效果的影响。处理后的待测图PCB边界清晰,分割效果良好,为接下来的图像差分操作提供了良好的基础。
对采集到的标准图像进行对比度调整、灰度化和二值化,将处理结果存储为模板。这一步旨在提高缺陷检测效率。差分操作通过比较待测图和模板,能够有效提取出缺陷信息。差分后的图像展示了伪铜缺陷的清晰轮廓,但可能存在一些连通域问题、缺陷信息不全以及较暗的轮廓噪点。
进行了中值滤波和均值滤波来去除图像中的噪声,然后进行闭运算以消除单个缺陷内部的孔洞,使单个缺陷恢复为单连通。这一处理步骤有助于进一步凸显缺陷的形状。为了消除图像上的孤立噪点,再次采用中值滤波和均值滤波,进一步优化图像。随后,采用较大的全局阈值对图像进行二值化,以凸显缺陷信息。这一过程有助于最终的缺陷检测。