曹鵬娟,王明泉,范 濤,朱榕榕,劉嘉宇
(中北大學(xué)儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051)
隨著生產(chǎn)集成電路方法的改進(jìn),BGA封裝技術(shù)應(yīng)用性變高,且封裝手段越來(lái)越難,在BGA焊點(diǎn)的檢測(cè)上,由于基板附著在BGA的上方,采用傳統(tǒng)的可見(jiàn)光手段難以穿透基板,無(wú)法獲取球柵陣列的語(yǔ)義和視覺(jué)信息。由于X射線具有強(qiáng)穿透性,能對(duì)基板下的BGA特性進(jìn)行定性、定量描述,因此,在工業(yè)生產(chǎn)中,利用X射線對(duì)球柵陣列進(jìn)行檢測(cè)具有一定的必要性和不可替代性。而被X射線透射后的BGA圖像有噪聲大、對(duì)比度低等缺點(diǎn),使得BGA檢測(cè)圖像中的背景和目標(biāo)較難區(qū)分,檢測(cè)圖像易混疊,識(shí)別難度較大。
近年來(lái),許多學(xué)者對(duì)BGA焊點(diǎn)空洞缺陷的檢測(cè)算法進(jìn)行了大量的研究。張瑞秋[1]利用Fisher函數(shù)對(duì)焊球中的缺陷進(jìn)行定量判斷;李樂(lè)等[2]采用Otsu閾值分割法完成焊球的輪廓提取,再對(duì)BGA焊點(diǎn)中的氣泡使用Blob分析法來(lái)進(jìn)行連通性分析,完成氣泡的選擇;張俊生等[3]采用一種動(dòng)態(tài)閾值分割算法提取出焊球區(qū)域和氣泡區(qū)域,實(shí)現(xiàn)對(duì)缺陷的分割。上述傳統(tǒng)數(shù)字圖像處理算法受X射線圖像的影響大,存在檢測(cè)精確度低、泛化性差和效率低的問(wèn)題。卷積神經(jīng)網(wǎng)絡(luò)之類的深度學(xué)習(xí)在缺陷檢測(cè)等任務(wù)中顯示著出色的性能?;贑NN的焊點(diǎn)缺陷檢測(cè)方法很多,如CNN網(wǎng)絡(luò)[4]、神經(jīng)網(wǎng)絡(luò)Mask R-CNN[5]、 3D CNN網(wǎng)絡(luò)[6]和FCN網(wǎng)絡(luò)[7]等。然而基于神經(jīng)網(wǎng)絡(luò)的檢測(cè)算法在運(yùn)行中消耗的內(nèi)存與時(shí)間資源都很大,且準(zhǔn)確率有待提高,并不具備工業(yè)檢測(cè)的實(shí)時(shí)性需求。而且近年來(lái)以U-Net為例的語(yǔ)義分割網(wǎng)絡(luò)在分割任務(wù)中展現(xiàn)出了優(yōu)勢(shì),U-Net是Ronneberger等在2015年提出的一種網(wǎng)絡(luò)模型,是近幾年醫(yī)學(xué)圖像分割中最流行的一種網(wǎng)絡(luò)結(jié)構(gòu)[8-10]。但含有BGA封裝的印刷電路板往往是多層結(jié)構(gòu),且印刷電路板尺寸小,焊點(diǎn)邊緣氣泡的像素與背景的像素對(duì)比度差。
針對(duì)以上問(wèn)題,本文提出一種改進(jìn)的U-Net。在原有U-Net結(jié)構(gòu)框架基礎(chǔ)上,將傳統(tǒng)的卷積層替換為密集連接的深度可分離卷積層,以此來(lái)減少計(jì)算量,添加密集塊可以增強(qiáng)信息流,緩解梯度消失,提高模型的分割性能。在編碼與解碼部分加入多尺度跳躍連接,加強(qiáng)特征融合,減少特征描述上的差異。
BGA焊點(diǎn)空洞檢測(cè)是印刷電路板在質(zhì)量檢測(cè)中最重要的工序之一,而且印刷電路板X射線圖像背景復(fù)雜、灰度分布不均勻,在檢測(cè)中往往有很大的挑戰(zhàn)。但是焊點(diǎn)空洞缺陷分布芯片四周的焊球內(nèi)部,并且缺陷種類均為氣泡缺陷,其語(yǔ)義信息較為簡(jiǎn)單明確。同時(shí),在實(shí)際生產(chǎn)過(guò)程中,印刷電路板中BGA焊點(diǎn)氣泡缺陷率較低,相較于醫(yī)學(xué)圖像,缺陷工業(yè)數(shù)據(jù)集的獲取較為困難,且人工標(biāo)注難度較大,檢測(cè)效率要求較高。因此,分割模型應(yīng)滿足少量數(shù)據(jù)即可達(dá)到較高準(zhǔn)確率、檢測(cè)速度及較小的內(nèi)存的要求。
因此,本文在U-Net分割模型基礎(chǔ)上進(jìn)行改進(jìn),保留了U-Net端到端的結(jié)構(gòu),并且包含由密集連接的深度可分離卷積和多尺度跳躍連接。本文所提出的改進(jìn)U-Net的網(wǎng)絡(luò)架構(gòu)如圖1所示。該網(wǎng)絡(luò)模型受MobileNet[11]的概念啟發(fā),在U-Net架構(gòu)上進(jìn)行改進(jìn):采用深度可分離卷積替代常規(guī)卷積減少網(wǎng)絡(luò)特征提取計(jì)算量;采用密集連接架構(gòu)防止網(wǎng)絡(luò)梯度消失;采用簡(jiǎn)易的多尺度跳躍連接加強(qiáng)語(yǔ)義信息的融合。
圖1 改進(jìn)U-Net網(wǎng)絡(luò)架構(gòu)
針對(duì)傳統(tǒng)U-Net分割網(wǎng)絡(luò)中常規(guī)卷積單元運(yùn)算量較大導(dǎo)致網(wǎng)絡(luò)性能差的問(wèn)題,提出采用深度可分離卷積單元替代常規(guī)卷積單元,在降低U-Net網(wǎng)絡(luò)整體運(yùn)算量的同時(shí)提升網(wǎng)絡(luò)表征效能[12]。
深度可分離卷積在處理單次卷積運(yùn)算時(shí)分解為深度卷積和點(diǎn)卷積。深度卷積在輸入的每個(gè)通道上獨(dú)立進(jìn)行,逐點(diǎn)卷積再進(jìn)行1×1卷積將深度通道輸出映射到新的通道空間。
圖2和圖3為常規(guī)卷積單元和深度可分離卷積單元的對(duì)比示意圖。
圖2 常規(guī)卷積
圖3 深度可分離卷積
在卷積運(yùn)算中,輸入特征映射的大小為Pf×Pf×K并與特征映射m生成大小為Pm×Pm×L的輸出,其中,Pf為輸入特征映射的空間寬度和高度;K為輸入通道的數(shù)量;Pm為輸出特征地圖的空間寬度和高度;L為輸出通道的數(shù)量。然后,對(duì)于尺寸大小為Pn×Pn×K×L的卷積核N進(jìn)行常規(guī)卷積運(yùn)算,運(yùn)算量為
Gc=Pn·Pn·K·L·Pf·Pf
(1)
在深度可分離卷積中,運(yùn)算量是深度卷積和點(diǎn)卷積的總和,即
Gd=Pn·Pn·K·Pf·Pf+K·L·Pf·Pf
(2)
結(jié)合式(1)和式(2),減少的運(yùn)算量為
(3)
式(3)表示與傳統(tǒng)卷積相比,深度可分離卷積的計(jì)算需求減少,從而使網(wǎng)絡(luò)的計(jì)算和參數(shù)量大大降低。
由于U-Net的網(wǎng)絡(luò)深度執(zhí)行小目標(biāo)的分割任務(wù)時(shí)精度不高,而直接添加網(wǎng)絡(luò)層數(shù)雖然可以解決小目標(biāo)缺陷的分割問(wèn)題,但是更深層次的神經(jīng)網(wǎng)絡(luò)在網(wǎng)絡(luò)訓(xùn)練中容易出現(xiàn)梯度消失和冗余計(jì)算的問(wèn)題。所以為了克服上述問(wèn)題,本文引入了密集連接的思想。
本文受DenseNet[13]的啟發(fā),在輕量密集連接單元中,采用dense block作為本文改進(jìn)U-Net的主要構(gòu)建塊。DenseNet使用常規(guī)的卷積層,具有參數(shù)簡(jiǎn)單、消失梯度最小化和特征重用的優(yōu)點(diǎn)。本文設(shè)計(jì)了一種輕量化的dense block作為本文改進(jìn)U-Net的主要構(gòu)建塊。輕量密集連接單元的基本結(jié)構(gòu)如圖4所示,與DenseNet不同的是,本文的輕量密集連接單元的卷積層都是深度可分離卷積層。
圖4 輕量密集連接單元
輕量密集連接單元第一層是深度可分離卷積單元、批量歸一化(batch normalization,BN)、修正線性單元(rectified linear unit,ReLU)激活函數(shù)、另一個(gè)深度可分離卷積和1個(gè)Dropout層。如圖4中的黑色虛線箭頭所示,第1個(gè)深度可分離卷積單元也緊密連接到Dropout層。通過(guò)這種改進(jìn)機(jī)制,輕量密集連接單元保持了原始密集連接塊有極高的特征重用性的優(yōu)點(diǎn),與此同時(shí),輕量密集連接單元需要的參數(shù)數(shù)量更少。
在U-Net體系結(jié)構(gòu)中,編碼器和解碼器的每一層之間都存在跳躍連接,編碼部分在下采樣之前和解碼部分的上采樣操作之后存在跳躍路徑。在最大池化操作期間,空間信息會(huì)丟失,跳躍連接有助于網(wǎng)絡(luò)將信息從編碼端傳播到解碼端。然而,在特征融合過(guò)程中,跳躍路徑通常會(huì)出現(xiàn)語(yǔ)義鴻溝的問(wèn)題,編碼部分的第1層低級(jí)特征連接到處理更多高級(jí)特征的解碼器的終端層。此外,由于BGA焊點(diǎn)氣泡的大小、形狀和位置的變化增加了檢測(cè)的復(fù)雜性,因此,必須保留低級(jí)和高級(jí)特征以進(jìn)行詳細(xì)分割。
為了減少編解碼特征之間的差異,增強(qiáng)特征的融合,本文在MultiResUNet[14]的基礎(chǔ)上做出了改進(jìn),同樣利用了Inception V2中Inception module優(yōu)良的局部拓?fù)浣Y(jié)構(gòu)網(wǎng)絡(luò),在編碼器和解碼器之間集成了1個(gè)多尺度的Inception模塊,目的是增強(qiáng)在編碼側(cè)所提取到的低級(jí)語(yǔ)義特征。通過(guò)這種方法,在與解碼器側(cè)的高級(jí)語(yǔ)義特征合并之前,低級(jí)特征將進(jìn)行進(jìn)一步的處理,并且通過(guò)增加網(wǎng)絡(luò)的深度和寬度在保持計(jì)算預(yù)算不變的同時(shí)還提高了計(jì)算資源的利用率。
事實(shí)證明,Inception模塊擴(kuò)大了感受野而且可以獲取更多的上下文信息,增強(qiáng)了對(duì)底層特征的描述能力。這種方法是處理BGA的X射線圖像中焊點(diǎn)的形狀、大小和位置這類可變性問(wèn)題的關(guān)鍵。
在本文所提出的輕量密集連接單元中,使用了2個(gè)大小為3×3的深度可分離卷積層進(jìn)行特征提取。在多尺度跳躍路徑中,本文使用了3個(gè)大小為3×3的深度可分離卷積塊代替MultiResUNet中MultiRes block的常規(guī)卷積,減少網(wǎng)絡(luò)的計(jì)算需求,如圖5所示。
圖5 多尺度跳躍連接架構(gòu)
該設(shè)計(jì)將3個(gè)大小為3×3的深度可分離卷積塊的輸出串聯(lián)起來(lái)而不是串聯(lián)較大的5×5和7×7的卷積塊,這樣可以增強(qiáng)感受野,同時(shí)減少編、解碼部分之間的語(yǔ)義差距。為了使學(xué)習(xí)過(guò)程更加穩(wěn)定,卷積之后的輸入和輸出必須大小相同,因此,在跳躍路徑中還引入了1×1卷積塊的殘差連接用來(lái)匹配深度。
本文算法所需的數(shù)據(jù)集是使用Labelme軟件標(biāo)注好的BGA數(shù)據(jù)圖像,數(shù)據(jù)集包含1 200張BGA焊點(diǎn)的射線圖像,訓(xùn)練集圖像格式保存為jpg格式,對(duì)應(yīng)的標(biāo)簽圖像保存為png格式。
本文所使用的計(jì)算機(jī)配置為RTX2080顯卡,內(nèi)存為16 GB,Windows10操作系統(tǒng),軟件編程環(huán)境為 Python 3.7。
在訓(xùn)練過(guò)程中,將Batch Size 設(shè)置為2,選用Adam作為優(yōu)化器自適應(yīng)調(diào)整步長(zhǎng),將初始學(xué)習(xí)率設(shè)置為 0.000 1,epoch設(shè)置為60,使用二值交叉熵?fù)p失函數(shù)為
(4)
f為樣本的數(shù)量;i為像素點(diǎn);pi為像素點(diǎn)i的真實(shí)值;qi為像素點(diǎn)i的網(wǎng)絡(luò)預(yù)測(cè)值。
2.3.1 網(wǎng)絡(luò)性能分析
為了判斷本文所提模型對(duì)缺陷部分的分割效果,采用Apixel表示像素精度、SF1表示F1系數(shù)、Cdice表示Dice系數(shù)作為評(píng)價(jià)指標(biāo)。評(píng)價(jià)指標(biāo)為:
(5)
(6)
(7)
PT為樣本預(yù)測(cè)正例的同時(shí)真實(shí)標(biāo)簽也為正例;NF為樣本被預(yù)測(cè)為反例而真實(shí)標(biāo)簽為正例;PF為樣本被預(yù)測(cè)為正例的同時(shí)真實(shí)標(biāo)簽為反例;NT為樣本預(yù)測(cè)為反例且真實(shí)標(biāo)簽為反例。
為驗(yàn)證本文所提網(wǎng)絡(luò)相較于傳統(tǒng)深度學(xué)習(xí)分割算法FCN網(wǎng)絡(luò)、U-Net網(wǎng)絡(luò)具有更好的魯棒性和分割精度,在自建數(shù)據(jù)集上進(jìn)行了對(duì)比實(shí)驗(yàn),所測(cè)試網(wǎng)絡(luò)均使用Adam優(yōu)化器,設(shè)置訓(xùn)練輪數(shù)為60。表1分別給出了FCN、U-Net和本文方法的Apixel、Cdice、SF1、網(wǎng)絡(luò)占用內(nèi)存大小和網(wǎng)絡(luò)收斂輪數(shù)。圖6為損失函數(shù)值變化曲線。
表1 本文方法與其他方法的對(duì)比
圖6 損失函數(shù)值變化曲線
由表1可以得出,在自建的BGA射線圖像的數(shù)據(jù)集中,本文所提出的改進(jìn)U-Net算法的精度為0.906,分別比FCN與U-Net提升了0.039和0.015。并且本文所提網(wǎng)絡(luò)的Cdice為0.845,優(yōu)于FCN與U-Net網(wǎng)絡(luò)0.052和0.029,而SF1分別優(yōu)于FCN與U-Net網(wǎng)絡(luò)0.045和0.028。
本文所提算法相比FCN與U-Net,在保持較好分割精度的同時(shí)網(wǎng)絡(luò)計(jì)算開(kāi)銷較少,網(wǎng)絡(luò)整體占用內(nèi)存大小僅134 MB。從圖6中可以看出,本文所提網(wǎng)絡(luò)收斂速度相比其他2種網(wǎng)絡(luò)顯著加快,網(wǎng)絡(luò)訓(xùn)練17輪時(shí)已經(jīng)收斂。
2.3.2 分割結(jié)果對(duì)比
實(shí)驗(yàn)在BGA數(shù)據(jù)集上進(jìn)行,實(shí)驗(yàn)中將原始圖像調(diào)整到512像素×512像素分辨率,各網(wǎng)絡(luò)的模型實(shí)驗(yàn)結(jié)果如圖7所示。
圖7 3種不同算法的結(jié)果對(duì)比
圖7a為原始圖像,圖7b為標(biāo)注后的標(biāo)簽圖像。圖7e表明,本文提出的改進(jìn)網(wǎng)絡(luò)在分割細(xì)節(jié)上優(yōu)于其他2個(gè)網(wǎng)絡(luò)。而FCN、U-Net會(huì)受到X射線圖像灰度分布不均勻和圖像噪聲的影響,錯(cuò)誤地將2個(gè)噪聲位置當(dāng)作氣泡分割出來(lái),導(dǎo)致其誤判率較高。與此同時(shí),本文算法對(duì)氣泡的分割更加精確,對(duì)氣泡的邊緣分割更精細(xì),雖然也會(huì)受到噪聲的干擾,但是在缺陷的整體分割和細(xì)節(jié)部分的分割中取得了不錯(cuò)的效果,基本可以達(dá)到人工標(biāo)注的效果。
本文根據(jù)分割后的結(jié)果進(jìn)行原圖映射,對(duì)焊點(diǎn)的空洞缺陷進(jìn)行標(biāo)記,標(biāo)記為白色,并使用白色輪廓線標(biāo)記出焊點(diǎn)區(qū)域,如圖8所示。然后分別統(tǒng)計(jì)提取出的BGA焊點(diǎn)和空洞缺陷區(qū)域的像素個(gè)數(shù),統(tǒng)計(jì)得出BGA焊點(diǎn)的等效面積,記為SBGA和空洞的等效面積,記為Svoid??斩疵娣e與焊點(diǎn)面積的比值為該焊點(diǎn)的空洞率L。
圖8 BGA焊點(diǎn)標(biāo)記
根據(jù)國(guó)標(biāo)IPC-A-610G中對(duì)焊點(diǎn)空洞率的可接受性標(biāo)準(zhǔn)表明,焊點(diǎn)中只存在1個(gè)空洞時(shí),該空洞面積不得超過(guò)焊點(diǎn)面積的25%,否則判定該焊點(diǎn)為不合格;當(dāng)焊點(diǎn)中存在多個(gè)空洞時(shí),該焊點(diǎn)內(nèi)的所有空洞面積之和不得超過(guò)焊點(diǎn)面積的 20%。本文對(duì)圖8中BGA焊點(diǎn)的缺陷結(jié)果進(jìn)行分析,分析結(jié)果如表2所示,在9個(gè)標(biāo)記的焊點(diǎn)中,編號(hào)為3、4、9的焊點(diǎn)對(duì)應(yīng)的空洞率分別為13.78%、17.88%、3.66%,判定焊點(diǎn)質(zhì)量為合格,其余焊點(diǎn)質(zhì)量均為不合格。
表2 BGA焊點(diǎn)缺陷結(jié)果分析
本文在BGA焊點(diǎn)X射線氣泡缺陷檢測(cè)中,針對(duì)基于深度學(xué)習(xí)的圖像分割算法檢測(cè)效率較低的情況,提出了一種基于改進(jìn)U-Net的球柵陣列缺陷識(shí)別方法?;赨-Net經(jīng)典網(wǎng)絡(luò)模型,提出:將常規(guī)卷積用深度可分離卷積單元替換,減少網(wǎng)絡(luò)使用參數(shù)量,降低運(yùn)算時(shí)間;在主干網(wǎng)絡(luò)中的深度可分離卷積單元中,使用密集連接方法將卷積模塊緊密連接在一起,增加特征重用性提高網(wǎng)絡(luò)運(yùn)算精度;添加多尺度跳躍連接減少編解碼特征之間的差異,有利于特征的傳播。最后將FCN、U-Net網(wǎng)絡(luò)與本文的改進(jìn)U-Net進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)的U-Net模型網(wǎng)絡(luò)在減少網(wǎng)絡(luò)計(jì)算復(fù)雜度的同時(shí)提升了網(wǎng)絡(luò)性能,在像素精度、Cdice和SF1上分別達(dá)到了0.906、0.845和0.863,能夠提升BGA焊點(diǎn)氣泡的檢測(cè)效率。