付 優 任 芳
1(山西建筑職業技術學院計算機工程系 山西 晉中 030600)2(陜西師范大學數學與信息科學學院 陜西 西安 710061)
在機器學習領域中,深度學習是一個嶄新的研究方向,其本質是一個具有多隱層的非線性網絡模型:對大規模原始數據樣本進行訓練,然后通過網絡模型對原始數據樣本的特征進行提取,最終實現對原始數據進行預測或分類。
在計算機視覺和圖像識別領域,卷積神經網絡(CNN)取得了顯著的成績[1-3]。此外,深度學習廣泛應用于數據挖掘、自然語言處理[4]、行人檢測[5]、手勢識別[6]和語音識別[7]等領域。與深度置信網絡[8]、S層自動編碼[9]等其他深度神經網絡相比,CNN可以直接處理二維圖像。當二維圖像轉換為一維信號時,會損失輸入數據的空間結構特征,而通過CNN算法進行處理時可避免這種損失。因此,基于CNN的識別算法是目前流行的圖像識別方法之一,并且其識別結果更加可靠。
手勢識別是人機交互系統發展的一個重要領域。常見的手勢識別方式很多,如:基于幾何特征的識別方法通過提取手勢的幾何特征信息進行識別,具有良好的穩定性,但其不能通過提升樣本量的同時進行識別率的提升[10];基于隱馬爾科夫模型的識別方法雖然具有描述手勢時空變化的能力,但是該方法的識別速度卻不盡如人意[11]。隨著卷積神經網絡在計算機視覺的迅速發展,卷積神經網絡在手勢識別上的應用有著突破進展,如:Takayoshi[12]在輸入卷積網絡之前討論了預處理過程和手勢識別過程的融合,實現了端到端手勢識別,并使得手勢識別率得到了提升;Barros等[13]創造性地使用立體聲卷積核進行手勢識別,獲得了更好的手勢識別識別率。雖然上述方法取得了良好的識別結果,但它們仍存在收斂速度慢、識別率低的問題。
為了進一步提高CNN的收斂速度,降低訓練難度,本文提出了一種AE-CNN算法。通過對CNN的特征提取和分類過程的研究,分析分類錯誤的原因,最終提出了一種基于AE-CNN的手勢識別算法。首先,通過神經網絡的識別和連續迭代對特征殘差進行特性提取;然后進行局部自適應增強;最后,特征參數通過隱層的反向反饋,進行有效地訓練。同時,為了解決樣本數量少的問題,本文提出了一種新的樣本擴增方法,即通過對原樣本進行平移、旋轉、縮放和波紋形變等處理,增加了樣本量。
在CNN前向過程中,特征提取操作實現了卷積和池化效果。假設有m個卷積層,第i個輸入特征為Mi,對應的卷積核為Ci。偏值為B1,激活函數為f,則卷積層的輸出特征Fc表示為:
(1)
式中:con表示卷積函數。
對卷積輸出特性進行池化操作,進一步減小維數;然后,通過對全連接層進行權值變換和激活,可獲得分類結果。全連接層的分類函數可表示為:
Fo=f(WT+B2)
(2)
式中:T是完全連接層的輸入特性;W是相應的權重;B2是偏差值。
分類誤差在CNN的反向過程中被傳播到隱層,實現了卷積核和全連接矩陣權值與偏置的更新。更新后的參數用于下一次迭代的前向過程,因此CNN的迭代更新提高了識別率。假設步長為η,在CNN隱層中,權值ω和偏差b由ω1、b1更新為ω2、b2,更新函數如下:
ω2=ω1-η▽ω
(3)
b2=b1-η▽b
(4)
AE-CNN結構如圖1所示。前向過程中包含了目標分類和提取特征。誤差的反向反饋包含在反向過程中。輸入數據經過前向處理后進行分類,獲得分類結果。每個結果對應一個唯一的分類。輸入數據真實屬于的類別稱為真值類別,真值類的對應值為1,另一個類的對應值為0。

