?

基于深度學習的連續手語語句識別算法

2021-01-19 02:24黃元元胡作進
計算機技術與發展 2021年1期
關鍵詞:手型語詞手語

李 晨,黃元元,胡作進

(1.南京航空航天大學 計算機科學與技術學院,江蘇 南京 211106; 2.南京特殊教育師范學院 數學與信息科學學院,江蘇 南京 210038)

0 引 言

在當今的人機交互技術中,手勢是輸入信息的一種媒介。作為特殊的手勢類別,手語是聾啞人的重要交際工具。因此,研究手語識別不僅可以促進人機交互技術的發展,還可以促進聾啞人和健全人之間的交流。

1 相關工作

連續手語語句是由手語詞和連接手語詞的過渡動作組成[1]。由于手語動作的連貫性,從手語語句中分割出手語詞變得極其困難,因此如何準確地檢測手語詞邊界是連續手語語句識別的最大挑戰。

在國內,張繼海等[2]將手語語句進行首輪粗分割后得到的多個片段送入手語詞的隱馬爾可夫模型(hidden Markov model,HMM)中,并借助閾值矩陣和動態時間規整算法(dynamic time warping, DTW)確定出可能的候選詞及它們的結束幀,再根據比率閾值進一步確定本輪粗分割的最優候選詞,并以其結束幀的下一幀為起點,繼續進行下一輪的粗分割……最后將得到的多個最優候選詞按照先后順序串聯起來,即可獲得語句的識別結果。該算法在包含34個詞匯的手語語句庫中取得77.8%的識別率,但由于它在確定候選詞的結束幀時采用逐幀遍歷的方法,因此運行效率較低。楊文文等[3]采用基于HMM的逐層構筑算法,同時輔以手語詞幀長的約束和n元語法模型,最終在由21個詞匯組成的20個手語語句上取得12.2%的錯誤率。然而該算法中語句的平均識別時間超過8秒,顯然無法實現手語語句的實時識別。徐鑫鑫等[4]根據點密度提取手語的關鍵幀序列,然后利用若干連續關鍵幀的權值之和對關鍵幀序列進行分割和識別,從而獲得手語語句的識別結果。該算法的運行效率較高,但如果大權值的關鍵幀出現漏檢或者誤識,將無法識別出正確的手語詞邊界。

在國外,Yang等[5]利用基于條件隨機場(conditional random field,CRF)的閾值模型判斷語句中各幀是手語詞還是過渡動作,然后利用CRF對分割后的手語詞進行識別,最終在由48個詞匯組成的美國手語語句庫中取得87%的識別率。由于非特定人群手語數據的差異性較大,所以閾值模型在實際應用時手語詞邊界的檢測效果并不理想。Cui等[6]通過卷積神經網絡(convolutional neural networks,CNN)提取每幀圖像的空間特征,再通過疊加的時間卷積層和時間池化層提取各手語片段的空間-時間特征,并將其送入雙向的長短期記憶網絡(long short-term memory,LSTM)中建模,最后采用連接時序分類(connectionist temporal classification,CTC)算法作為整個架構的目標函數。在2012年的德國天氣預報手語庫中,該算法的錯誤率為38.7%。由于手語片段的類別概率分布大多較分散,所以采用波束搜索法進行CTC解碼時,可能剔除部分片段的正確類別,進而影響手語詞邊界的準確性。Koller等[7]先利用CNN計算出每幀圖像的隱狀態類別概率分布向量,再通過Viterbi算法、一階隱馬爾可夫過程及n元語法模型求解手語語句的最優詞匯序列,最終在2012年的德國天氣預報手語庫上取得32%的錯誤率。由于該算法在尋找手語詞邊界時需要對三個超參數進行網格搜索,因此算法的時間損耗較高。

目前,大多數的手語詞邊界檢測算法對非特定人群沒有很好的魯棒性,這在一定程度上影響了手語語句的識別效果。

2 算法步驟

