盧小康,歐陽華兵*,陳 田,劉 軍
(1.上海電機學院 機械學院,上海 201306;2.上海電機學院 凱勞智能制造學院,上海 201306)
印刷電路板(PCB)作為現代電子產品的基礎部件,在通信電子、汽車電子、醫療電子以及航空航天等多個領域均得到了廣泛應用[1]。新時代,隨著人工智能、大數據等新興技術的急速發展,人們對電子產品的需求和質量的要求不斷提高。然而,PCB在制作過程中,由于涉及的工序較多,每個工序都可能出現短路、斷路、毛刺、焊點缺焊、缺口和余銅等多種缺陷[2-3],極大地影響了電子產品的性能和安全質量。PCB上需要連接的電子元件眾多,這就意味著各電子元件焊接過程中容易出現焊接質量缺陷,而這些缺陷對電子產品的最終性能造成很大影響。因此,對其進行質量檢測是一項非常重要的工作[4-5]。
最初PCB缺陷主要采用人工檢測的方法,該方法人工成本高、效率低、主觀性強[6]。隨著智能制造產業的發展,工業生產越來越趨向自動化,自動化檢測技術的應用也越來越廣泛[7-9]。機器視覺代替人工實現24 h全天檢測,有效避免了工人的疲勞和主觀缺陷。但獲取的PCB缺陷圖像質量無法得到精確控制,嚴重影響了識別效率。近年來,隨著深度學習算法的發展,許多學者開始將其廣泛應用到工業缺陷檢測領域,并取得了顯著的成績[10]。
Park等[11]針對焊膏缺陷大小不一、圖像收集困難等問題,提出一種D3PointNet的雙層缺陷檢測模型。實驗表明,所提出的模型具有較高的魯棒性,并且匹配得分較現有CNN模型提高了10.2%。Park等[12]針對檢測圖像和訓練圖像尺寸不同而導致CNN檢測性能下降的問題,提出了一種基于MarsNet的多標簽分類網絡。修改擴張殘差網絡使其可以獲得高分辨率特征圖,并利用水平垂直池化聚合特征圖中的位置信息。通過在PCB錫膏數據集上實驗,驗證了網絡對不同尺寸的圖片均有較好的檢測效果。Hu等[13]提出了一種基于Faster R-CNN的PCB缺陷檢測算法。首先,使用ResNet50作為主干網絡,使其能更好地檢測小目標;其次,使用GARPN預測更準確的錨點,并合并ShuffleNetV2的剩余單元。實驗表明,改進的網絡較原Faster R-CNN,在平均精度均值(mean Average Precision,mAP)和檢測速度(FPS)上分別提高了9%和每張圖像0.042 s。胡珊珊等[14]針對PCB缺陷較小且較為復雜等特點,提出一種基于Faster R-CNN的PCB缺陷檢測網絡。首先,使用多層卷積對不同維度的特征進行提取;其次,使用上采樣和跳躍連接將不同尺度的特征進行融合;最后,利用RPN和ROI-Pooling定位特征圖的ROI區域并進行特征提取。實驗表明,該方法對PCB導線和焊點缺陷檢測的mAP可以達到98.6%,并且可移植性強。Zhang等[15]將特征金字塔網絡應用于PCB缺陷檢測模型中,通過構建不同尺度的特征圖來檢測不同大小的缺陷。通過在多個PCB數據集上實驗,證明了該網絡的有效性。
本文提出一種基于輕量化YOLOv5s的PCB缺陷檢測算法。為提高模型對小目標的檢測性能,在骨干網絡中添加卷積塊注意力模塊(Convolutional Block Attention Module,CBAM)并增加一個包含更多信息的淺層有效特征。使用C3-CBAM替換PANet中C3模塊進一步提高模型對缺陷的感知能力。使用深度可分離卷積(Depthwise Separable Convolution,DWC)替換PANet結構中的下采樣操作并去掉檢測大目標的Yolo Head結構層,在保證模型檢測精度的同時減少模型參數。通過在自制PCB焊錫缺陷數據集上實驗,將本文改進算法同常見的目標檢測算法進行對比。
YOLO算法是一種單階段的目標檢測算法,有效提高了模型的檢測速度,為目標檢測提供了一種新的研究思路。2020年6月Glenn Jocher在GitHub上發布了YOLOv5算法,根據網絡的深度和寬度從小到大YOLOv5算法分可以分為s、m、l、x四種版本。與YOLOv4相比,YOLOv5的檢測精度(Average Precision,AP)、FPS等指標都得到了提升并且模型參數量大幅度降低。其中,YOLOv5s是該系列中是深度最小的一個算法,模型參數量僅有7.06 M,約是YOLOv4的1/9。YOLOv5結構框架如圖1所示。

