付 優(yōu) 任 芳
1(山西建筑職業(yè)技術(shù)學(xué)院計算機(jī)工程系 山西 晉中 030600)2(陜西師范大學(xué)數(shù)學(xué)與信息科學(xué)學(xué)院 陜西 西安 710061)
在機(jī)器學(xué)習(xí)領(lǐng)域中,深度學(xué)習(xí)是一個嶄新的研究方向,其本質(zhì)是一個具有多隱層的非線性網(wǎng)絡(luò)模型:對大規(guī)模原始數(shù)據(jù)樣本進(jìn)行訓(xùn)練,然后通過網(wǎng)絡(luò)模型對原始數(shù)據(jù)樣本的特征進(jìn)行提取,最終實(shí)現(xiàn)對原始數(shù)據(jù)進(jìn)行預(yù)測或分類。
在計算機(jī)視覺和圖像識別領(lǐng)域,卷積神經(jīng)網(wǎng)絡(luò)(CNN)取得了顯著的成績[1-3]。此外,深度學(xué)習(xí)廣泛應(yīng)用于數(shù)據(jù)挖掘、自然語言處理[4]、行人檢測[5]、手勢識別[6]和語音識別[7]等領(lǐng)域。與深度置信網(wǎng)絡(luò)[8]、S層自動編碼[9]等其他深度神經(jīng)網(wǎng)絡(luò)相比,CNN可以直接處理二維圖像。當(dāng)二維圖像轉(zhuǎn)換為一維信號時,會損失輸入數(shù)據(jù)的空間結(jié)構(gòu)特征,而通過CNN算法進(jìn)行處理時可避免這種損失。因此,基于CNN的識別算法是目前流行的圖像識別方法之一,并且其識別結(jié)果更加可靠。
手勢識別是人機(jī)交互系統(tǒng)發(fā)展的一個重要領(lǐng)域。常見的手勢識別方式很多,如:基于幾何特征的識別方法通過提取手勢的幾何特征信息進(jìn)行識別,具有良好的穩(wěn)定性,但其不能通過提升樣本量的同時進(jìn)行識別率的提升[10];基于隱馬爾科夫模型的識別方法雖然具有描述手勢時空變化的能力,但是該方法的識別速度卻不盡如人意[11]。隨著卷積神經(jīng)網(wǎng)絡(luò)在計算機(jī)視覺的迅速發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)在手勢識別上的應(yīng)用有著突破進(jìn)展,如:Takayoshi[12]在輸入卷積網(wǎng)絡(luò)之前討論了預(yù)處理過程和手勢識別過程的融合,實(shí)現(xiàn)了端到端手勢識別,并使得手勢識別率得到了提升;Barros等[13]創(chuàng)造性地使用立體聲卷積核進(jìn)行手勢識別,獲得了更好的手勢識別識別率。雖然上述方法取得了良好的識別結(jié)果,但它們?nèi)源嬖谑諗克俣嚷?、識別率低的問題。
為了進(jìn)一步提高CNN的收斂速度,降低訓(xùn)練難度,本文提出了一種AE-CNN算法。通過對CNN的特征提取和分類過程的研究,分析分類錯誤的原因,最終提出了一種基于AE-CNN的手勢識別算法。首先,通過神經(jīng)網(wǎng)絡(luò)的識別和連續(xù)迭代對特征殘差進(jìn)行特性提??;然后進(jìn)行局部自適應(yīng)增強(qiáng);最后,特征參數(shù)通過隱層的反向反饋,進(jìn)行有效地訓(xùn)練。同時,為了解決樣本數(shù)量少的問題,本文提出了一種新的樣本擴(kuò)增方法,即通過對原樣本進(jìn)行平移、旋轉(zhuǎn)、縮放和波紋形變等處理,增加了樣本量。
在CNN前向過程中,特征提取操作實(shí)現(xiàn)了卷積和池化效果。假設(shè)有m個卷積層,第i個輸入特征為Mi,對應(yīng)的卷積核為Ci。偏值為B1,激活函數(shù)為f,則卷積層的輸出特征Fc表示為:
(1)
式中:con表示卷積函數(shù)。
對卷積輸出特性進(jìn)行池化操作,進(jìn)一步減小維數(shù);然后,通過對全連接層進(jìn)行權(quán)值變換和激活,可獲得分類結(jié)果。全連接層的分類函數(shù)可表示為:
Fo=f(WT+B2)
(2)
式中:T是完全連接層的輸入特性;W是相應(yīng)的權(quán)重;B2是偏差值。
分類誤差在CNN的反向過程中被傳播到隱層,實(shí)現(xiàn)了卷積核和全連接矩陣權(quán)值與偏置的更新。更新后的參數(shù)用于下一次迭代的前向過程,因此CNN的迭代更新提高了識別率。假設(shè)步長為η,在CNN隱層中,權(quán)值ω和偏差b由ω1、b1更新為ω2、b2,更新函數(shù)如下:
ω2=ω1-η▽ω
(3)
b2=b1-η▽b
(4)
AE-CNN結(jié)構(gòu)如圖1所示。前向過程中包含了目標(biāo)分類和提取特征。誤差的反向反饋包含在反向過程中。輸入數(shù)據(jù)經(jīng)過前向處理后進(jìn)行分類,獲得分類結(jié)果。每個結(jié)果對應(yīng)一個唯一的分類。輸入數(shù)據(jù)真實(shí)屬于的類別稱為真值類別,真值類的對應(yīng)值為1,另一個類的對應(yīng)值為0。
圖1 AE-CNN的結(jié)構(gòu)
在隱層中,目標(biāo)誤差函數(shù)E(ω,b)用于度量每個參數(shù)對輸入數(shù)據(jù)的學(xué)習(xí)效果。為了使分類yi盡可能接近真值分類y′i,在CNN的前向與反向過程之間增加自適應(yīng)增強(qiáng)模塊。在增強(qiáng)模塊中,對分類結(jié)果進(jìn)行特征分析,然后通過調(diào)整增強(qiáng)系數(shù)對特征誤差進(jìn)行自適應(yīng)地調(diào)整。最后,通過反向過程將增強(qiáng)后的特征誤差反饋到隱層,達(dá)到降低目標(biāo)錯誤函數(shù)輸出和提升下一次分類效果的目的。當(dāng)相近的兩個誤差輸出不大于閾值時,則可以判斷收斂和學(xué)習(xí)任務(wù)均已實(shí)現(xiàn)。關(guān)于一個n的分類問題,它的目標(biāo)錯誤函數(shù)表示如下:
(5)
式中:j表示分類個數(shù);err是其分類誤差。根據(jù)梯度下降法,權(quán)值和偏值的梯度變化可表示為:
(6)
(7)
d=(yj-y′j)f′=errj·f′
(8)
式中:d是剩余值;x是輸入特性中的值;f′是激活函數(shù)f的導(dǎo)數(shù)。
基于AE-CNN手勢識別算法的步驟為:
1) 分類誤差的計算。分類結(jié)果通過CNN的前向處理得到,然后將分類真值與分類結(jié)果進(jìn)行對比,可計算得出分類誤差。
2) 分類結(jié)果特征的提取。分析輸出層分類結(jié)果,將分類結(jié)果的兩個最大值設(shè)為特征值。
3) 計算增強(qiáng)系數(shù)。增強(qiáng)系數(shù)是由基于迭代的時間和前向的分類結(jié)果計算得到。若分類正確,則與分類特性對應(yīng)的錯誤值將增加α1倍。相反,當(dāng)分類錯誤時,其會增加α2倍。因此,自適應(yīng)增強(qiáng)系數(shù)α可以表示為:
(9)
式中:k是乘積系數(shù);g是當(dāng)前迭代的時間;θ是修正系數(shù);c是常數(shù)。根據(jù)不同的數(shù)據(jù)集,用式(9)計算α1和α2的值。
4) 自適應(yīng)增強(qiáng)分類特征對應(yīng)的誤差值。假設(shè)err是分類特性的錯誤值,s是大小寫正確分類中的標(biāo)志。此時,增強(qiáng)函數(shù)err′s由下式計算得到:
err′s=αs·errs
(10)
5) 增強(qiáng)殘差的計算。增強(qiáng)殘差包括剩余誤差的殘差和特征誤差后的殘差,由式(8)表示。
6) 將增強(qiáng)后的殘余反饋給隱層。在隱層中,權(quán)值和偏差按式(6)和式(7)計算。
7) 更新模型。最后利用式(3)和式(4)中的函數(shù)更新隱層的權(quán)值和偏差。
在實(shí)驗部分,將從算法的收斂性能、識別率和訓(xùn)練時間三個方面對本文算法進(jìn)行驗證。
實(shí)驗采用了Jochen Triesch數(shù)據(jù)庫(JTD)。這個數(shù)據(jù)庫包含10個手勢,來自24個不同背景的人,一個亮的,一個暗的,在復(fù)雜背景前完成的。所有圖片的大小為128×128,并集中在手勢。JTD數(shù)據(jù)庫的示例如圖2所示。
圖2 實(shí)驗所用的的手勢示例
在樣本集上執(zhí)行二進(jìn)制處理和邊界刪除。最后,大小統(tǒng)一為28×28像素。CNN采用隨機(jī)梯度下降算法。在兩個卷積層中,卷積核的個數(shù)分別設(shè)為6和72。其他參數(shù)設(shè)置如表1所示。
表1 卷機(jī)神經(jīng)網(wǎng)絡(luò)參數(shù)
實(shí)驗中使用的自適應(yīng)增強(qiáng)系數(shù)為α1、α2,表達(dá)式如下:
(11)
(12)
(13)
(14)
式中:g是迭代時間;θ1、θ2是相應(yīng)的修正函數(shù)。
深度學(xué)習(xí)訓(xùn)練需要大量的樣本進(jìn)行訓(xùn)練,在樣本容量缺乏的情況下,通常需要人為地增加訓(xùn)練樣本的數(shù)量。常用的增強(qiáng)方法有彈性變形、噪聲和仿射變換等。在不改動手勢結(jié)構(gòu)關(guān)系的基礎(chǔ)上,提出了一種結(jié)合平移、旋轉(zhuǎn)和縮放的波形扭曲的方法,從而實(shí)現(xiàn)對訓(xùn)練樣本量的擴(kuò)充。
1) 收斂性能對比。原始CNN算法和本文算法的收斂曲線如圖3所示。結(jié)果表明,原始算法的收斂性指數(shù)和算法的收斂性均隨訓(xùn)練頻率的增加而降低,并在第60次迭代中實(shí)現(xiàn)了收斂。因此通過對比收斂曲線可得知,本文算法在迭代過程中收斂速度快于原算法,并且收斂效果較好。
圖3 原始CNN算法和本文算法的收斂曲線
2) 識別率對比。將所提出的算法與深度神經(jīng)網(wǎng)絡(luò)模型[14]中的多尺度梯度進(jìn)行比較,得到的識別率如表2所示。文獻(xiàn)[14]中使用的特征分別為一般梯度特征、多尺度梯度特征、多尺度Gabor特征要點(diǎn)、梯度取向直方圖(HOG)以及局部二值模式(LBP)。分類器都是5層CNN。從表2中可以看出,與其他幾種方法相比,本文算法的識別率得到了提高。
表2 不同算法識別率對比
為了加強(qiáng)檢驗算法的魯棒性和穩(wěn)定性,隨機(jī)選取20個字符作為一組樣本,執(zhí)行4次,得到另外4組樣本。然后對另外4組樣本進(jìn)行實(shí)驗。表3所示為識別率結(jié)果,可以看出,不同樣本集的識別結(jié)果是穩(wěn)定的,因此提出的算法具備較強(qiáng)的魯棒性。
表3 多組樣本情況下的識別率
3) 訓(xùn)練時間對比。對于5組樣本,分別計算原始CNN算法和本文提出算法的訓(xùn)練時間。由表4可以看出,原來的CNN算法和本文提出的算法訓(xùn)練時間幾乎是一樣的,其時間差異小到可以忽略不計。
表4 多組樣本情況下的訓(xùn)練耗時
4) 樣本擴(kuò)增實(shí)驗。為了驗證樣本擴(kuò)增試驗的性能,對上述5組數(shù)據(jù)進(jìn)行樣本擴(kuò)增。該算法的平均識別率和平均訓(xùn)練時間如表5所示。可以看出,樣本擴(kuò)增已延長了一定的訓(xùn)練時間,但它對識別率的貢獻(xiàn)更為重要。因此,樣本增強(qiáng)是深度學(xué)習(xí)模型訓(xùn)練的必要步驟。
表5 樣本擴(kuò)增實(shí)驗結(jié)果
通過對CNN訓(xùn)練過程中誤差產(chǎn)生的原因及其反饋模型進(jìn)行分析,提出了基于AE-CNN的手勢算法。實(shí)驗結(jié)果表明,本文算法收斂速度快、識別準(zhǔn)確率高,并且沒有明顯增加識別過程的耗時性。另外,為處理樣本量缺乏的難題,本文提出了一種基于波形扭曲的樣本量擴(kuò)增方法,進(jìn)一步提高本文算法的識別率。