該文利用軌跡歸一化算法提取手語詞的軌跡特征,同時利用卷積神經網絡提取手語詞的手型特征,并在此基礎上訓練基于長短期記憶網絡的手語詞分類器。對于一個待識別的手語語句,該文采用基于軌跡信息的分割算法檢測過渡動作。由過渡動作將語句分割為多個片段后,考慮到過渡動作可能是手語詞內部的動作,所以將若干片段拼接成復合段,并對所有復合段運用手語詞識別算法進行分類,然后跨段搜索出目標詞匯序列,從而完成手語語句的識別。

2.1 手語數據的獲取

該文借助Kinect獲取手語者的手心位置和深度圖像,并在此基礎上獲得手語數據。

2.1.1 手型圖像的獲取

該文將深度圖像和手心位置相結合,從而實現手型圖像的快速提取[8]。圖1為手型圖像的提取效果。

圖1 手型圖像的提取效果

由于獲取的手型圖像比較粗糙,為了更精確地描述手語動作,在手型圖像的基礎上,引入了軌跡數據。

2.1.2 軌跡數據的獲取

將手語持續時間內、經卡爾曼濾波校正后的手心位置按照先后順序連接起來,即可獲得手心的軌跡。為了進一步地去除噪聲,該文對左、右手心軌跡分別應用長度為3的均值濾波進行平滑。平滑后的左、右手心軌跡構成了軌跡數據。

2.2 手語詞識別算法

該文錄制了47個常用的手語詞。在獲得這些手語詞樣本的軌跡特征和手型特征的基礎上,開展手語詞分類器的訓練。

2.2.1 軌跡特征的提取

為了消除手心軌跡的尺度差異、采樣點數差異和起始點差異,提出了一種軌跡歸一化算法。

假設有一個持續時間為n幀的手語詞樣本,它的左手心軌跡P={p1,p2,…,pn},其中pi(1≤i≤n)表示第i幀左手心的位置。軌跡P的歸一化過程如下:

(1)創建一個長度為50的時間序列Q來存儲歸一化后的軌跡。

(2)計算軌跡P的尺度縮放因子αs和采樣點數縮放因子αn:

αs=1/‖(Neckx,Necky,Neckz)-(SpineMidx,SpineMidy,SpineMidz)‖

(1)

(2)

其中,(Neckx,Necky,Neckz)、(SpineMidx,SpineMidy,SpineMidz)分別表示脖子和脊柱中心的位置。將軌跡P各采樣點的手心位置乘上αs可以實現尺度歸一化;將軌跡P各采樣點的序號乘上αn可以指導采樣點數歸一化操作。

(3)計算軌跡P的第i(1≤i≤n)個采樣點歸一化后的下標j:

j=「n*αn」

(3)

其中,「x」表示對x進行四舍五入取整。如果在歸一化的軌跡Q中qj未被賦值,則將軌跡P的起始點p1與原點對齊,并將pi尺度歸一化后的值賦給qj:

qj=αs*(pi-p1)

(4)

如果qj已被賦值,則將軌跡P的起始點p1與原點對齊,并把尺度歸一化后的pi和qj的均值賦給qj:

(5)

(4)遍歷軌跡Q,對所有未賦值的qi,采用線性插值法補充數據:

qi=(qi-1+qi+1)/2

(6)

(5)返回歸一化的軌跡Q。

對左、右手心軌跡分別進行歸一化后,該文使用歸一化的左、右手心軌跡共同描述手語的軌跡特征。

2.2.2 手型特征的提取

對MobileNetV2[9]稍加修改后,搭建出如表1所示的卷積神經網絡。

這里的conv2d表示標準卷積層,avgPool表示全局池化層。由表1可以看出,該網絡由3個標準卷積層、9個bottleneck模塊和1個全局池化層組成。該網絡的輸入為224×224×1的手型圖像,經過網絡各層的作用后,最后輸出61維的手型類別概率分布向量。

當完成卷積神經網絡的訓練后,移除網絡的最后一個標準卷積層,剩余的網絡架構可以用作手型特征提取器。因此,輸入一張手型圖像,該網絡可以提取出160維的手型特征;輸入一個手語詞樣本,該網絡可以提取出它的手型特征序列,將該序列歸一化到50個采樣點,即可獲得它的手型特征。

表1 卷積神經網絡的參數信息

2.2.3 基于長短期記憶網絡的手語詞分類器

