贺海浪,龙绪明,刘明晓,罗爱玲
(西南交通大学 电气工程学院,四川 成都 610031)
随着微电子技术不断发展,电子元器件的引脚不断向着高密度,小型化方向发展,这使得人们对印刷电路板(Printed Circuit Board,PCB)的焊接技术提出更高的要求。传统的基于肉眼的人工检测方法不管在速度上,还是在准确性上,都越来越不能满足实际生产的需求[1]。与此相比,基于图像处理与人工智能的自动光学检测(Automatic Optic Inspection,AOI)技术却能够很好的应对这种趋势,并且检测速度快,不受外界干扰,稳定性强。随着图像处理技术,模式识别技术和计算机技术的不断发展,AOI检测技术也在不断的推陈出新,逐渐向着高准确性,高智能化方向发展[2]。
目前,AOI系统常用Partical分析方法[3],其需要对图像的分割阀值和Partical的参数范围进行确定。这对于用户的使用来说,显得过于复杂[4]。鉴于Partical分析方法的不足,有很多学者提出采用神经网络(Artificial Neural Network,ANN)的模式识别方法来检测焊点的缺陷[5],取得了很好的效果。但是神经网络本身存在着局部最优解,过度拟合等问题,这些都使其应用受到了一定的限制。
为了克服这些问题,本文提出一种将双方向二维线性判别分析(Two Directional Two⁃dimension Linear Dis⁃criminant Analysis,(2D)2LDA)特征提取方法和支持向量机(Support Vector Machines,SVM)相结合的焊点检测方法。在获得焊点图像后,若直接将图像全部像素点作为特征向量输入支持向量机,则会因特征向量的维数过高而增加计算的复杂度,而且过高的特征向量维数会导致分类性能的退化,即发生“维数灾难”[6]。(2D)2LDA方法是对二维线性判别分析(Two⁃dimension Linear Dis⁃criminant Analysis,2DLDA)的发展,相比于2DLDA的仅在列方向进行投影,(2D)2LDA实现在行和列两个方向对图像的投影,使获得的图像特征更少,更有利于支持向量机的分类。SVM是一种在统计学习理论的基础上发展起来的新一代学习算法[7],相比于人工神经网络,支持向量机对于未见过的测试样本具有更好的推广能力。其学习训练过程是一个二次规划(Quadratic Pro⁃gramming,QP)问题,能够求得全局最优解,避免局部最优解,目前已成为机器学习领域的一个研究热点。
对于一幅大小为m×n的图像A,2DLDA降维的目的是找到一个 n行 d列的向量矩阵 w=[w1,w2,…,wd],通过公式:
将图像A降到m×d维大小,在这个新的坐标空间中,同类样本的类内距最小化,不同类别样本的类间距最大化,即最大化:
式中:tr(x)表示矩阵x的迹,TSb表示在投影空间中样本的类间散布矩阵;TSw表示在投影空间中样本的类内散布矩阵。
令训练图像样本数为N,共分成c类,第i(i=1,2,…,c)类训练样本 的 样本数为 Ni,样 本的均值,第 i类样本的均值为 则:
式中:w为归一化的列向量,根据Fisher准则,当Sw非奇异时,使J(w)最大的列向量为矩阵S最大d个特征值对应的归一化特征向量。对于经典的线性判别分析(Linear Discriminant Analysis,LDA),必然会有 Sw为奇异矩阵,而2DLDA成功的解决了这一问题[8]。
2DLDA方法降维只是对图像列向特征的提取,而没有改变图像行维数,这样得到的特征维数依然过大。以100×100的图像为例,当d=5时,可将其特征维数降到100×5,但这样的特征维数依然比较大,会导致支持向量机识别时过多的时间消耗。
为解决2DLDA降维后图片特征向量维数依然过高的问题。Noushath等人又提出(2D)2LDA方法[9]。注意到,2DLDA方法只是对图像的列信息进行压缩,而没有对行向进行降维。这样,就可对图像进行转置后再次运用2DLDA方法,得到最优投影向量p=m×k,其中k为确定的行向降维后的维数,这样,通过下式:
可将图像降维到k×n维,完成对图像行向包含信息的降维。这样,结合式(1)、式(8),即可得,
于是可从m×n大小的图像中获得k×d(k≪m,d≪n)个特征。
由于焊点图像是RGB图像,无法直接利用(2D)2LDA方法对图像进行降维。如果直接简单地将其转换成灰度图像,又将导致大量有用信息的丢失。面对这一问题,常见的解决方法是先对三种颜色灰度图分别进行(2D)2LDA降维,然后再将获得的结果组合起来,获得大小为k×d×3大小的图像特征。这种分别进行计算的方法将导致更多的时间开销,无法满足AOI设备焊点检测时的速度要求。
为解决这一问题,本文采用将焊点的三色灰度图先拼接成一幅灰度图像,然后运用(2D)2LDA降维,如图1所示为焊点RGB图拼接策略。芯片的图像尺寸为80×100,其中,左面上下两个80×100分别为红色和绿色灰度图,右面上下都为蓝色灰度图,其中上面为蓝色灰度图的左面50列,下半部分为右侧50列,这样,可得到一幅160×150大小包含所有颜色灰度信息的图像。表1显示了将RGB灰度图合并成一幅灰度图与分别对三幅灰度图进行降维时所用的时间对比。
图1 RGB三色灰度图拼接示意图
表1 两种方法所用时间对比
灰度图像经(2D)2LDA降维后,获得的低维特征转换成一维的向量x,作为支持向量机的输入向量。支持向量机能够实现的是二分类的问题,为了能让其实现多分类,必须将其与二元分类器相结合,文献[10]指出,一对一的分类方法更适合实际应用,在此,选择将一对一的投票策略[6](One Against One With Voting)与支持向量机结合实现多分类。这样,对每一个二分类,要找到一个分类函数f,将两类样本分割开,即:f:xi→yi其中yi∈{-1,+1},令分割函数为:
式中:wTx+b=0对应的是分割的最优超平面;w向量垂直于最优超平面。对于规范化的超平面(min(|| wTxi+b||)=1),必然满足约束条件:
距离超平面最近的点到超平面的距离:
因此,两类的分类间隔为2||w||,最大化分类间隔等价于最小化||w||22,这是一个在公式(11)条件下求||w||22最小值问题,由拉格朗日乘法求解:
通过标准的优化技术,可求出最后的最优解,用∂*,w*,b*表示。在这些解中,只有对应式(11)取等号,即离最优超平面最近的样本点的拉格朗日乘数∂i才不等于零,这些点xi称为支持向量SV。
上面的分析是对应线性可分的,若样本是线性不可分的,可放宽约束条件,在式(11)中引入一个松弛变量εi并将目标函数改写为2||w||+,其中 c称为代价系数,并将特征xi通过一个核函数映射到更高维空间解决,在此选用的核函数为径向基核函数:
其中c和γ的值可通过林智仁教授提供的LibSVM工具获得。这样,对于一个待分类的样本x,可通过公式(16)的决策函数h(x)进行分类。
用一对一的投票策略时,若最后票数有两个相等的最大值时,若这两个最大值中有一个代表的是合格焊点的类,则将该测试焊点判给另一个最大值代表的类,若两个最大值所属的类不包含合格焊点类,则将该测试样本判给前一类。因为在PCB焊点检测中,将不合格焊点判断成合格焊点的漏报代价大于将合格焊点判断成不合格焊点的误报代价。
实验样本选用0805封装的片式电阻,共被分成训练集和测试集,其中训练集和测试集所含各个类型样本数量如表2所示。
表2 训练集与测试集样本数
进行(2D)2LDA降维时,设定降维后的行向和列向的特征值相等,表3列出当选用不同特征维数时的识别正确率,漏报率,识别用时,其中识别时间是指测试样本平均用时。
表3 主要数据与选取特征数关系
从表3中可看出,随着特征维数的增加,漏报率降低,识别的正确率增加,但随之识别用时也大幅增加,综合考虑表3中的数据,决定选择将图像的维度降低到9维。最终测试结果如表4所示。
表4 支持向量机检测结果
表4表明,作为关键数据的漏报率为0,其他缺陷的识别率不等,但都在95%以上,准确率最高可以达到100%,整体正确率为97.98%,可以得出结论,本文提出的焊点检测方法是有效的。
提出一个双方向二维线性判别分析与支持向量机相结合的PCB焊点检测方法,先利用双方向二维线性判别分析方法对焊点三色灰度图的拼图进行降维,然后将得到的焊点特征送入支持向量机进行分类。
当选取的焊点特征维数为9个时,焊点的整体分类正确率为97.98%,其中漏报率为0。
[1]吴浩.基于模式识别技术的焊点自动光学检测算法研究[D].广州:华南理工大学,2013.
[2]卢盛林,张宪民,邝泳聪.基于神经网络的PCB焊点检测方法[J].华南理工大学学报,2008,36(5):136⁃139.
[3]DAVID A,FORSYTH J P.Computer version:a modern ap⁃proach[M].Beijing:Publishing House of Electronics Industry,2004.
[4]卢盛林,张宪民.少缺陷样本的PCB焊点智能检测方法[J].焊接学报,2009,30(5):57⁃60.
[5]MATSUSHIMA M,KAWAI N,FUJIE H,et al.Visual inspec⁃tion of soldering joints by neural network with multi⁃angle view and principal component analysis[J].Service Robotics and Me⁃chatronics,2010,23:329⁃334.
[6]张铮,王艳平,薛桂香.数字图像处理与机器视觉:Visual C++与matlab实现[M].北京:人民邮电出版社,2010.
[7]CORTES C,VAPNIK V.Support vector networks[J].Machine Learning,1995,20:273⁃297.
[8]俞王新.计算机人脸检测与识别方法的研究[D].上海:上海交通大学,2009.
[9]NOUSHATH S,KUMAR G H,SHIVAKUMARA P.(2D)2LDA:An efficient approach for face recognition[J].Pattern Rec⁃ognition,2006,39:1396⁃1400.
[10]LIN Shih⁃Chieh,CHOU Chih⁃Hsien,SU Chia⁃Hsin.A develop⁃ment of visual inspection system for surface mounted devices on printed circuit board[C]//2007 The 33rd Annual Conference of the IEEE Industrial Electronics Society(IECON).Taipei,Taiwan,China:IEEE,2007:2440⁃2445.