楊萍萍,白艷茹
北京科技大學(xué)高等工程師學(xué)院
印制電路板(printed circuit board,PCB)作為集成各種電子元器件的信息載體,提供了電子元器件之間的連接和支持結(jié)構(gòu)。及時準(zhǔn)確地檢測和識別PCB表面缺陷對確保電子設(shè)備的正常運行、質(zhì)量控制和功能實現(xiàn)至關(guān)重要[1-6]。
深度學(xué)習(xí)技術(shù)的飛速發(fā)展,有效地克服了數(shù)據(jù)采集過程中外界干擾對目標(biāo)檢測的不利影響,在PCB缺陷識別方面取得了初步成效[7-8]。典型的YOLO系列模型因其相較于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)在特征提取實時性和精確性方面的優(yōu)勢,在PCB缺陷識別領(lǐng)域得到了廣泛關(guān)注和認可。例如,利用YOLOv4目標(biāo)檢測算法,設(shè)計了PCB缺陷檢測模型,并對模型性能進行評估[9];基于YOLOv5目標(biāo)檢測算法,設(shè)計了全新的PANet多特征融合結(jié)構(gòu),實現(xiàn)了高效的雙向跨尺度連接和加權(quán)特征層融合[10];針對缺陷特性去除大目標(biāo)檢測尺度,保留中小目標(biāo)檢測尺度,改進了YOLOv5s網(wǎng)絡(luò),實現(xiàn)了PCB缺陷檢測[11];對于小目標(biāo)PCB表面缺陷檢測能力較弱的情況,提出SPDYOLOv5模型,以SPDConv取代模型中各階段的降采樣卷積,提高模型對細節(jié)信息的關(guān)注度[12];將YOLOv5輕量化用于PCB缺陷檢測,用GhostNet替換了原模型的特征提取網(wǎng)絡(luò),提升了模型對PCB缺陷檢測的識別效果[13];在YOLOv5目標(biāo)檢測算法的基礎(chǔ)上,設(shè)計了加強特征網(wǎng)路,實現(xiàn)了特征信息融合,引入注意力機制和Transformer結(jié)構(gòu),增強了模型捕捉全局信息能力,提升了模型準(zhǔn)確率[14]等。這些探索與嘗試對于提高PCB制造質(zhì)量、降低成本、提高生產(chǎn)效率具有重要意義,但在小目標(biāo)檢測方面仍然存在不足。雖然采用多個預(yù)測尺度等方法來識別不同大小的目標(biāo),但可能無法在低分辨率的預(yù)測尺度上獲得足夠的特征信息,導(dǎo)致目標(biāo)識別不準(zhǔn)確。
為改善小目標(biāo)的識別效果,本文基于傳統(tǒng)深度學(xué)習(xí)YOLOv5架構(gòu)的網(wǎng)絡(luò)模型,通過新增采樣層的方式添加了小目標(biāo)檢測層,優(yōu)化特征金字塔模型,使其能夠?qū)Ω〉哪繕?biāo)進行識別,在調(diào)整合適的錨框規(guī)格后,使其滿足PCB表面缺陷識別的要求,提升整體識別性能,滿足PCB生產(chǎn)制造的高標(biāo)準(zhǔn)、高效率、高精度要求。
YOLOv5是一種基于CNN的目標(biāo)檢測算法,具有訓(xùn)練速度快、檢測精度高和模型權(quán)重小等優(yōu)點。YOLOv5的網(wǎng)絡(luò)結(jié)構(gòu)主要分為輸入端、Backbone、Neck、Prediction 4部分。其中,輸入端用于接收圖像并對其進行預(yù)處理;骨干網(wǎng)絡(luò)Backbone負責(zé)對其進行特征提取;頸部Neck通過不同層級之間的特征融合形成特征金字塔;Head根據(jù)預(yù)定義錨框的大小處理不同層級的特征并輸出對應(yīng)的結(jié)果[15-17]。
YOLOv5訓(xùn)練過程中的正反向傳播通過不斷迭代傳播過程,逐漸優(yōu)化模型性能,提高目標(biāo)檢測的準(zhǔn)確性和魯棒性,使模型能夠更準(zhǔn)確地檢測目標(biāo)。實驗使用的源碼為官方發(fā)布的YOLOv5_5.0版本,使用Python語言編程,基于Pytorch環(huán)境實現(xiàn),采用的數(shù)據(jù)集是由北京大學(xué)計算機視覺與模式識別實驗室開發(fā)的用于缺陷識別與檢測的數(shù)據(jù)集。該數(shù)據(jù)集包含1 386張PCB圖像樣本,每張圖像上都標(biāo)注了不同類型的瑕疵區(qū)域,共計6種瑕疵類型:缺失孔(missing_hole)、鼠標(biāo)咬傷(mouse_bite)、開路(open_circuit)、短路(short)、雜散(spur)和偽銅(spurious_copper)。該數(shù)據(jù)集規(guī)模較大且瑕疵類型多樣,標(biāo)注精準(zhǔn),為算法的訓(xùn)練和評估提供了準(zhǔn)確參考。
由于所提供的數(shù)據(jù)集將數(shù)據(jù)按照對應(yīng)類別劃分,且格式屬于YOLOv5能夠使用的VOC數(shù)據(jù)集格式,需要對其進一步整理。將其按照圖片和標(biāo)注劃分為2個數(shù)據(jù)集,按照4:1的比例隨機抽取劃分為訓(xùn)練集及驗證集。然后,對標(biāo)注中.xml格式的數(shù)據(jù)進行解析,解析為.txt的格式,目的是將5類標(biāo)簽信息class、x_center、y_center、width、height轉(zhuǎn)換為能夠被YOLOv5使用的格式;最后,建立.txt文件作為訓(xùn)練集和驗證集的路徑指導(dǎo)。
訓(xùn)練過程中,采用的評價指標(biāo)為精確率(Precision)、召回率(Recall)、平均精度map@0.5和map@0.5:0.95。其中,Precision的表達式為
(1)
式中TP為正確目標(biāo)檢測個數(shù);FP為錯誤目標(biāo)檢測個數(shù)。
Recall的表達式為
(2)
式中FN為漏檢目標(biāo)個數(shù)。
對于目標(biāo)檢測任務(wù),每個分類都可以得到一條精度-召回率曲線PR Curve,即精確率與召回率的關(guān)系曲線,在不同閾值下計算,檢測精度是曲線下面積AP的值。AP值越高,檢測精度越高。map@0.5是將IoU設(shè)置為0.5時,計算每個類別中所有圖像的AP并求平均值;map@0.5:0.95是步長為0.05時不同IoU閾值下的平均map,范圍是0.5~0.95。
上述4個評價指標(biāo)全面地關(guān)注模型的預(yù)測準(zhǔn)確性、目標(biāo)檢測能力和泛化能力,在評估和比較不同模型或不同訓(xùn)練設(shè)置時提供了全面的評價,能夠有效地評估神經(jīng)網(wǎng)絡(luò)的訓(xùn)練結(jié)果。通過分析這些指標(biāo),了解模型的性能優(yōu)劣,從而對模型優(yōu)化與改進。
在YOLOv5算法的基礎(chǔ)上,使用相同的迭代次數(shù)100,設(shè)置了多種輸入圖像的大小作為實驗參照。實驗結(jié)果如表1所示。
表1 基于YOLOv5的不同輸入圖像大小實驗結(jié)果 %
輸入圖像的尺寸對模型的訓(xùn)練效果有一定影響,且隨著圖像尺寸的增大,模型的性能有所提升。尺寸由640像素×640像素提升為736像素×736像素時,性能提升效果顯著,精確率提升了8.2%,召回率提升了11.3%。然而,將圖像尺寸由736像素×736像素增加到864像素×864像素時,模型性能有所提升,但提升幅度有限,精確率提升了2.8%,召回率提升了4.7%。通過進一步觀察可以發(fā)現(xiàn),增加圖像尺寸,性能提升效果有限,隨著輸入圖像大小增加到960像素×960像素,精確率僅提升了0.2%,召回率出現(xiàn)下降??梢钥闯?增加輸入圖像的尺寸可以提升模型的性能,但提升效果逐漸減弱。因此,在選擇圖像尺寸時需要權(quán)衡計算資源和性能提升之間的關(guān)系,避免過度增加圖像尺寸導(dǎo)致性能提升不明顯或資源浪費。
選取最具有代表性的640像素×640像素和864像素×864像素輸入圖像尺寸的混淆矩陣,如圖1(a)、圖1(b)所示,可以看出針對不同分類,網(wǎng)絡(luò)模型的性能有所提升。在輸入圖像尺寸為864像素×864像素時,觀察其精確率和召回率圖像,如圖1(c)、圖1(d)所示,可以看出雖然迭代次數(shù)設(shè)置為100,但迭代次數(shù)為70時已經(jīng)趨近于穩(wěn)定。
(a)混淆矩陣640像素×640像素
PCB表面缺陷特征比較微弱,且邊緣通常比較模糊,容易被周圍背景淹沒。傳統(tǒng)的YOLOv5網(wǎng)絡(luò)采用多個預(yù)測尺度檢測不同大小的目標(biāo),可能無法在低分辨率的預(yù)測尺度上獲得足夠的特征信息,導(dǎo)致目標(biāo)識別不準(zhǔn)確。為改善小目標(biāo)缺陷的識別效果,在傳統(tǒng)YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,增加1個小目標(biāo)檢測層,結(jié)構(gòu)如圖2所示。通過引入更細致的特征提取和更精確的定位機制,優(yōu)化小目標(biāo)缺陷的識別性能,使模型更好地適應(yīng)小目標(biāo)的特征和尺寸,減少漏檢和誤檢的情況,提高整體的目標(biāo)識別質(zhì)量。
圖2 YOLOv4_4layers結(jié)構(gòu)圖
具體實現(xiàn)過程如下:在網(wǎng)絡(luò)模型中,增加一個預(yù)定義錨框[5,6,8,14,15,11],這些錨框的大小和長寬比能夠更好地適應(yīng)小目標(biāo)缺陷的識別需求;在Neck(頸部)引入一個上采樣層,對特征圖進行上采樣處理,使得原本較小的特征圖擴大至160像素×160像素,增加特征圖的分辨率;將上采樣后的特征圖與Backbone對應(yīng)大小的底層特征圖融合,構(gòu)建多尺度的目標(biāo)識別網(wǎng)絡(luò)來獲取更豐富的特征信息,以更準(zhǔn)確地定位和識別小目標(biāo)缺陷,提高召回率和準(zhǔn)確率等性能指標(biāo)。
在添加了小目標(biāo)檢測層后,將其與傳統(tǒng)YOLOv5方法的運行結(jié)果進行對比,輸入圖像的大小為640像素×640像素。從表2可以看出,通過增加小目標(biāo)檢測層,網(wǎng)絡(luò)模型的識別性能有所改善,精確率提升了7.5%,召回率提升了5.9%。同時,通過對比兩者的混淆矩陣(如圖3所示),可以看出在圖像輸入尺寸不變的情況下,鼠標(biāo)咬傷、開路、短路、雜散和偽銅的識別精確度分別提升了17%、15%、5%、10%、12%。
圖3 混淆矩陣640像素×640像素
表2 640像素×640像素實驗結(jié)果對比 %
進一步設(shè)置為736像素×736像素與傳統(tǒng)YOLOv5方法的缺陷識別結(jié)果進行對比,如表3所示??梢娬倩芈室约癿ap@0.5有所下降,但精確率和map@0.5:0.95卻有所上升。由于map@0.5:0.95考慮了不同IoU閾值的平均精度,表示模型在較高的IoU閾值下能夠更好地定位目標(biāo),模型的邊界框預(yù)測更加準(zhǔn)確,且相對較大目標(biāo)的識別準(zhǔn)確率有所提升。
表3 736像素×736像素實驗結(jié)果 %
考慮到可能由于輸入圖像的大小改變導(dǎo)致預(yù)設(shè)錨框與其不匹配的原因,通過改變不同錨框的大小進行實驗。將[5,6,8,14,15,11]標(biāo)記為Ⅰ;[7,8,10,13,16,30]標(biāo)記為Ⅱ;[9,10,12,24,20,39]標(biāo)記為Ⅲ;[10,13,16,30,33,23]標(biāo)記為Ⅳ。實驗結(jié)果如表4所示,可以看出新增預(yù)設(shè)錨框的大小對模型性能有影響,當(dāng)預(yù)設(shè)錨框的大小為[9,10,12,24,20,39]時,模型整體性能相較Ⅰ均有較大提升,且精確率較傳統(tǒng)YOLOv5方法也有所提升。
表4 錨框大小實驗結(jié)果 %
利用上述2種模型,對不同參數(shù)設(shè)置YOLOv5-640像素×640像素、YOLOv5-736像素×736像素、YOLOv5_4layers-640像素×640像素-[5,6,8,14,15,11]、YOLOv5_4layers-640像素×640像素-[9,10,12,24,20,39]的識別結(jié)果進行對比,如圖4(a)、圖4(b)所示,可以看出僅在增大圖片輸入尺寸的情況下,模型對PCB缺陷的識別能力有所提升。在增加小目標(biāo)檢測層后,如圖4(c)所示,當(dāng)錨框大小設(shè)置不符合所使用的數(shù)據(jù)集特征時,不能很好地捕捉圖像的特征。當(dāng)通過實驗調(diào)整合適的錨框大小后,如圖4(d)所示,模型對圖像中缺陷的識別性能達到最佳,能夠很好地通過多層特征金字塔對目標(biāo)特征進行提取。
(a)YOLOv5-640像素×640像素
為了提高PCB表面缺陷識別分辨率和精準(zhǔn)率,本文在傳統(tǒng)YOLOv5架構(gòu)的基礎(chǔ)上,通過新增采樣層的方式添加了小目標(biāo)檢測層,優(yōu)化特征金字塔模型,提出了基于深度學(xué)習(xí)YOLOv5_4layers架構(gòu)的PCB表面缺陷識別方法。以北京大學(xué)公開的PCB數(shù)據(jù)集為測試與驗證對象,將YOLOv5_4layers與傳統(tǒng)的YOLOv5進行對比分析。結(jié)果表明:本文所提出的方法在精確率、召回率、平均精度map@0.5和map@0.5∶0.95等方面有了較大改善,具有良好的缺陷識別性能。