手型特征和軌跡特征共同組成手語詞的特征??紤]到手語詞的特征是時間序列數據,而長短期記憶網絡(LSTM)善于學習時序數據中的關聯信息,于是搭建出如表2所示的長短期記憶網絡。

表2 長短期記憶網絡的參數信息

該網絡包含一個雙向LSTM層、一個Flatten層以及三個全連接層。網絡的輸入為手語詞的特征,即一個長度為50的時間序列,序列中的每個元素為166維的向量,經過網絡各層的作用后,最終輸出47維的詞匯類別概率分布向量。其中雙向LSTM層用于捕捉每個采樣點的上下文信息;而Flatten層是把50個采樣點的隱狀態拼接起來,進而獲取整個序列的上下文信息。至于三個全連接層的功能則有點不同,前兩個全連接層的作用是實現特征的學習和降維,最后一個全連接層則主要負責分類計算。

2.3 連續手語語句識別算法

對于一個待識別的手語語句,該文先采用分割算法檢測過渡動作,然后采用基于過渡動作的手語語句識別算法獲取語句的識別結果。

2.3.1 手語語句的分割

鑒于過渡動作的速度相對較快,且方向的偏轉角度較小,因此提出了一種基于右手(主導手)軌跡信息的手語語句分割算法,它的詳細步驟如下:

(1)初步確定過渡動作。

在圖2中,pi-1、pi和pi+1為三個相鄰采樣點上右手心的位置。第i個采樣點的右手心速度vi可以定義為pi和pi+1之間的距離,即:

vi=‖pi+1-pi‖

(7)

圖2 三個時間上相鄰的采樣點

圖2中的θi表示第i個采樣點上的方向角,它刻畫了右手心在時刻i的方向偏轉情況,即:

(8)

其中,u1=pi-pi-1,u2=pi+1-pi。針對右手心的速度,設定閾值ρv=(2*avg(v))/3;針對右手心的方向角,設定閾值ρθ=20。其中avg(v)表示所有右手心采樣點的速度的均值。當vi≥ρv且θi≤ρθ時,采樣點i是過渡幀。因為過渡動作不止一幀,所以該文將距離三幀以內的過渡幀合并到同一個過渡動作中。由該方法確定出的第一個過渡動作位于起始手勢和第一個手語詞之間,而最后一個過渡動作位于最后一個手語詞和終止手勢之間,它們均不屬于過渡動作,因為它們不是相鄰手語詞之間的連接動作,該文先剔除最后一個過渡動作,至于第一個過渡動作則暫且保留。

(2)剔除錯誤的過渡動作。

非特定人群在比劃具有語義的關鍵手勢時會降低動作的速度,在軌跡上的表現就是這些手勢對應的點密度較大。通過對手語語句樣本的觀察,發現所有手語詞的關鍵手勢的右手心點密度均≥5。而過渡動作位于前一手語詞的尾個關鍵手勢和后一手語詞的首個關鍵手勢之間,所以該文根據右手心的點密度進一步剔除錯誤的過渡動作。

假設由步驟(1)獲得過渡動作序列T={t1,t2,…,tm},其中m表示過渡動作數量。初始化i=1,接下來采用迭代算法剔除錯誤的過渡動作:

①若i≥m,考慮到t1不是過渡動作,所以將t1從序列T中剔除,并得到最終的過渡動作序列,否則進入步驟②;

②若ti的終止幀到ti+1的起始幀之間的區間不存在右手心點密度≥5的采樣點,則剔除ti+1,并更新序列T和數量m,然后重復該步驟;否則保留ti+1,并令i=i+1,跳轉至步驟①繼續判斷后續的過渡動作。

2.3.2 基于過渡動作的手語語句識別算法

假設對一個手語語句運用上述分割算法檢測到T-1個過渡動作,由這些過渡動作可以將手語語句分割為T個片段。因為檢測出的詞間過渡動作包含下一手語詞的部分信息,所以對于任意相鄰過渡動作間的手語片段而言,為了盡可能地保留手語詞的特征,該文將前個過渡動作的中位點幀設為起始幀,同時為了盡可能地剔除手語詞的上下文信息,將后個過渡動作前右手心點密度大于3的幀設為終止幀。

