盧丹,劉紅,劉軒,崔陽
(1.長春理工大學(xué) 光電工程學(xué)院,長春 130022;2.長春理工大學(xué) 電子信息工程學(xué)院,長春 130022;3.長春理工大學(xué) 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院,長春 130022)
隨著國民經(jīng)濟(jì)的快速發(fā)展,居民的可支配收入也不斷的提高,中國汽車保有量也逐年提升,2020年中國汽車保有量達(dá)2.81億輛,較2019年增加了0.21億輛,同比增長8.08%[1-2]。中國制造2025指出,我國應(yīng)快速發(fā)展制造業(yè),有力推動(dòng)工業(yè)化和現(xiàn)代化進(jìn)程[3]。
目前字符缺陷檢測仍停留在人工檢測階段,檢測結(jié)果易受到人眼誤差的影響,難以滿足現(xiàn)代高精度、大批量的檢測要求[4-5]。為此國內(nèi)外學(xué)者展開了大量的研究,提出利用機(jī)器視覺技術(shù)代替人眼的缺陷檢測方法[6],提高字符缺陷檢測的準(zhǔn)確率。傳統(tǒng)機(jī)器學(xué)習(xí)模板匹配算法[7]、SIFT[8]、SVM[9]使用人工特征提取方法,特征針對(duì)度高,面對(duì)特征種類隨機(jī)且不定性的字符缺陷,檢測結(jié)果較差。
隨著機(jī)器學(xué)習(xí)的快速發(fā)展,深度學(xué)習(xí)作為機(jī)器學(xué)習(xí)的一個(gè)重要分支得到了廣泛應(yīng)用。深度學(xué)習(xí)中的 BP[10]、CNN[11]算法都在字符檢測領(lǐng)域進(jìn)行應(yīng)用。YANN L C等人[12]提出一種基于梯度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò)算法LeNet-5,LeNet-5卷積神經(jīng)網(wǎng)絡(luò)作為第一個(gè)產(chǎn)生實(shí)際商業(yè)價(jià)值的卷積神經(jīng)網(wǎng)絡(luò),效力于全美郵政系統(tǒng)的手寫郵政編碼識(shí)別,并以低于1%的錯(cuò)誤率實(shí)現(xiàn)郵件和包裹的分揀。羅月童[13]針對(duì)芯片表面字符識(shí)別,提出一種基于LeNet-5的芯片表面字符識(shí)別算法。首先根據(jù)芯片表面字符自身的特點(diǎn),對(duì)LeNet-5網(wǎng)絡(luò)進(jìn)行改進(jìn)。再使用標(biāo)準(zhǔn)字符集和采集的芯片數(shù)據(jù)進(jìn)行實(shí)驗(yàn)驗(yàn)證,算法識(shí)別率高,對(duì)相似字符具有較好的魯棒性。深度學(xué)習(xí)LeNet-5以原始圖像作為輸入,通過網(wǎng)絡(luò)模型直接進(jìn)行特征提取,算法具有可移植性。然而使用深度學(xué)習(xí)對(duì)汽車手柄字符進(jìn)行缺陷檢測還面臨很大挑戰(zhàn)。
本文受到文獻(xiàn)[14-17]的啟發(fā),提出一種基于改進(jìn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)的汽車手柄字符缺陷檢測算法,提高檢測速度和檢測精度。本文主要針對(duì)P(駐車擋)、R(倒車擋)、N(空擋)、D(前進(jìn)擋)、S(運(yùn)動(dòng)擋)、+(運(yùn)動(dòng)模式下加擋)、-(運(yùn)動(dòng)模式下降擋)、/(D與S之間的區(qū)分斜線)、?(下箭頭),共9個(gè)汽車手柄字符進(jìn)行分析。
本課題利用LeNet-5卷積神經(jīng)網(wǎng)絡(luò)對(duì)汽車手柄字符進(jìn)行缺陷檢測,由于缺陷種類具有不定性、隨機(jī)性,檢測難度大。本課題是在LeNet-5卷機(jī)神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上進(jìn)行改進(jìn)。將圖像輸入由32×32像素改為64×64像素;引入批量歸一化操作;在反向傳播過程中引入Adam優(yōu)化器,提高檢測的準(zhǔn)確率。
LeNet-5卷積神經(jīng)網(wǎng)絡(luò)前向傳播由8層組成,分別首先輸入層輸入32×32大小的圖像,第一層是6個(gè)5×5卷積核組成的卷積層,提取圖像中的字符特征。第二層是2×2的最大池化層,進(jìn)行降維。第三層是16個(gè)5×5卷積核組成的卷積層,提取深層特征。第四層是2×2的最大池化層。第五層是120個(gè)5×5卷積核組成的卷積層,可以將上一層的池化層排成一列。第六層全連接層對(duì)信息重新擬合。最后輸出層輸出分類結(jié)果。LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如圖1所示。
圖1 LeNet-5卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
(1)卷積層
卷積層的作用在于提取圖像中的特征信息。LeNet-5卷積神經(jīng)網(wǎng)絡(luò)使用5×5的卷積核,在遍歷整個(gè)圖像后,得到特征提取的結(jié)果。卷積運(yùn)算后會(huì)使用一個(gè)ReLU激活函數(shù),增加網(wǎng)絡(luò)的非線性能力。卷積層的數(shù)學(xué)表達(dá)式如下:
(2)池化層
使用池化層,在保持最重要的信息的同時(shí),降低特征圖的維度,提高計(jì)算速度,降低過擬合概率。本文使用的是最大池化。數(shù)學(xué)表達(dá)式如下:
(3)全連接層
全連接層的作用是將卷積層提取的局部特征重新通過權(quán)值矩陣組裝成完整的圖像,在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到了分類器的作用。
在神經(jīng)網(wǎng)絡(luò)中前向傳播的輸出值y與真實(shí)值y?之間的差距定義為損失函數(shù),網(wǎng)絡(luò)反向傳播的目的不斷更新參數(shù)使損失值最小。N個(gè)輸入樣本的交叉熵?fù)p失函數(shù)數(shù)學(xué)表達(dá)式如下:
式中,pj為第j個(gè)樣本預(yù)測的概率;yj為第j個(gè)樣本的標(biāo)簽。
為了逐漸降低損失函數(shù)J的值,LeNet-5網(wǎng)絡(luò)使用梯度下降法對(duì)結(jié)果進(jìn)行更新:
式中,θt為第t次迭代的模型參數(shù);η為學(xué)習(xí)率;?J(θ)為對(duì)J求梯度。
本文使用LeNet-5卷積神經(jīng)網(wǎng)絡(luò)對(duì)9個(gè)汽車手柄字符進(jìn)行缺陷檢測,但是由于汽車手柄字符缺陷特征具有隨機(jī)性和多樣性,傳統(tǒng)LeNet-5網(wǎng)絡(luò)字符缺陷檢測準(zhǔn)確率低。因此本文對(duì)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn),使之適用于汽車手柄字符缺陷檢測,提高字符缺陷檢測準(zhǔn)確率。
(1)LeNet-5網(wǎng)絡(luò)的輸入為32×32像素圖像,為了放大字符缺陷的特征,在多次實(shí)驗(yàn)后,采用64×64像素圖像。使訓(xùn)練樣本包括更豐富的信息量,提高網(wǎng)絡(luò)缺陷檢測準(zhǔn)確率。
(2)增加網(wǎng)絡(luò)的輸入字符圖像像素,會(huì)造成參與訓(xùn)練的神經(jīng)元個(gè)數(shù)增加,網(wǎng)絡(luò)模型的運(yùn)算速率下降。本文引入Adam優(yōu)化器,提高字符缺陷檢測模型的訓(xùn)練速度。Adam優(yōu)化器使用梯度的均值mt和梯度平方νt進(jìn)行綜合計(jì)算:
式中,gt為t時(shí)間步的梯度;β1=0.9;β2=0.99。
由于m0、v0初值為 0,會(huì)導(dǎo)致mt、vt在訓(xùn)練初期階段會(huì)偏向于0訓(xùn)練,為了降低對(duì)訓(xùn)練初期的影響,需要對(duì)兩者進(jìn)行偏差糾正,完成參數(shù)的更新:
Adam優(yōu)化器對(duì)參數(shù)的更新速度不僅僅依賴于梯度的伸縮變換,使用mt和νt的共同作用,使參數(shù)更新迅速,可以加快神經(jīng)網(wǎng)絡(luò)訓(xùn)練速率。
(3)使用改進(jìn)網(wǎng)絡(luò)模型進(jìn)行測試時(shí),缺陷字符出現(xiàn)了訓(xùn)練準(zhǔn)確率高、測試準(zhǔn)確率低的問題。為了提高缺陷字符測試的準(zhǔn)確率,本文對(duì)卷積后的數(shù)據(jù)進(jìn)行批量歸一化(Batch Normalization)操作。批量歸一化操作首先計(jì)算輸入數(shù)據(jù)xi的平均值和方差,根據(jù)平均值和方差對(duì)數(shù)據(jù)歸一化,最后進(jìn)行尺度變換和偏移,得到歸一化后的結(jié)果yi:
式中,yi為批量歸一化操作的第i個(gè)輸出值;γ和β為網(wǎng)絡(luò)參數(shù);m為mini-batch的大?。粁i為批量歸一化操作的第i個(gè)輸入值。
因?yàn)锽N層將mini-batch中的所有字符樣本xi關(guān)聯(lián)在一起,所以網(wǎng)絡(luò)不會(huì)從某一個(gè)字符訓(xùn)練樣本中生成確認(rèn)的結(jié)果,大大提高字符測試集的準(zhǔn)確性。
改進(jìn)后的LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)包含10層網(wǎng)絡(luò),輸入層增加成64×64像素,增加網(wǎng)絡(luò)的字符特征信息。C1、C4卷積層后增加批量歸一化操作,增加網(wǎng)絡(luò)的泛化能力。F7層的卷積層改為全連接層,并調(diào)節(jié)全連接層的參數(shù)。由于汽車手柄字符分為正常字符和缺陷字符兩種,9個(gè)字符共18類,因此輸出層節(jié)點(diǎn)數(shù)設(shè)為18。然后使用Softmax回歸模型對(duì)字符進(jìn)行分類。在反向傳播過程中改進(jìn)優(yōu)化器為Adam優(yōu)化器,利用梯度均值和梯度平方的綜合計(jì)算,增加網(wǎng)絡(luò)模型參數(shù)的更新。改進(jìn)后的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如圖2所示。
圖2 改進(jìn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
使用改進(jìn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)對(duì)汽車手柄表面上的字符進(jìn)行缺陷檢測。主要包括五個(gè)部分:預(yù)處理、字符分割、構(gòu)建數(shù)據(jù)集、改進(jìn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練、模型測試并進(jìn)行缺陷分析。檢測算法流程圖如圖3所示。
圖3 字符缺陷檢測算法流程圖
(1)預(yù)處理:首先加權(quán)灰度化處理,降低圖像維數(shù),減少算法所需處理的數(shù)據(jù)量,然后對(duì)圖像進(jìn)行OTSU二值化操作,更加突出原始圖像中字符特征,達(dá)到降低背景干擾的目的。
(2)字符分割:本文使用投影法進(jìn)行字符分割,算法使用數(shù)組存儲(chǔ)所有像素值,在y軸上從0到h遍歷每一行圖像的像素值g(x,y)。將所有水平方向的像素值累加投影,根據(jù)投影圖上y軸間斷點(diǎn)的個(gè)數(shù),對(duì)字符進(jìn)行行分割,同理進(jìn)行列分割處理。
行分割的公式如下:
列分割的公式如下:
(3)構(gòu)建數(shù)據(jù)集:將字符分割后的字符進(jìn)行尺度歸一化處理后,保存成64×64像素的JPG圖像。并按照7∶3的比例對(duì)正常字符和缺陷字符進(jìn)行分類。
(4)改進(jìn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練:使用汽車手柄字符訓(xùn)練集對(duì)上述改進(jìn)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)的模型進(jìn)行訓(xùn)練。通過對(duì)學(xué)習(xí)率、迭代次數(shù)、mini-batch等超參數(shù)的調(diào)節(jié),得到性能較好的LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型。
(5)模型測試:使用訓(xùn)練好的模型對(duì)測試集進(jìn)行測試,并根據(jù)測試結(jié)果分析模型的三點(diǎn)改進(jìn)方法對(duì)模型檢測結(jié)果的影響。
本實(shí)驗(yàn)所用的汽車手柄字符圖像采集過程均在實(shí)驗(yàn)室搭建好的暗室環(huán)境下進(jìn)行。采集系統(tǒng)由計(jì)算機(jī)、檢測儀、WP-UC200型相機(jī)、光學(xué)平臺(tái)、二代發(fā)光手柄和相機(jī)支架組成。為了滿足暗室環(huán)境要求,在實(shí)驗(yàn)鐵架外部使用遮光性較強(qiáng)的紅色綢布進(jìn)行遮擋,內(nèi)部用涂銀遮光布進(jìn)行密封。得到800張汽車手柄字符圖像,如圖5所示。
圖4 汽車手柄字符采集系統(tǒng)
圖5 汽車手柄字符圖像
汽車手柄字符每一張圖中包含P、R、N、D、S、+、-、?,共9個(gè)汽車手柄字符。首先對(duì)字符圖像進(jìn)行預(yù)處理,突出字符特征;然后對(duì)圖像進(jìn)行字符分割,將9個(gè)字符分隔開;再將字符尺度歸一化成64×64大小圖像。最后將分割后的字符進(jìn)行分類,構(gòu)建成汽車手柄字符數(shù)據(jù)集。字符分為正常字符和缺陷字符兩種。正常字符是合格字符。缺陷字符是在點(diǎn)亮手柄內(nèi)部LED燈時(shí)字符會(huì)出現(xiàn)字符顯示不全的問題,是不合格字符。正常字符和缺陷字符如圖6所示。
圖6 字符圖像
構(gòu)建9個(gè)汽車手柄字符數(shù)據(jù)集,如表1所示,并按照7∶3的比例劃分成訓(xùn)練集和測試集。
表1 汽車手柄字符數(shù)據(jù)集
采用準(zhǔn)確率(Accuracy)作為字符缺陷檢測結(jié)果的有效性指標(biāo),準(zhǔn)確率為預(yù)測正確的字符在總樣本中的概率:
式中,TP為正常字符判對(duì)的個(gè)數(shù);FN為正常字符判錯(cuò)個(gè)數(shù);TN為缺陷字符判對(duì)個(gè)數(shù);FP為缺陷字符判錯(cuò)的個(gè)數(shù)。
本文實(shí)驗(yàn)內(nèi)存為128 G,顯卡為2080 TI。軟件環(huán)境為:操作系統(tǒng)PyCharm,Python 2.7,Tensor-Flow 1.140。使用訓(xùn)練集對(duì)改進(jìn)后的網(wǎng)絡(luò)進(jìn)行訓(xùn)練,并分別對(duì)以上三種改進(jìn)方法進(jìn)行實(shí)驗(yàn)。
(1)網(wǎng)絡(luò)輸入大小對(duì)準(zhǔn)確率的影響
在學(xué)習(xí)率為0.01、mini-batch為128、迭代次數(shù)為10 k、優(yōu)化器為隨機(jī)梯度優(yōu)化器(Gradient Descent),對(duì) 32×32像素和 64×64像素的不同輸入大小圖像進(jìn)行對(duì)比分析,訓(xùn)練結(jié)果如表2所示。
表2 訓(xùn)練結(jié)果
隨著輸入圖像像素的增加,網(wǎng)絡(luò)可以獲得每個(gè)字符更多的特征。輸入圖像為64×64的網(wǎng)絡(luò)訓(xùn)練準(zhǔn)確率提高了22.74%。但是網(wǎng)絡(luò)模型的訓(xùn)練時(shí)間增加了81.41 s。在10 k次迭代后,保存訓(xùn)練好的模型,使用測試集對(duì)模型進(jìn)行測試,測試結(jié)果如表3所示。
表3 測試集測試結(jié)果
64×64像素的輸入網(wǎng)絡(luò),檢測準(zhǔn)確率提高了64.35%,因此本文選擇64×64像素作為網(wǎng)絡(luò)輸入。
(2)優(yōu)化器對(duì)準(zhǔn)確率的影響
在輸入圖像為 64×64,mini-batch為128,學(xué)習(xí)率為0.01,迭代次數(shù)為2 k的條件下對(duì)Gradient Descent(GD)、AdaGrad和 Adam 三種優(yōu)化器進(jìn)行對(duì)比分析,訓(xùn)練過程中成功率的曲線如圖7所示。
圖7 改進(jìn)Adam優(yōu)化器訓(xùn)練網(wǎng)絡(luò)準(zhǔn)確率對(duì)比圖
AdaGrad優(yōu)化器和Gradient Descent優(yōu)化器在迭代次數(shù)為2 k次時(shí),準(zhǔn)確率依然處于震蕩階段,但是Adam優(yōu)化器準(zhǔn)確率已經(jīng)趨于收斂的穩(wěn)定狀態(tài)。訓(xùn)練結(jié)果如表4所示。
表4 訓(xùn)練結(jié)果
Adam優(yōu)化器在迭代2 k次時(shí)訓(xùn)練準(zhǔn)確率達(dá)到了99.6%,用時(shí)53.86 s。相比于Gradient Descent優(yōu)化器,訓(xùn)練損失率下降了0.49,準(zhǔn)確率提高了16.26%,時(shí)間減少了2.28 s。使用訓(xùn)練好的網(wǎng)絡(luò)對(duì)測試集進(jìn)行測試,實(shí)驗(yàn)結(jié)果如表5所示。
表5 測試集測試結(jié)果
引入Adam優(yōu)化器后,迭代次數(shù)從10 k降低到2 k,檢測準(zhǔn)確率提高了32.57%。實(shí)驗(yàn)結(jié)果表明,Adam優(yōu)化器可以在減少訓(xùn)練時(shí)間的同時(shí)提高網(wǎng)絡(luò)的準(zhǔn)確率。
(3)引入BN層對(duì)準(zhǔn)確率的影響
在mini-batch為128,輸入圖像為64×64,學(xué)習(xí)率為0.01,迭代次數(shù)為2 k,優(yōu)化器為Adam優(yōu)化器下,對(duì)網(wǎng)絡(luò)進(jìn)行加入BN層改進(jìn)的實(shí)驗(yàn),向網(wǎng)絡(luò)中加入BN層。訓(xùn)練過程中的成功率的曲線如圖8所示。
圖8 加入BN層訓(xùn)練網(wǎng)絡(luò)準(zhǔn)確率對(duì)比圖
BN層將mini-batch中的所有字符樣本關(guān)聯(lián)在一起,網(wǎng)絡(luò)泛化能力增強(qiáng),訓(xùn)練準(zhǔn)確率更早地進(jìn)入收斂。準(zhǔn)確使用訓(xùn)練好的模型對(duì)測試集進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表6所示。
表6 測試集測試結(jié)果
加入BN層后的測試準(zhǔn)確率為97.42%,比無BN層網(wǎng)絡(luò)測試準(zhǔn)確率提高了4.5%。在加入BN層后,解決了訓(xùn)練準(zhǔn)確率高、測試集準(zhǔn)確率低的問題。
現(xiàn)有的人工檢測方法檢測速度慢、準(zhǔn)確率差。模板匹配算法受到了模板的限制,難以檢測隨機(jī)性的缺陷問題。本文提出了一種基于LeNet-5卷積神經(jīng)網(wǎng)絡(luò)的改進(jìn)汽車手柄字符缺陷檢測算法。制作汽車手柄數(shù)據(jù)集,并對(duì)LeNet-5卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行改進(jìn)輸入圖像大小,增加字符的特征信息;引入Adam優(yōu)化器,在減少訓(xùn)練時(shí)間的同時(shí),提高測試的準(zhǔn)確性;引入批量歸一化操作,解決訓(xùn)練準(zhǔn)確率高、測試準(zhǔn)確率低的問題。實(shí)驗(yàn)結(jié)果表明,本文改進(jìn)算法在迭代次數(shù)2 000次的條件下,9個(gè)汽車手柄字符缺陷檢測準(zhǔn)確率為98.89%。