圖1 YOLOv5模型框架示意Fig.1 Schematic of the YOLOv5 model framework
從圖1可以看出,與之前YOLO系列算法類似,YOLOv5網絡結構可以劃分成Backbone、FPN和Yolo Head三部分。其中,Backbone是YOLOv5的主干網絡,用于對輸入的圖片進行特征提取。在Backbone中將得到3個有效特征層,這3個有效特征層會參與到接下來加強特征金字塔的構建。FPN是YOLOv5的加強特征提取網絡,對在Backbone中獲得的有效特征層繼續進行特征提取。YOLOv5使用PANet結構,對底層特征先進行上采樣操作后與上一層的特征進行融合,然后再將融合得到的上層特征進行下采樣操作后與底層特征進行融合。通過對不同維度的特征層進行多次特征融合,來提高模型的檢測效果。Yolo Head是YOLOv5的分類器與回歸器,通過Backbone和FPN處理后可以獲得 3個(n×n×75)加強特征層。將3個加強特征層傳入Yolo Head,分別將其劃分為一個n×n的網格,判斷其中是否存在檢測目標,然后根據提取的特征信息對先驗框進行調整,得到每個特征層的預測結果。對3個特征層分別進行一次解碼操作后,選擇置信度最大的一個作為最終檢測結果[16]。
隨著網絡的加深,圖片中的一些紋理、輪廓等信息丟失。針對此問題,本文引入CBAM[17]來突出關鍵的PCB缺陷特征,弱化無關信息,以提高網絡對小目標的檢測能力。CBAM注意力機制的結構如 圖2所示。CBAM注意力機制會對輸入的特征層分別進行通道和空間上的特征提取,不僅節約了模型的參數和計算力,而且相比于SE等只關注于通道的注意力機制來說,CBAM注意力機制具有更好的效果。因此,在主干網絡中各有效特征層的后面加入CBAM注意力機制來篩選PCB缺陷特征信息。

圖2 CBAM注意力機制結構Fig.2 Structure of CBAM attention mechanism
隨著網絡層數的加深,PCB缺陷在整個特征圖中占據的像素變小,導致其檢測效果較差。針對這一問題,使用C3-CBAM模塊替代PANet結構中的C3模塊,提高模型對PCB缺陷信息的關注力。C3-CBAM結構如圖3所示。

圖3 C3-CBAM結構Fig.3 C3-CBAM structure
在主干部分的基本卷積塊之后加入一個CBAM注意力機制,來增加網絡對缺陷信息的關注力,增強網絡的檢測效果。
DWC可以看成是一個3×3的逐通道卷積(Depthwise Convolution)與一個1×1的逐點卷積(Pointwise Convolution)兩個過程。對于一個大小為DF×DF,通道數為M的輸入特征圖來說,采用一個卷積核大小為DK×DK的卷積進行卷積操作,使其輸出通道數變成N,普通卷積的計算量和DWC的計算量分別如式(1)和式(2)所示:
根據式(1)和式(2)可以計算出DWC與普通卷積計算量的比值為:
(3)
根據式(3)可以計算出,對于一個2×2的卷積,DWC比普通卷積的計算量減少了75%左右,有效減少了模型的體積。
YOLOv5采用3個Yolo Head檢測層,在訓練進行前,會事先給3個特征層分配3個不同尺度的先驗框,用來檢測小、中、大3種不同尺寸的目標。本文研究的PCB缺陷屬于小目標檢測,對于一張輸入為608 pixel×608 pixel的圖片來說,最后得到的19×19的特征層單個網格劃分較大,在經過下采樣后捕獲的PCB缺陷信息較少,達不到較好的訓練效果,故將其去除,而且去掉后可以進一步減少模型參數量和計算量。
辦金錢案、關系案、人情案,“吃了原告吃被告”,人民群眾對此深惡痛絕。下大力氣推行司法責任制改革,科學配置司法職權、保障司法權科學規范運行、完善司法監督制約機制,實現“讓審理者裁判、由裁判者負責”,成為牽引司法體制改革的“牛鼻子”。
改進后的YOLOv5s網絡框架示意如圖4所示。

圖4 改進YOLOv5s模型框架示意Fig.4 Schematic of the improved YOLOv5s model framework
通過在主干網絡中增加CBAM使模型更關注缺陷信息的提取。通過增加新的淺層有效特征層參與到PANet結構的特征融合,提高模型對PCB缺陷的檢測能力。為進一步減少模型的計算量,使用DWC替換PANet結構中下采樣的普通卷積。去除檢測大目標的Yolo Head結構層,減少模型的參數量,提高模型的檢測速度。
本文實驗采用Windows 10操作系統,顯卡型號為RTX3060 12 GB顯存,CPU為12代的i5 12490F。使用Python 3.9編程語言,PyTorch 1.7.1深度學習框架搭建網絡,選用Anaconda3工具進行開發環境配置,使用PyCharm進行開發。
本文采用自制數據集,主要包括引腳多焊錫、多焊錫2種缺陷共180張圖片。由于原始數據集較少,故根據圖像在實際采集過程中可能遇到的情況對圖像進行隨機角度的旋轉、亮度調節、曝光值調節和添加噪聲處理等操作對數據集進行擴充。本文共制作了4 240張不同角度、光線強度的圖片。圖5展示了對同一張圖片進行數據增強操作生成的部分圖片。
本文采集的PCB焊錫缺陷圖片使用labelImg進行標注,標注文件格式為xml,標注結果如圖6所示。