考慮到檢測出的過渡動作可能是手語詞內部的動作,所以該文將若干個片段拼接在一起形成復合段。因為語句樣本中的詞匯平均大約包含1.7個手語片段,所以根據片段數T粗略預估語句中的手語詞數量N。

N=「T/1.7」

(9)

其中,「x」表示對x進行四舍五入取整。由于語句樣本中的手語詞至多包含5個片段,為了避免過度的片段拼接給后續識別帶來干擾,由式(10)預估手語詞的最大片段數β。

β=min(5,「T-(N-1)×1.3」)

(10)

為了進行手語語句的識別,該文需要在線創建類別標簽矩陣C和分類概率矩陣S,并將它們的元素初始化為0。對于以片段t的起始幀開始、以片段t'的終止幀結束的復合段,Ct,t',q保存該復合段的候選手語詞的類別標簽,St,t',q則保存該復合段是手語詞Ct,t',q的概率,其中1≤t≤T,t≤t'≤min(t+β-1,T),1≤q≤5。后續的手語語句識別過程如下:

(1)復合段的分類。

首先初始化當前層各復合段的起始幀為片段1的起始幀,并令t=1,接下來開始復合段的分類工作。

①依次截取以片段t的開始幀為起點,以片段t'(t≤t'≤min(t+β-1,T))的結束幀為終點的復合段,并對這些復合段運用手語詞識別算法進行分類。如果這些復合段存在概率值≥0.2的類別,則把對應的類別和概率分別存入類別矩陣C和概率矩陣S中;

②令t=t+1,跳轉至步驟①,繼續對下一層的復合段進行分類。

(2)目標詞匯序列的跨段搜索。

