張士沖,魏書偉,馬世杰,朱文賢,劉星宇,閆嬌嬌
(青島恒星科技學院信息工程學院,山東 青島 266000)
隨著移動端和精密計算機等電子設備的普及,電子制造工業呈現井噴式的發展。印刷電路板作為各種電子元器件最重要的載體,隨著應用的需求攀升,也開始向高精度、高復雜度、高性能等方向邁進。但是,在生產器件中,PCB電路板的生產工序比較復雜,其中的每一個環節都有可能導致PCB 板產生各種各樣的缺陷,從而影響PCB 板的整體質量。所以,PCB電路板缺陷的實時檢測已儼然成了電子工業生產的重要組成部分。傳統的PCB 缺陷檢測包括人工手動目檢、在線測試[1]、激光檢測系統[2]。人工手動目檢是使用放大鏡和已校準的顯微鏡目視檢查PCB電路板,主觀評判誤差大、長期成本高、效率低;在線測試使用針床測試儀,通過電氣性能測試來識別缺陷,需要測試夾具、編程和調試時間,且夾具制造成本高、難以使用;激光檢測系統使用激光掃描電路板、收集板面信息,并通過比較實際測量值和合格極限值來篩選含有缺陷的印刷電路板,初始成本高,維護和使用問題大。張靜[3]等人基于光學原理,并且全面使用圖像分析、計算機和自動控制技術來檢測并處理生產中遇到的缺陷問題,尤其是焊點的檢查是AOI 檢查的重點與難點,技術相對不成熟,誤差較大。
卷積神經網絡[4]是深度學習領域中的熱門技術之一,尤其是它在圖像識別和模式分類方面發揮的優勢,是其他技術難以比擬的。這個網絡的優勢是具有特殊局部感知的特點,大大降低了網絡運算的復雜度,并降低權值的數量。本文采用的YOLO5 網絡是一種監督式學習的神經網絡。卷積層和子采樣層是特征提取功能的重要模塊,負責特征提取和降維以及減少計算時間。與其他前饋式網絡相比,采用梯度下降(GD)的方法,把最小化的損失函數應用到網絡中,并對其中的各個節點的權重參數逐層調節,不斷調整網絡節點的權重參數,使損失函數的結果變得更小,從而提高模型對比樣本的擬合程度,使預測結果和實際值更加擬合。
本文運用的卷積網絡可以把輸入信號在某一特征上進行加強,從而實現特征的提取,也能降低特征噪聲。卷積核(kernel)是一個二維矩陣,對輸入的圖像進行卷積運算。卷積核的初始值隨機生成,并在學習過程中隨機調整,多個卷積核疊加即為過濾器(filter)。在卷積運算中,卷積核每計算一次,便會向某一方向移動一段距離,這段距離即為步長(stride)。卷積核按一定步長移動過程中,有時會移出圖像,因此,需要對原圖按圈數補充像素點,即填充(padding)。通過卷積運算,可以獲得一張完整的圖,即特征圖(feature map)。每張特征圖映射出來輸入圖,對應的輸入圖大小即為感受野,特征圖越多,感受野越大,捕獲的信息也越多。但是最后一層感受野太大,導致小目標容易丟失,所以本文采用了特征融合的方法,用來融合之前的特征。同時由于沒有全連接層,破除了對輸入圖像長寬比的限制。
為了檢測印制電路板表面的多種缺陷,基于YOLOv5深度學習算法,筆者進行了數據集分類、數據增強和神經網絡構建的過程。通過對缺陷圖像目標信息的提取,在印制電路板數據集上進行迭代訓練,篩選出最佳的檢測模型。對測試集中的印制電路板圖像進行檢測,統計檢測精度相關參數,與傳統印制電路板檢測模型對比分析。首先通過特征點匹配算法對進行測試的圖像和模板圖像進行校準,然后利用搭建好的PCB 缺陷電路板的數據集訓練YOLOv5 網絡模型,使用訓練結果最好的模型對剩下電路板上的元器件進行檢測識別,識別檢測后輸出各元器件的類別及位置信息;最終,采用圖像處理算法提取每個元器件的位置信息,并創建相應的特征向量。接下來,計算待測電路板和PCB電路板的元器件特征向量,并對比它們的匹配程度,以確保誤差最小,從而實現對所述的6種電路板缺陷的準確檢測。
本實驗采用了one-stage[5]單階段算法YOLO 算法作為實驗算法,YOLOv5作為第5代版本,檢測速度較快,前傳耗時為50ms,每秒幀數最高可達140FPS(理論速度),且識別精度較高,mAP@0.5 可達0.991。第二代版本去掉了全連接層,全換成卷積層,破除了對輸入圖像長寬比的限制;每一層都進行BN,歸一化后收斂更加容易;還引入了anchor boxes,通過k-mean聚類預測獲得不同比例的先驗框;甚至還加入了特征融合;選擇相對grid cell 的偏移量,提高了模型的穩定性。這些update為YOLO算法日后行穩致遠奠定了堅實的基礎;第三代版本和第四代版本在此基礎上改進網絡結構,使其更適合小目標檢測;特征做得更細致;增加了resnet 的殘差連接,保證每次卷積至少不比原來差;先驗框更豐富;softmax 改進,可以預測多標簽任務。
本實驗采用的YOLOv5 算法分為5 個權重,由于它們的整體網絡結構基本相同,只是depth_multiple和width_multiple參數大小有所不同,而其中YOLOv5s的體積最小,所以本實驗選擇YOLOv5s 作為實驗權重。它由輸入端、BackboneNeck、Head、預測4 個部分組成。本文采用的YOLOv5s 的主干網絡為New CSPDarknet53,去掉了Focus切片結構,取而代之的是一個6×6的卷積層,二者在實現功能上并無差別,但是更換為卷積層后,對現有的一些GPU設備更加友好。頸部網絡為SPPF、New CSP-PAN,將SPP換成了SPPF,SPP是將輸入通過并行多個不同大小的maxpool 層,從而進行特征融合。
本次數據集,共收集了648張圖片,并對此進行擴容,每張圖片擴大了10倍,保證充足的訓練量,保持數據的精準度。通過編寫腳本,對輸入圖片添加高斯噪聲、色域變換、旋轉、縮放等數據增強操作,并對annotation文件夾中xml格式的注釋文件中bboxs(回歸框)的坐標進行變換。從而將原始圖像擴充為7 623張圖像,實現數據集的擴充。
本實驗數據共6類,分別是:短路、斷路、針孔、缺口、咬傷、雜散。利用LabelImg工具打標,輸出格式選擇為PascalVOC,得到xml格式的文件。其中xml文件中包含了對應的bundingbox 框以及圖片width 和height等信息。
為了提高模型的遷移和泛化能力,本實驗共使用7 623 張包含缺陷信息且極具代表性的PCB 數據集,每張輸入圖像的大小為3 034×1 586,經過轉化,reshape 為640×640。編寫數據集劃分程序,以7:2:1 的比例隨機分配給train_dataset、val_dataset,test_dataset。保證訓練數據分配的隨機性。
YOLO 是一種非常流行的計算機視覺算法,可以用于目標檢測和物體識別。它的訓練過程相對較為復雜,需要先準備好數據集、配置文件和網絡模型等多個方面。以下是YOLO 網絡模型訓練的一般步驟:1)準備數據集,指定超參數;2)下載預訓練權重,修改配置文件;3)開始訓練,評估模型性能;4)調整模型,預測目標物體。
本實驗的運行環境為:GPU 為NVIDIA GeForce RTX 3060;CPU為11thGen Intel i5-11700k@3.60GHZ;內存為32 GB。操作系統版本:Windows10;Cuda版本:11.6;cuDNN版本:8.5;實驗開發語言為Python;實驗框架為PyTorch,權重參數訓練采用隨機梯度下降SGD。設置如下:Batch_size 大小為16;動量因子為0.935;初始學習率為0.01;最大迭代的次數epoch 為300;權重衰退系數為0.0005。
本文采用mAP 來衡量PCB 板缺陷的檢測效果。對于每一種缺陷類別,可以繪制P-R曲線來評估其檢測效果,其中橫坐標為召回率,縱坐標為精確率。曲線下的面積被稱為平均準確率(AP),而多個缺陷類別的AP平均值則被稱為平均精確率(mAP)。mAP的取值范圍為0~1,它的計算公式如下:
其中k表示目標檢測中的類別集合,而APi則表示某一類別下物體的平均準確率。
對7 623 張PCB 進行300 次迭代訓練后,得到最佳權重模型。實驗獲得的P-R圖如圖1所示:

