周賢勇,??≥x,王 圓,徐明升,侯津津,陳 琳
(長江大學 計算機科學學院,湖北 荊州 434023)
印刷電路板(PCB)制造作為電子工業(yè)中最基礎且最活躍的產(chǎn)業(yè)之一發(fā)展迅速,在日常工業(yè)生產(chǎn)過程中如何制造出高質(zhì)量的PCB是行業(yè)面臨的巨大挑戰(zhàn)。PCB上毫不起眼的微小缺陷亦可能造成數(shù)以萬計的巨大損失,因此對PCB成品出廠前的缺陷檢測是一項不可或缺的質(zhì)量檢測任務。
傳統(tǒng)PCB檢測主要是工人們通過特定的檢測儀器,在肉眼觀測以及個人經(jīng)驗的幫助下判斷其是否存在缺陷。然而此種方式無論是檢測的準確率還是效率都差強人意。緊接著,行業(yè)內(nèi)又利用其導電性通過將PCB與檢測器相連來判斷是否存在缺陷,但是由于檢測器產(chǎn)生電能的不穩(wěn)定性,過強的電能可能會損壞PCB中的微小元件,造成不必要的經(jīng)濟損失。
在深度學習技術日漸成熟的今天,PCB缺陷檢測任務也選擇性地引入了相關的技術[1]以滿足高效、無損、低成本的工業(yè)生產(chǎn)需求。目前應用比較廣泛的目標檢測算法可以分為2種:一種是經(jīng)過單次檢測即可直接得到最終結(jié)果的一階段目標檢測算法,比較典型的如文獻[2-3]中提出的SSD以及文獻[4-7]中提及的YOLO系列有著更快的檢測速度,一定程度上滿足了實時檢測的應用要求,但是在識別準確率上會有所欠缺;另一種則是將檢測問題劃分為2個階段的二階段目標檢測算法,如文獻[8-11]中涉及的Faster R-CNN以及文獻[11-14]中研究的Mask R-CNN均能較好地避免錯檢、漏檢的問題,但是會犧牲檢測速度,導致不能完全滿足實時檢測場景的需求。
由此從應用的角度出發(fā),設計出了基于改進YOLOv7的PCB裸板缺陷檢測算法。該算法旨在提升PCB裸板的檢測精度,希望能在一定程度上滿足工業(yè)生產(chǎn)的要求。消融實驗結(jié)果驗證了對YOLOv7算法改進的有效性,對比實驗的結(jié)果表明改進之后的算法在PCB裸板缺陷檢測上具有優(yōu)越性。
針對利用YOLOv7原始模型進行缺陷檢測過程中遇到的具體問題對YOLOv7整體網(wǎng)絡結(jié)構進行了 3處改進,改進后網(wǎng)絡結(jié)構FSE_YOLOv7如圖1所示。
首先,針對原始YOLOv7模型空間特征提取能力較弱的問題,在主干特征提取網(wǎng)絡(Backbone)部分引入在圖像視覺方面更有優(yōu)勢的FReLU激活函數(shù),將原始Conv2D_BN_SiLU模塊替換為Conv2D_BN_FReLU模塊,具體如圖1的Backbone部分所示;隨后,針對模型對小目標的識別能力不足的問題,在特征融合網(wǎng)絡對信息進行融合前,引入了SE注意力機制功能模塊,令網(wǎng)絡更加關注小目標的信息,如圖1的FPN部分所示;最后,針對原始模型識別缺陷在精度上有所不足的問題,融入更淺層的信息,將主干特征提取網(wǎng)絡中stage2部分的信息加入特征提取網(wǎng)絡中的同時添加4個從主干網(wǎng)絡部分開始的跳躍連接,用以降低信息傳遞過程中無法避免的信息損耗,具體的連接方式如圖1的FPN部分中虛線跳躍連接部分所示。
圖1 FSE_YOLOv7整體網(wǎng)絡結(jié)構Fig.1 Overall network structure of FSE_YOLOv7
原始YOLOv7模型網(wǎng)絡結(jié)構延用了YOLOv5 中所使用的SiLU激活函數(shù),函數(shù)詳述見文獻[15],激活函數(shù)的圖像如圖2所示(自變量x取值-4~10且間隔2個單位標刻)。SiLU激活函數(shù)的具體表達如下:
f(x)=x×sigmoid(x)。
(1)
SiLU激活函數(shù)處處可導且連續(xù)光滑,在深層模型上應用SiLU激活函數(shù)能夠有效提高分類的準確率,然而由于其引入了指數(shù)函數(shù)增加了計算量。
圖2 SiLU激活函數(shù)圖像Fig.2 SiLU activation function image
在YOLOv7網(wǎng)絡中利用文獻[16]研究的視覺激活函數(shù)FReLU替換SiLU,ReLU圖像及其變式FReLU圖像如圖3所示。
圖3 ReLU和FReLU激活函數(shù)圖像Fig.3 ReLU and FReLU activation function images
ReLU和FReLU的表達式如下:
式中:F為非線性激活函數(shù),x為自變量,T(x)為一種高效的空間特征提取方式,不會給網(wǎng)絡帶來太多的負擔。使用參數(shù)化的池化窗口加強對空間的關注具體T(x)如下:
(4)
FReLU通過增加一個空間條件來改善之前 幾個版本激活函數(shù)不依賴于空間條件的現(xiàn)狀,如 圖4所示。將文獻[17]中研究的ReLU和文 獻[18]中提及的PReLU擴展為具有像素化建模能力的視覺參數(shù)化ReLU,提升了激活函數(shù)的空間敏感性,而這一改進落實到公式上只增加了一個可以忽略不計的計算開銷,并且實現(xiàn)起來并不會太難。
消融實驗的結(jié)果表明,應用FReLU激活函數(shù)能有效提高PCB裸板缺陷檢測模型的mAP值。
圖4(c)中將漏斗條件(funnel condition)定義為T(X),相較于圖4(a)中手動設計零值和圖4(b)中增加一個參數(shù)化的pX,FReLU設計了一個依賴于空間上下文的二維漏斗狀條件利用這個空間條件T(X)和MAX函數(shù)的特性,可以提供像素級的建模能力或者說空間布局能力,理論上來說可以輕易地提取任何形狀物體的空間結(jié)構。
圖4 FReLU增加空間條件演變過程Fig.4 Evolution process of adding spatial condition to FReLU
由于大部分PCB裸板缺陷屬于小目標范疇而利用YOLOv7模型預測目標時會根據(jù)預先設計的不同尺度,分別檢測小、中和大3種尺度的目標,因此在YOLOv7中賦予3種不同尺度目標相同的權重的設定無形中會增加網(wǎng)絡的負擔,降低檢測的效率。為了使網(wǎng)絡更加關注對小目標的檢測,文中引入了文獻[19]研究的SE通道注意力機制直接在原有的網(wǎng)絡結(jié)構中添加SE_block,希望賦予小目標檢測通道更大的權重,以提高模型檢測小目標的精度。 SE_block詳細結(jié)構如圖5所示。
圖5中首先對輸入進來的特征圖X經(jīng)過轉(zhuǎn)化Ftr(Transformation)操作生成特征圖U,接下來對特征圖U進行全局平均池化Fsq(Squeeze),然后通過Fex(Excitation)對2層全連接層進行處理賦予不同通道不同的權重信息,最后在Fscale(Scale)步驟中利用上一步得到的權重信息對特征圖U進行權重賦值。
圖5 SE_block結(jié)構Fig.5 SE_block structure
文中原YOLOv7特征融合部分的信息來源于主干特征提取網(wǎng)絡的stage3、stage4和stage5三部分,如圖6所示。這樣只選取部分提取到的信息進行特征加強的方式在一定程度上會忽略掉淺層信息,從而影響到模型識別小目標的精度。為了讓特征加強部分融入更多的淺層信息,將Backbone部分中提取到的stage2部分的信息也融入FPN過程中,希望借此提高模型的識別精度。在特征加強過程中為了盡量減輕隨著網(wǎng)絡加深卷積模塊增多而產(chǎn)生的信息損失問題,原模型不斷地對載入的信息進行上采樣和下采樣,這無疑會損失許多的細節(jié)信息并且降低模型檢測小目標時的精度。在之前改進的基礎上將stage2、stage3、stage4、stage5直接與P2、P3、P4、P5跳躍連接以保留住更多的細節(jié)信息減少信息的損耗,改進后的特征融合部分結(jié)果如圖7所示。
圖6 原YOLOv7網(wǎng)絡特征融合網(wǎng)絡結(jié)構Fig.6 The original YOLOv7 network feature fusion network structure
圖6和圖7用式(5)來表示特征融合的過程,其中F表示經(jīng)過融合后的得到的結(jié)果,符號[]表示對內(nèi)部的特征圖按照通道維度進行拼接融合,f1、f2和f3表示需要進行融合的特征圖。
F=[f1,f2,f3]。
(5)
圖7 改進后YOLOv7特征融合網(wǎng)絡結(jié)構Fig.7 Improved YOLOv7 feature fusion network structure
由式(5)能夠得出圖6和圖7中F2、F3、F4可以分別用用式(6)~式(8)表示,并用式(9)表示F5:
(6)
(7)
(8)
(9)
在進行Upsampling2D之前會進行一個Conv操作,SE_stage表示對經(jīng)過特征提取網(wǎng)絡得到的stage特征圖經(jīng)過一個SE注意力機制模塊。
P2、P3、P4、P5表示如下:
(10)
(11)
(12)
(13)
YOLO系列算法從曾經(jīng)的YOLOv1發(fā)展到如今的YOLOv7,其高效率的識別能力已經(jīng)得到了廣泛的認可。根據(jù)訓練實驗條件(GPU)的不同,有YOLOv7Tiny和YOLOv7、YOLOv7-W6三種模型供選擇,本文采用的是YOLOv7。
實驗所需要的軟件以及硬件配置如表1所示。由于實驗過程中用到的數(shù)據(jù)集中的圖片總數(shù)以及各類別的圖片數(shù)量均無法滿足要求,在實驗之前會對數(shù)據(jù)集進行擴充。文中實驗開始前會同時采用2種數(shù)據(jù)增強方式,分別是文獻[20]中提及的mosaic以及文獻[21]中研究的mixup,對來數(shù)據(jù)進行增強操作,mosaic數(shù)據(jù)增強后的圖片會有50%的概率進行mixup處理。
表1 實驗所需軟硬件配置情況Tab.1 Hardware and software configurations required for the experiment
文中使用的CPU為AMD Ryzen 7 5800H with Radeon Graphics @ 3.20 GHz,GPU配置為GeForce RTX3060,整個實驗均利用Python語言進行開發(fā),使用的是PyTorch深度學習框架。
表2 數(shù)據(jù)集詳細信息
為了更全面客觀地對訓練后的模型性能進行評估,文中采用2種常用的評價指標分別為F1因子以及平均精度(mAP)。
文中設置判斷正負樣本的IoU閾值為0.5,當樣本檢測框和真實框之間的IoU值大于所設的閾值時,該樣本被標記為正樣本,用TP(真陽性)表示;而IoU值低于0.5時則將樣本標記為負樣本,用FP(假陽性)表示。將正樣本數(shù)量除以檢測出的該類目標的總數(shù)量,記為精確度(P):
(14)
用FN(假陰性)表示正樣本被誤判為負樣本的樣本數(shù),召回率記為R,表示如下:
(15)
以P為縱軸,R為橫軸,畫出二維的P-R曲線,P-R曲線下的陰影面積稱為平均精度值(AP),計算如下:
(16)
分別求出各類別的AP值,對所有的AP值求和后除以類別數(shù)得到mAP。
用F-Measure評價模型檢測能力,當α=1時,P和R的諧波平均值用F1因子表示:
(17)
(18)
針對文中對原始YOLOv7算法提出的3處改進,通過逐一增加改進模塊的方法設計了消融實驗以驗證各個改進模塊的有效性。實驗中利用mAP以及F1因子對改進模塊的效果進行評判,結(jié)果如 表3所示。利用FReLU激活函數(shù)替換SiLU激活函數(shù),在增強激活空間靈敏度的同時顯著改善了圖像視覺,與原始YOLOv7相比,mAP值提高了2.34%,F1因子提高了3.01%;在此基礎上通過把SE_block注意力機制模塊引入進特征融合網(wǎng)絡,mAP值提高了0.57%,F1因子提高了1.04%。最后,在前2次變更后的網(wǎng)絡中,使用改進后特征融網(wǎng)絡結(jié)構,讓網(wǎng)絡融入更多的淺層信息以減少融合過程中的信息損耗,使mAP值從最初的92.53%提高到了95.89%。消融實驗結(jié)果表明,文中對YOLOv7算法的3次改進均能夠提高其對于PCB裸板缺陷檢測的精度。
表3 消融實驗結(jié)果分析Tab.3 Analysis of ablation experiment results
原始YOLOv7算法和文中算法在同一個PCB裸板缺陷數(shù)據(jù)集上的檢測結(jié)果如圖8所示,圖的左側(cè)為原始YOLOv7模型檢測結(jié)果,右側(cè)為文中算法檢測結(jié)果。圖中不同的錨框顏色代表檢測出的不同的缺陷類型,一共6種類型。
HU Yi-jun, LIU Shu-peng, CHENG Kai, XU Gui-xia, HU Jing-jing, LIU Shan-rong
從圖8中可以發(fā)現(xiàn),本文算法在同一組數(shù)據(jù)上能夠檢測出更多的PCB裸板的缺陷,這表明本文算法相較于原算法在檢測精度上有了較大提升,同時也證實了文中針對原始模型3處改進的有效性。
圖8 檢測結(jié)果對比Fig.8 Comparison of test results
將目前主流的目標檢測模型YOLOv5s、YOLOX、Faster R-CNN和SSD訓練后對測試集中的PCB裸板進行檢測,得出的結(jié)果與改進后YOLOv7模型的檢測結(jié)果進行對比,以驗證文中算法檢測性能的優(yōu)越性。利用mAP值作為模型的評價指標,結(jié)果如表4所示。
表4 對比實驗結(jié)果分析Tab.4 Comparative analysis of experimental results
由表4可知,本文算法的mAP值最高,其值比Faster R-CNN、SSD、YOLOX、YOLOv5和YOLOv7網(wǎng)絡模型的mAP值分別高1.92%、8.26%、5.45%、 2.58%和3.36%。對比實驗的結(jié)果表明,本文算法對PCB裸板的缺陷檢測的精度是最高的。
為了解決PCB裸板缺陷檢測精度低,易錯檢、漏檢的難題,提出了基于改進YOLOv7的檢測算法。首先引入視覺激活函數(shù)FRelU替換SiLU優(yōu)化網(wǎng)絡的視覺提取方式,以捕獲更多的空間視覺信息,提高識別精度。然后引入SE注意力機制,令網(wǎng)絡更關注對小目標的識別以檢測出更多的小型目標,在一定程度上避免漏檢情況發(fā)生。接著采用改進的特征融合網(wǎng)絡對提取到的特征信息進行融合,融合入更多淺層信息的同時通過跳轉(zhuǎn)連接減少網(wǎng)絡傳遞過程中信息的損耗,提升模型識別小目標的準確率。隨后在公開的PCB板缺陷數(shù)據(jù)集上和原始YOLOv7模型進行消融實驗,驗證了本文的3種改進方式能夠提升原始YOLOv7模型對小目標的識別準確率。最后通過與其他經(jīng)典目標檢測算法進行對比,實驗結(jié)果表明,同等實驗條件下,改進后的YOLOv7模型的F1因子和mAP值均為最高值且實際缺陷檢測效果要優(yōu)于其他經(jīng)典算法,對于PCB裸板缺陷檢測在工業(yè)上的部署有一定的應用價值。