李 娜, 王學影, 胡曉峰, 郭 斌, 羅 哉
(中國計量大學 計量測試工程學院,浙江 杭州 310018)
在人工智能、機器人、半導體、航空航天等高新技術飛速發(fā)展的環(huán)境下,印刷電路板(printed circuit boards, PCB)制造作為高新技術的基礎產(chǎn)業(yè),在各個高新技術產(chǎn)業(yè)的發(fā)展中發(fā)揮重要的作用。在PCB上焊接集成電路(integrated circuit, IC)、電容、電阻等元器件之后,才能組裝為電子設備[1]。PCB板上元器件的焊接質(zhì)量將直接影響產(chǎn)品的性能指標,尤其貼片IC引腳多、間距小,使得貼片IC的焊接缺陷檢測的難度要高于其他元器件。
傳統(tǒng)的PCB缺陷檢測方法有人工目檢、在線測試和功能測試[2],其中人工目檢容易受到工作人員情緒、經(jīng)驗等主觀因素的影響,導致缺陷檢測的準確率和效率較低;在線測試的主要方式為飛針測試,屬于接觸式測量,在一定程度上,會對電路板造成二次損壞;功能測試基于自動化測試原理,采用各種測試設備對特定板或特定單元進行測試,具有測試速度慢、不支持參數(shù)測量的缺點。
機器視覺是一種無接觸、無損傷的自動檢測技術[3],近年來得到了迅速發(fā)展,基于機器視覺的PCB缺陷檢測備受關注。Malge P S等[4]提出了一種基于形態(tài)圖像分割算法的PCB缺陷檢測與分類系統(tǒng),能夠檢測短路、開路等多個缺陷;Kumar M等[5]提出了彩色平面提取、LUT變換等圖像增強方法和標準數(shù)據(jù)生成算法完成對PCB的缺陷檢測;Gaidhane V H等[6]提出了一種相似性度量方法,對PCB缺陷進行檢測?;趥鹘y(tǒng)圖像處理和機器視覺的方法,需要進行特征提取、模板匹配等操作,對于不同的PCB板,需要重新建模,耗時且繁瑣。近年來,隨著深度學習模型在人臉識別、缺陷檢測、目標跟蹤等領域成功應用[7~9],基于深度學習的PCB缺陷檢測也得到了快速發(fā)展。Ding R等[10]基于Faster R-CNN提出了一種微小的缺陷檢測網(wǎng)絡,提高了PCB缺陷檢測的性能。殷政[11]建立深度卷積網(wǎng)絡,對不同型號的IC引腳焊接缺陷進行檢測。李澄非等[12]基于YOLOv4提出了一種PCB缺陷檢測方法,達到了較高的檢測精度。由于IC引腳小而密集,對其缺陷檢測具有很高的難度,針對這些存在的問題,本文提出改進的PP-YOLOv2算法,完成對IC引腳焊接缺陷的檢測。
提出改進的PP-YOLOv2算法對IC引腳焊接缺陷進行檢測,檢測流程圖如圖1所示。
圖1 檢測流程圖Fig.1 Flow chart of detection
對采集到的IC引腳焊接缺陷圖像進行標注,制作成Pascal VOC格式的數(shù)據(jù)集,劃分訓練集、驗證集、測試集的比例為6:2:2,將訓練集、驗證集輸入改進的PP-YOLOv2網(wǎng)絡中進行迭代,優(yōu)化網(wǎng)絡參數(shù),加速網(wǎng)絡收斂,模型訓練完畢之后,使用測試集檢驗網(wǎng)絡對新的缺陷圖像檢測的能力。工業(yè)上要求缺陷檢測的平均準確率大于95%,如果模型的性能達到要求,則將模型應用到在線檢測系統(tǒng)中,否則,優(yōu)化網(wǎng)絡,繼續(xù)訓練。
基于深度學習的目標檢測算法分為:兩階段檢測算法和單階段檢測算法。兩階段目標檢測算法將檢測任務分2個階段,首先找出目標的候選區(qū)域,對是否為目標做初步判斷;然后再對候選區(qū)域進行分類和回歸,對候選區(qū)域的位置進行修正,最后輸出目標的類別。其代表算法有R-CNN[13],Fast R-CNN[14],Faster R-CNN[15]。單階段目標檢測算法沒有候選區(qū)域生成階段,直接輸出物體的類別概率以及位置坐標信息,代表算法有YOLO[16]、YOLOv3[17]、SSD[18]等。
本文基于PP-YOLOv2算法對IC引腳焊接缺陷進行檢測,為了提高PP-YOLOv2算法對IC引腳焊接缺陷此種小而密集情況的目標識別能力,本文在網(wǎng)絡的特征提取部分后加入注意力機制SE(squeeze and excitation)模塊,進一步提高網(wǎng)絡特征提取能力。
PP-YOLOv2是Huang X等[19]提出的一種改進的基于PaddlePaddle的YOLOv3模型,是基于anchor-based的單階段目標檢測算法,網(wǎng)絡由骨干網(wǎng)絡,檢測頸和檢測頭組成,引入注意力機制SE模塊的PP-YOLOv2網(wǎng)絡結(jié)構如圖2所示。
圖2中,骨干網(wǎng)絡為Resnet50-vd網(wǎng)絡[20,21],檢測頸為路徑聚合網(wǎng)絡(path aggregation network,PAN)[22],檢測頭有3種尺度的輸出,SE Block表示注意力機制[23]。
3.1.1 改進后的PP-YOLOv2骨干網(wǎng)絡
該模型的骨干網(wǎng)絡采用Resnet50-vd網(wǎng)絡,相比于YOLOv3的骨干網(wǎng)絡Darknet53網(wǎng)絡,Resnet50-vd可以根據(jù)不同需要適當?shù)卦黾泳W(wǎng)絡分支,具有更強的普適性。IC引腳小且高密度,經(jīng)典的神經(jīng)網(wǎng)絡在卷積計算過程中,將目標中心像素點與其卷積核矩陣范圍內(nèi)的像素點加入計算,而IC引腳焊接缺陷的尺寸不一、形狀多變,導致檢測效果不佳。因此,本文在Resnet50-vd網(wǎng)絡基礎上,用可變卷積層(deformable convolutional networks, DCN)代替了最后一級的3×3卷積層,提升感受野與實際目標缺陷形狀的匹配度。改進后的PP-YOLOv2骨干網(wǎng)絡結(jié)構如圖3所示。
圖3 改進后的骨干網(wǎng)絡結(jié)構圖Fig.3 Structure of the improved backbone network
3.1.2 改進后的PP-YOLOv2檢測頸
檢測頸采用PAN,自上而下地聚合特征信息,在特征金字塔網(wǎng)絡的基礎上添加了自下而上的路徑增強結(jié)構,增加了跳轉(zhuǎn)連接,將低層特征信息傳遞給高層,利用準確的低層定位信號增強特征層次,進而縮短低層與頂層特征之間的信息路徑。檢測頸PAN結(jié)構詳見圖2,PAN中detection block的結(jié)構如圖4所示。
圖4 Detection block的結(jié)構圖Fig.4 Structure of detection block
圖4中,上一級輸入的特征圖,分為2個部分,一部分通過1×1卷積,另一部分通過多層卷積,再相加,最后經(jīng)過1×1卷積輸出。
3.1.3 改進后的PP-YOLOv2檢測頭
改進后的PP-YOLOv2的檢測頭由一個3×3卷積層和一個1×1卷積層組成,輸出通道為3×(K+5),其中3表示3種大小的錨框,K表示預測的類的個數(shù),5表示每個預測框的4個位置參數(shù)和1個包含物體的概率參數(shù)。
3.1.4 注意力機制SE模塊
對于卷積神經(jīng)網(wǎng)絡輸出的H×W×C的特征圖,C是通道,也表示特征的數(shù)量,H和W分別是原始圖片經(jīng)過壓縮后的圖的高度和寬度,改進后的PP-YOLOv2在骨干網(wǎng)絡后加入SE模塊,SE給特征圖中的每個通道,通過神經(jīng)網(wǎng)絡算出梯度并且前向傳播和后向反饋來學習得到不同的權重,有利于網(wǎng)絡學習各個特征通道之間的關系,提高網(wǎng)絡對密集小目標的檢測精度。SE結(jié)構圖如圖5所示。
圖5 SE結(jié)構圖Fig.5 Structure of SE
由圖5可知,SE模塊首先對輸入的特征圖全局平均池化,將輸入的特征圖壓縮成為1×1×C的特征通道向量ZC,計算公式如下:
(1)
式中:uc表示特征向量。
再使用全連接神經(jīng)網(wǎng)絡經(jīng)過激活函數(shù)等操作賦予特征通道向量不同的權重,計算公式如下:
SC=σ(W2g(W1ZC))
(2)
最后通過乘法逐通道加權到C個通道上,完成在通道維度上對原始特征的重標定,并作為輸出值,計算公式如下:
(3)
Mish是自正則的非單調(diào)神經(jīng)激活函數(shù)[24],有助于保持較小的負值,穩(wěn)定網(wǎng)絡的梯度流;而且,與其他激活函數(shù)相比,無窮階連續(xù)性和光滑性具有更好的泛化能力,可以提高檢測的精度。因此,本文將Mish激活函數(shù)應用于檢測頸部。Mish激活函數(shù)如圖6所示。
定義和求導公式如下:
f(x)=x×tanh(ln(1+ex))
(4)
(5)
式中:x表示輸入;w=4(x+1)+4e2x+e3x+ex(4x+6);δ=2ex+e2x+2。
改進算法的損失函數(shù),包括坐標回歸和分類的損失函數(shù),去掉了平滑的L1損失,增加了iou損失和iou感知損失,以適應檢測的回歸任務,提高了定位精度。IC引腳焊接缺陷檢測模型的損失函數(shù)可以表示為
floss=λ1fxy loss+λ2fwh loss+λ3fobj loss+λ4fcls loss
+λ5fiou loss+λ6fiou aware loss
(6)
式中:λ1,λ2,…,λ6是權重參數(shù);fxy loss和fwh loss是坐標損失函數(shù);fobj loss是置信度損失函數(shù);fcls loss是類別損失函數(shù);fiou loss是預測框和真實框交并比損失函數(shù);fiou aware loss是預測框和真實框交并比感知損失函數(shù)。fiou loss和fiou aware loss公式為
(7)
fiou aware loss=-t×log(σ(p))-(1-t)
×log(1-σ(p))
(8)
3.4.1 檢測精度
平均精確度(average precision, AP)是對數(shù)據(jù)集中單個類別檢測精度衡量的指標,平均檢測精度均值(mean average precision, mAP)是對數(shù)據(jù)集中所有類別目標的檢測精度衡量的指標。mAP是各個缺陷類別的AP的平均值,AP由準確率-召回率(precision-recall)曲線下覆蓋的面積得到,準確率、召回率由混淆矩陣計算得到,混淆矩陣如表1所示。
表1 混淆矩陣Tab.1 Confusion matrix
表1中:TP表示預測結(jié)果中預測框被正確預測為正樣本的個數(shù);FN表示正樣本被錯誤預測為負樣本的個數(shù);FP表示負樣本被錯誤預測為正樣本的個數(shù);TN表示預測框被正確預測為負樣本的個數(shù)。
(1) 準確率P又稱查準率,指分類過程中模型所預測的所有正樣本內(nèi)預測正確的比例,其公式為
P=TP/(TP+FP)
(9)
(2) 召回率R又稱查全率,指分類過程中模型預測正確的正樣本占真實正樣本的比例,其公式為
R=TP/(TP+FN)
(10)
(3) 以P為縱軸,R為橫軸作圖,得到模型的P-R曲線。計算P-R曲線與坐標軸所圍的面積,即對P-R曲線求積分可得到該類別的平均精度AP,AP值越高表明檢測效果越好。其公式如下:
(11)
式中r表示召回率變量。
(4) mAP是評價模型綜合性能的重要指標,代表著模型在所有類別目標上的平均檢測精度,其公式如下:
(12)
式中:M表示檢測目標的種類數(shù);APi為每一類目標的平均精度。
3.4.2 檢測速度
每秒幀數(shù)(frame per second, FPS)表示測試樣本總數(shù)與測試樣本進行檢測所消耗時間的比值,計算公式為
FPS=N/T
(13)
式中:N表示測試樣本總數(shù);T表示測試樣本進行檢測所消耗的時間。
本文實驗數(shù)據(jù)由搭建的圖像采集硬件平臺采集得到,計算機發(fā)出采集指令,運動控制器控制PCB板在軌道上移動,移動到指定位置停止,打開光源,相機拍攝IC圖像,存入計算機。共計采集1 000幅圖像。
當訓練樣本數(shù)較少時,使用深度學習算法容易導致過擬合現(xiàn)象,難以訓練出具有好的魯棒性的模型。數(shù)據(jù)增強是一種常見的技術,能夠降低過擬合,訓練出具有好的泛化能力的模型,從而更好的對缺陷進行識別。因此,本文通過5種數(shù)據(jù)增強方法對IC數(shù)據(jù)樣本進行擴充,以增強數(shù)據(jù)的豐富性。采用的數(shù)據(jù)增強的方法有:平移、翻轉(zhuǎn)、對比度變換、縮放變換、mosaic數(shù)據(jù)增強。經(jīng)過數(shù)據(jù)增強后共得到1×104幅圖片,并且圖片大小全部Resize為640×640,數(shù)據(jù)增強示例如圖7所示。
圖7 4種數(shù)據(jù)增強方法示例Fig.7 Examples of four data enhancement methods
為了使采集的圖片數(shù)據(jù)在模型訓練及測試時更加標準,將經(jīng)過數(shù)據(jù)增強后的圖片數(shù)據(jù)制作成Pascal VOC格式的數(shù)據(jù)集。拍攝得到的IC引腳焊接缺陷共有4種,分別為短路(short_circuit)、缺腳(missing_pin)、翹腳(pin_cocked)、少錫(little_tin),選用LabelImg對缺陷進行標注,標注后的每一幅圖片都會生成對應xml格式的標注文件,該文件包含圖片的名稱及尺寸信息,缺陷名稱及缺陷標注框的位置信息等。劃分訓練集、驗證集、測試集的比例為6:2:2。
計算平臺配置如下:CPU為Intel(R) Core(TM) i7-7700@3.60 GHz;GPU為NVIDIA GeForce GTX 1070;內(nèi)存16 GB;操作系統(tǒng)Win10;深度學習框架為PaddlePaddle 2.0.2;CUDA 10.2。
數(shù)據(jù)集共1×104幅,劃分訓練集6 000幅,驗證集2 000幅,測試集2 000幅。訓練集和驗證集共計8 000幅圖片,設置Batch size為20,則Batch數(shù)為400,輸入圖像尺寸為640×640,初始學習率設置為0.001 25,動量參數(shù)設置為0.9,整個訓練過程分為100個Epoch,則總迭代次數(shù)為4×104次。
PP-YOLOv2使用3個不同尺度的特征圖預測缺陷,每個尺度的特征圖包含3種預測信息,因此共有9個anchor參數(shù)。不同數(shù)據(jù)集中目標的尺寸和長寬比不同,為了更加準確地識別本文制作數(shù)據(jù)集中的缺陷,改進的算法采用k-means++聚類算法對所有的缺陷框大小聚類,最終得到9個聚類中心,分別為:(18,61), (18,79), (72,20), (59,29), (56,37), (37,58), (50,84), (51,85), (84,60)。
為了驗證改進后網(wǎng)絡的性能,在相同的實驗環(huán)境下,應用相同的IC引腳焊接缺陷數(shù)據(jù)集分別對YOLOv3算法、PP-YOLOv2算法、改進算法網(wǎng)絡訓練100輪,損失值曲線對比如圖8所示。
圖8 3種網(wǎng)絡訓練損失值變化曲線Fig.8 Variation curve of three network training loss values
可見,隨著訓練輪數(shù)的增加,3種網(wǎng)絡的損失函數(shù)曲線整體上均呈下降趨勢。YOLOv3算法損失值曲線有震蕩,PP-YOLOv2算法損失值在訓練22輪左右收斂,改進算法損失值在訓練32輪左右收斂,改進算法損失值相比于原始PP-YOLOv2算法來說收斂較慢,這是因為在網(wǎng)絡結(jié)構中添加了SE模塊,所以增加了計算量。最終經(jīng)過100輪迭代訓練后,YOLOv3算法損失值收斂至0.2,PP-YOLOv2算法損失值收斂至0.1,改進算法損失值收斂至0.04,改進算法相比其他2種算法的收斂值更小。綜上所述,改進算法的損失曲線收斂值最小且趨于穩(wěn)定,比其他2種算法效果更好。
在訓練期間每經(jīng)1輪就在驗證集上驗證模型效果,平均精度曲線對比如圖9所示。
圖9 3種網(wǎng)絡訓練平均精度變化曲線Fig.9 Variation curve of mAP of three network training
圖9顯示,隨著訓練輪數(shù)的增加,3種網(wǎng)絡的平均精度曲線整體上均呈上升趨勢。YOLOv3算法平均精度曲線有波動,經(jīng)過90輪訓練后模型mAP達到最高為82%。PP-YOLOv2算法平均精度曲線經(jīng)過45輪訓練后mAP穩(wěn)定在90%左右,經(jīng)66輪訓練后模型mAP達到最高為91%。改進算法平均精度曲線在30輪訓練后模型的mAP穩(wěn)定在95%左右,經(jīng)49輪訓練后模型mAP達到最高為96%。
分別使用3種模型在IC引腳焊接缺陷測試集上進行預測,性能對比如表2所示。
表2 3種模型檢測性能對比Tab.2 Comparison of detection performance of three models
表2顯示,YOLOv3模型對短路、缺腳、翹腳、少錫4種缺陷的AP差為19.4%,表明模型性能隨著缺陷復雜度增加大幅降低。PP-YOLOv2模型對4種缺陷的AP差為9.1%,表明模型對于復雜缺陷的識別能力有所提高。改進算法對4種缺陷的AP差為2.1%,各缺陷的平均檢測精度較為均衡,模型性能得到大幅提高。在閾值為0.5的情況下,改進模型的mAP達到96.6%,與YOLOv3、PP-YOLOv2相比,分別提高了14.9%, 5.1%。檢測速度上,改進模型的檢測速度遠快于YOLOv3的檢測速度,改進模型比PP-YOLOv2的檢測速度稍慢,原因是SE模塊增加了推理時間,但是其速度在IC質(zhì)檢要求范圍內(nèi)。
分別使用YOLOv3、PP-YOLOv2和改進模型對2幅圖片進行檢測,檢測結(jié)果如圖10所示。
圖10 3種模型對2張圖片檢測結(jié)果Fig.10 Detection results of three models on two images
3種模型檢測結(jié)果的統(tǒng)計情況如表3所示。
表3 3種模型對左、右圖檢測結(jié)果Tab.3 Detection results of three models on the left and right images 個數(shù)
由圖10和表3可以看出:改進模型較準確地檢測出了圖中所有的缺陷,而其他兩種模型存在漏檢和錯檢,這說明改進算法模型的識別效果更好。
本文提出一種基于改進PP-YOLOv2算法的IC引腳焊接缺陷檢測方法。
1) 針對IC引腳小而密集導致缺陷難以檢測的問題,本文在Resnet50-vd網(wǎng)絡基礎上,使用可變卷積層DCN,提升了感受野與實際目標缺陷形狀的匹配度。
2) 在骨干網(wǎng)絡后加入SE模塊,增加了對小目標的感知能力,使用Mish激活函數(shù)改善梯度消失的問題,穩(wěn)定了訓練過程,進而提高了缺陷檢測精度。
3) 使用k-means++聚類算法確定先驗框的大小,加快了模型收斂,提升了檢測精度和速度。
改進算法mAP達到了96.6%,與YOLOv3、PP-YOLOv2相比,mAP分別提高了14.9%、5.1%,改進算法對單幅圖片的檢測時間僅為0.151 s,遠快于YOLOv3,比PP-YOLOv2的檢測速度慢。
本研究為IC引腳焊接缺陷檢測提供了新的研究思路和方法,可為小目標和密集目標的檢測提供理論支持和參考。