圖6 圖像標注Fig.6 Image annotation
實驗采用精確度(Precision,P)、召回率(Recall,R)、AP和mAP等作為模型的評價指標。具體計算如下:
式中:TP為缺陷檢測正確的個數,FP為缺陷誤檢個數,FN為缺陷漏檢個數。可以看出,P用來評價算法尋找目標的準確性,其值越大說明模型的誤檢率越低。R用來評價算法找出數據集中某一類樣本的能力,其值越大說明模型的漏檢率越低。F1是體現精確度和召回率的重要指標。
AP和mAP的計算如下:
式中:n為待檢測目標的總類數,APi為第i類目標的AP值。可以看出,AP值用于衡量算法在檢測目標時的P和R,AP值的大小與檢測效果成正比。mAP表示算法整體檢測性能的好壞,mAP越大則模型整體檢測性能越好。
相較于ImageNet等數據集來說,本文制作的PCB焊錫缺陷數據集的數量較少,直接進行訓練達不到較高的識別率。因此,通過使用遷移學習來對模型進行優化,可以在數據集較小的情況下加快模型的收斂速度,并使模型獲得更高的準確率。遷移學習策略主要是前期先凍結主干網絡,只訓練FPN部分,后期再將主干網絡解凍,在全網絡上訓練模型。實驗具體的參數設置如表1所示。

表1 實驗參數設置
3.5.1 消融實驗
為驗證本文提出各種改進措施的有效性,共設置了YOLOv5s、YOLOv5s_A(YOLOv5s+增加CBAM注意力模塊)、YOLOv5s_B(YOLOv5s_A+增加新增淺層特征層+C3-CBAM)和YOLOv5s_C(YOLOv5s_B+使用DWC+去掉Yolo Head層)四組消融實驗,各算法的具體實驗結果如表2所示。

表2 訓練結果
通過表2可以看出,YOLOv5s_A各性能指標較原YOLOv5s均得到改善,其中YOLOv5s_A的mAP達到96.89%,在增加少量參數的前提下,mAP提高了2.82%。YOLOv5s_B的檢測性能較YOLOv5s_A得到了進一步的提升,mAP達到了99.41%,較原YOLOv5s提高了 5.49%。YOLOv5s_C較YOLOv5s_B在參數量減少了27.47%的情況下,仍能保持與YOLOv5s_B一樣較高的檢測性能,mAP達到了 99.46%。通過以上消融實驗可以看出,本文提出的算法在降低參數量的同時提高了模型的mAP。
3.5.2對比試驗
在相同的硬件條件以及在相同模型訓練參數設置的情況下,將本文改進的YOLOv5s算法同目前常見的缺陷檢測算法進行對比,具體結果如表3所示。

表3 不同算法性能指標對比
從表3可以看出,本文改進的算法參數量較原YOLOv5s算法減少了24.8%,并且參數量遠遠小于Faster R-CNN等算法。此外,本文算法的檢測效果較Faster R-CNN、SDD、YOLOv4以及原YOLOv5s和YOLOv7模型均得到了提升,其mAP達到了99.46%,相較于Faster R-CNN、SSD、YOLOv4和原YOLOv5s算法分別提高了345%、326%、16.37%、5.54%,比更先進的YOLOv7算法檢測精度更高,并且參數量減少85.72%。各算法對同一張存在多種缺陷圖片的檢測結果如圖7所示。

圖7 不同算法檢測效果對比Fig.7 Comparison of detection effects of different algorithms
從圖7可以看出,對于同一張圖片,Faster R-CNN、SSD算法存在大量漏檢情況,檢測效果最差。YOLOv4算法的檢測效果要明顯優于前2種算法,但仍然存在較多漏檢。YOLOv5s和更為先進的YOLOv7算法的檢測效果較好,但仍存在極少漏檢情況。而本文改進的YOLOv5s算法可檢測出更多的缺陷,大大減少了模型的漏檢率。
綜上分析,本文改進的模型具有模型參數少、誤檢率低、準確率高和查全率高等優點,可以更好實現PCB缺陷檢測。
針對現有PCB缺陷檢測算法存在的檢測時間長、檢測結果精度差和漏檢率高等問題,本文在原YOLOv5s算法的基礎上進行了多方面改進。通過添加注意力機制和引入淺層特征層,提高模型對小目標檢測的效果。此外,通過使用DWC和刪除用于檢測大目標的Yolo Head結構層,使模型參數量減少了27.47%。在自制PCB焊錫缺陷數據集上進行的多組對比試驗結果表明,改進的網絡較原網絡在平均精度、模型體積等方面均取得了不錯的效果,漏檢問題得到很大改進。之后將進一步提高算法的檢測能力,同時減少模型參數,使其可以在嵌入式設備上部署。