圖1 實驗獲得的P-R圖
從圖1中可以看出,missing_hole 的AP(平均精確度)為0.993,mouse_bite 的AP 為0.991,open_circuit 的AP 為0.994,short 的AP 為0.995,spur 的AP 為0.979,spurious_copper 的AP 為0.992。而均值平均精度(MAP)在IOU 為0.5 的情況下,可達0.991。根據實驗結果可得出,檢測準確率較高,模型整體性能優越。驗證集上的預測結果如圖2所示。通過對比標注圖片可知,筆者的模型可以精準識別并定位缺陷的位置,且整體檢測置信度較高。

圖2 驗證集上的預測結果
網絡訓練中的損失如圖3所示:

圖3 網絡訓練中的損失
根據圖3可以分析得出:隨著迭代次數的增加,定位損耗、置信度損失、分類損失逐漸減少,在加入動量因子之后,下降曲線呈現為一條平滑的曲線,而非震蕩下降。在第200次迭代后,梯度下降的速度趨緩,損失接近最小值,同時map 接近最大值,模型的擬合程度變強。
本文提出了一種基于YOLOv5 卷積神經網絡的PCB板缺陷識別算法,該算法通過卷積來提取缺陷特征,并通過網絡訓練,從而實現缺陷電路板的自動分類和識別。通過大量實驗表明,該算法能夠精準地檢測電路板元器件缺陷的種類,大大提高檢測的效率。可以把該算法集成到系統中,并根據缺陷識別算法研發出相對應的軟件,并在日常生活中應用于工業生產當中。