谷學靜 周自朋 郭宇承 李曉剛
1(華北理工大學電氣工程學院 河北 唐山 063210) 2(冶金工程虛擬仿真實驗教學中心 河北 唐山 063000) 3(河鋼集團唐鋼公司信息自動化部 河北 唐山 063000)
VR系統具有三個基本特性沉浸感(Immersion)、交互性(Interaction)和構想性(Imagination),簡稱3I特性[1]。其中,人機交互是連接用戶和計算機虛擬世界的橋梁,探索簡便、自然的交互方式對提升VR系統的沉浸感與構想性具有重要意義。
手勢識別是手勢交互的核心算法,動態手勢識別本質上是關于手在三維空間中運動姿態時序數據的模式識別問題。國內外對動態手勢意圖的識別研究較多,丁利瓊等[3]通過提取智能手機中的加速度數據采用DDTW算法進行手勢識別,可用于連續動態手勢識別。陳國良等[4]針對Leap Motion體感控制器無法識別復雜手勢問題,對四類特征進行HMM建模,識別復雜動態手勢。施向軍等[5]采用基于紅外傳感器的動態手勢識別方法,對于5種手勢平均識別率都達到了75%以上。李東潔等[6]提出BP神經網絡和PSO結合的識別方法,可以縮短學習時間,提高識別過程的實時性和精確性。Fang等[7]采用CNN和DCGAN方法對手勢識別計算并對文本進行輸出。Wang等[8]采用毫米波雷達傳感器采集手部信息,利用LSTM網絡手勢識別,成功率達96.17%。劉佳慧等[9]研究了基于Wi-Fi的信道狀態信息的手勢識別,對4種手勢的平均識別率為82.75%。
近年來,深度學習在模式識別尤其是時間序列數據的分類問題上表現出無法比擬的優勢與強悍[10-12]。基于長短期記憶網絡(Long Short Term Memory,LSTM)網絡能夠對以前狀態的記憶優勢以及多層卷積神經網絡(Convolutional Neural Network,CNN)對特征提取的高效性,本文在模式識別大框架下,將CNN網絡與LSTM網絡結合對動態手勢進行識別,并且基于此開發了應用于虛擬現實界面的動態手勢交互系統。
卷積神經網絡起初用于對圖像的特征提取與物體識別,是一種由卷積層和池化層交替連接的多層神經網絡[13]。卷積層是特征提取的過程,通過對輸入數據進行卷積運算提取出局部特征,降低了原始數據的維度。池化層是對特征的篩選過程,通過去掉部分特征進行數據降維。最后經全連接網絡與分類輸出物體類型。實際上CNN的多個卷積核是對輸入數據在不同維度上的特征提取,通過多層抽象得到表征全局的特征。經典LeNET5模型[14]如圖1所示。

圖1 典型LeNET-5框圖
LSTM是從循環神經網絡發展而來,最大的優勢在于解決了循環神經網絡不能“記憶”先前狀態信息特征的問題[15]。LSTM通過引入門控制結構來存儲先前狀態特征,有效解決了循環神經網絡的梯度消失和梯度爆炸問題。
如圖2所示,LSTM網絡單元是通過串聯遺忘門、輸入門和輸出門實現[16]。遺忘門決定前一個神經單元特征遺留的信息多少。輸入門將輸入數據xt經過Sigmoid和tanh函數作用,組合后更新特征信息。輸出門的作用是更新輸出,控制當前狀態有多少特征被濾除。

圖2 LSTM網絡單元
計算公式為:
遺忘門:ft=σ(Wf·[ht-1,xt]+bf)
輸入門:it=σ(Wi·[ht-1,xt]+bi)
輸出門:ot=σ(Wo·[ht-1,xt]+bo)
ht=ot×tanh(gt)
式中:σ表示Sigmoid函數;Wf、Wi、Wg、Wo表示相應的xt和ht-1相乘矩陣權重;bf、bi、bo表示相應門的偏置值。
由于單一的神經網絡往往在處理實際問題時有局限,很多學者嘗試將兩種算法結合在一起,以便利用各自的優勢。CNN網絡適合特征提取,LSTM網絡適合處理時序數據,而動態手勢識別任務就是將手在三維空間中的加速度、角速度、角度等時間序列進行分類識別,因此本文采用兩種算法結合的方法是合理的。
如圖3所示,本文設計的網絡整體上分為三部分。第一部分是由卷積層和池化層組成的輸入部分,第二部分是由LSTM單元組成的中間部分,第三部分是由全連接和Softmax分類組成的輸出部分。

圖3 CNN-LSTM網絡結構
本文旨在研究一種用于虛擬現實界面交互的動態手勢識別方法,讓用戶可以通過做手勢來對虛擬場景進行控制。系統的整體框架如圖4所示。用戶采用動態手勢完成交互需要三個步驟:手勢數據提取、手勢識別和系統交互。具體為數據手套實時采集手的三維運動信息經藍牙傳輸到系統,在系統中經數據處理后輸入到CNN-LSTM網絡模型進行識別運算。最后將識別結果即手勢編號發送到界面交互系統,界面交互系統根據手勢編號的不同完成相應的交互操作。

圖4 系統整體框圖
算法整體框架可以描述為三大步驟:1) 用戶穿戴好數據手套,對每一種手勢采集多組手部運動信息數據,將這些原始數據進行數據處理構建手勢樣本庫;2) 根據算法步驟對樣本數據庫提取特征,并訓練CNN-LSTM模型,將模型參數保存到系統;3) 根據用戶實時輸入的手勢數據分類識別出手勢編號,系統根據此編號作出反應,完成系統的界面交互任務。
手勢交互的前提是對手勢的預定義,簡潔明確的手勢預定義有助于提升人們的使用興趣和沉浸感。針對虛擬現實界面交互的任務設定了包括切換場景、確定取消等操作在內的8種手勢,具體含義及說明見表1。

