摘要:PCB板缺陷檢測是實踐教學(xué)評分系統(tǒng)中的重要環(huán)節(jié)。為了減輕教師在PCB檢測與評分過程中的工作負擔(dān),提高教學(xué)質(zhì)量和效率,文章對現(xiàn)有檢測模型進行了改進。針對YOLOv5s模型在PCB板缺陷檢測中存在的通道和空間信息提取不足問題,文章增加了CBAM注意力機制,并使用SlideLoss損失函數(shù)。改進后的模型相較原始模型,準(zhǔn)確率提升了7.17%,平均召回率提升了4.38%。文章利用全棧Web開發(fā)的技術(shù)組合進行用戶交互、數(shù)據(jù)存儲和管理,使用改進后的YOLOv5s模型進行缺陷自動檢測,實現(xiàn)了自動化評分。該系統(tǒng)減少了教師的重復(fù)性工作,提高了檢測的準(zhǔn)確性和效率,學(xué)生能夠獲得及時的反饋,使教師能夠更專注于教學(xué)和研究。
關(guān)鍵詞:YOLOv5s算法;CBAM注意力機制;教學(xué)應(yīng)用;SlideLoss損失函數(shù)
中圖分類號:TP391 文獻標(biāo)識碼:A
文章編號:1009-3044(2024)32-0129-07 開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID) :
0 引言
隨著電子信息技術(shù)的飛速發(fā)展,印刷電路板(Printed Circuit Board,PCB) 作為電子產(chǎn)品的關(guān)鍵組成部分,其質(zhì)量直接影響產(chǎn)品的可靠性與穩(wěn)定性。PCB 上的缺陷不僅會導(dǎo)致電子產(chǎn)品性能下降,甚至可能引發(fā)安全隱患。PCB缺陷檢測對于保障電子產(chǎn)品質(zhì)量至關(guān)重要。然而,傳統(tǒng)的人工檢測方法效率低下、容易出錯,無法滿足大規(guī)模生產(chǎn)的需求[1]。近年來,隨著集成電路和半導(dǎo)體技術(shù)的快速發(fā)展,PCB結(jié)構(gòu)愈加復(fù)雜、小巧和精致,對其缺陷檢測的要求也相應(yīng)提高[2]。
傳統(tǒng)的PCB缺陷檢測方法主要依賴于圖像處理技術(shù)和人工目視檢查。Ismail I等[3]提出了基于圖像加減法的集成圖像處理技術(shù),Melnyk等[4]提出了基于Kmeans聚類的圖像比較方法,這些方法在一定程度上提高了檢測的精度和速度,但仍然存在著靈敏度和特異性平衡難、實際應(yīng)用受限等問題。此外,支持向量機(SVM) [5]和神經(jīng)網(wǎng)絡(luò)(NN) [6]等機器學(xué)習(xí)算法也被應(yīng)用于PCB缺陷檢測領(lǐng)域,進一步提升了檢測效果。然而,隨著深度學(xué)習(xí)的發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(CNN) 等方法在圖像處理中的表現(xiàn)尤為突出,Ding等[7]提出的TDDnet和Hu等[8]提出的改進Faster R-CNN和FPN模型,展示了深度學(xué)習(xí)在提高檢測精度方面的顯著潛力。盡管如此,這些方法在實現(xiàn)高精度的同時,往往以犧牲檢測速度為代價。
在此背景下,開發(fā)高效的PCB板缺陷檢測系統(tǒng)具有重要的意義,尤其是在電子信息等專業(yè)教育中,PCB板焊接是學(xué)生必須掌握的一項核心技能。然而,在傳統(tǒng)的實訓(xùn)教學(xué)中,教師手動檢查學(xué)生的PCB板,不僅耗時且容易出錯。隨著學(xué)生數(shù)量的增加,教師的工作量隨之增加,影響了教學(xué)質(zhì)量。因此,開發(fā)一個高效、準(zhǔn)確的PCB板缺陷檢測系統(tǒng)對于減輕教師負擔(dān)、提高教學(xué)質(zhì)量具有重要意義。本文設(shè)計并實現(xiàn)了一種基于YOLOv5s的PCB板缺陷檢測系統(tǒng),該系統(tǒng)通過集成CBAM注意力機制和SlideLoss損失函數(shù),顯著提高了檢測的精確度和召回率。此外,系統(tǒng)具備自動化評分、實時反饋、數(shù)據(jù)驅(qū)動教學(xué)改進等功能,有效提高了教學(xué)效率和質(zhì)量。該系統(tǒng)不僅有助于提升實訓(xùn)教學(xué)質(zhì)量,還為我國電子信息產(chǎn)業(yè)的人才培養(yǎng)提供了支持,推動了行業(yè)的良性發(fā)展。
1 YOLOv5s 模型
YOLO(You Only Look Once) 是一種革命性的目標(biāo)檢測算法,以其卓越的檢測速度和準(zhǔn)確性在實時目標(biāo)檢測領(lǐng)域占據(jù)重要地位。YOLO的核心優(yōu)勢在于其全卷積網(wǎng)絡(luò)設(shè)計和端到端的處理流程,這使得它能夠一次性處理整個圖像,而無須依賴復(fù)雜的候選區(qū)域提取過程。YOLO的設(shè)計目標(biāo)是在單張圖像中快速、準(zhǔn)確地檢測并定位多個目標(biāo)物體。與傳統(tǒng)的基于候選區(qū)域(如R-CNN) 方法不同,YOLO通過將輸入圖像劃分為固定數(shù)量的網(wǎng)格,每個網(wǎng)格負責(zé)預(yù)測其內(nèi)部是否包含目標(biāo)物體。當(dāng)物體的中心位于某個網(wǎng)格時,該網(wǎng)格負責(zé)輸出該物體的類別和邊界框位置,從而實現(xiàn)高效的端到端檢測。這種方法將候選區(qū)域生成和目標(biāo)分類兩個任務(wù)合并在一個網(wǎng)絡(luò)中,大幅度提高了檢測速度。通過非極大值抑制(NMS) 處理,YOLO能夠同時預(yù)測多個邊界框及其類別概率,從而實現(xiàn)速度與精度的平衡。
YOLOv5s的模型架構(gòu)通過精心設(shè)計,實現(xiàn)了高效的目標(biāo)檢測能力。其結(jié)構(gòu)主要由三大部分構(gòu)成:骨干網(wǎng)絡(luò)(Backbone) 、頸部網(wǎng)絡(luò)(Neck) 和頭部網(wǎng)絡(luò)(Head) 。
首先,骨干網(wǎng)絡(luò)(Backbone) 是圖像特征提取的核心。圖1左側(cè)的藍色模塊代表Focus模塊,該模塊通過對輸入圖像的切片和拼接操作,將圖像的通道數(shù)從3個(RGB) 擴展為更多通道,從而有效壓縮數(shù)據(jù)量并提高計算效率。接下來,綠色的卷積層(Conv) 和黃色的C3模塊通過多次卷積操作進一步提取圖像的深層特征。其中,C3模塊采用了殘差連接(類似ResNet的結(jié)構(gòu)),使得網(wǎng)絡(luò)能夠捕捉更復(fù)雜和多樣化的特征。紅色的SPP模塊(空間金字塔池化)通過多尺度的池化操作,增加了對不同尺度目標(biāo)物體的檢測能力,使模型對物體的大小、位置和形狀具有更高的魯棒性。
接著,頸部網(wǎng)絡(luò)(Neck) 負責(zé)特征融合,圖1中紫色和黃色模塊分別表示上采樣層(Upsample) 和拼接層(Concat) 。上采樣層將低分辨率特征圖放大,并與來自骨干網(wǎng)絡(luò)的高分辨率特征圖拼接在一起,從而融合不同尺度的信息。這樣,模型在處理大目標(biāo)和小目標(biāo)時都能利用這些不同層次的特征進行更有效的檢測。通過這種自底向上和自頂向下的特征融合路徑,增強了模型對多尺度目標(biāo)的適應(yīng)性,進而提高了整體檢測性能。頸部網(wǎng)絡(luò)還采用了CSP2_X結(jié)構(gòu)(圖中未標(biāo)明)來進一步增強特征融合的能力。
最后,頭部網(wǎng)絡(luò)(Head) 負責(zé)最終的目標(biāo)檢測。圖1底部的三個Detect 模塊對應(yīng)三個不同的尺度輸出(小、中、大),分別對不同尺寸的目標(biāo)進行檢測。這種多尺度檢測機制確保了YOLOv5s在處理復(fù)雜場景時,能夠同時檢測到大物體和小物體。每個尺度的檢測模塊都通過卷積層提取特征,并根據(jù)特定大小的目標(biāo)調(diào)整輸出權(quán)重,以便在總損失函數(shù)中提供適當(dāng)?shù)呢暙I。
在YOLOv5s中,損失函數(shù)的設(shè)計對于算法的準(zhǔn)確性和魯棒性至關(guān)重要。損失函數(shù)主要由三部分組成,每部分都針對不同的預(yù)測任務(wù)進行優(yōu)化。
首先,邊界框回歸損失(Bounding Box RegressionLoss) 是評估預(yù)測邊界框與真實邊界框差異的關(guān)鍵指標(biāo)。YOLOv5s采用了CIOU損失(Complete Intersectionover Union Loss) ,這是一種先進的邊界框回歸損失計算方法。CIOU損失不僅考慮了預(yù)測框與真實框的交集面積,還綜合了框的中心點距離、寬高比以及重疊區(qū)域的形狀,從而更全面地評估邊界框的準(zhǔn)確性。其次,置信度損失(Confidence Loss) 用于評估模型對目標(biāo)存在的置信度預(yù)測。該部分損失通過二元交叉熵損失(Binary CrossEntropy Loss) 來實現(xiàn),目的是確保模型能夠正確識別預(yù)測框中實際包含的物體。通過引入該損失,提高了模型在目標(biāo)存在性預(yù)測上的準(zhǔn)確性。最后,類別分類損失(Classification Loss) 負責(zé)評估預(yù)測類別與真實類別之間的差異,采用了多分類交叉熵損失(Multiclass CrossEntropy Loss) ,對每個目標(biāo)的類別預(yù)測進行評估,確保類別預(yù)測的準(zhǔn)確性和多樣性。在YOLOv5s中,這三種損失加權(quán)求和,構(gòu)成最終的總損失函數(shù)。具體公式如下所示:
Itotal = λbox ? Lbox + λobj ? Lobj + λcls ? Lcls (1)
總損失是三個主要部分的加權(quán)和:邊界框損失 Lbox、目標(biāo)置信度損失 Lobj 和類別分類損失Lcls。每個部分都有一個相應(yīng)的權(quán)重系數(shù) λ,用于平衡各個損失項的貢獻。
邊界框損失為 Lbox 公式如下:
Lbox = 1 - CIoU (b ) pred,btrue (2)
這部分使用CIOU(Complete Intersection over Union) 損失。公式中,bpred 是預(yù)測的邊界框,btrue 是真實的邊界框。CIOU不僅考慮了IoU(交并比),還考慮了中心點距離、寬高比和重疊區(qū)域的形狀。1減去CIOU值作為損失,使得CIOU值越高,損失越小。
目標(biāo)置信度損失為 Lobj公式如下:
S2 是特征圖的大?。僭O(shè)是正方形);B 是每個網(wǎng)格單元預(yù)測的邊界框數(shù)量1objij 是一個指示函數(shù),當(dāng)?shù)趇個網(wǎng)格的第j 個邊界框負責(zé)預(yù)測目標(biāo)時為1,否則為0;pc ij是真實的置信度得分;p?cij是預(yù)測的置信度得分。
類別分類損失為Lcls公式如下:
這是一個多類別交叉熵損失,用于評估類別預(yù)測的準(zhǔn)確性。符號含義與置信度損失相同 ;c 遍歷所有可能的類別;pc ij 是類別c的真實概率;p?cij 是類別c的預(yù)測概率。
2 YOLOv5s 算法改進
2.1 CBAM 模塊
CBAM模塊是一種輕量級的混合域注意力模塊,該模塊的作用是通過學(xué)習(xí)通道和空間特征之間的相互關(guān)系來提高網(wǎng)絡(luò)模型的性能[9]。在該模塊中同時集成了通道注意力模塊(Channel Attention Module,CAM) 和空間注意力模塊(Spatial Attention Module,SAM) 。
CBAM模塊的結(jié)構(gòu)如圖2所示,分為通道注意力模塊(CAM) 和空間注意力模塊(SAM) 兩部分。通道注意力模塊(Channel Attention Module,CAM) 通過全局最大池化(MaxPool) 和全局平均池化(AvgPool) ,分別從輸入特征中提取不同的全局特征。隨后,這兩個池化操作生成的特征通過一個共享的多層感知器(Shared MLP) 進行處理,輸出的特征相加并經(jīng)過Sig?moid激活函數(shù)生成通道注意力權(quán)重。最后,這些注意力權(quán)重與輸入特征逐元素相乘,生成加權(quán)后的通道特征(Channel-Refined feature F) 。這種方式有助于網(wǎng)絡(luò)關(guān)注圖像中特定通道的重要性,提升網(wǎng)絡(luò)性能??臻g注意力模塊(Spatial Attention Module,SAM) 首先通過一個卷積層提取初步的空間特征。接下來,對這些特征進行通道維度的最大池化和平均池化,生成兩個不同的特征圖。然后,將這兩個特征圖沿通道維度拼接,再通過一個卷積層生成空間注意力圖。最終,這個空間注意力圖與輸入特征相乘,生成加權(quán)后的輸出特征圖。這一模塊幫助網(wǎng)絡(luò)更好地關(guān)注圖像中特定空間位置上的重要信息,從而進一步提升網(wǎng)絡(luò)的表現(xiàn)。CBAM模塊整體流程:首先,對輸入特征圖進行通道注意力操作,生成加權(quán)后的通道特征圖;然后,再對該特征圖進行空間注意力處理,以增強對重要空間位置的關(guān)注。通過這種方式,CBAM能夠在通道和空間兩個維度上優(yōu)化網(wǎng)絡(luò)的特征表達能力,從而提升檢測的精度。CBAM模塊的核心作用是通過分別在通道和空間維度進行注意力加權(quán),提升網(wǎng)絡(luò)對關(guān)鍵信息的感知能力。這種雙重注意力機制能夠有效提高模型在目標(biāo)檢測任務(wù)中的表現(xiàn),尤其在處理復(fù)雜場景時,CBAM能夠幫助網(wǎng)絡(luò)更準(zhǔn)確地識別和定位重要特征。
原始YOLOv5s模型雖然速度快,但在處理小目標(biāo)和復(fù)雜場景時,模型對細節(jié)的捕捉能力有限。引入CBAM模塊后,可以增強模型對關(guān)鍵信息的注意力,幫助其更好地區(qū)分目標(biāo)和背景,從而提升檢測精度。CBAM還能提高模型在有噪聲或光照變化等復(fù)雜條件下的表現(xiàn),使網(wǎng)絡(luò)更具魯棒性。改進算法網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,在保持原始結(jié)構(gòu)的基礎(chǔ)上,引入了CBAM 模塊。在骨干網(wǎng)絡(luò)中將SPP后的C3替換為CBAM,在頸部網(wǎng)絡(luò)中的每個卷積層(Conv) 之后增加了CBAM模塊,使得特征圖在進行上采樣和拼接之前先經(jīng)過CBAM模塊的處理。通過在頸部網(wǎng)絡(luò)部分的卷積層后添加CBAM 模塊,提升了模型對重要特征的關(guān)注度。這種改進可以在不顯著增加計算量和檢測時間的情況下,增強模型對重要特征的關(guān)注度,提高檢測精度,尤其是在處理圖像模糊和小目標(biāo)檢測方面表現(xiàn)明顯。
2.2 SlideLoss 損失函數(shù)
SlideLoss損失函數(shù)是一種創(chuàng)新的損失函數(shù),通過替換傳統(tǒng)損失函數(shù)可以提高目標(biāo)檢測模型的性能[10]。SlideLoss損失函數(shù)相比傳統(tǒng)損失函數(shù),在多個方面展現(xiàn)了顯著優(yōu)勢。其自適應(yīng)權(quán)重機制能夠動態(tài)調(diào)整難以檢測目標(biāo)的權(quán)重,提升對模糊和邊界不清晰目標(biāo)的處理能力,尤其在復(fù)雜場景中表現(xiàn)出色。通過引入平滑機制,SlideLoss在處理接近邊界的目標(biāo)時減少了過擬合風(fēng)險,增強了模型的穩(wěn)定性。該損失函數(shù)能夠根據(jù)樣本難度自適應(yīng)調(diào)整損失值,使模型更加關(guān)注難樣本,從而提升整體檢測性能,尤其是在小目標(biāo)檢測中顯著提升了精度并減少了漏檢。此外,SlideLoss在光線變化和圖像模糊等不利條件下表現(xiàn)出較強的魯棒性,有效提高了模型的穩(wěn)定性和可靠性。
SlideLoss是將基礎(chǔ)損失和平滑損失結(jié)合,并通過自適應(yīng)權(quán)重機制調(diào)整樣本的貢獻,其公式為:
α 和β 分別是基礎(chǔ)損失和平滑損失的權(quán)重參數(shù),用于平衡兩者的影響。wi = 1/1 + e-γ(gi - τ) 是樣本i 的自適應(yīng)權(quán)重,使得難檢測樣本在總損失中的貢獻更大。1/1 + e-γ(gi - τ) 是一個Sigmoid函數(shù),用于將樣本的難度估計值gi 映射到權(quán)重wi。gi 是樣本的難度估計值,可以基于IoU或損失值來確定。γ 控制權(quán)重的變化速率,調(diào)整γ 可以改變權(quán)重分布的陡峭程度。τ 是難度閾值,樣本難度超過閾值時,權(quán)重迅速增加。SlideLoss 通過綜合考慮分類、定位和穩(wěn)定性,并對難樣本給予更多關(guān)注,有效提升了模型在各種檢測任務(wù)中的整體性能。將實現(xiàn)提高檢測精度,特別是在檢測小目標(biāo)缺陷時,SlideLoss能夠顯著提升模型的精度;減少漏檢測,通過自適應(yīng)機制,提高對難以檢測目標(biāo)的關(guān)注度,減少漏檢測的情況,增強魯棒性,在光線不穩(wěn)定和圖像模糊的情況下,SlideLoss能夠提升模型的穩(wěn)定性和魯棒性。
3 實驗準(zhǔn)備
3.1 數(shù)據(jù)集構(gòu)建
本文使用的數(shù)據(jù)集基于北京大學(xué)智能機器人開放實驗室公開發(fā)布的印刷電路板缺陷數(shù)據(jù)集,包含693張圖像,涵蓋6種不同類型的缺陷,分別是漏孔(Missing_hole) 、鼠咬(mouse_bite) 、開路(open_circuit) 、短路(short) 、余銅(spurious_copper) 和毛刺(spur) 。
為了增強模型的泛化能力和魯棒性,本文引入了運動模糊等圖像增強技術(shù),對每張圖像進行處理,使數(shù)據(jù)集的規(guī)模從原始的693張擴展到1386張。通過對圖像進行增強處理,不僅增加了數(shù)據(jù)的多樣性,還能夠使模型更好地適應(yīng)實際應(yīng)用中可能遇到的多種變化情況,如光照條件的變化、拍攝角度的不同以及目標(biāo)位置的偏移。這種圖像增強技術(shù)通過擴展訓(xùn)練數(shù)據(jù)的規(guī)模,有效提高了模型在不同環(huán)境下的檢測魯棒性和準(zhǔn)確性,從而確保系統(tǒng)在實際應(yīng)用中的穩(wěn)定性和可靠性。
3.2 實驗環(huán)境
本文實驗均在Windows平臺下運行,使用Python 語言,調(diào)用PyTorch庫進行網(wǎng)絡(luò)搭建、調(diào)試、訓(xùn)練與測試。實驗在一臺配備Intel Core i7-11800H處理器和NVIDIA GeForce RTX 3060(130W,6GB) 顯卡的電腦上進行。
3.3 模型評估
為了評估模型的性能,本文使用目標(biāo)檢測領(lǐng)域常用的評價指標(biāo):準(zhǔn)確率(Precision) 、召回率(Recall) 、F1 值(F1 Score) 和平均精度(mAP) 。具體公式如下所示:
準(zhǔn)確率(Precision) :定義為正確檢測到的目標(biāo)數(shù)量與實際檢測到的目標(biāo)數(shù)量之比,公式為:
Precision = TP/TP + FP (6)
式中:TP(True Positive) 是正確檢測的正樣本數(shù),F(xiàn)P(False Positive) 是誤檢測的樣本數(shù)。
召回率(Recall) :定義為正確檢測到的目標(biāo)數(shù)量與真實目標(biāo)數(shù)量之比,公式為:
Recall = TP/TP + FN (7)
式中:FN(False Negative) 是漏檢測的樣本數(shù)。
F1值(F1 Score) :F1值是準(zhǔn)確率和召回率的調(diào)和平均數(shù),綜合了兩者的優(yōu)缺點,公式為:
F1 = 2 ? Precision Recall/Precision + Recall (8)
平均召回率(mAP) 是目標(biāo)檢測評估中最常用的指標(biāo),用于計算所有類別的平均精度。對每個類別計算平均精度AP(Average Precision) ,AP是召回率從0到1 的情況下,精度的平均值。計算AP采用11點插值法,通過在固定的11個召回率點上計算精度的最大值,然后取這些值的平均值來估算Precision-Recall曲線下的面積,從而得到AP。計算AP的公式為:
這種方法簡化了計算,同時提供了對模型性能的合理估計。mAP是所有類別的AP的平均值。故此推導(dǎo)出mAP 的公式為:
4 實驗結(jié)果分析
4.1 模型對比
表1展示了六種不同目標(biāo)檢測方法的對比數(shù)據(jù),包括Faster RCNN、YOLOv5s、YOLOv5m、YOLOv51、YOLOv5x 以及改進后的YOLOv5s+CBAM+SlideLoss。每種方法在精度(Precision) 、召回率(Recall) 、平均精度(mAP) 和每秒幀數(shù)(FPS) 四個指標(biāo)上的表現(xiàn)如下:
Faster R-CNN采用了兩階段檢測架構(gòu),先生成候選區(qū)域再分類定位,因此召回率高(98.0%) ,但由于計算復(fù)雜度大,推理速度慢(FPS為17.1) ,不適合對實時性要求較高的應(yīng)用。其精度(94.3%) 和mAP(96.7%) 略低,這表明盡管在召回率方面表現(xiàn)出色,但在精度上有所欠缺。YOLO系列模型采用單階段檢測架構(gòu),在一次前向傳播中完成檢測和分類,極大提升了速度。YOLOv5s 由于模型較小,推理速度最快(FPS 為36.9) ,適合對實時性要求高的應(yīng)用場景,但其特征提取能力較弱,因此精度(96.6%) 和mAP(97.4%) 略低于更復(fù)雜的YOLOv5l 和YOLOv5x。YOLOv5m 在精度(96.3%) 、召回率(96.3%) 和mAP(97.5%) 上表現(xiàn)均衡,速度適中(FPS為28.3) ,適合對精度和速度均有要求的場景。YOLOv5l通過增加模型深度和寬度提升了特征提取能力,精度(96.9%) 和mAP(98.1%) 較高,但推理速度(FPS為22.4) 較慢,適合對檢測精度要求高的場景。YOLOv5x 的精度(96.4%) 和召回率(97.3%) 表現(xiàn)出色,mAP達到98.1%,但推理速度最慢(FPS為16.1) ,雖然適合處理復(fù)雜背景和小目標(biāo),但不適合實時檢測任務(wù)。改進后的YOLOv5s+CBAM+SlideLoss引入了CBAM注意力機制和SlideLoss損失函數(shù),提升了模型對關(guān)鍵區(qū)域的關(guān)注,顯著提高了精度(97.5%) 、召回率(97.1%) 和mAP(98.5%) ,尤其在處理圖像模糊和小目標(biāo)檢測時表現(xiàn)突出。雖然FPS為31.9,不及YO?LOv5s,但在需要高精度檢測的場景中表現(xiàn)最佳??傮w來看,YOLOv5s+CBAM+SlideLoss在精度、召回率和mAP方面均優(yōu)于其他模型,特別適用于需要高檢測精度和處理復(fù)雜圖像場景的應(yīng)用。YOLOv5s由于其最高的FPS,適合對實時性要求較高的應(yīng)用場景,而Faster R-CNN和YOLOv5x雖然在某些指標(biāo)上表現(xiàn)較好,但綜合性能和實時性不如YOLOv5系列。綜上所述,YOLOv5s+CBAM+SlideLoss 提供了最佳的檢測性能,是高精度和復(fù)雜環(huán)境下目標(biāo)檢測的理想選擇。
4.2 消融實驗
為了評估改進后的YOLOv5s模型在教學(xué)端PCB 檢測中的效果,本文進行了四次消融實驗。這些實驗使用經(jīng)過運動圖像模糊處理的數(shù)據(jù)集,以突出不同模型在處理模糊圖像和小目標(biāo)檢測中的性能差異。具體實驗數(shù)據(jù)如表2所示。
根據(jù)實驗結(jié)果,YOLOv5s原始模型在目標(biāo)檢測任務(wù)中的準(zhǔn)確率為0.895 5,顯示其在目標(biāo)檢測分類任務(wù)中具備較高的精確性。然而,盡管F1值達到0.914 3,表明模型在正負樣本不均衡的情況下綜合性能較好,但在召回率和準(zhǔn)確率之間的平衡仍有改進空間。與原始模型相比,加入CBAM 模塊的YOLOv5s(YO?LOv5s+CBAM) 模型的準(zhǔn)確率提升至0.934 9,F(xiàn)1值顯著提升至0.940 9,表明CBAM增強了模型在正負樣本不均衡問題上的綜合表現(xiàn),尤其是在對重要特征的關(guān)注上提高了模型的整體檢測效果。當(dāng)將損失函數(shù)替換為SlideLoss 后,YOLOv5s 模型的準(zhǔn)確率提升至0.906 6,F(xiàn)1 值上升至0.928 0,mAP 顯著提升至0.964 9。這表明SlideLoss通過平滑和自適應(yīng)機制改善了模型在處理小目標(biāo)和模糊圖像方面的性能,減少了漏檢的情況。SlideLoss在處理更復(fù)雜的樣本分布和難度不同的目標(biāo)檢測時表現(xiàn)出更高的魯棒性和精度。結(jié)合CBAM 模塊和SlideLoss 損失函數(shù)的YO?LOv5s改進模型表現(xiàn)最佳,準(zhǔn)確率達到0.964 7,召回率為0.972,F(xiàn)1值為0.968 3,mAP提升至0.981 7。這說明該改進模型在所有評估指標(biāo)上表現(xiàn)出色,尤其在處理模糊圖像和小目標(biāo)檢測任務(wù)時展現(xiàn)了卓越的能力。這些結(jié)果進一步證明CBAM和SlideLoss的結(jié)合在提高模型檢測性能方面具有顯著的效果和魯棒性。
5 系統(tǒng)設(shè)計
5.1 系統(tǒng)架構(gòu)
系統(tǒng)采用Django 框架的MVC(Model-View-Controller) 模式,前端負責(zé)頁面展示和用戶交互,后端負責(zé)業(yè)務(wù)邏輯和數(shù)據(jù)處理,模型層負責(zé)數(shù)據(jù)存儲和管理。同時,利用改進后的YOLOv5s深度學(xué)習(xí)模型,實現(xiàn)PCB板缺陷的自動檢測。數(shù)據(jù)庫設(shè)計方面,結(jié)合Django的ORM特性,定義了多個模型來存儲用戶、圖片和檢測結(jié)果等信息。整個系統(tǒng)采用模塊化設(shè)計,具有良好的可擴展性和可維護性。
基于YOLOv5s的自動化PCB檢測系統(tǒng)的設(shè)計包括前端、后端和算法模型三個主要部分。前端主要負責(zé)用戶界面的設(shè)計與實現(xiàn),后端負責(zé)數(shù)據(jù)的存儲和處理,算法模型負責(zé)PCB板的缺陷檢測。
1) 前端設(shè)計:系統(tǒng)使用了HTML、CSS和JavaScript 來構(gòu)建用戶界面,采用了Bootstrap等CSS框架,確保頁面在不同設(shè)備和瀏覽器上的兼容性。使用Django 的模板引擎,將后端數(shù)據(jù)渲染到HTML頁面中,模板中使用變量、循環(huán)和條件語句,動態(tài)生成內(nèi)容。JavaS?cript用于實現(xiàn)動態(tài)交互效果,如表單驗證、異步請求等,增強用戶體驗。
2) 后端設(shè)計:后端主要負責(zé)用戶信息、圖片信息和檢測結(jié)果的存儲與管理。后端接收到前端上傳的圖片后,會調(diào)用算法模型進行檢測,并將檢測結(jié)果存儲在數(shù)據(jù)庫中。后端采用Django框架進行開發(fā),使用Django的ORM(對象關(guān)系映射)進行數(shù)據(jù)庫操作。后端主要負責(zé)接收前端上傳的圖片,調(diào)用算法模型進行檢測,并將檢測結(jié)果存儲在數(shù)據(jù)庫中。數(shù)據(jù)庫使用MySQL進行存儲,確保數(shù)據(jù)的可靠性和穩(wěn)定性。
5.2 功能模塊
在用戶管理模塊中,系統(tǒng)使用了Django的內(nèi)置用戶認證系統(tǒng)來管理用戶注冊和登錄。為了確保密碼的安全性,采用了Django 默認的密碼加密機制(bcrypt) 對用戶密碼進行加密存儲,并在用戶登錄時驗證密碼。數(shù)據(jù)庫方面,使用了Django自帶的User模型,包含用戶名、密碼、電子郵件等基本信息。同時,定義了一個自定義的Person模型,與User模型通過外鍵關(guān)聯(lián),用于存儲用戶的角色信息(教師或?qū)W生)。用戶注冊時,前端表單收集用戶名、密碼、確認密碼和角色信息,后端接收數(shù)據(jù)后,驗證密碼是否一致,并檢查用戶名是否已存在。如果驗證通過,使用Django的User模型創(chuàng)建新用戶,并在Person模型中保存角色信息。登錄時,系統(tǒng)驗證用戶名和角色是否匹配,使用Django的認證系統(tǒng)驗證密碼,成功登錄后,根據(jù)用戶角色重定向到相應(yīng)的頁面。為實現(xiàn)權(quán)限控制,系統(tǒng)使用自定義的裝飾器role_required,根據(jù)用戶角色限制訪問特定視圖函數(shù),未授權(quán)的用戶訪問受限頁面時,會被重定向或提示無權(quán)限訪問。
在圖片上傳模塊中,系統(tǒng)使用Django處理文件的上傳和存儲,利用os庫進行文件路徑和目錄的管理。學(xué)生和教師用戶都可以上傳圖片,教師可以創(chuàng)建和管理文件夾,以組織上傳的PCB板圖片和檢測結(jié)果。上傳的圖片信息存儲在自定義的ImageUpload模型中,包括圖片路徑、文件名、上傳用戶等信息。為確保時間記錄的準(zhǔn)確性,使用pytz庫來處理時區(qū)信息。教師用戶可以通過前端創(chuàng)建新的文件夾或使用已有的文件夾組織圖片,支持本地上傳和服務(wù)器上傳兩種方式。上傳的圖片保存在MEDIA_ROOT/images/教師用戶名/文件夾名稱的目錄結(jié)構(gòu)中,并在ImageUpload表中記錄圖片信息,便于后續(xù)的管理和查詢。學(xué)生用戶需輸入教師的用戶名,并從下拉菜單中選擇要上傳的文件夾,上傳的圖片將被保存到對應(yīng)教師的文件夾下,同樣在ImageUpload 表中記錄上傳的圖片信息。文件夾管理功能允許教師用戶在前端創(chuàng)建、刪除文件夾,以便組織和管理圖片,后端使用OS庫進行目錄的創(chuàng)建和刪除操作,并提供接口獲取教師已有的文件夾列表,供學(xué)生在上傳圖片時選擇。
缺陷檢測模塊是系統(tǒng)的核心功能,利用PyTorch 深度學(xué)習(xí)框架和改進后的YOLOv5s目標(biāo)檢測模型。模型文件存放在服務(wù)器指定路徑中。系統(tǒng)獲取待檢測圖片的文件路徑列表,遍歷每張圖片,使用模型進行檢測,提取檢測結(jié)果并統(tǒng)計每種缺陷的數(shù)量。缺陷類別包括缺孔、鼠咬、開路、短路、毛刺和雜銅。根據(jù)用戶在評分設(shè)置頁面輸入的總分和焊點總數(shù),計算每個缺陷的扣分權(quán)重,計算每張圖片的總評分,并將檢測結(jié)果和評分保存到自定義的數(shù)據(jù)庫中。
在歷史記錄模塊中,系統(tǒng)利用Django處理數(shù)據(jù)查詢、分頁和模板渲染。系統(tǒng)查詢當(dāng)前用戶的所有圖片上傳記錄,按照上傳時間降序排序。對每個上傳記錄,匯總對應(yīng)的檢測結(jié)果,包括總檢測圖片數(shù)、每種缺陷的總數(shù)和平均評分。使用Django的Paginator對歷史記錄進行分頁,每頁顯示固定數(shù)量的記錄。在前端頁面中提供分頁導(dǎo)航,方便用戶瀏覽不同頁的數(shù)據(jù)。用戶可以點擊某個歷史記錄,查看對應(yīng)的詳細檢測結(jié)果,詳細頁面顯示每張圖片的缺陷統(tǒng)計和評分。
在結(jié)果查看和導(dǎo)出功能中,系統(tǒng)使用pandas庫處理數(shù)據(jù)并生成Excel文件。檢測完成后,系統(tǒng)查詢最新的檢測結(jié)果,并在前端頁面中以表格形式展示每張圖片的檢測結(jié)果,包括缺陷數(shù)量和評分。用戶可以點擊導(dǎo)出Excel按鈕,后端使用pandas將檢測結(jié)果轉(zhuǎn)換為DataFrame,導(dǎo)出為Excel文件并供用戶下載。評分設(shè)置模塊中,用戶可以輸入焊點總數(shù)和總分,提交表單后,后端接收數(shù)據(jù),計算每個缺陷的扣分權(quán)重,并存儲在會話中。在后續(xù)的檢測過程中,系統(tǒng)會讀取會話中的參數(shù)進行評分計算。會話管理使用Django的request.session,確保用戶的評分設(shè)置在整個檢測流程中保持一致。文件夾管理模塊中,教師用戶可以在前端創(chuàng)建和刪除文件夾,以組織和管理圖片。系統(tǒng)使用os庫在指定路徑創(chuàng)建或刪除目錄,并提供接口獲取教師已有的文件夾列表,供學(xué)生在上傳圖片時選擇。在創(chuàng)建文件夾時,系統(tǒng)會檢查文件夾是否已存在,避免重復(fù)創(chuàng)建。刪除文件夾時,系統(tǒng)會驗證文件夾是否存在,刪除操作須謹(jǐn)慎,避免誤刪重要數(shù)據(jù)。
學(xué)生圖片上傳模塊需要學(xué)生輸入教師的用戶名,并從下拉菜單中選擇要上傳的文件夾。后端驗證教師用戶是否存在,獲取對應(yīng)教師的文件夾列表,供學(xué)生選擇上傳。上傳的圖片將保存到對應(yīng)教師的文件夾下,并在數(shù)據(jù)庫中記錄圖片的上傳信息,方便教師查看和管理。
為實現(xiàn)權(quán)限控制和裝飾器,系統(tǒng)使用了Django提供的認證和權(quán)限控制基礎(chǔ)設(shè)施,并使用functools.wraps 自定義了裝飾器role_required。該裝飾器用于限制視圖函數(shù)的訪問權(quán)限,確保只有特定角色的用戶才能訪問。不符合條件的用戶將被重定向或提示無權(quán)限訪問。在需要限制訪問的視圖函數(shù)上,添加@role_re?quired(teacher)或@role_required(student)即可實現(xiàn)角色權(quán)限控制。
5.3 功能演示
1) 評分設(shè)置:評分設(shè)置頁面允許用戶為每個焊點分配分?jǐn)?shù),該分?jǐn)?shù)基于焊點總數(shù)與設(shè)定總分的比例,即每個焊點分?jǐn)?shù)為總分除以焊點總數(shù)。此頁面同時作為歷史記錄查看和文件管理的中心樞紐,用戶登錄后默認進入此頁面。
2) 文件夾管理和圖片上傳:用戶可以通過文件管理功能對文件進行創(chuàng)建、刪除、修改和查詢操作。例如,在創(chuàng)建文件夾時,用戶需在輸入框中輸入文件夾名稱(如“test”) ,點擊創(chuàng)建按鈕后,新文件夾將顯示在文件列表中,如圖6所示。若需刪除文件夾,可在文件列表中選擇“test”文件夾旁的刪除按鈕進行操作,如圖7所示。
通過下拉框選擇圖片上傳方式(本地上傳或服務(wù)器上傳)即單擊上傳按鈕即可完成圖片上傳。
3) 檢測結(jié)果處理和展示:請依次完成評分設(shè)置和圖片上傳,當(dāng)上傳完成后,等待幾秒,即可跳轉(zhuǎn)到結(jié)果界面如圖9所示,單擊圖9所標(biāo)注出的導(dǎo)出Excel按鈕,即可導(dǎo)出表格。
4) 歷史記錄查看:請通過分?jǐn)?shù)設(shè)置頁面的查看歷史記錄按鈕進入界面,此界面可以查看以往檢測數(shù)據(jù),如圖10查看歷史記錄所示,若想查看詳情界面可以通過“查看詳情”按鈕查看對應(yīng)的詳細界面。
5) 學(xué)生圖片上傳:學(xué)生界面可通過輸入教師的用戶名,并通過下拉菜單完成文件夾選擇,再通過選擇文件夾完成圖片上傳,上傳成功后會有3秒鐘的圖片上傳成功提示。
6 結(jié)論
本文設(shè)計并實現(xiàn)了一種基于改進YOLOv5s模型的PCB板缺陷檢測系統(tǒng)。針對原始YOLOv5s模型在PCB缺陷檢測中通道和空間信息提取不足的問題,本文引入了CBAM注意力機制,增強了模型對重要特征的關(guān)注度,提高了特征提取的有效性。同時,采用SlideLoss損失函數(shù),增強了模型對難以檢測樣本的識別能力,減少了漏檢現(xiàn)象。實驗結(jié)果表明,改進后的模型在準(zhǔn)確率上提升了7.17%,平均召回率提升了4.38%,在處理圖像模糊和小目標(biāo)檢測方面表現(xiàn)尤為突出。本文研究的創(chuàng)新點在于將改進的YOLOv5s模型成功應(yīng)用于教學(xué)實踐,提供了高效、準(zhǔn)確的PCB缺陷檢測解決方案,具有實際應(yīng)用價值和推廣潛力。未來的研究工作將致力于進一步提升模型的檢測精度和速度,如優(yōu)化模型結(jié)構(gòu)、探索更深層次的特征提取方法、引入更先進的損失函數(shù)和注意力機制,進一步提高模型的性能。此外,計劃將該系統(tǒng)擴展應(yīng)用到其他類型的缺陷檢測任務(wù)中,如焊點檢測、電子元器件檢測等,為更多領(lǐng)域的教學(xué)和工業(yè)檢測提供支持,推動智能檢測技術(shù)的發(fā)展與應(yīng)用。
參考文獻:
[1] 于心怡.基于深度學(xué)習(xí)的印刷電路板表面圖像增強與缺陷識別研究[D].長沙:中南大學(xué),2023.
[2] 徐一奇,肖金球,汪俞成,等.基于機器視覺的PCB表面缺陷檢測研究綜述[J/OL].微電子學(xué)與計算機,1-15[2024-08-03].https://kns. cnki. net/kcms2/article/abstract? v=3uoqIhG8C44YLTlOAiTRKibYlV5Vjs7ioT0BO4yQ4m_mOgeS2ml3UHH4bN4tKXwL-YoSKs8wQHHEXlUk-D-Dq9bTB6kj6bJi&uni ?platform=NZKPT
[3] IBRAHIM I,IBRAHIM Z,ABIDIN M,et al.An algorithm for clas?sification of five types of defects on bare printed circuit board[J].Interm ational Journal of Computational I,2008,13(1):57-64.
[4] MELNYK R A,TUSHNYTSKYY R B.Detection of defects in printed circuit boards by clustering the etalon and defected samples[C]//2020 IEEE 15th International Conference on Ad?vanced Trends in Radioelectronics, Telecommunications and Computer Engineering (TCSET). February 25-29, 2020, Lviv-Slavske,Ukraine.IEEE,2020:961-964.
[5] YUN T S,SIM K J,KIM H J.Support vector machine-based in?spection of solder joints using circular illumination[J].Electron?ics Letters,2000,36(11):949.
[6] WU H,ZHANG X M,XIE H W,et al.Classification of solder joint using feature selection based on Bayes and support vector machine[J].IEEE Transactions on Components,Packaging and Manufacturing Technology,2013,3(3):516-522.
[7] DING R W,DAI L H,LI G P,et al.TDD-net:a tiny defect detec?tion network for printed circuit boards[J].CAAI Transactions on Intelligence Technology,2019,4(2):110-116.
[8] HU B,WANG J H.Detection of PCB surface defects with im?proved faster-RCNN and feature pyramid network[J].IEEE Ac?cess,2020,8:108335-108345.
[9] WOO S,PARK J,LEE J Y,et al.CBAM:convolutional block at?tention module[M]//Lecture Notes in Computer Science.Cham:Springer International Publishing,2018:3-19.
[10] YU Z P,HUANG H B,CHEN W J,et al.YOLO-FaceV2:a scale and occlusion aware face detector[J]. Pattern Recognition,2024,155:110714.
[11] REN S,HE K,GIRSHICK R,et al.Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks [J].IEEE Transactions on Pattern Analysis and Machine Intel?ligence,2015,39(6):1137-1149.
[12] SHEN M H,LIU Y J,CHEN J,et al.Defect detection of printed circuit board assembly based on YOLOv5[J]. Scientific Re?ports,2024,14(1):19287-19287.
【通聯(lián)編輯:謝媛媛】
基金項目:新疆農(nóng)業(yè)大學(xué)大學(xué)生創(chuàng)新項目:電子技術(shù)基本技能實訓(xùn)評分系統(tǒng)(項目編號:dxscx2024355)