盧小康,歐陽華兵*,陳 田,劉 軍
(1.上海電機學(xué)院 機械學(xué)院,上海 201306;2.上海電機學(xué)院 凱勞智能制造學(xué)院,上海 201306)
印刷電路板(PCB)作為現(xiàn)代電子產(chǎn)品的基礎(chǔ)部件,在通信電子、汽車電子、醫(yī)療電子以及航空航天等多個領(lǐng)域均得到了廣泛應(yīng)用[1]。新時代,隨著人工智能、大數(shù)據(jù)等新興技術(shù)的急速發(fā)展,人們對電子產(chǎn)品的需求和質(zhì)量的要求不斷提高。然而,PCB在制作過程中,由于涉及的工序較多,每個工序都可能出現(xiàn)短路、斷路、毛刺、焊點缺焊、缺口和余銅等多種缺陷[2-3],極大地影響了電子產(chǎn)品的性能和安全質(zhì)量。PCB上需要連接的電子元件眾多,這就意味著各電子元件焊接過程中容易出現(xiàn)焊接質(zhì)量缺陷,而這些缺陷對電子產(chǎn)品的最終性能造成很大影響。因此,對其進行質(zhì)量檢測是一項非常重要的工作[4-5]。
最初PCB缺陷主要采用人工檢測的方法,該方法人工成本高、效率低、主觀性強[6]。隨著智能制造產(chǎn)業(yè)的發(fā)展,工業(yè)生產(chǎn)越來越趨向自動化,自動化檢測技術(shù)的應(yīng)用也越來越廣泛[7-9]。機器視覺代替人工實現(xiàn)24 h全天檢測,有效避免了工人的疲勞和主觀缺陷。但獲取的PCB缺陷圖像質(zhì)量無法得到精確控制,嚴(yán)重影響了識別效率。近年來,隨著深度學(xué)習(xí)算法的發(fā)展,許多學(xué)者開始將其廣泛應(yīng)用到工業(yè)缺陷檢測領(lǐng)域,并取得了顯著的成績[10]。
Park等[11]針對焊膏缺陷大小不一、圖像收集困難等問題,提出一種D3PointNet的雙層缺陷檢測模型。實驗表明,所提出的模型具有較高的魯棒性,并且匹配得分較現(xiàn)有CNN模型提高了10.2%。Park等[12]針對檢測圖像和訓(xùn)練圖像尺寸不同而導(dǎo)致CNN檢測性能下降的問題,提出了一種基于MarsNet的多標(biāo)簽分類網(wǎng)絡(luò)。修改擴張殘差網(wǎng)絡(luò)使其可以獲得高分辨率特征圖,并利用水平垂直池化聚合特征圖中的位置信息。通過在PCB錫膏數(shù)據(jù)集上實驗,驗證了網(wǎng)絡(luò)對不同尺寸的圖片均有較好的檢測效果。Hu等[13]提出了一種基于Faster R-CNN的PCB缺陷檢測算法。首先,使用ResNet50作為主干網(wǎng)絡(luò),使其能更好地檢測小目標(biāo);其次,使用GARPN預(yù)測更準(zhǔn)確的錨點,并合并ShuffleNetV2的剩余單元。實驗表明,改進的網(wǎng)絡(luò)較原Faster R-CNN,在平均精度均值(mean Average Precision,mAP)和檢測速度(FPS)上分別提高了9%和每張圖像0.042 s。胡珊珊等[14]針對PCB缺陷較小且較為復(fù)雜等特點,提出一種基于Faster R-CNN的PCB缺陷檢測網(wǎng)絡(luò)。首先,使用多層卷積對不同維度的特征進行提取;其次,使用上采樣和跳躍連接將不同尺度的特征進行融合;最后,利用RPN和ROI-Pooling定位特征圖的ROI區(qū)域并進行特征提取。實驗表明,該方法對PCB導(dǎo)線和焊點缺陷檢測的mAP可以達到98.6%,并且可移植性強。Zhang等[15]將特征金字塔網(wǎng)絡(luò)應(yīng)用于PCB缺陷檢測模型中,通過構(gòu)建不同尺度的特征圖來檢測不同大小的缺陷。通過在多個PCB數(shù)據(jù)集上實驗,證明了該網(wǎng)絡(luò)的有效性。
本文提出一種基于輕量化YOLOv5s的PCB缺陷檢測算法。為提高模型對小目標(biāo)的檢測性能,在骨干網(wǎng)絡(luò)中添加卷積塊注意力模塊(Convolutional Block Attention Module,CBAM)并增加一個包含更多信息的淺層有效特征。使用C3-CBAM替換PANet中C3模塊進一步提高模型對缺陷的感知能力。使用深度可分離卷積(Depthwise Separable Convolution,DWC)替換PANet結(jié)構(gòu)中的下采樣操作并去掉檢測大目標(biāo)的Yolo Head結(jié)構(gòu)層,在保證模型檢測精度的同時減少模型參數(shù)。通過在自制PCB焊錫缺陷數(shù)據(jù)集上實驗,將本文改進算法同常見的目標(biāo)檢測算法進行對比。
YOLO算法是一種單階段的目標(biāo)檢測算法,有效提高了模型的檢測速度,為目標(biāo)檢測提供了一種新的研究思路。2020年6月Glenn Jocher在GitHub上發(fā)布了YOLOv5算法,根據(jù)網(wǎng)絡(luò)的深度和寬度從小到大YOLOv5算法分可以分為s、m、l、x四種版本。與YOLOv4相比,YOLOv5的檢測精度(Average Precision,AP)、FPS等指標(biāo)都得到了提升并且模型參數(shù)量大幅度降低。其中,YOLOv5s是該系列中是深度最小的一個算法,模型參數(shù)量僅有7.06 M,約是YOLOv4的1/9。YOLOv5結(jié)構(gòu)框架如圖1所示。
圖1 YOLOv5模型框架示意Fig.1 Schematic of the YOLOv5 model framework
從圖1可以看出,與之前YOLO系列算法類似,YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)可以劃分成Backbone、FPN和Yolo Head三部分。其中,Backbone是YOLOv5的主干網(wǎng)絡(luò),用于對輸入的圖片進行特征提取。在Backbone中將得到3個有效特征層,這3個有效特征層會參與到接下來加強特征金字塔的構(gòu)建。FPN是YOLOv5的加強特征提取網(wǎng)絡(luò),對在Backbone中獲得的有效特征層繼續(xù)進行特征提取。YOLOv5使用PANet結(jié)構(gòu),對底層特征先進行上采樣操作后與上一層的特征進行融合,然后再將融合得到的上層特征進行下采樣操作后與底層特征進行融合。通過對不同維度的特征層進行多次特征融合,來提高模型的檢測效果。Yolo Head是YOLOv5的分類器與回歸器,通過Backbone和FPN處理后可以獲得 3個(n×n×75)加強特征層。將3個加強特征層傳入Yolo Head,分別將其劃分為一個n×n的網(wǎng)格,判斷其中是否存在檢測目標(biāo),然后根據(jù)提取的特征信息對先驗框進行調(diào)整,得到每個特征層的預(yù)測結(jié)果。對3個特征層分別進行一次解碼操作后,選擇置信度最大的一個作為最終檢測結(jié)果[16]。
隨著網(wǎng)絡(luò)的加深,圖片中的一些紋理、輪廓等信息丟失。針對此問題,本文引入CBAM[17]來突出關(guān)鍵的PCB缺陷特征,弱化無關(guān)信息,以提高網(wǎng)絡(luò)對小目標(biāo)的檢測能力。CBAM注意力機制的結(jié)構(gòu)如 圖2所示。CBAM注意力機制會對輸入的特征層分別進行通道和空間上的特征提取,不僅節(jié)約了模型的參數(shù)和計算力,而且相比于SE等只關(guān)注于通道的注意力機制來說,CBAM注意力機制具有更好的效果。因此,在主干網(wǎng)絡(luò)中各有效特征層的后面加入CBAM注意力機制來篩選PCB缺陷特征信息。
圖2 CBAM注意力機制結(jié)構(gòu)Fig.2 Structure of CBAM attention mechanism
隨著網(wǎng)絡(luò)層數(shù)的加深,PCB缺陷在整個特征圖中占據(jù)的像素變小,導(dǎo)致其檢測效果較差。針對這一問題,使用C3-CBAM模塊替代PANet結(jié)構(gòu)中的C3模塊,提高模型對PCB缺陷信息的關(guān)注力。C3-CBAM結(jié)構(gòu)如圖3所示。
圖3 C3-CBAM結(jié)構(gòu)Fig.3 C3-CBAM structure
在主干部分的基本卷積塊之后加入一個CBAM注意力機制,來增加網(wǎng)絡(luò)對缺陷信息的關(guān)注力,增強網(wǎng)絡(luò)的檢測效果。
DWC可以看成是一個3×3的逐通道卷積(Depthwise Convolution)與一個1×1的逐點卷積(Pointwise Convolution)兩個過程。對于一個大小為DF×DF,通道數(shù)為M的輸入特征圖來說,采用一個卷積核大小為DK×DK的卷積進行卷積操作,使其輸出通道數(shù)變成N,普通卷積的計算量和DWC的計算量分別如式(1)和式(2)所示:
根據(jù)式(1)和式(2)可以計算出DWC與普通卷積計算量的比值為:
(3)
根據(jù)式(3)可以計算出,對于一個2×2的卷積,DWC比普通卷積的計算量減少了75%左右,有效減少了模型的體積。
YOLOv5采用3個Yolo Head檢測層,在訓(xùn)練進行前,會事先給3個特征層分配3個不同尺度的先驗框,用來檢測小、中、大3種不同尺寸的目標(biāo)。本文研究的PCB缺陷屬于小目標(biāo)檢測,對于一張輸入為608 pixel×608 pixel的圖片來說,最后得到的19×19的特征層單個網(wǎng)格劃分較大,在經(jīng)過下采樣后捕獲的PCB缺陷信息較少,達不到較好的訓(xùn)練效果,故將其去除,而且去掉后可以進一步減少模型參數(shù)量和計算量。
辦金錢案、關(guān)系案、人情案,“吃了原告吃被告”,人民群眾對此深惡痛絕。下大力氣推行司法責(zé)任制改革,科學(xué)配置司法職權(quán)、保障司法權(quán)科學(xué)規(guī)范運行、完善司法監(jiān)督制約機制,實現(xiàn)“讓審理者裁判、由裁判者負(fù)責(zé)”,成為牽引司法體制改革的“牛鼻子”。
改進后的YOLOv5s網(wǎng)絡(luò)框架示意如圖4所示。
圖4 改進YOLOv5s模型框架示意Fig.4 Schematic of the improved YOLOv5s model framework
通過在主干網(wǎng)絡(luò)中增加CBAM使模型更關(guān)注缺陷信息的提取。通過增加新的淺層有效特征層參與到PANet結(jié)構(gòu)的特征融合,提高模型對PCB缺陷的檢測能力。為進一步減少模型的計算量,使用DWC替換PANet結(jié)構(gòu)中下采樣的普通卷積。去除檢測大目標(biāo)的Yolo Head結(jié)構(gòu)層,減少模型的參數(shù)量,提高模型的檢測速度。
本文實驗采用Windows 10操作系統(tǒng),顯卡型號為RTX3060 12 GB顯存,CPU為12代的i5 12490F。使用Python 3.9編程語言,PyTorch 1.7.1深度學(xué)習(xí)框架搭建網(wǎng)絡(luò),選用Anaconda3工具進行開發(fā)環(huán)境配置,使用PyCharm進行開發(fā)。
本文采用自制數(shù)據(jù)集,主要包括引腳多焊錫、多焊錫2種缺陷共180張圖片。由于原始數(shù)據(jù)集較少,故根據(jù)圖像在實際采集過程中可能遇到的情況對圖像進行隨機角度的旋轉(zhuǎn)、亮度調(diào)節(jié)、曝光值調(diào)節(jié)和添加噪聲處理等操作對數(shù)據(jù)集進行擴充。本文共制作了4 240張不同角度、光線強度的圖片。圖5展示了對同一張圖片進行數(shù)據(jù)增強操作生成的部分圖片。
本文采集的PCB焊錫缺陷圖片使用labelImg進行標(biāo)注,標(biāo)注文件格式為xml,標(biāo)注結(jié)果如圖6所示。
圖6 圖像標(biāo)注Fig.6 Image annotation
實驗采用精確度(Precision,P)、召回率(Recall,R)、AP和mAP等作為模型的評價指標(biāo)。具體計算如下:
式中:TP為缺陷檢測正確的個數(shù),FP為缺陷誤檢個數(shù),FN為缺陷漏檢個數(shù)??梢钥闯?P用來評價算法尋找目標(biāo)的準(zhǔn)確性,其值越大說明模型的誤檢率越低。R用來評價算法找出數(shù)據(jù)集中某一類樣本的能力,其值越大說明模型的漏檢率越低。F1是體現(xiàn)精確度和召回率的重要指標(biāo)。
AP和mAP的計算如下:
式中:n為待檢測目標(biāo)的總類數(shù),APi為第i類目標(biāo)的AP值。可以看出,AP值用于衡量算法在檢測目標(biāo)時的P和R,AP值的大小與檢測效果成正比。mAP表示算法整體檢測性能的好壞,mAP越大則模型整體檢測性能越好。
相較于ImageNet等數(shù)據(jù)集來說,本文制作的PCB焊錫缺陷數(shù)據(jù)集的數(shù)量較少,直接進行訓(xùn)練達不到較高的識別率。因此,通過使用遷移學(xué)習(xí)來對模型進行優(yōu)化,可以在數(shù)據(jù)集較小的情況下加快模型的收斂速度,并使模型獲得更高的準(zhǔn)確率。遷移學(xué)習(xí)策略主要是前期先凍結(jié)主干網(wǎng)絡(luò),只訓(xùn)練FPN部分,后期再將主干網(wǎng)絡(luò)解凍,在全網(wǎng)絡(luò)上訓(xùn)練模型。實驗具體的參數(shù)設(shè)置如表1所示。
表1 實驗參數(shù)設(shè)置
3.5.1 消融實驗
為驗證本文提出各種改進措施的有效性,共設(shè)置了YOLOv5s、YOLOv5s_A(YOLOv5s+增加CBAM注意力模塊)、YOLOv5s_B(YOLOv5s_A+增加新增淺層特征層+C3-CBAM)和YOLOv5s_C(YOLOv5s_B+使用DWC+去掉Yolo Head層)四組消融實驗,各算法的具體實驗結(jié)果如表2所示。
表2 訓(xùn)練結(jié)果
通過表2可以看出,YOLOv5s_A各性能指標(biāo)較原YOLOv5s均得到改善,其中YOLOv5s_A的mAP達到96.89%,在增加少量參數(shù)的前提下,mAP提高了2.82%。YOLOv5s_B的檢測性能較YOLOv5s_A得到了進一步的提升,mAP達到了99.41%,較原YOLOv5s提高了 5.49%。YOLOv5s_C較YOLOv5s_B在參數(shù)量減少了27.47%的情況下,仍能保持與YOLOv5s_B一樣較高的檢測性能,mAP達到了 99.46%。通過以上消融實驗可以看出,本文提出的算法在降低參數(shù)量的同時提高了模型的mAP。
3.5.2對比試驗
在相同的硬件條件以及在相同模型訓(xùn)練參數(shù)設(shè)置的情況下,將本文改進的YOLOv5s算法同目前常見的缺陷檢測算法進行對比,具體結(jié)果如表3所示。
表3 不同算法性能指標(biāo)對比
從表3可以看出,本文改進的算法參數(shù)量較原YOLOv5s算法減少了24.8%,并且參數(shù)量遠(yuǎn)遠(yuǎn)小于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算法檢測精度更高,并且參數(shù)量減少85.72%。各算法對同一張存在多種缺陷圖片的檢測結(jié)果如圖7所示。
圖7 不同算法檢測效果對比Fig.7 Comparison of detection effects of different algorithms
從圖7可以看出,對于同一張圖片,Faster R-CNN、SSD算法存在大量漏檢情況,檢測效果最差。YOLOv4算法的檢測效果要明顯優(yōu)于前2種算法,但仍然存在較多漏檢。YOLOv5s和更為先進的YOLOv7算法的檢測效果較好,但仍存在極少漏檢情況。而本文改進的YOLOv5s算法可檢測出更多的缺陷,大大減少了模型的漏檢率。
綜上分析,本文改進的模型具有模型參數(shù)少、誤檢率低、準(zhǔn)確率高和查全率高等優(yōu)點,可以更好實現(xiàn)PCB缺陷檢測。
針對現(xiàn)有PCB缺陷檢測算法存在的檢測時間長、檢測結(jié)果精度差和漏檢率高等問題,本文在原YOLOv5s算法的基礎(chǔ)上進行了多方面改進。通過添加注意力機制和引入淺層特征層,提高模型對小目標(biāo)檢測的效果。此外,通過使用DWC和刪除用于檢測大目標(biāo)的Yolo Head結(jié)構(gòu)層,使模型參數(shù)量減少了27.47%。在自制PCB焊錫缺陷數(shù)據(jù)集上進行的多組對比試驗結(jié)果表明,改進的網(wǎng)絡(luò)較原網(wǎng)絡(luò)在平均精度、模型體積等方面均取得了不錯的效果,漏檢問題得到很大改進。之后將進一步提高算法的檢測能力,同時減少模型參數(shù),使其可以在嵌入式設(shè)備上部署。