表1 手勢定義說明

續表1
數據準備:動態手勢運動數據采用自制數據手套采集手在空間運動的三軸加速度(Acc)、三軸角速度(Speed)和三軸角度(Ang)數據,數據傳輸速率為50 Hz,如圖5所示。10名志愿者對每種手勢采集10次,共收集800個樣本手勢數據。通過編寫程序以文本文件的形式將電腦從串口接收到的手勢數據保存在本機。

(a) 加速度數據 (b) 角速度數據

(c) 速度數據 (d) 角度數據圖5 原始數據圖
實驗軟件:本文實驗是在Windows 10系統下完成,硬件平臺為第八代英特爾i5處理器、8 GB運行內存、1050Ti顯卡;程序在Python3.6環境運行,搭建了基于TensorFlow庫的CNN-LSTM模型;在Unity3D引擎下開發了連鑄三維仿真系統的界面交互系統。
對數據的處理分三個步驟:數據裁剪、歸一化和加入標簽。首先是對樣本數據的規整操作即按照手勢樣本的數據格式將數據裁剪為每行45個數據,9行(accx/accy/accz/speedx/speedy/speedz/angx/angy/angz)為一個手勢樣本。然后用min-max標準化公式將數據規整到[0,1],即:
式中:a表示樣本數據的值即待歸一化的值;a*表示歸一化后的值;amin表示一行數據的最小值;amax表示一行數據的最大值。最后將數據集加入標簽,采用one-hot編碼格式在8種手勢數據的最后一列加入標簽。
為了驗證模型的有效性,對數據集進行模型訓練和測試,將數據集以3 ∶1的比例劃分出訓練集和測試集。由于樣本的數量有限,在訓練過程中采用k重交叉驗證方法保證模型對數據的充分學習,實驗取k=5。為了確定LSTM的層數,實驗通過對比LSTM網絡在2/3/4層的訓練情況,發現在2層到3層的正確率提升為30%,而3層到4層的訓練正確率提升為6%,為了節省計算開銷,模型選擇3層LSTM網絡。本文對比了單純使用CNN和LSTM網絡實驗,各個模型的具體的參數如表2所示,其中MP表示MaxPooling層,FC表示全連接層。

表2 各模型參數表
實驗采取特定人和非特定人兩組實驗,特定人指一個人對三個模型分別做出50個手勢,統計其正確率;非特定人是指讓5個人分別對3個模型做出10個手勢,統計其平均識別率。實驗結果如表3所示,可以看出無論是特定人還是非特定人,CNN-LSTM模型的平均識別率均高于另外兩個模型,且特定人的識別率均高于非特定人,但相差不大。

表3 不同模型識別正確率(%)
為了清楚表示CNN-LSTM模型對8種手勢識別的正確率,繪制了識別混淆矩陣如圖6所示。可以看出,模型對所有手勢的識別正確率均達到了90%以上,其中對手勢3的識別率最高為97%,而手勢4和手勢5容易發生識別混淆,可能是由于兩個手勢前半部分比較相似。

圖6 8種手勢識別混淆矩陣
為了驗證模型的通用性,在原來8種手勢數據的基礎上增加了8種手勢(返回、前進、菜單、確認、取消、切換變為反向運動,上一層、下一層變為向上向下運動)進行測試,結果表明16種手勢的平均識別率為92.8%??傮w而言識別結果能夠說明模型的識別率高,抗干擾能力強,是一個可用模型。
本文將所建模型應用于連鑄三維仿真系統中,由于動態手勢只能完成指令式交互,不能對大量內容輸入,因此將手勢交互方法應用于界面交互中。實驗步驟如下:
步驟1將電腦連接藍牙模塊設備并設置串口參數(波特率、奇偶校驗、數據長度、停止位等)。
步驟2將模型參數導入到Unity3D引擎腳本文件中。
步驟3關聯手勢編號和界面操作并修改界面回調函數。具體手勢與界面元素對應見表1手勢意圖。
如圖7所示,在系統中共有4個場景,分別為大包開澆、結晶器振動、二次冷卻和火焰切割。上部分表示火焰切割場景調出菜單操作任務,菜單表示對切割機的部分操作按鈕,對話框為切割機的停止操作。點火操作具體手勢對應為:菜單-前進-確認(默認選中第一個元素)。退出操作手勢對應為:返回-前進(默認為返回)-確認。下半部分表示在大包開澆場景的操作任務,菜單表示連鑄工種的選擇,對話框表示退出系統步驟。

圖7 連鑄系統界面圖
為探索虛擬現實環境下新型人機交互方式,研究了基于動態手勢的交互方法,提出一種CNN和LSTM相結合的神經網絡模型用于識別算法。通過數據手套采集了包括加速度在內的九軸運動姿態數據集對模型訓練和測試。實驗結果表明,對比單純使用CNN和LSTM神經網絡,所提模型不僅在識別率上優勢明顯,抗干擾能力與不依賴個體能力也較強。基于此,將該動態手勢識別方法應用在了連鑄仿真系統的界面交互任務中,實現了動態手勢取代按鈕切換場景、確定、取消、上一個、下一個等常用界面操作,增加了VR系統的沉浸感與交互性。