杜 超,劉桂華
(西南科技大學信息工程學院,四川 綿陽 621000)
玻殼作為二極管封裝的重要材料因其良好性能被廣泛應(yīng)用[1]。區(qū)別于一般的玻璃檢測方法[2-3],目前二極管玻殼缺陷檢測方法主要分為人工檢測法、圖像識別法和機器學習法。采用人工檢測的方法,不僅效率低,勞動強度大,而且檢測精度差,難以滿足生產(chǎn)需要。圖像處理方法[4]一般都是基于閾值分割,操作簡單,存在準確率不高和自適應(yīng)性能差問題。
機器學習的方法進行缺陷檢測中有LI等[5-6]開發(fā)了一種高度穩(wěn)健的估計器,稱為模型擬合(model fitting,MF)估計器[7]。ZHAO等[8]提取玻璃中比較大的氣泡邊緣的直方圖特征,使用自適應(yīng)提升算法(adaptive boosting,AdaBoost)進行分類,可以達到88.89%的準確率。馮小波等[9]利用小波共現(xiàn)提取特征,通過主成分分析(principal component analysis,PCA)降低特征的維數(shù),并且選擇3種不同方法之間的最佳分類器:包括分類和回歸樹(classification and regression trees,CART),多層感知器(multi-layer perception,MLP)和支持向量機(support vector machine,SVM)。在訓(xùn)練SVM和MLP分類器時,使用模擬退火算法來獲得分類器的最佳調(diào)整參數(shù),將缺陷識別準確率提升到89.5%。牛乾等[1]使用BP(back propagation)神經(jīng)網(wǎng)絡(luò),通過對二極管玻殼灰度、不變矩、紋理特征提取,然后使用多層感知機神經(jīng)網(wǎng)絡(luò)對缺陷進行分類檢測,得到了91%的精確率。雖然使用機器學習算法可以達到較高的識別率,但是其不足之處是需要進行分割和人工提取特征,識別精確度很大程度上會依賴于所輸入的特征的準確性以及所設(shè)計出的特征量維度,識別難度比較大,而且容易陷入“降維詛咒”[10]。
針對于以上問題,分析傳統(tǒng)的二極管玻殼圖像缺陷檢測的缺點,為了進一步提高缺陷的識別率,提出了一種基于VGG-19(visual geometry group-19)網(wǎng)絡(luò)的二極管玻殼圖像檢測方法,并在此基礎(chǔ)上進行改進。VGG神經(jīng)網(wǎng)絡(luò)曾贏得了ILSVR(ImageNet)2014年的冠軍,具有良好的模型遷移能力[11],采用制作的二極管玻殼圖像進行實驗驗證,實驗結(jié)果表明,相比于傳統(tǒng)的檢測方法,該方法大幅度提高了二極管玻殼缺陷檢測的準確率。
采集圖像主要分為4種缺陷:裂紋、破殼、污點、無缺陷。每一種采集樣本700張,總共2 800張圖片,訓(xùn)練集每種500張,總共2 000張;測試集每種200張,總共800張,其次采集100張包含多種缺陷樣本作為測試集使用,最后通過訓(xùn)練得出最佳模型并保存,圖1為采集的部分樣本圖像。
傳統(tǒng)的玻殼檢測都是通過手工提取特征,再進行分類,而卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)作為一種新的圖像檢測方法不需要手工提取特征,通過卷積與池化等操作不斷逐級加深特征的提取。傳統(tǒng)的機器學習和本文的缺陷檢測流程如圖2所示。
圖2 本文系統(tǒng)整體流程圖
在圖2(a)中所示為傳統(tǒng)的分類檢測,其流程主要包含:二極管玻殼圖像預(yù)處理、圖像缺陷特征提取、分類器選擇、分類檢測,其中特征提取的好壞直接影響缺陷檢測的識別率。而基于CNN檢測的主要流程(圖2(b)),其主要分為2部分:①進行玻殼圖像預(yù)處理,②進行分類識別。
分類識別也包含2大步驟:①大樣本集訓(xùn)練的VGG-19網(wǎng)絡(luò)模型(如圖3所示),得到VGG-19預(yù)訓(xùn)練模型[12-13]。②重新調(diào)整網(wǎng)絡(luò)的全連接層結(jié)構(gòu)的層數(shù)以及單元個數(shù)等超參數(shù),遷移訓(xùn)練好的VGG-19網(wǎng)絡(luò)模型的權(quán)重參數(shù)入固定層,改進層使用玻殼圖像進行訓(xùn)練,訓(xùn)練完成后得到改進模型。
最終使用改進模型進行缺陷種類的識別。
圖3 VGG-19網(wǎng)絡(luò)結(jié)構(gòu)
由于采集的玻殼包含大量噪聲,并且玻殼在整張圖片的位置是不確定的,因此需要對玻殼圖像進行預(yù)處理,主要包括:
(1)模板匹配:去掉除二極管以外的部分;
(2)濾波:使用自適應(yīng)中值濾波去除噪聲;
(3)增強:使用線性增強圖像缺陷。
預(yù)處理效果流程如圖4所示。
圖4 二極管玻殼圖像預(yù)處理
VGG-19[14]的CNN模型如圖3所示,相比其他網(wǎng)絡(luò)模型具有以下特點:
(1)在卷積層使用更小的濾波器尺寸和間隔。VGG-19模型共有19層,其中連續(xù)卷積層的深度最多達到4層,不僅網(wǎng)絡(luò)較AlexNet更深,而且都采用3×3的卷核作為濾波器。此種連續(xù)小模板的卷積核比單個大的積核具有更好的非線性,具有隱式規(guī)則的作用。
(2)將圖片進行多尺度化訓(xùn)練與測試。對原始圖片進行等比例縮放,保證圖片短邊大于 224,然后再圖片上隨機提取224×224窗口,進行訓(xùn)練,多尺度方法可以更好地識別缺陷。如圖所示,VGG-19卷積網(wǎng)絡(luò)模型有19個權(quán)重層,其中包含了16個卷積層和3個全連接層。輸層需要將輸入的圖像調(diào)整到3×224×224,隱層結(jié)構(gòu)中2層或4層卷積層相互堆疊。中間層的池化采用2×2步長為2的結(jié)構(gòu)進行特征降維,全連接層為3層具有多層感知機(multi-layer perception,MLP)的結(jié)構(gòu)。最后將輸出到具有1 000個標簽類的SoftMax分類器進行預(yù)測概率排序,從而選出具有最大概率的類別標簽作為分類的結(jié)果。
激活函數(shù)的選擇上使用了線性整流函數(shù)(rectified linear unit,ReLU),其表達式為
當x≥0時,梯度恒為1,無梯度耗散問題,收斂快,增大了網(wǎng)絡(luò)的稀疏性。當x<0時,該層的輸出為0,訓(xùn)練完成后為0的神經(jīng)元越多,稀疏性越大,提取出來的特征就越具有代表性,泛化性能越好。
在VGG-19的基礎(chǔ)上對網(wǎng)絡(luò)模型的全連接層進行了改進,并且在訓(xùn)練中通過調(diào)節(jié)固定層的深度,使模型在泛化性和檢測精度上得到最大地提升,其改進的模型機構(gòu)如圖5所示。VGG-19固定有3個全連接層其神經(jīng)元,個數(shù)為4096×4096×1000,使用4類標簽SoftMax分類層替換原有網(wǎng)絡(luò)中的分類層,同時使用ReLU作為激活函數(shù)。
VGG-19的預(yù)訓(xùn)練模型是通過 ImageNet數(shù)據(jù)庫中的1 000種類別的圖片數(shù)據(jù)集訓(xùn)練而成的,可以分類1 000種類別的圖像并且錯誤率為7.3%,因此具有較強的分類圖像特征學習能力。將其部分參數(shù)與權(quán)重遷移到二極管玻殼缺陷的特征提取中,可以避免使用大量數(shù)據(jù)集重新訓(xùn)練整個網(wǎng)絡(luò),減少了訓(xùn)練時間和提高了訓(xùn)練效率,利用訓(xùn)練好的VGG-19模型參數(shù)優(yōu)化改進網(wǎng)絡(luò)的參數(shù),有利于二極管玻殼圖像識別。
圖5 改進模型整體流程圖
如圖5所示,將VGG-19與訓(xùn)練模型參數(shù)遷移到二極管玻殼圖像識別模型的部分卷積層和池化層,其主要流程如下:
(1)采集二極管玻殼數(shù)據(jù)集,挑選出需要識別的類別圖像,作為訓(xùn)練集與測試集使用。
(2)采集的玻殼圖像包含大量噪聲,在輸入模型之前需要進行濾波、去噪、增強等預(yù)處理操作。
(3)建立改進模型,調(diào)節(jié)超參數(shù)。
(4)訓(xùn)練改進模型。
(5)使用測試集,測試和驗證模型。
本實驗的深度神經(jīng)網(wǎng)絡(luò)搭建在Tensorflow深度學習框架上,并采用基于 Python語言編程實現(xiàn);硬件包含臺式電腦,英特爾酷睿i7 7700 k處理器,12 G內(nèi)存,顯卡為NVIDIA GeForce GTX 750 Ti。
(1)全連接層層數(shù)和單元數(shù)確定。VGG-19全連接層為固定的3層結(jié)構(gòu)為4096×4096×4,首先對全連接層進行改進,設(shè)定全連接層為2層,網(wǎng)絡(luò)層結(jié)構(gòu)為a×4(a為首層單元數(shù))。分別設(shè)a為512,1 024,2 048,3 069,4 096。實驗結(jié)果如圖6所示,對第2層全連接層的超參數(shù)進行設(shè)定,第2層全連接層結(jié)構(gòu)為4096×b×4(其中b為第2層單元數(shù))。此時分別設(shè)定b為0,100,1 024和2 048,當?shù)?層單元層設(shè)定為0時收斂最快而且穩(wěn)定。由以上實驗得出最佳的全連接網(wǎng)絡(luò)層為4096×4。
圖6 全連接層首層單元個數(shù)設(shè)定
(2)固定層層數(shù)確定。在訓(xùn)練中固定層的參數(shù)可以改善和優(yōu)化新的模型,非固定參數(shù)層通過新的數(shù)據(jù)集進行訓(xùn)練可以提高模型的泛化能力和模型的檢測精度。
VGG-19共有25個權(quán)重層,設(shè)定最小的固定層數(shù)為17,測試效果如圖7所示,可以看出固定層數(shù)為19和20的時候測試的準確率曲線波動最小。并且固定層數(shù)設(shè)定為20的時候迭代次數(shù)在1 000以后波動是最小的,因此網(wǎng)絡(luò)設(shè)定固定層為前 20層,20層以后的權(quán)重層作為玻殼數(shù)據(jù)集訓(xùn)練時的權(quán)重參數(shù)修改層。
(1)全連接層層數(shù)和單元數(shù)確定。淺層網(wǎng)絡(luò)主要是提取玻殼缺陷的顏色、紋理、邊緣等細節(jié)信息,如圖8(a)和(b)所示。隨著網(wǎng)絡(luò)越深,提取到的特征更加抽象,更加具有分類能力,如圖8(c)和(d)所示。
圖7 固定層深度對準確率的影響
圖8 不同卷積層對玻殼圖像特征提取的結(jié)果
(2)準確率曲線和損失曲線。將采集的 2 000張二極管玻殼圖像數(shù)據(jù)集對改進模型進行訓(xùn)練,800張進行測試,二級管玻殼圖像分辨率分別縮放用來測試分辨率對準確率和損失函數(shù)的影響,再將數(shù)據(jù)集進行增強,用來測試增強數(shù)據(jù)集對準確率和損失函數(shù)的影響。
分別使用分辨率為 128×128,256×256以及661×601的不同像素尺寸進行檢測,使用 30°旋轉(zhuǎn)角度,左右尺寸曾加0.2倍,然后進行隨機剪裁增強數(shù)據(jù)集。測試的準確率曲線和損失曲線如圖9和圖0所示,可以看出隨著分辨率的增加準確率函數(shù)變得越來越穩(wěn)定,但是依然有部分波動很陡峭,當使用數(shù)據(jù)增強后準確率函數(shù)和損失函數(shù)曲線變得更加平滑,測試效果最好。
為了研究改進模型的性能,對二極管玻殼圖像進行對比實驗:①通過提取特征使用傳統(tǒng)分類器進行缺陷分類如 SVM,AdaBoost,MLP等[12,15];②分別使用AlexNet,GoogLeNet[16]和VGG-16的CNN進行測試。
圖9 準確率函數(shù)曲線
圖10 損失函數(shù)曲線
在機器學習中需要提取特征作為輸入,首先求玻殼圖像缺陷的灰度共生矩陣,利用共生矩陣h獲得圖像的對比度、能量、相關(guān)性、逆差矩等特征和求灰度均值、灰度方差、偏度、峰度、灰度熵等特征作為圖像灰度特征的描述,以及紋理特征與不變矩特征一起作為總的特征。為了解決尺度不變性問題,再將這些特征在3個尺度下分別求取,獲得特征共140維。將特征作為輸入分別輸入到高斯混合模型(Gaussian mixture model,GMM),K 最近鄰(k-nearest neighbor,KNN),SVM,決策樹(random forest,RF),AdaBoost,Bayes和 MLP 進行分測試,效果見表1。
表1 傳統(tǒng)特征分類準確率對比(%)
由表1可以看出,AdaBoost和BP網(wǎng)絡(luò)效果最佳。但由于手工提取特征的限制很難做到更好。對于CNN,使用卷積模塊進行特征提取,彌補了人工提取特征的缺點。并且卷積網(wǎng)絡(luò)提取的特征更加全面,且網(wǎng)絡(luò)越深提取特征也更加抽象,更具有分類能力,同時池化可以優(yōu)化和降低特征維度。
為了驗證改進的CNN的性能,通過AlexNet,GoogLeNet和VGG-16進行驗證對比。對比效果見表2??梢钥闯鯟NN比傳統(tǒng)網(wǎng)絡(luò)將準確率提高了至少 5%,改進網(wǎng)絡(luò)相比準確率提高到了 98.3%,效果最佳。
表2 改進網(wǎng)絡(luò)與其他CNN分類精度對比(%)
調(diào)用已訓(xùn)練好的模型進行單張測試,當使用機器學習方法檢測一張玻殼缺陷圖片需用0.141 3 s,而在GPU(2 G內(nèi)存)下調(diào)用深度網(wǎng)絡(luò)模型測試一張玻殼缺陷圖片需耗時0.426 2 s,雖然在該實驗平臺上使用機器學習的方法檢測速度比深度學習的方法快,但是調(diào)用深度模型進行檢測基本上也能滿足工業(yè)檢測的要求,且檢測的準確率有很大的提升。
由于傳統(tǒng)的機器學習算法固有缺陷[10]使得在玻殼缺陷檢測上不能達到很高的識別率,因此使用自動提取特征的卷積網(wǎng)絡(luò)進行檢測,通過使用VGG-19模型進行遷移學習,大范圍提高了玻殼缺陷檢測的準確率,并在此基礎(chǔ)上進行改進,改變網(wǎng)絡(luò)結(jié)構(gòu),進一步提高了識別率。
本文只針對二極管玻殼中的裂紋、污點、破殼和無缺陷4種類別進行了研究,在網(wǎng)絡(luò)模型的選擇和結(jié)構(gòu)改進過程也只使用了有限的模型和改進機制進行對比實驗,后期的工作需要增加樣本數(shù)據(jù)集和擴大樣本種類。并且使用其他種類模型和改進網(wǎng)絡(luò)方法進行改進和測試,進一步提高檢測的效果。