哈馬友吉, 任萬春, 張 秤, 張 華
(1.西南科技大學 信息工程學院,四川 綿陽 621000; 2.特殊環(huán)境機器人技術(shù)四川省重點實驗室,四川 綿陽 621000)
玻封二極管具有散熱快、噪聲少、性能穩(wěn)定和壽命長等優(yōu)點[1],但二極管玻殼易產(chǎn)生缺陷,生產(chǎn)過程中需對其進行檢測,傳統(tǒng)的二極管玻殼缺陷檢測方法主要為人工檢測,然而,人工檢測的速度慢、失誤率高。利用圖像識別算法對二極管玻殼缺陷進行檢測具有成本低、效率高等優(yōu)勢。傳統(tǒng)圖像缺陷識別算法的精度低,且難以應對缺陷成像與背景差異小、缺陷尺度變化大且類型多等挑戰(zhàn)[2~4]?;谏疃葘W習的缺陷檢測算法可克服這些技術(shù)難題。
近年來,隨著深度學習的發(fā)展,卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)因其良好的通用性和魯棒性越來越多地被應用于工業(yè)上的表面缺陷檢測。同時涌現(xiàn)出了許多經(jīng)典的卷積神經(jīng)網(wǎng)絡模型,包括AlexNet[5],GoogLeNet[6],ResNet[7],DenseNet[8],SENet[9],ShuffleNet[10],MobileNet[11]等。其中,小型化網(wǎng)絡MobileNet V1在保證一定計算精度的基礎上,大幅減少了網(wǎng)絡的參數(shù)量和計算量。Sandler M等人[12]對MobileNet V1進行改進,提出了輕量級網(wǎng)絡MobileNet V2,具備了模型小、計算精度高、速度快等優(yōu)勢。
本文針對二極管玻殼缺陷檢測中所面臨的技術(shù)挑戰(zhàn),提出一種基于MobileNet V2網(wǎng)絡的缺陷識別算法。
MobileNet V1模型通過使用深度分離卷積代替標準卷積,使得模型的參數(shù)量和計算量較其他的網(wǎng)絡明顯下降。深度分離卷積包含深度卷積和逐點卷積。如圖1所示[12]。
圖1 標準卷積與深度分離卷積
假設輸入為特征圖F,尺寸為DF×DF×M(DF為輸入特征圖的寬和高,M為輸入通道數(shù)量),輸出為特征圖G,尺寸為DG×DG×N(DG為方形輸出特征圖的寬和高,N為輸出通道數(shù)量)。如果采用傳統(tǒng)的標準卷積法,且卷積核K包含DK×DK×M×N個參數(shù)(DK表示一個方形卷積核的邊長),步幅為1,則包含加邊的卷積輸出為
Gk,l,n=∑i,j,mKi,j,m,n·Fk+i-1,l+j-1,m
(1)
其計算量為
DK·DK·DF·DF·M·N。
標準卷積操作一步完成特征過濾和特征組合形成新特征。深度可分離卷積通過深度卷積和逐點卷積兩個步驟來達到此效果。其中,每一個輸入通道中一個濾波器的深度卷積操作為
(2)
DK·DK·DF·DF·M
深度卷積僅是對輸入特征圖進行過濾,還需用卷積核尺寸為1×1的卷積操作對深度卷積的輸出進行線性組合,稱為逐點卷積。將深度卷積核逐點卷積的計算量相加就是MobileNet v2卷積步驟的總計算量,如下
DK·DK·DF·DF·M+DF·DF·M·M
故使用深度可分離卷積代替?zhèn)鹘y(tǒng)的標準卷積,可減少的計算量為
(3)
在MobileNet V2模型中使用了濾波器尺寸為3×3的深度可分離卷積,由式(3)可知,此操作在保證預測精度的情況下降低了8~9倍的計算量。
MobileNet V2模型在MobileNet模型的基礎上進行了改進,加入了顛倒殘差結(jié)構(gòu)和線性瓶頸[13]。
圖2(a),(b)分別是卷積步長為1和2的MobileNet V2的基本構(gòu)建模塊。從圖2中可以看到,MobileNet V2網(wǎng)絡結(jié)構(gòu)去掉了低維1×1卷積層后面的非線性激活層,稱為線性瓶頸。在低維輸出層中特性信息主要集中在縮減后的通道中,如果后面加上一個非線性激活層(比如ReLU6會使負值輸入變?yōu)?),會導致較多的特征信息丟失。故線性瓶頸減少了特征信息的丟失,保證了模型的準確度。
圖2 MobileNet V2的基本構(gòu)建模塊
首先通過工業(yè)視覺設備對二極管玻殼進行圖像采集,然后將圖像進行預處理,生成訓練樣本及測試樣本,輸入Caffe深度學習框架中進行模型訓練,訓練結(jié)束后得到收斂的二極管玻殼缺陷識別模型,即學習完成。通過學習后,二極管玻殼缺陷識別模型得到關(guān)于二極管玻殼的特征元素。將待識別的玻殼樣本圖,輸入學習好的模型后,通過與特征庫中的信號特征進行學習對比識別測試,隨后輸出識別結(jié)果。
本文設計的二極管玻殼缺陷識別網(wǎng)絡主體框架采用輕量級神經(jīng)網(wǎng)絡MobileNet V2,為使其適應二極管玻殼缺陷的識別,進行了如下的改進。
學習率(learning rate,LR)控制著模型更新參數(shù)的快慢,如學習率過小,會導致模型訓練時間過長,網(wǎng)絡收斂速度過慢。而學習率設置過大,會導致模型的參數(shù)更新過大,使得網(wǎng)絡無法收斂。本模型中為了兼顧兩者,采用指數(shù)衰減學習率為
(4)
式中LRB為初始學習率,LRD為學習率衰減率,epoch為當前迭代數(shù)據(jù)集的次數(shù),LRS為迭代多少次數(shù)據(jù)集就更新一次學習率。使用指數(shù)衰減學習率,使得模型在訓練起初用有較大學習率,快速得到最優(yōu)解,然后逐步減小學習率,使模型在訓練后期穩(wěn)定。
神經(jīng)網(wǎng)絡模型經(jīng)常使用的激活函數(shù)包括Sigmoid,Tanh,ReLU等函數(shù)。MobileNet V2模型中使用ReLU6函數(shù)作為激活函數(shù),具有解決了梯度消失(在正區(qū)間)、計算速度快等特點。但由于ReLU6函數(shù)輸出為非0均值、故收斂慢,且存在dead relu問題,即某些神經(jīng)元可能永遠不會被激活,導致相應的參數(shù)永遠不能被更新。為避免此問題,玻殼缺陷識別模型中采用Leaky ReLU函數(shù)作為激活函數(shù),Leaky ReLU函數(shù)如式(5)所示
f(x)=max(αx,x)
“十三五”時期,隨著海洋經(jīng)濟迅速發(fā)展,國家“海洋戰(zhàn)略”的逐步實施,海上絲綢之路倡議的深入推進,南海海區(qū)在多重政策推動下,航標事業(yè)作為遠海海域、重要戰(zhàn)略通道、領海基點、毗連區(qū)、邊遠島礁、主權(quán)島礁、陸島交通建設等海上活動載體起到支撐和航海保障作用,面臨難得的歷史機遇。由于燈樁更加適應其海域需求,施工技術(shù)成熟,建設周期較短,維護成本低廉,燈樁建設正逢其時,下面探討燈樁設計建設一些思路,僅供參考或借鑒。
(5)
Leaky ReLU函數(shù)解決了梯度消失問題,計算速度快,收斂速度快,且不會存在Dead ReLU問題。
過擬合是指訓練好的模型對當前數(shù)據(jù)擬合得過好,而對未見過的新數(shù)據(jù)難以做出正確的判斷,模型缺乏泛化力。緩解過擬合主要通過數(shù)據(jù)清洗、增大訓練集、采用正則化[14]等方式,考慮到實際情況,本模型采用正則化來緩解過擬合。正則化在損失函數(shù)中引入模型復雜度指標,利用給參數(shù)加權(quán)值,弱化了訓練數(shù)據(jù)的噪聲。使用正則化后,損失函數(shù)變?yōu)閮刹糠值暮?如式(6)所示
loss=loss(yk,tk)+REG×loss(W)
(6)
式中l(wèi)oss(yk,tk)為之前求得的loss值,描述了預測結(jié)果與正確結(jié)果之間的差距。REG為參數(shù)W在總loss中的比例,即正則化的權(quán)重,W則表示需要正則化的參數(shù)。loss(W)的計算可以使用兩種方法,分別L1正則化和L2正則化。L1正則化如式(7)所示
lossL1(W)=∑i|Wi|
(7)
L1正則化會使很多參數(shù)變?yōu)榱?因此該方法可通過稀疏參數(shù),降低復雜度。L2正則化如式(8)所示
(8)
L2正則化會使很多參數(shù)接近零但不為零,因此該方法可通過減小參數(shù)值的大小降低復雜度。
考慮到玻殼圖像的像素比較小,且背景噪聲較弱,故本文提出的二極管玻殼缺陷識別模型使用L2正則化。
本實驗的硬件環(huán)境為I5—10300H處理器,1050Ti顯卡以及16 G的運行內(nèi)存。操作系統(tǒng)為Ubuntu16.04.1,Anaconda版本為Anaconda3—5.3.0(Python3.6),深度學習框架為Caffe。
本實驗收集了國內(nèi)某工廠生產(chǎn)的玻封二極管,使用工業(yè)視覺設備對二極管的玻殼進行圖像采集。通過分析采集到的圖像,將其共分類為4種樣本,分別為殼壁破損玻殼、破口玻殼、有污點的玻殼和無缺陷的合格玻殼,如圖3所示。
圖3 四類玻殼的樣本庫圖像
為了豐富圖像訓練集,對樣本進行了數(shù)據(jù)增強。本實驗采用旋轉(zhuǎn)、多尺度放縮和隨機裁剪等方式對訓練數(shù)據(jù)進行了數(shù)據(jù)增強。共采集了4類樣本各1 000張,共4 000張圖片。采用無放回隨機采樣法選取了4類樣本各25 %的圖片作為測試集。
經(jīng)過多次實驗,最終選取初始學習率為0.2,學習率衰減率為0.99,每迭代10次數(shù)據(jù)集更新一次學習率。正則化權(quán)重設置為0.03。
本模型使用交叉熵作為損失函數(shù)。使用訓練數(shù)據(jù)集對基于MobileNet V2的二極管玻殼缺陷識別網(wǎng)絡在Caffe框架中進行訓練。圖4是網(wǎng)絡在訓練過程中損失值隨迭代次數(shù)的變化曲線。前期損失函數(shù)值隨著迭代次數(shù)的不斷增加而快速減小,表明網(wǎng)絡的輸出值正在快速向正確解靠攏。當?shù)螖?shù)高于40次以后,損失函數(shù)的輸出值逐漸趨于穩(wěn)定,此時網(wǎng)絡的輸出最接近正確解,訓練完成。
圖4 訓練過程中損失值的變化情況
網(wǎng)絡收斂后,對測試數(shù)據(jù)集的總識別準確率達到93.3 %。對各類缺陷的識別正確率如表1所示。
表1 模型對各類缺陷的識別正確率
從表1可知,基于MobileNet V2的二極管玻殼缺陷識別網(wǎng)絡對二極管各類缺陷的識別正確率均達到91.6 %以上,表明模型收斂后能正確區(qū)分出二極管玻殼是否有缺陷,以及存在哪類缺陷。除此之外,模型大小僅為26.8 M,玻殼圖像的識別速度達到5張/s。
綜上,基于MobileNet V2網(wǎng)絡的二極管玻殼缺陷檢測模型具備了檢測精度高、模型體量小、檢測速度快等優(yōu)點。
本文提出了基于MobileNet V2的二極管玻殼缺陷識別模型。經(jīng)過實驗表明:該模型能較為準確的識別出二極管玻殼的各類缺陷,總識別準確率達到93.3 %,且模型的大小僅為26.8 M,對玻殼圖的識別速度超過了5張/s。說明該模型在二極管玻殼缺陷工業(yè)檢測上具有良好的應用前景,能提升缺陷檢測效率、提高檢測精度,減少檢測成本。但本研究受限于測試樣本集的不足,模型中存在過擬合問題,未來應針對此問題改進模型和算法,進一步提升識別正確率。