谢 黎, 袁小芳*, 尹柏鑫
(1.湖南大学 电气与信息工程学院,湖南 长沙 410082;2.湖南大学 机器人视觉感知与控制技术国家工程实验室,湖南 长沙 410082)
近年来,电子工业技术发展迅速,电路板正快速向高密度、多样化方向发展。在元器件体积缩小、种类增多的同时,传统的人工电路板检测手段由于效率低、精度差等因素已经不再满足如今电路板缺陷检测的要求。基于机器视觉的自动光学检测(Automatic Optic Inspection,AOI)技术在电路板缺陷检测中已经得到越来越广泛的应用[1]。电路板元器件缺陷检测作为电路板自动光学检测技术的一项重要内容,主要针对电路板元器件中存在的器件漏装、器件装错、器件偏移、器件歪斜和器件极性反转等5种常见缺陷[2],其检测方法的优劣直接影响电路板的质量安全。
要想实现精度高、运行速度快和抗干扰能力强的电路板元器件缺陷检测系统,其核心在于检测算法的提升。为此,国内外许多研究人员对其进行了大量研究。其中,文献[3]基于多方向Sobel算子的边缘检测来改进模板匹配,通过图像差分实现漏件检测,但其对采集的图像精度要求很高,当边缘不明显或存在纹理干扰时很难精确匹配,且无法识别其他类型的缺陷;文献[4]提出一种结合所用光源和二值投影的元器件安装缺陷检测算法,通过统计元器件横向和纵向投影的白色像素点个数和梯度变换判断是否存在缺陷,但只能对单个元器件进行检测,无法适用于整块电路板的元器件检测;文献[5]提出一种基于数学形态学与种子填充结合的分层提取匹配算法,逐像素搜索并分层提取色彩空间颜色不同的元器件后,再匹配实现缺陷检测,但需要多次逐像素搜索图像,运算量极大,且很难对颜色差异较小的元器件进行区分,误检率高。
虽然不同元器件缺陷检测算法在特定的应用场景均取得一定的研究成果,但是实际应用场景需要对完整电路板中所有元器件的缺陷进行检测,导致了算法普遍效率低、误检率高等问题。究其原因,主要在于基于不同元器件浅层图像信息或模板匹配等算法普遍无法有效区分、定位不同种类的元器件。随着大数据和深度学习技术的发展,越来越多的目标检测网络在通用目标领域的识别中取得极大的进展[6-7],这也激发了研究人员将其应用到特定领域以解决特定的问题。文献[8]首次提出了一种利用深度卷积神经网络YOLOv2定位电路板中不同型号电容的方法,但是只局限于电容器,并没有对其他种类的元器件进行识别定位;文献[9]设计了一个新颖的图形网络块来细化每个电路板组件的特征,使用SPN-T-W-GN-LF (Similarity Prediction Network With Triplet Loss and Graph Network)模型来对电路板不同种类的组件进行定位与识别,并达到了65.3%的mAP(Mean Average Precision,平均精度)值,但是该方法存在检测精度低、鲁棒性差,且检测速度非常慢的问题。另外,文献[8]和文献[9]中算法只是针对元器件的识别与定位,并没有涉及对电路板元器件的缺陷进行检测。
针对传统电路板元器件缺陷检测算法中存在的效率低、误检率高和缺陷种类覆盖不全等问题,提出了基于改进YOLOv4网络的电路板元器件缺陷检测算法。首先,根据电路板上元器件尺度变化大、小目标数量多的特点,设计了改进的YOLOv4算法对电路板上不同元器件进行定位与识别;其次,传统的元器件缺陷检测算法大部分只对漏装、装错两种缺陷进行识别,而本文针对电路板上元器件偏移、歪斜和极性反转三类缺陷与标准元器件本体和极性标识的位置、角度上存在的差异,快速提取并构建电路板上元器件的方位与极性特征向量,更准确地对元器件本体及极性标识的安装状态进行表示;最后设计了标准电路板与待测电路板元器件特征向量的相似度匹配方法,快速计算两者的位置、角度和极性标识方向的相对误差,有效检测了元器件的不同种类缺陷并降低相似度判定的计算量和复杂度,提高了缺陷检测的准确性。
本文算法主要包括图像配准、元器件识别与定位、缺陷检测3个部分,具体架构如图1所示。
图1 本文算法流程图
从图1可以看出,本文首先通过特征点匹配算法对待测图像与标准图像进行配准;然后事先利用构建好的电路板元器件数据集训练改进的YOLOv4网络模型,利用该模型对待测电路板及标准电路板上的元器件进行检测,并输出各元器件类别及位置信息;最后利用图像处理算法提取各元器件图像块的方位、极性等特征并构建特征向量,计算标准电路板与待测电路板元器件特征向量的相似度误差,进而实现对常见的5种不同元器件缺陷的精准检测。
在实际生产及工作环境中,由于工人放置、摄像机角度等客观因素的影响,很难保证获取到的电路板图像是水平且一致的。这也造成待测电路板图像与标准电路板图像一开始就存在误差,如图2所示,如果不对两者进行对齐和矫正,将极大地影响缺陷检测的精度。所以,图像配准是必不可少的环节。
图2 电路板图像
本文采用ORB(Oriented FAST and Rotated BRIEF)算法[10]进行电路板的配准,相对于经典的SIFT(Scale-Invariant Feature Transform)和SURF(Speeded-Up Robust Features)算法而言,ORB算法在精度上稍逊于后者,且在一定程度上不受噪声和光照的影响,而在运行速度上则比后者快了1~2个数量级。
图像配准基本流程如图3所示,ORB算法首先快速提取两幅图像的特征点PI(xi,yi)与PJ(xj,yj),如图3(a)和图3(b)所示。再计算相应的特征点描述符,生成特征点的二进制描述子串,并构造描述符向量VI(xi,yi)与VJ(xj,yj)。最后通过Hamming Distance(汉明距离)对两幅图像的描述符向量中距离近的特征点进行粗匹配。
由于粗匹配的特征点仍然存在误匹配点,一般使用RANSAC(Random Sample Consensus)算法[11]进行匹配点对的优化,消除误匹配点对,得到若干对精确配对的特征点,如图3(c)所示。再通过配对好的特征点对计算待测电路板图像到标准电路板图像的变换矩阵T。
(1)
最后利用式(2)将测试图像投影到标准图像的坐标系上实现配准操作,配准后的图像如图3(d)所示。
图3 基于ORB的图像配准过程
(2)
YOLO(You Only Look Once)网络[12]是一种利用回归网络实现目标检测的分类算法,与传统基于区域候选的网络[6]相比,YOLO网络整合产生候选框和检测这两个阶段不需要提名区域,直接将检测任务视为回归任务,从而具有更快的检测速度。
其主要过程是将每个输入图像划分成一个S×S的网格,如果目标的中心落入某个网格中,则由该网格负责检测目标。每个网格负责检测目标的边界框、置信度得分和类别概率。置信度的计算公式为
Cij=Pr(Object)×IOUpred
(3)
(4)
式中:Cij为第i个网格的第j个置信度;Pr(Object)表示是否有目标落入该网格,有则为“1”,无则为“0”;IOUpred为预测框与真实框的重合率;box(Pred)为预测框,box(Truth)为真实框,每个预测框包含Cij,x,y,w,h这5个参数,而(x,y)代表预测框的中心坐标,(w,h)代表预测框的宽和高。
置信度代表网格内是否包含检测对象以及预测框包含对象的准确性。当多个预测框检测到同一个对象时,YOLO使用非极大值抑制(Non-Maximum Suppression,NMS)算法来选择最佳预测框。
YOLO算法自提出以来,经历了多个版本的改进,而YOLOv4是由Bochkovskiy等[13]于2020年提出的最新架构,并在GitHub开源网站上公开了基础架构代码。YOLOv4在上一代YOLO网络基础上,将加权剩余连接(Weighted-Residual-Connection,WRC)、跨阶段部分连接(Cross-Stage-Partial-Connections,CSP)和跨批量连接(Cross Mini-Batch Normalization,CmBN)、自对抗训练(Self-Adversarial Training,SAT)和Mish激活函数相结合。此外,其在通用的目标检测任务中取得非常好的成绩。
YOLOv4检测网络架构以CSPDarknet53为主干网络,路径聚合网络(PANet)作为颈部,增添空间金字塔池(Spatial Pyramid Pooling,SPP)附加模块,并沿用了YOLOv3的检测头作为头部。同时,YOLOv4也采用Mosaic和CutMix数据增强策略增加输入图像可变性,丰富图像特征信息,以提高模型的鲁棒性。
电子元器件作为电路板上的基础组件,其类别、形状、尺寸选择众多,同时标签的制作必须需要经验丰富的专业人员投入大量精力才能完成,因此目前并没有通用的数据集。
为了验证本文所提出算法的有效性,本文构建的数据集使用了文献[8]中所公开的47张不同类型的真实电路板数据集,如图4(a)所示,并对该数据集的标签进行合并与筛选,剔除其中存在的冗余信息以及清晰度较差、非常难以辨认的图像及类别。另外,为了提升数据集的质量,同时全部使用含有大量元器件的电路板真实图像几乎是不可能的,且即使经验丰富的电子工程师也很难识别所有组件并标记。而将合成数据与真实数据相结合形成训练数据集,可以降低数据收集的成本,提高训练模型的泛化能力。本文使用了电路板虚拟图像制作方法[14],并通过Altium Designer电路仿真软件制作了20张电路板3D封装图,如图4(b)所示,并进行了手工标注。标注示例如图4所示。
本文使用的原始数据集图像共包含了14个不同类别的元器件对象,其中不同种类元器件的差别相对明显,且同种类的元器件姿态相对简单,主要在于相对位置和尺度大小的差别。另外,从图4中可以看出,尽管收集的电路板图像有限,但不同的电路板上的元器件数量众多,且不同电路板上的元器件分布随机,背景变化差异较大。为了更好地提升训练数据的质量,本文使用了平移、旋转、裁剪、缩放、光照和噪声变化等方法对原始数据进行了数据增强。最终得到的数据集扩增了20倍,共有1200张不同类型的电路板图像,其分布的元器件总数达到了11万多。扩展后的各类别元器件在数据集的分布如图5所示。
图4 真实电路板图像与虚拟电路板图像标注示例
图5 数据集种类及其数量分布
最后,将扩展后的数据集按照8∶1∶1的比例划分为训练集、验证集和测试集。
由于电路板元器件的分布复杂,且电路板元器件具有尺寸小、种类多、密度大的特点,尽管原始的YOLOv4网络对通用的目标具有强大的识别率,但是基于本文构建的电路板元器件数据集训练的模型在测试过程中效果并不太理想。尤其是针对小目标的识别和目标检测框的拟合情况,故需要对原始YOLOv4网络模型做进一步的改进。
3.3.1 改进的网络结构
一般而言,深度卷积过程中浅层特征图包含了更多的位置信息,适合小目标的检测,深层特征图则包含了较多的语义信息,适合大目标的检测。为了解决原始YOLOv4网络对电路板元器件检测效果不理想的问题,针对电路板上元器件尺度变化大、小目标数量多的特点,在原有的3个尺度上加入了针对小目标敏感的浅层特征图,利用多尺度特征融合在4个尺度上来对电路板上不同元器件进行定位与识别,同时提高小目标的识别率,具体如下。
首先,将网络输入图像尺寸统一调整到608像素×608像素,避免输入图像过小使得本来在图像上的小目标更加难以识别。另外,如图6所示,原始YOLOv4网络框架使用5个CSP残差模块对输入图像进行特征提取,且每次特征提取都会使输出的特征矩阵的行数和列数变为原来的一半,而深度则增加一倍。这样就分别得到尺寸为304像素×304像素、152像素×152像素、76像素×76像素、38像素×38像素和19像素×19像素的5个特征图。而原始的YOLOv4网络只选择了其中76像素×76像素、38像素×38像素和19像素×19像素这3个特征层进行特征融合,以检测不同的大、中、小物体。因为随着卷积层的加深,深度卷积神经网络在前向卷积的过程中会逐渐丢失输入图像的浅层特征信息,而这些浅层的特征对检测小物体却非常关键。而第2个CSP残差模块得到的尺寸为152像素×152像素的特征图,由于卷积深度更浅,故包含更多的对小目标有利的浅层信息。
为了使网络获得更多的小目标信息,提高元器件的检测率,本文在原始网络框架的基础上,增加了第2个CSP残差模块获得的尺寸为152像素×152像素的特征图来检测目标。在原来的8倍下采样特征融合图的基础上再增加一次上采样操作,并将其与152像素×152像素特征图进行张量拼接,输出并配合第4个检测头进行目标检测。此外,将CSPDarknet53网络结构中的第二剩余模块的2个Res uint增加到4个,而第五剩余模块的4个Res uint减少到2个,在保持原CSPDarket53骨干网层数不变的情况下,增强特征复用,避免网络结构较深时梯度消失和特征复用增强。改进后的网络结构框图如图6所示。
美国对相关国家进口伊朗石油的“豁免”变相解救了伊朗。美国国务卿蓬佩奥宣布,美国给予8个国家伊朗制裁豁免权,允许他们继续进口伊朗石油。由此,伊朗在制裁期间的石油出口量预计能够达到100万桶/日。这样的出口量于伊朗而言,把日子过下去是毫无问题的。
图6 改进的YOLOv4网络架构
3.3.2 先验框设计
YOLOv4在预测目标时使用了先验框(Prior Box)来预测目标包围框的形状尺寸,这并不是一个随机的值。选择适合用户数据集的先验框尺寸作为训练参数,可以有效提高最终模型的识别精度。而原始的YOLOv4所提供的先验框尺寸是由COCO数据集图像的目标尺寸聚类得到的,但是COCO数据集是一个通用的目标检测数据集,与本文构建的电路板图像数据集中的元器件目标尺寸存在很大的差别,所以先验框尺寸设置要根据本文数据集来做进一步的适配。
本文采用K-means++算法[15]对已经标注的电路板元器件数据集的目标框尺寸进行聚类分析,针对4种不同尺寸的特征图优化生成12个团簇的先验框,并将其重新分配给各个特征层,用于多尺度的目标检测。改进后先验框信息如表1所示。
表1 先验框尺寸 单位:像素
在得到电路板图像上的元器件定位与识别结果后,首先需要对标准电路板与待测电路板上的元器件进行配对,将两个电路板上相同位置的元器件定位框一一对应,同时也能检测待测电路板上元器件是否存在漏装、错装两类缺陷。
因为前面预处理时已经对待测电路板与标准电路板进行配准。所以,只需要结合元器件定位框的位置,及同一位置的标准电路板与待测电路板元器件定位框的交并比与分类结果即可判断。其流程如下。
① 选择一个标准电路板元器件A。
② 假设A的定位框坐标box1=(x1,y1,w1,h1),在待测电路板上相应位置搜索所有与之相交的未标记的元器件定位框{boxi=(xi,yi,wi,hi)∨i∈N}。如果没有,则认为该位置的元器件漏装,否则,进入下一步。
(5)
(6)
⑤ 对标准板上所有元器件重复以上步骤。
对所有待测电路板与标准电路板的元器件配对完成后,由于元器件定位框只包含元器件所在电路板区域的图像块,不能直接用来匹配相似度。为了进一步降低元器件缺陷检测的误检率并提高检测效率,根据各元器件在图像上的定位框,通过图像处理算法对元器件图像块中元器件本体位置进行二次精准定位,并构建了相应的方位特征向量。另外,通常极性元器件中存在极性标识,单独对极性区域进行分割,并构建了极性特征向量。具体步骤如下。
① 元器件定位框ROI(Region of Interest)裁剪。根据元器件检测结果的定位框信息,将图像相应位置的检测包围框裁剪,并获得裁剪后的图像块,如图7所示。
图7 元器件ROI
② 二次定位。由于YOLOv4目标检测的定位框为一个矩形,只会大致拟合元器件区域。想要检测元器件是否有歪斜的缺陷,就需要对元器件区域进行二次精确定位,将元器件区域与背景分割开来,并提取相应轮廓区域。但是,不同元器件的边缘特征、形状大小和颜色特征都存在差异,需要分开考虑。
类别1:对于体积较小、边缘特征比较明显,且与背景图像差距较大的元器件,如图7所示的电容、电阻、电解电容和三极管等元器件,可以直接对ROI图像块进行灰度化、中值滤波、阈值分割、形态学运算等操作。以电容为例进行以上操作,过程显示如图8所示。而同一类型的元器件操作过程相同。最后再计算其连通区域的最小外接矩形即可对其二次定位。
图8 ROI图像处理过程
类别2:针对目标元器件表面本身及与背景区别不明显的元器件(如图7所示的芯片元件等),阈值分割操作不容易提取出有效区域。但是,一般电路板的集成电路表面都由黑色或银色塑封构成,可以充分利用其表面的颜色特征。首先需要将图像块从RGB转为HSV色彩空间,然后设置合适的阈值分离核心区域的像素点,并通过形态学运算消除干扰目标,最后同样根据连通区域计算得到其最小外接矩形,其过程如图9所示。
图9 芯片元件图像处理过程
③ 构建元器件的方位特征向量。在得到元器件二次定位的轮廓及最小外接矩形后,其最小外接矩形MinAreaRect=(x2,y2,w2,h2) 即为元器件的真实位置。为了在保证缺陷的识别率的同时减少计算量,本文定义了电路板元器件的方位 (Direction and Position) 特征向量VDP,包括其最小外接矩形的4个角点和中心点在电路板上的绝对坐标P1(x1,y1),P2(x2,y2),P3(x3,y3),P4(x4,y4),P0(x0,y0),以及该外接矩形的宽w2和高h2。最后,电路板上各元器件方位特征向量表示为VDP={P0,P1,P2,P3,P4,w2,h2}。
④ 构建元器件的极性特征向量。对于极性元器件,一般而言,都会在元器件上对其极性方向进行标识。以芯片与电解电容为例,在芯片的4个角附近会有一个圆形标记作为其极性标识,如图7(e)、图7(f)所示。可以直接通过Hough梯度法[16]对极性区域进行圆检测来提取,结果如图10所示;而电解电容则是对其一端色带进行极性标识,可以对该色带区域进行阈值分割,再提取边缘,结果如图11所示。
图10 芯片极性标识提取
图11 电解电容极性标识提取
最后,由提取的元器件外二次定位中心坐标P0指向极性中心坐标P,就得到极性特征向量P0P。
在得到配对的元器件及其提取的方位与极性特征向量后,便可以通过计算标准电路板元器件与待测电路板元器件的相似度来判断是否存在偏移、歪斜和极性反转的缺陷,检测方法如下。
① 偏移检测。计算待测元器件与标准元器件的方位特征向量的距离平均差d,如果距离差大于设置的阈值σd,则可以认为元器件出现偏移。计算公式及阈值设置为
(7)
(8)
② 歪斜检测。计算待测元器件与标准元器件的方位向量的偏转角度平均差θ,如果θ>15°,则认为元器件出现歪斜。偏转角度计算公式及阈值设置为
(9)
③ 极性反转检测。计算标准元器件的极性特征向量与待测元器件的极性向量的向量夹角θPolar,如果θPolar>45°,则认为该元器件存在极性错误。向量夹角计算公式为
(10)
为了验证本文所提出的算法的有效性,搭建了一个视觉缺陷检测平台,其基本配置如表2所示。
表2 训练及检测平台配置
实验主要分为两个部分:① 对电路板元器件的定位与识别的精度与耗时进行对比实验;② 对电路板样品的元器件漏装、错装、偏移、歪斜和极性反转等5种缺陷检测结果进行统计。所有的实验都在所搭建的视觉平台上进行。
为了验证本文所设计改进的YOLOv4网络模型对电路板元器件识别与定位的有效性,对比分析了不同的目标检测算法与本文算法在构建的电路板元器件数据集上的识别与定位性能。综合统计了3.2节所划分的120张测试集图像在不同算法模型下的检测结果,并使用平均精度与消耗时间作为衡量指标。统计的定位与识别结果如表3所示。
表3 不同算法对元器件的性能对比
从表3中可以看出,与其他常用的目标检测算法相比,本文算法的检测时间与其他算法相近,对测试集电路板元器件识别与定位的精度有较大幅度的提高,平均精度可以达到94.35%。这说明本文所提出的基于改进的YOLOv4网络模型有较高的准确率,满足检测要求。运行结果如图12所示。
图12 运行结果样例
下面使用本文前面所提出的训练好的改进YOLOv4网络模型配合缺陷识别算法,对电路板样品测试集在实验平台进行反复实验。测试所使用的合格元器件样本数量为300个,其他每种缺陷所检测的样本数量为50个,其中极性反转的缺陷检测目前只针对于芯片(IC)和电解电容。统计了实验过程中每类缺陷样本和合格样本的正检、误检、漏检数量情况,并以准确率作为最终的衡量指标。检测结果如表4所示。
表4 本文算法缺陷检测性能统计
从表4可以看出,本文算法对电路板元器件的缺陷识别准确率可以达到94.18%,且对各类缺陷的准确率不低于90%,这也反映了本文算法能够有效检测不同类型的元器件缺陷,适用于对稳定性、鲁棒性有一定要求的场合,能够满足当前电路板元器件视觉检测需求。
本文研究了电路板元器件检测的关键技术,提出了一种基于改进YOLOv4网络的元器件缺陷检测算法,应用于电路板元器件的定位、识别和缺陷检测,解决了传统元器件缺陷检测基于不同元器件浅层图像信息或模板匹配所造成的计算量大、稳定性低和鲁棒性差的问题,提升了元器件缺陷检测的准确性和可靠性。实验结果表明,该算法能够快速、精准地实现电路板元器件定位与识别,并可有效地检测电路板的不同元器件缺陷。在未来的工作中,可以对网络中不重要的通道或网络层进行修剪,增强检测的实时性,同时,也可以进一步将该算法集成并开发出相应的检测软件。