圖1 AE-CNN的結構
在隱層中,目標誤差函數E(ω,b)用于度量每個參數對輸入數據的學習效果。為了使分類yi盡可能接近真值分類y′i,在CNN的前向與反向過程之間增加自適應增強模塊。在增強模塊中,對分類結果進行特征分析,然后通過調整增強系數對特征誤差進行自適應地調整。最后,通過反向過程將增強后的特征誤差反饋到隱層,達到降低目標錯誤函數輸出和提升下一次分類效果的目的。當相近的兩個誤差輸出不大于閾值時,則可以判斷收斂和學習任務均已實現。關于一個n的分類問題,它的目標錯誤函數表示如下:
(5)
式中:j表示分類個數;err是其分類誤差。根據梯度下降法,權值和偏值的梯度變化可表示為:
(6)
(7)
d=(yj-y′j)f′=errj·f′
(8)
式中:d是剩余值;x是輸入特性中的值;f′是激活函數f的導數。
基于AE-CNN手勢識別算法的步驟為:
1) 分類誤差的計算。分類結果通過CNN的前向處理得到,然后將分類真值與分類結果進行對比,可計算得出分類誤差。
2) 分類結果特征的提取。分析輸出層分類結果,將分類結果的兩個最大值設為特征值。
3) 計算增強系數。增強系數是由基于迭代的時間和前向的分類結果計算得到。若分類正確,則與分類特性對應的錯誤值將增加α1倍。相反,當分類錯誤時,其會增加α2倍。因此,自適應增強系數α可以表示為:
(9)
式中:k是乘積系數;g是當前迭代的時間;θ是修正系數;c是常數。根據不同的數據集,用式(9)計算α1和α2的值。
4) 自適應增強分類特征對應的誤差值。假設err是分類特性的錯誤值,s是大小寫正確分類中的標志。此時,增強函數err′s由下式計算得到:
err′s=αs·errs
(10)
5) 增強殘差的計算。增強殘差包括剩余誤差的殘差和特征誤差后的殘差,由式(8)表示。
6) 將增強后的殘余反饋給隱層。在隱層中,權值和偏差按式(6)和式(7)計算。
7) 更新模型。最后利用式(3)和式(4)中的函數更新隱層的權值和偏差。
在實驗部分,將從算法的收斂性能、識別率和訓練時間三個方面對本文算法進行驗證。
實驗采用了Jochen Triesch數據庫(JTD)。這個數據庫包含10個手勢,來自24個不同背景的人,一個亮的,一個暗的,在復雜背景前完成的。所有圖片的大小為128×128,并集中在手勢。JTD數據庫的示例如圖2所示。

圖2 實驗所用的的手勢示例
在樣本集上執行二進制處理和邊界刪除。最后,大小統一為28×28像素。CNN采用隨機梯度下降算法。在兩個卷積層中,卷積核的個數分別設為6和72。其他參數設置如表1所示。

表1 卷機神經網絡參數
實驗中使用的自適應增強系數為α1、α2,表達式如下:
(11)
(12)
(13)
(14)
式中:g是迭代時間;θ1、θ2是相應的修正函數。
深度學習訓練需要大量的樣本進行訓練,在樣本容量缺乏的情況下,通常需要人為地增加訓練樣本的數量。常用的增強方法有彈性變形、噪聲和仿射變換等。在不改動手勢結構關系的基礎上,提出了一種結合平移、旋轉和縮放的波形扭曲的方法,從而實現對訓練樣本量的擴充。
1) 收斂性能對比。原始CNN算法和本文算法的收斂曲線如圖3所示。結果表明,原始算法的收斂性指數和算法的收斂性均隨訓練頻率的增加而降低,并在第60次迭代中實現了收斂。因此通過對比收斂曲線可得知,本文算法在迭代過程中收斂速度快于原算法,并且收斂效果較好。

圖3 原始CNN算法和本文算法的收斂曲線
2) 識別率對比。將所提出的算法與深度神經網絡模型[14]中的多尺度梯度進行比較,得到的識別率如表2所示。文獻[14]中使用的特征分別為一般梯度特征、多尺度梯度特征、多尺度Gabor特征要點、梯度取向直方圖(HOG)以及局部二值模式(LBP)。分類器都是5層CNN。從表2中可以看出,與其他幾種方法相比,本文算法的識別率得到了提高。

表2 不同算法識別率對比
為了加強檢驗算法的魯棒性和穩定性,隨機選取20個字符作為一組樣本,執行4次,得到另外4組樣本。然后對另外4組樣本進行實驗。表3所示為識別率結果,可以看出,不同樣本集的識別結果是穩定的,因此提出的算法具備較強的魯棒性。

表3 多組樣本情況下的識別率
3) 訓練時間對比。對于5組樣本,分別計算原始CNN算法和本文提出算法的訓練時間。由表4可以看出,原來的CNN算法和本文提出的算法訓練時間幾乎是一樣的,其時間差異小到可以忽略不計。

表4 多組樣本情況下的訓練耗時
4) 樣本擴增實驗。為了驗證樣本擴增試驗的性能,對上述5組數據進行樣本擴增。該算法的平均識別率和平均訓練時間如表5所示。可以看出,樣本擴增已延長了一定的訓練時間,但它對識別率的貢獻更為重要。因此,樣本增強是深度學習模型訓練的必要步驟。

表5 樣本擴增實驗結果
通過對CNN訓練過程中誤差產生的原因及其反饋模型進行分析,提出了基于AE-CNN的手勢算法。實驗結果表明,本文算法收斂速度快、識別準確率高,并且沒有明顯增加識別過程的耗時性。另外,為處理樣本量缺乏的難題,本文提出了一種基于波形扭曲的樣本量擴增方法,進一步提高本文算法的識別率。