程 霖,張 濤,葛平淑,劉俊杰,向青陽(yáng)
(大連民族大學(xué) 機(jī)電工程學(xué)院,遼寧 大連 116605 )
隨著中國(guó)現(xiàn)代電子產(chǎn)業(yè)和新興技術(shù)的迅猛發(fā)展,印刷電路板(PCB)作為各種電子元器件的載體,是各種電子產(chǎn)品布線連接和信號(hào)傳輸?shù)年P(guān)鍵硬件支撐,決定著電子產(chǎn)品是否能夠正常運(yùn)行。但生產(chǎn)PCB電路板的工藝十分復(fù)雜,受到當(dāng)前生產(chǎn)工藝技術(shù)限制,在PCB生產(chǎn)過(guò)程中容易產(chǎn)生如漏孔、鼠咬、開(kāi)路、短路、雜散、雜銅等缺陷。這些缺陷PCB板一旦應(yīng)用到電子產(chǎn)品中會(huì)導(dǎo)致產(chǎn)品運(yùn)行故障或者損壞,造成較大經(jīng)濟(jì)損失。因此對(duì)PCB裸板及時(shí)進(jìn)行缺陷檢測(cè)有著重要的現(xiàn)實(shí)意義和經(jīng)濟(jì)價(jià)值。
近些年隨著深度學(xué)習(xí)技術(shù)在缺陷檢測(cè)領(lǐng)域的不斷發(fā)展,與傳統(tǒng)的機(jī)器學(xué)習(xí)方法相比,深度學(xué)習(xí)的泛化能力更強(qiáng),適合于更多復(fù)雜生產(chǎn)環(huán)境。如今已有研究人員將深度學(xué)習(xí)算法應(yīng)用于PCB板的缺陷檢測(cè)中來(lái)。當(dāng)前基于目標(biāo)檢測(cè)主要分為兩種,Two-stage和One-stage檢測(cè)[1]。Two-stage檢測(cè)算法中經(jīng)典的有(R-CNN、Faster R-CNN)等。2020年6月沈非堯等[2]對(duì)Faster R-CNN算法進(jìn)行優(yōu)化,選擇ResNet-101進(jìn)行作為特征提取網(wǎng)絡(luò),并在RoI pooling層中結(jié)合RoI Align優(yōu)化算法,提高了訓(xùn)練速度和精度。2021年6月耿振宇等[3]使用ResNet代替VGG作為Faster R-CNN的主干網(wǎng)絡(luò),并引入特征金字塔網(wǎng)絡(luò)(FPN)來(lái)解決多尺度檢測(cè)問(wèn)題,并減少了計(jì)算量One-stage檢測(cè)算法主要為YOLO系列算法,與Two-stage檢測(cè)算法相比優(yōu)點(diǎn)在于速度更快,但精度略低于Two-stage檢測(cè)算法。為了兼顧速度與精度問(wèn)題,2021年6月,孫燦等[4]以YOLOv3為基礎(chǔ)模型,在模型參數(shù)計(jì)算量、注意力機(jī)制以及重疊目標(biāo)檢測(cè)等方面進(jìn)行優(yōu)化,提高了YOLO算法的性能。2022年6月李洋等[5]利用ECANet優(yōu)化有效特征層融合方式,并改進(jìn)特征金字塔網(wǎng)絡(luò)結(jié)構(gòu),提高了YOLO算法對(duì)小目標(biāo)缺陷的檢測(cè)精度。
針對(duì)PCB裸板缺陷檢測(cè)難度大的問(wèn)題,提升高密度場(chǎng)景下PCB缺陷檢測(cè)精度,緩解梯度消失并降低模型訓(xùn)練損失仍是現(xiàn)階段大部分算法需要解決的首要問(wèn)題。本文針對(duì)YOLOv5算法進(jìn)行優(yōu)化改進(jìn),改進(jìn)主干特征提取網(wǎng)絡(luò)。引入密集連接卷積網(wǎng)絡(luò)DenseNet思想[6],搭建密集連接模塊,對(duì)Bottleneck模塊進(jìn)行改進(jìn)。緩解了消失梯度問(wèn)題,鼓勵(lì)特征重用,加強(qiáng)特征傳播。提高YOLOv5算法針對(duì)PCB裸板小目標(biāo)缺陷檢測(cè)的精度。
YOLO系列模型在目標(biāo)檢測(cè)領(lǐng)域是性能較好的單階段目標(biāo)檢測(cè)算法,2020年6月發(fā)布的YOLOv5是YOLO系列兼顧準(zhǔn)確率和速度的模型。YOLOv5可以分為s、m、l、x四個(gè)版本,本文所用算法為YOLOv5s。YOLOv5網(wǎng)絡(luò)結(jié)構(gòu)可以分為4個(gè)模塊:輸入端(Input)、主干網(wǎng)絡(luò)(Backbone)、頸部(Neck)和檢測(cè)網(wǎng)絡(luò)(Head)[7]。其結(jié)構(gòu)如圖1。
圖1 YOLOv5結(jié)構(gòu)
輸入端的作用就是進(jìn)行圖像的預(yù)處理,將圖片縮放為網(wǎng)絡(luò)輸入大小、數(shù)據(jù)歸一化和數(shù)據(jù)增強(qiáng)。YOLOv5采用masaic增強(qiáng)技術(shù)把四張圖片的部分進(jìn)行拼接隨機(jī)組成一張新的尺寸固定的輸入圖片。而YOLOv5與以往不同的是作者對(duì)其進(jìn)行了改進(jìn),變?yōu)榱俗赃m應(yīng)圖片縮放,之前的YOLO算法都是將不規(guī)則圖片進(jìn)行填充,產(chǎn)生新的固定的正方形圖片,該方法所生產(chǎn)的新圖片有較多的黑色邊框,由此會(huì)造成信息冗余,從而產(chǎn)生不必要的計(jì)算量,進(jìn)而影響算法的推理速度。YOLOv5算法因此改進(jìn)了圖片縮放方式,采用了自適應(yīng)的填充,由此對(duì)原始圖片添加最少的黑邊框。大大減少了算法推理計(jì)算量。主干網(wǎng)絡(luò)Backbone模塊則借鑒了跨階段局部網(wǎng)絡(luò)CSPNet(Cross Stage Partial Network)的設(shè)計(jì)思想[8],使用CSPdarknet為主干網(wǎng)絡(luò),減少了模型整體計(jì)算量。其中在YOLOv5第一次使用了Focus結(jié)構(gòu)。C3模塊是對(duì)殘差特征學(xué)習(xí)的主要模塊,主要作用是增加網(wǎng)絡(luò)深度,提高特征提取能力。C3由兩種不同的bottleneck結(jié)構(gòu)和標(biāo)準(zhǔn)的卷積模塊組成,組成兩種不同的C3模塊??臻g金字塔模塊SSP的主要思想為對(duì)輸入的特征圖進(jìn)行卷積核大小不同的池化操作,得到不同大小的特征圖,最后進(jìn)行拼接得到統(tǒng)一尺寸的特征圖[9]。頸部(Neck)網(wǎng)絡(luò)設(shè)計(jì)沿用了FPN+PAN的結(jié)構(gòu)[10]。FPN結(jié)構(gòu)通過(guò)自頂向下進(jìn)行上采樣,構(gòu)建出多尺度高級(jí)語(yǔ)義特征圖[11]。PAN結(jié)構(gòu)則是自底向上進(jìn)行下采樣,加入了自底向上的路線,彌補(bǔ)并加強(qiáng)了定位信息。
PCB缺陷檢測(cè)多為小目標(biāo)檢測(cè),需要對(duì)YOLOv5算法進(jìn)行改進(jìn),而對(duì)于小目標(biāo)檢測(cè)的難點(diǎn)在網(wǎng)絡(luò)的加深過(guò)程中,會(huì)出現(xiàn)圖像信息丟失的現(xiàn)象。在網(wǎng)絡(luò)加深的過(guò)程中,提取出的特征也由淺變深,淺層特征即具體的位置信息,深層特征即抽象的語(yǔ)義信息。隨著網(wǎng)絡(luò)加深,小目標(biāo)在特征圖中所占據(jù)的像素會(huì)越來(lái)越少,使目標(biāo)檢測(cè)的結(jié)果不理想。為了更加充分利用各個(gè)卷積層所提取出來(lái)的特征信息,本文在YOLOv5算法中引入密集連接卷積網(wǎng)絡(luò)(DenseNet)的思想,DenseNet網(wǎng)絡(luò)具體結(jié)構(gòu)如圖2。
圖2 DenseNet密集連接網(wǎng)絡(luò)
在DenseNet網(wǎng)絡(luò)中,每?jī)蓪又g都直接相連,每層都可以獲得前面所有層的特征輸入,對(duì)于網(wǎng)絡(luò)L層輸出,傳統(tǒng)網(wǎng)絡(luò)的輸出與DenseNet網(wǎng)絡(luò)輸出如公式(1)、(2)所示:
xL=HL(xL-1);
(1)
(2)
從上述公式中可以看出,引入密集連接思想,可以實(shí)現(xiàn)特征重用。每一層只需學(xué)習(xí)很少的特征,不需要重復(fù)學(xué)習(xí)冗余的特征圖,通過(guò)更少的參數(shù)量就使得卷積層學(xué)習(xí)到更多的特征,相比于傳統(tǒng)的卷積網(wǎng)絡(luò),這種結(jié)構(gòu)的特征利用效率更高,使得網(wǎng)絡(luò)可以更加高效的學(xué)習(xí)新的信息。
對(duì)YOLOv5中的主干特征提取網(wǎng)絡(luò)進(jìn)行改進(jìn),在主干網(wǎng)絡(luò)的Bottleneck中添加兩個(gè)新的卷積塊,同時(shí)使得每層都可以獲得前面所有層的特征信息,這使得層之間的連接更緊密。密集卷積網(wǎng)絡(luò)精度提高的原因是各個(gè)層通過(guò)更短的連接從損失函數(shù)中獲得額外的監(jiān)督??梢詫?DenseNet 解釋為執(zhí)行一種“深度監(jiān)督”。好處是它的每個(gè)隱藏層都有分類(lèi)器,強(qiáng)制中間層學(xué)習(xí)判別特征。DenseNet以隱式方式執(zhí)行類(lèi)似的深度監(jiān)督,DenseNet 的損失函數(shù)和梯度要簡(jiǎn)單得多,因?yàn)樗袑又g共享相同的損失函數(shù)。因此DenseNet網(wǎng)絡(luò)可以減少梯度消失,增強(qiáng)特征傳播,提高YOLOv5算法中的特征信息重用,使其更加適合PCB裸板缺陷的小目標(biāo)檢測(cè)。具體改進(jìn)結(jié)構(gòu)如圖3~4。
圖3 原C3模塊
圖4 改進(jìn)C3模塊
通過(guò)上述對(duì)YOLOv5算法中的主干特征提取模塊改進(jìn),相比于原來(lái)層與層之間的連接更加激進(jìn),模塊中大量使用了殘差分支,每一層都在接受前幾層的特征信息,并將自己的特征信息傳遞給后續(xù)的所有層,以提高算法的檢測(cè)精度。
軟件環(huán)境使用Windows 11 專(zhuān)業(yè)工作站版,PyTorch深度學(xué)習(xí)框架。硬件配置上為CPU:AMD Ryzen 9 5900X 12-Core Processor 3.70 GHz;GPU:NVIDIA RTX A4000 16G顯存。
采用公開(kāi)數(shù)據(jù)集PKU-Market-PCB,該數(shù)據(jù)集一共包含692張印刷電路板缺陷圖片,并附有對(duì)應(yīng)的標(biāo)注文件。包含了工業(yè)生產(chǎn)中常見(jiàn)的6種缺陷類(lèi)型。圖片的張數(shù)和缺陷數(shù)量見(jiàn)表1。
表1 缺陷圖片數(shù)量及各缺陷數(shù)量
由于公開(kāi)數(shù)據(jù)集PKU-Market-PCB只有692張缺陷圖片,由于數(shù)據(jù)量有限,很可能會(huì)因數(shù)據(jù)量較少而導(dǎo)致訓(xùn)練結(jié)果過(guò)擬合,因此需要對(duì)原始數(shù)據(jù)進(jìn)行擴(kuò)增,本文采用的方法是通過(guò)旋轉(zhuǎn)、鏡像、增亮、加噪聲等隨機(jī)增強(qiáng)的方法進(jìn)行擴(kuò)增。最終得到數(shù)據(jù)6 920張。
在評(píng)價(jià)算法的性能時(shí),本文采用平均精度(mean Averrage Precision,mAP)、召回率(Recall)、F1得分(F)、精確率(Precision)、作為評(píng)價(jià)指標(biāo)。
根據(jù)PCB測(cè)試樣本的真實(shí)類(lèi)別與模型預(yù)測(cè)類(lèi)別劃分為真正例(TP)、假正例(FP),真反例(TN),假反例(FN)。
精確率又叫做查準(zhǔn)率,是指分類(lèi)過(guò)程中模型預(yù)測(cè)的所有正例中預(yù)測(cè)正確的比例。召回率又叫查全率,是指模型預(yù)測(cè)正確的正例占據(jù)真實(shí)正例的比例,它們具體計(jì)算公式如(3)、(4)所示:
(3)
(4)
準(zhǔn)確率和召回率是兩個(gè)矛盾的衡量標(biāo)準(zhǔn),在準(zhǔn)確率高時(shí),召回率則會(huì)較低;而當(dāng)召回率較高時(shí),準(zhǔn)確率則會(huì)較低[12]。綜合兩者,繪制P-R曲線,縱坐標(biāo)為精確度的值數(shù),橫坐標(biāo)為召回率的值數(shù),獲取值數(shù)后做出曲線圖,根據(jù)曲線面積與坐標(biāo)軸圍成的面積即可得到平均精度AP(Averrage Precision),該面積越大則反映出算法的性能越好。在最后檢測(cè)結(jié)果中,每一個(gè)類(lèi)別都會(huì)有一個(gè)AP曲線,所有的AP曲線收集起來(lái),得到mAP即為均值平均精度。兩者計(jì)算公式如(5)、(6)所示:
(5)
(6)
文中將訓(xùn)練集、驗(yàn)證集與測(cè)試集按照8:1:1的比例進(jìn)行劃分。訓(xùn)練的具體參數(shù)設(shè)置見(jiàn)表2。
表2 訓(xùn)練的參數(shù)設(shè)計(jì)
改進(jìn)的YOLOv5算法訓(xùn)練期間的損失曲線如圖5。觀察可知隨著訓(xùn)練輪數(shù)的增加,損失曲線的斜率逐漸趨于平緩,圖5a代表訓(xùn)練集位置損失;圖5b代表訓(xùn)練集置信度損失;圖5c代表訓(xùn)練集類(lèi)別損失。由圖5可知訓(xùn)練效果達(dá)到了較好擬合狀態(tài),證明該算法已經(jīng)收斂,最終的實(shí)驗(yàn)結(jié)果如圖6。改進(jìn)后的算法對(duì)PCB裸板缺陷的識(shí)別平均精度為95.6%,其中對(duì)于漏孔缺陷的檢測(cè)精度最高,達(dá)到了99.5%。該算法檢測(cè)效果符合需求,準(zhǔn)確檢測(cè)出各類(lèi)缺陷如圖7~12。
a) box_loss圖 b) obj_loss圖 c)cls_loss圖圖5 損失曲線
圖6 P-R曲線圖
圖7 mouse bite 缺陷檢測(cè) 圖8 spur缺陷檢測(cè)
圖11 missing hole 缺陷檢測(cè) 圖12 open circuit 缺陷檢測(cè)
圖9 short 缺陷檢測(cè) 圖10 spurious copper 缺陷檢測(cè)
為了檢驗(yàn)本文算法改進(jìn)的有效性,在同一數(shù)據(jù)集中,對(duì)改進(jìn)YOLOv5算法(YOLOv5+denseNet模型),原YOLOv5算法、YOLOv7算法進(jìn)行對(duì)比實(shí)驗(yàn),所得到的性能參數(shù)見(jiàn)表3。
表3 改進(jìn)后算法與YOLOv5、YOLOv7算法精度比較 %
由表3可知,改動(dòng)后的算法相比較于原算法,平均精度提高了1.1%,平均精度提高了1.9%,召回率提高了1.6%。說(shuō)明對(duì)YOLOv5算法中主干特征提取模塊引入密集連接思想,加強(qiáng)特征信息傳遞后有效地提高了算法性能,證明了改進(jìn)YOLOv5算法在PCB裸板等目標(biāo)檢測(cè)方面擁有較好的適用性,其性能優(yōu)于其他算法。
針對(duì)目前檢測(cè)算法對(duì)小目標(biāo)缺陷檢測(cè)效果不理想的情況,對(duì)YOLOv5算法進(jìn)行改進(jìn),提出了一種針對(duì)PCB裸板缺陷檢測(cè)的改進(jìn)YOLOv5算法,主要是對(duì)YOLOv5算法的主干特征提取網(wǎng)絡(luò)進(jìn)行改進(jìn)。與原算法相比,在同一數(shù)據(jù)集中的平均精度得到了提高。值得注意的是不同數(shù)據(jù)集預(yù)處理方式會(huì)影響模型精度,因此后續(xù)將進(jìn)一步提高改進(jìn)模型的泛化性,同時(shí)拓展應(yīng)用在其他目標(biāo)尺寸較小的應(yīng)用場(chǎng)景中。