張 鯤, 鄧明星
(武漢科技大學(xué)汽車與交通工程學(xué)院, 武漢 430065)
FPCB 作為現(xiàn)在電子產(chǎn)品中不可或缺的電子零部件,其質(zhì)量的檢測(cè)在整個(gè)工藝過程中具有非常重要的地位。 深度學(xué)習(xí)是近年來比較新型有效的一種算法,被大量地運(yùn)用到了缺陷檢測(cè)領(lǐng)域。 葛路等學(xué)者[1]探討了深度學(xué)習(xí)模型在工業(yè)產(chǎn)品表面缺陷檢測(cè)領(lǐng)域的應(yīng)用。 研究是以Cp 工業(yè)產(chǎn)品缺陷檢測(cè)為著眼點(diǎn),在設(shè)計(jì)檢測(cè)方案時(shí)應(yīng)用深度學(xué)習(xí)模型并輔助圖像處理等相關(guān)技術(shù),通過實(shí)驗(yàn)分析得到最佳應(yīng)用模型。 潘甜等學(xué)者[2]提出了基于深度學(xué)習(xí)的飛機(jī)蒙皮缺陷檢測(cè)的方法,能快速定位飛機(jī)蒙皮表面會(huì)出現(xiàn)裂紋、撞擊和腐蝕的問題。 田浩杰等學(xué)者[3]提出了基于深度學(xué)習(xí)來實(shí)現(xiàn)線圈炮缺陷的自動(dòng)檢測(cè)與分類,采用雙邊濾波算法進(jìn)行樣本圖像增強(qiáng),降低噪聲對(duì)成像的影響,并基于單樣本幾何變換的數(shù)據(jù)增強(qiáng)策略擴(kuò)充樣本數(shù)量,提高模型的適應(yīng)性。 張浩等學(xué)者[4]提出了一種基于深度學(xué)習(xí)在海纜表面缺陷檢測(cè)的系統(tǒng),為了減小模型的復(fù)雜程度,采用了RPN Loss+Fast RCNN Loss 的聯(lián)合訓(xùn)練方法。 楊凱等學(xué)者提出了一種基于深度學(xué)習(xí)的缺陷檢測(cè)模型,該方法主要通過改進(jìn)的VGG16 模型進(jìn)行缺陷識(shí)別。 陳宗仁等學(xué)者[5]提出一種基于深度學(xué)習(xí)的金屬機(jī)械零件表面缺陷檢測(cè)方法,采用中值濾波方法對(duì)金屬機(jī)械零件圖像中的脈沖噪聲進(jìn)行檢測(cè)和濾波處理,然后再引入深度學(xué)習(xí)算法。 針對(duì)車載導(dǎo)航導(dǎo)光板表面缺陷像素值分布不均且普遍較小、背景復(fù)雜多變等特點(diǎn),王昊等學(xué)者[6]提出了基于改進(jìn)掩膜區(qū)域卷積神經(jīng)網(wǎng)絡(luò)模型檢測(cè)車載導(dǎo)航導(dǎo)光板。 劉瑞珍等學(xué)者[7]提出了一種基于深度學(xué)習(xí)的偏光片缺陷實(shí)時(shí)檢測(cè)算法,設(shè)計(jì)了一個(gè)新的并行模塊用于構(gòu)建偏光片缺陷檢測(cè)網(wǎng)絡(luò),模塊將不同尺寸大小的卷積核相混合,與傳統(tǒng)的卷積層相比,可以融合不同尺度的特征并能提取到更豐富的缺陷特征。 王鳴霄等學(xué)者[8]提出了一種基于兩級(jí)分層深度卷積神經(jīng)網(wǎng)絡(luò)的排水道缺陷自動(dòng)識(shí)別與分類系統(tǒng)。 施愷杰等學(xué)者[9]提出了一種低成本、高效率的缺陷檢測(cè)方法,設(shè)計(jì)了一種兩段式的網(wǎng)絡(luò)結(jié)構(gòu),第一部分是從原始圖像的各層特征圖中逐像素地學(xué)習(xí)特征來完成分割,第二部分則是將分割后的圖像進(jìn)行整合后判斷是否存在裂縫。 針對(duì)鑄件X 射線圖像獲取困難、人工及傳統(tǒng)方法效率低且漏判率高的問題,于宏全等學(xué)者[10]提出了一種基于深度學(xué)習(xí)的鑄件缺陷檢測(cè)方法。 上述的方法,用了很多的神經(jīng)網(wǎng)絡(luò)訓(xùn)練和搭建技巧去提升網(wǎng)絡(luò)檢測(cè)的準(zhǔn)確率,但是沒有從根本上解決網(wǎng)絡(luò)缺陷圖片數(shù)量不夠,導(dǎo)致準(zhǔn)確率難以提升的問題。 本文提出了利用傳統(tǒng)圖像處理方法對(duì)圖像進(jìn)行預(yù)處理增強(qiáng)圖像質(zhì)量和圖片多樣性,并結(jié)合優(yōu)化深度學(xué)習(xí)的方法,設(shè)計(jì)出了一種完全可以滿足實(shí)際檢測(cè)PFCB 需求的自動(dòng)檢測(cè)算法。
深度學(xué)習(xí)的方法要應(yīng)用到缺陷識(shí)別的領(lǐng)域必不可少的一項(xiàng)因素是缺陷數(shù)據(jù)集,所以在進(jìn)行算法研究前,首先在FPCB 廠家進(jìn)行了數(shù)據(jù)采集,并對(duì)數(shù)據(jù)進(jìn)行了劃分。
研究采集了FPCB 在生產(chǎn)過程中可能出現(xiàn)的6種缺陷,如圖1 所示。 由圖1 可知,6 種缺陷分別包括:黑色異物、凸起、缺口、開路、短路、白色異物,這些缺陷圖的分辨率都是100×100 的灰色圖像。
圖1 FPCB 缺陷圖Fig. 1 FPCB defect map
6 種缺陷圖的數(shù)量如圖2 所示。 由圖2 可以發(fā)現(xiàn),每種缺陷圖的數(shù)量都較少并且分布得不均勻,把采集到的缺陷圖像以7 ∶3 的比例按類別隨機(jī)分為訓(xùn)練集和驗(yàn)證集。
圖2 缺陷圖像數(shù)量Fig. 2 Number of defective images
在把數(shù)據(jù)送入神經(jīng)網(wǎng)絡(luò)訓(xùn)練之前還會(huì)進(jìn)行預(yù)處理的操作,數(shù)據(jù)預(yù)處理可以有數(shù)據(jù)增強(qiáng)的效果,并在現(xiàn)有基礎(chǔ)上提高網(wǎng)絡(luò)的準(zhǔn)確率。
圖像預(yù)處理的3 種主要方法如圖3 所示,分別包括:圖像濾波、灰度變換和圖像轉(zhuǎn)換。
圖3 圖像預(yù)處理方法Fig. 3 Image preprocessing method
圖像濾波也可以稱為圖像平滑處理,其操作對(duì)象為灰度圖像。 根據(jù)圖像中噪聲類型和分布情況,可以選擇將圖像濾波的方法搭配使用以完成對(duì)圖像的去噪處理。 圖像濾波的原理就是選擇合適的濾波器在圖像窗口上移動(dòng),利用設(shè)計(jì)的濾波器中窗口函數(shù)與圖像窗口建立某種數(shù)學(xué)關(guān)系以達(dá)到去除噪聲的目的,目前常用的濾波器有線性濾波、非線性濾波和卷積核濾波,對(duì)應(yīng)過來就是圖像的均值濾波、中值濾波和高斯濾波等。 其中,均值濾波法在削弱隨機(jī)噪聲上效果突出,但是會(huì)使圖像變得模糊,因?yàn)樵谶M(jìn)行噪聲濾除時(shí),對(duì)于圖像的邊緣也是同樣處理,這就會(huì)造成圖像中本來明顯的邊緣變得模糊。 均值濾波的公式具體如下:
中值濾波使用的是非線性濾波器來對(duì)圖像進(jìn)行平滑,將其與均值濾波做對(duì)比,可以發(fā)現(xiàn)中值濾波處理后的圖像不僅留存了一些小的細(xì)節(jié)部分,而且噪聲也明顯減弱。 中值就是把給定的變量按從小到大的順序進(jìn)行排列,排列之后取中間變量值、即中值。對(duì)應(yīng)來看,中值濾波可理解為,設(shè)計(jì)一個(gè)結(jié)構(gòu)元素在圖像上滑動(dòng),并將元素內(nèi)像素灰度值升降排序后的中值設(shè)置為此元素的中心灰度值。 例如,假設(shè)有一個(gè)3×3 的窗口,其窗口內(nèi)的像素灰度值從小到大為g1,g2,g3,g4,g5,g6,g7,g8,g9,則窗口中心灰度值可表示為:
高斯濾波同均值濾波有個(gè)相同點(diǎn),都是使用線性濾波器,可以去除圖像高斯噪聲(噪聲的概率密度分布函數(shù)服從正態(tài)分布)。 高斯濾波需要先尋找高斯掩膜、并根據(jù)高斯分布,然后再對(duì)掩膜內(nèi)像素點(diǎn)通過卷積完成相加,此時(shí)得到的值就是窗口的中心值,最后對(duì)圖像中的像素點(diǎn)重復(fù)進(jìn)行該過程。 高斯模板的計(jì)算方式可用如下公式來描述:
其中,σ決定高斯函數(shù)寬度,假設(shè)當(dāng)σ=0.8 時(shí),高斯濾波核的計(jì)算為:
而高斯濾波窗口中心處像素值可表示為:
在本系統(tǒng)實(shí)驗(yàn)中,對(duì)比使用了上述各濾波方式,根據(jù)濾波圖像后續(xù)的處理情況,結(jié)合均值和中值兩種濾波方式來對(duì)缺陷圖像進(jìn)行組合濾波,最后表現(xiàn)出不錯(cuò)的去噪效果。 濾波前后圖像效果對(duì)比圖如圖4 所示。
圖4 濾波前后對(duì)比圖Fig. 4 Comparison before and after filtering
灰度變換針對(duì)圖像中的像素點(diǎn)來進(jìn)行運(yùn)算。 在采集圖像時(shí),由于環(huán)境因素的影響,最后攝取的圖像呈現(xiàn)出對(duì)比度不夠或亮暗影調(diào)的比率較小(動(dòng)態(tài)范圍)的效果。 針對(duì)這一問題,使用灰度變換的方法可以很好地改善圖像效果,此方法就是設(shè)計(jì)一個(gè)變換函數(shù)來改變輸入圖像的灰度值。 使用合適的灰度變換方法不僅能對(duì)圖像進(jìn)行增強(qiáng),而且目標(biāo)區(qū)域的特征會(huì)變得凸顯。 常用的灰度變換關(guān)系為線性變換。 灰度變換是通過某變換關(guān)系來達(dá)到改變圖像灰度值的目的,數(shù)學(xué)表達(dá)式可理解為:
假設(shè)有輸入圖像f(x,y),線性變換后的輸出圖像g(x,y),兩圖像的灰度范圍分別為[a,b],[c,d],其為線性關(guān)系,用數(shù)學(xué)公式可表示為:
根據(jù)k的取值大小,有如下幾種情況:
(1)當(dāng)k >1 時(shí),會(huì)使圖像灰度取值的變化范圍變大,也就是圖像對(duì)比度的增大,使用此方法可以改善曝光不足的情況。
(2) 當(dāng)k=1 時(shí),不改變圖像整體的灰度取值變化范圍,但是灰度取值區(qū)間會(huì)隨a和c的大小而上下平移,其結(jié)果就是使整個(gè)圖像更暗或更亮。
(3) 當(dāng)0<k <1 時(shí),變換輸出后圖像灰度取值范圍會(huì)變小,圖像對(duì)比度變小。
(4)當(dāng)k <0 時(shí),相當(dāng)于把圖像的灰度值進(jìn)行反轉(zhuǎn),結(jié)果就是圖像中亮的變暗,暗的變亮。
本方法中對(duì)攝取的缺陷圖像使用了灰度線性變換算法以改善圖像,質(zhì)量方便后續(xù)的處理。 使用此方法達(dá)到增強(qiáng)對(duì)比度的效果,處理前后的對(duì)比效果如圖5 所示。
圖5 灰度變換前后對(duì)比圖Fig. 5 Comparison diagram before and after grayscale transformation
圖像轉(zhuǎn)換包括圖像縮放、翻轉(zhuǎn)和拉長(zhǎng)。 轉(zhuǎn)換的參數(shù)如縮放比例、翻轉(zhuǎn)角度、拉長(zhǎng)長(zhǎng)度,這些參數(shù)在每次訓(xùn)練時(shí)都是隨機(jī)的。 因此,能夠顯著增強(qiáng)了數(shù)據(jù)的多樣性,并有效地避免了網(wǎng)絡(luò)訓(xùn)練的過程中出現(xiàn)過擬合。
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)是一類包含卷積計(jì)算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),可以有效實(shí)現(xiàn)端到端的特征提取,是圖像識(shí)別的常用模型之一。 在卷積神經(jīng)網(wǎng)絡(luò)的發(fā)展歷程中,出現(xiàn)過許多經(jīng)典的網(wǎng)絡(luò)結(jié)構(gòu),這些經(jīng)典CNN 網(wǎng)絡(luò)的研發(fā)都曾極大地促進(jìn)了領(lǐng)域的發(fā)展。 LeCun 等學(xué)者[11]在1998 年提出的LeNet 模型是CNN 的開篇之作,對(duì)神經(jīng)網(wǎng)絡(luò)的發(fā)展有著重要意義,但當(dāng)時(shí)并未受到廣泛關(guān)注。 2017 年,Krizhevsky 等學(xué)者[12]提出的AlexNet 模型具有更深的網(wǎng)絡(luò)結(jié)構(gòu),成為了當(dāng)年ImageNet 圖像識(shí)別競(jìng)賽的冠軍,可以說AlexNet的出現(xiàn)使得已經(jīng)沉寂多年的深度學(xué)習(xí)領(lǐng)域開啟了黃金時(shí)代。 隨后,在ImageNet 競(jìng)賽中不斷涌現(xiàn)出經(jīng)典的網(wǎng)絡(luò)模型。 Visual Geometry Group 提出的VGG 系列模型[13],在AlexNet 的基礎(chǔ)上構(gòu)建了更深的網(wǎng)絡(luò)結(jié)構(gòu),性能提升較大。 接著,2015 年又推出了InceptionNet[14],通過拓寬網(wǎng)絡(luò)結(jié)構(gòu)取得了較好的效果,提供了CNN 模型構(gòu)建的另一種思路。 He 等學(xué)者[15]提出了ResNet、即深度殘差網(wǎng)絡(luò),其對(duì)殘差塊的運(yùn)用十分具有開創(chuàng)性。 本論文所提出的算法就是基于殘差塊的思想進(jìn)行搭建的,并對(duì)傳統(tǒng)的損失函數(shù)做了改進(jìn),得到了最終的網(wǎng)絡(luò)框架。
本文提出的神經(jīng)網(wǎng)絡(luò)架構(gòu)如圖6 所示。 由圖6可看到,網(wǎng)絡(luò)所用到的卷積核都是3×3 的卷積核,因?yàn)檩^小的卷積核可以有效減少參數(shù),并且通過小尺寸的卷積核的堆疊可以達(dá)到和大尺寸卷積核相同的感受野。 網(wǎng)絡(luò)結(jié)構(gòu)中最主要的結(jié)構(gòu)是下采樣結(jié)構(gòu)和跳連結(jié)構(gòu),跳連結(jié)構(gòu)和下采樣結(jié)構(gòu)的區(qū)別在于經(jīng)過跳連結(jié)構(gòu)的特征在輸入和輸出尺寸上不會(huì)發(fā)生變化,而經(jīng)過下采樣的結(jié)構(gòu)輸出相當(dāng)于輸入的一半,跳連結(jié)構(gòu)的作用是用來加深網(wǎng)絡(luò)的有效深度,下采樣結(jié)構(gòu)是防止網(wǎng)絡(luò)在提取圖片特征時(shí)丟失圖片細(xì)節(jié)。該網(wǎng)絡(luò)結(jié)構(gòu)接受要檢測(cè)的圖片,首先經(jīng)過一個(gè)3×3的卷積提取特征,再經(jīng)過一個(gè)最大池化層擴(kuò)大感受野去除冗余信息,然后再經(jīng)過跳連結(jié)構(gòu)和下采樣結(jié)構(gòu)進(jìn)行圖片特征細(xì)節(jié)提取,最后經(jīng)過平均池化層和全連接層得到最終的檢測(cè)結(jié)果輸出。 該網(wǎng)絡(luò)架構(gòu)對(duì)提取圖片細(xì)節(jié)有較好的效果,可以有效處理所遇到的缺陷問題。
圖6 神經(jīng)網(wǎng)絡(luò)架構(gòu)圖Fig. 6 Architecture diagram of neural network
傳統(tǒng)損失函數(shù)的數(shù)學(xué)定義公式為:
其中,yi,j為預(yù)期輸出值;y′i,j為深度學(xué)習(xí)模型預(yù)測(cè)值;f為softmax激活函數(shù);c為類別疵病數(shù);N為一個(gè)批量的數(shù)據(jù)量。
該損失函數(shù)有2 個(gè)缺點(diǎn)。 數(shù)據(jù)集中每種樣本缺陷的數(shù)量是不一樣的,所以如果按照上面的損失函數(shù)進(jìn)行訓(xùn)練就會(huì)導(dǎo)致樣本數(shù)多的那個(gè)疵病類別預(yù)測(cè)率較高而對(duì)于樣本數(shù)較少的疵病類別預(yù)測(cè)效果特別差,這是錯(cuò)誤的。 另一個(gè)傳統(tǒng)損失函數(shù)對(duì)于難預(yù)測(cè)的樣本和易預(yù)測(cè)樣本對(duì)于損失函數(shù)的貢獻(xiàn)是一樣的,難預(yù)測(cè)樣本和易預(yù)測(cè)樣本定義,對(duì)于某個(gè)疵病樣本預(yù)測(cè)值為0.7 的、較樣本預(yù)測(cè)值為0.6 來說為相對(duì)易預(yù)測(cè)樣本,而網(wǎng)絡(luò)應(yīng)該是對(duì)于難預(yù)測(cè)的樣本給予更多的注意力。 改進(jìn)的損失函數(shù)見下式:
與傳統(tǒng)的損失函數(shù)相比,改進(jìn)后的損失函數(shù)多了2 個(gè)超參數(shù)、即α,β,MX是某類缺陷參與訓(xùn)練的樣本累加數(shù),當(dāng)某類缺陷樣本數(shù),參與損失函數(shù)訓(xùn)練越多,α越小,代表其在損失函數(shù)中權(quán)重越小,就可以解決傳統(tǒng)損失函數(shù)中的第一個(gè)問題。 當(dāng)預(yù)測(cè)值越靠近1 時(shí),該樣本就是越容易區(qū)分的樣本,β值越小,在損失函數(shù)中的權(quán)重也就越小,就可以解決傳統(tǒng)損失函數(shù)的第二個(gè)問題。
把收集到的缺陷圖片,利用文章所提到的傳統(tǒng)圖像處理方法進(jìn)行圖像預(yù)處理,再按照前文所提到的劃分?jǐn)?shù)據(jù)集的策略,把圖像劃分為訓(xùn)練集和驗(yàn)證集,把劃分好的訓(xùn)練集輸入到利用深度學(xué)習(xí)搭建的網(wǎng)絡(luò)結(jié)構(gòu)中訓(xùn)練。 在該網(wǎng)絡(luò)中,本文改進(jìn)了網(wǎng)絡(luò)結(jié)構(gòu)和損失函數(shù),每20 輪利用驗(yàn)證集進(jìn)行驗(yàn)證,訓(xùn)練過程中準(zhǔn)確率的變換情況如圖7 所示,在訓(xùn)練200 輪后網(wǎng)絡(luò)收斂,在驗(yàn)證集上的準(zhǔn)確率達(dá)到了92.41%的準(zhǔn)確率。
圖7 網(wǎng)絡(luò)訓(xùn)練準(zhǔn)確率Fig. 7 Accuracy of network training
網(wǎng)絡(luò)基本參數(shù)的設(shè)定見表1。 由表1 可知,實(shí)驗(yàn)選用的是Adam 優(yōu)化器,學(xué)習(xí)率設(shè)定的為0.1,批次大小設(shè)定為32,訓(xùn)練輪次設(shè)定為200 輪。 把相同的數(shù)據(jù)集、連同網(wǎng)絡(luò)基本參數(shù)設(shè)定為表1 中的基本參數(shù),比較各個(gè)網(wǎng)絡(luò)的性能,性能對(duì)比見表2。 由表2 可以看到,文中所提算法在該數(shù)據(jù)集上的準(zhǔn)確率最高,在檢測(cè)時(shí)間上也在可以接受的范圍之內(nèi),該網(wǎng)絡(luò)性能可以滿足FPCB 的檢測(cè)要求。
表1 網(wǎng)絡(luò)基本參數(shù)設(shè)定Tab. 1 Configuration of basic network parameters
表2 網(wǎng)絡(luò)性能對(duì)比Tab. 2 Comparison of network performance
隨著電子工業(yè)的快速發(fā)展,F(xiàn)PCB 的應(yīng)用也越來越多,為確保FPCB 生產(chǎn)的合格率,針對(duì)目前自動(dòng)化檢測(cè)的需要,設(shè)計(jì)開發(fā)了一套缺陷檢測(cè)算法,該算法把傳統(tǒng)圖像處理技術(shù)與深度學(xué)習(xí)方法進(jìn)行了結(jié)合來對(duì)FPCB 進(jìn)行缺陷檢測(cè)。 由于本文提出的缺陷檢測(cè)算法可替代傳統(tǒng)人工判定缺陷,極大地提高了檢測(cè)的準(zhǔn)確度和速度,該工作對(duì)FPCB 的生產(chǎn)制造有著重大的意義。