定義δ(t,t',q)表示以片段t的起始幀開始、以片段t'的終止幀結束的復合段是手語詞Ct,t',q的累積概率,其中1≤t≤T,t≤t'≤min(t+β-1,T),1≤q≤5。令表示δ(t,t',q)的參數元組,所有合法的組成了元組的集合L。為了方便回溯出搜索路徑,令φ(t,t',q)保存δ(t,t',q)前個節點的參數元組。同時為了避免識別出過長的詞匯序列,定義η(t,t',q)表示搜索到δ(t,t',q)為止,路徑上已有詞匯的數量。

目標詞匯序列的跨段搜索算法如下:

①初始化。

(11)

φ(1,t',q)=NULL

(12)

(13)

②遞歸。

δ(t,t',q)=

(14)

(15)

(16)

其中,L'表示滿足P(Ct,t',q|Ct'',t-1,q')≠0且η(t'',t-1,q')的集合,這里的P(Ct,t',q|Ct'',t-1,q')表示詞匯Ct'',t-1,q'到詞匯Ct,t',q的轉移概率,它可以通過統計語料庫中Ct'',t-1,q'的下一個詞匯是Ct,t',q的概率來確定取值。

③終止。

(17)

(18)

④路徑回溯。

3 實驗結果與分析

為了驗證手語詞識別算法的有效性,邀請6名手語者參與47類手語詞的樣本錄制。此外,以這47個詞組成的30條手語語句作為樣本進行語句識別實驗。共有6名手語者參與語句樣本的錄制,其中2名是熟練手語者,2名是次熟練手語者,還有2名是不熟練手語者。需注意,參與詞匯樣本采集的手語者和參與語句樣本采集的手語者不重疊。

3.1 卷積神經網絡的訓練

針對錄制的47類手語詞的樣本,該文使用關鍵動作提取算法提取關鍵手型[10],然后采用K均值算法對關鍵手型進行聚類[11],其中K設為60,由此可以獲得60類關鍵手型的樣本。由于手語動作中還存在關鍵手型之間的過渡手型,所以還需為過渡手型類選取樣本。鑒于手型樣本數有限,該文采用平移、旋轉及縮放變換來擴充樣本集。最終每一類手型均有240個樣本作為訓練集,60個樣本作為測試集。

在交叉熵損失函數[12]的基礎上,使用隨機梯度下降法優化卷積神經網絡。設置初始學習率為0.001,最大迭代次數為800。學習率的變化公式如下:

(19)

其中,i為迭代次數,decay=1.0×10-2。為了防止網絡出現過擬合,該文對除最后一個標準卷積層外的其他卷積層都進行了批量歸一化(batch normalization,BN)處理。其中訓練集的batchSize設為50,測試集則無需劃分batch,把所有的測試樣本一次性送入網絡進行識別。采用Keras框架訓練該網絡,最終訓練出的網絡模型在測試集上的精度為94.58%。

3.2 長短期記憶網絡的訓練

該文在每個手語詞樣本的基礎上造了2個樣本,它們分別保留了原始樣本前14/15和后14/15的采樣點。最終每一類手語詞的樣本總數增加至162,該文隨機選取其中的129個樣本用作訓練集,其余的33個樣本則用于測試。

采用交叉熵損失函數測量長短期記憶網絡的分類誤差。設置學習率的初始值為0.001,最大迭代次數為500。學習率的變化公式如下:

lri=lr0*gamma∧(floor(i/stepsize))

(20)

其中,i表示迭代次數,gamma=0.1,stepsize=200。為了防止網絡出現過擬合,該文對雙向LSTM層和fc2都進行了BN處理,其中訓練集的batchSize設為30,測試集無需劃分batch。在GPU上訓練該模型,最終訓練出的模型在測試集上的精度達98.55%。

考慮到語句中的手語詞和孤立手語詞的差異較大,所以需要人工標注語句中的詞匯,并將其送入長短期記憶網絡中訓練[13-14]。該文對熟練、次熟練及不熟練的3名手語者的語句樣本中的手語詞進行標注。每條語句有這3名手語者的27個樣本,其中的21個樣本用于網絡的再訓練,剩余的6個樣本用于再測試。由于語句中手語詞的樣本數有限,該文采用窗口規整方法[15]造樣本。最終每類手語詞用于再訓練和再測試的樣本數分別為84、24。對長短期記憶網絡再訓練500次后,網絡在測試集上的精度為95.32%。

3.3 連續手語語句的識別

為了驗證手語語句識別算法的有效性,與文獻[4]以及文獻[13]中的算法進行對比。對熟練程度不一的6名手語者的語句樣本進行識別。其中手語者一和手語者二能夠熟練地表達手語,手語者三和手語者四能夠較熟練地表達手語,手語者五和手語者六則無法熟練地表達手語。且手語者一、手語者三和手語者五的部分語句樣本參與了長短期記憶網絡的訓練。運用各算法對上述手語者的語句樣本進行分類后,得到的識別準確率和平均識別時間如表3所示。

表3 算法效果對比

(1)文獻[4]是基于加權關鍵幀實現手語語句的識別。該算法的執行效率較高,但是它依賴于大權值的關鍵幀。對于非熟練的手語者,可能由于動作不夠規范導致大權值關鍵幀的錯識概率增高,從而極大地影響語句的識別效果,因此該算法的穩定性較差。

(2)文獻[13]采用連接時序分類算法實現手語語句的識別。雖然該算法的運行效率高,但它的識別精度較低,這是因為它需要將手語語句劃分成多個等長的片段,而大多數片段的類別概率分布比較分散,所以利用波束搜索法進行解碼時,手語片段的真實標簽可能被剔除,從而極大地影響了語句的識別效果。

(3)相比較來說,文中算法面向非特定人群的穩定性較高,能夠實現手語語句的實時識別。

4 結束語

針對當前手語語句識別算法中存在的問題,提出了一種基于深度學習的手語語句識別算法。它充分利用了卷積神經網絡的特征提取能力和長短期記憶網絡的時序建模能力,并借助分割算法檢測出的過渡動作,將手語語句的識別轉化為復合段的分類和目標詞匯序列的跨段搜索,降低了手語語句識別的復雜性。實驗證明,該算法具有良好的穩定性及實時性。

猜你喜歡
手型語詞手語
淺談鋼琴演奏中的手型問題
鋼琴手型的重要性
發光的語詞(三則)
你是那樣美 唐心語詞
無聲的世界里,怎樣唱一首歌?
一首詩開始的時候
奇怪的手語圖
教琴
淺談少兒鋼琴教育中的幾點問題
語詞的有效教學
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合