谷學(xué)靜 周自朋 郭宇承 李曉剛
1(華北理工大學(xué)電氣工程學(xué)院 河北 唐山 063210) 2(冶金工程虛擬仿真實驗教學(xué)中心 河北 唐山 063000) 3(河鋼集團唐鋼公司信息自動化部 河北 唐山 063000)
VR系統(tǒng)具有三個基本特性沉浸感(Immersion)、交互性(Interaction)和構(gòu)想性(Imagination),簡稱3I特性[1]。其中,人機交互是連接用戶和計算機虛擬世界的橋梁,探索簡便、自然的交互方式對提升VR系統(tǒng)的沉浸感與構(gòu)想性具有重要意義。
手勢識別是手勢交互的核心算法,動態(tài)手勢識別本質(zhì)上是關(guān)于手在三維空間中運動姿態(tài)時序數(shù)據(jù)的模式識別問題。國內(nèi)外對動態(tài)手勢意圖的識別研究較多,丁利瓊等[3]通過提取智能手機中的加速度數(shù)據(jù)采用DDTW算法進行手勢識別,可用于連續(xù)動態(tài)手勢識別。陳國良等[4]針對Leap Motion體感控制器無法識別復(fù)雜手勢問題,對四類特征進行HMM建模,識別復(fù)雜動態(tài)手勢。施向軍等[5]采用基于紅外傳感器的動態(tài)手勢識別方法,對于5種手勢平均識別率都達(dá)到了75%以上。李東潔等[6]提出BP神經(jīng)網(wǎng)絡(luò)和PSO結(jié)合的識別方法,可以縮短學(xué)習(xí)時間,提高識別過程的實時性和精確性。Fang等[7]采用CNN和DCGAN方法對手勢識別計算并對文本進行輸出。Wang等[8]采用毫米波雷達(dá)傳感器采集手部信息,利用LSTM網(wǎng)絡(luò)手勢識別,成功率達(dá)96.17%。劉佳慧等[9]研究了基于Wi-Fi的信道狀態(tài)信息的手勢識別,對4種手勢的平均識別率為82.75%。
近年來,深度學(xué)習(xí)在模式識別尤其是時間序列數(shù)據(jù)的分類問題上表現(xiàn)出無法比擬的優(yōu)勢與強悍[10-12]。基于長短期記憶網(wǎng)絡(luò)(Long Short Term Memory,LSTM)網(wǎng)絡(luò)能夠?qū)σ郧盃顟B(tài)的記憶優(yōu)勢以及多層卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)對特征提取的高效性,本文在模式識別大框架下,將CNN網(wǎng)絡(luò)與LSTM網(wǎng)絡(luò)結(jié)合對動態(tài)手勢進行識別,并且基于此開發(fā)了應(yīng)用于虛擬現(xiàn)實界面的動態(tài)手勢交互系統(tǒng)。
卷積神經(jīng)網(wǎng)絡(luò)起初用于對圖像的特征提取與物體識別,是一種由卷積層和池化層交替連接的多層神經(jīng)網(wǎng)絡(luò)[13]。卷積層是特征提取的過程,通過對輸入數(shù)據(jù)進行卷積運算提取出局部特征,降低了原始數(shù)據(jù)的維度。池化層是對特征的篩選過程,通過去掉部分特征進行數(shù)據(jù)降維。最后經(jīng)全連接網(wǎng)絡(luò)與分類輸出物體類型。實際上CNN的多個卷積核是對輸入數(shù)據(jù)在不同維度上的特征提取,通過多層抽象得到表征全局的特征。經(jīng)典LeNET5模型[14]如圖1所示。
圖1 典型LeNET-5框圖
LSTM是從循環(huán)神經(jīng)網(wǎng)絡(luò)發(fā)展而來,最大的優(yōu)勢在于解決了循環(huán)神經(jīng)網(wǎng)絡(luò)不能“記憶”先前狀態(tài)信息特征的問題[15]。LSTM通過引入門控制結(jié)構(gòu)來存儲先前狀態(tài)特征,有效解決了循環(huán)神經(jīng)網(wǎng)絡(luò)的梯度消失和梯度爆炸問題。
如圖2所示,LSTM網(wǎng)絡(luò)單元是通過串聯(lián)遺忘門、輸入門和輸出門實現(xiàn)[16]。遺忘門決定前一個神經(jīng)單元特征遺留的信息多少。輸入門將輸入數(shù)據(jù)xt經(jīng)過Sigmoid和tanh函數(shù)作用,組合后更新特征信息。輸出門的作用是更新輸出,控制當(dāng)前狀態(tài)有多少特征被濾除。
圖2 LSTM網(wǎng)絡(luò)單元
計算公式為:
遺忘門:ft=σ(Wf·[ht-1,xt]+bf)
輸入門:it=σ(Wi·[ht-1,xt]+bi)
輸出門:ot=σ(Wo·[ht-1,xt]+bo)
ht=ot×tanh(gt)
式中:σ表示Sigmoid函數(shù);Wf、Wi、Wg、Wo表示相應(yīng)的xt和ht-1相乘矩陣權(quán)重;bf、bi、bo表示相應(yīng)門的偏置值。
由于單一的神經(jīng)網(wǎng)絡(luò)往往在處理實際問題時有局限,很多學(xué)者嘗試將兩種算法結(jié)合在一起,以便利用各自的優(yōu)勢。CNN網(wǎng)絡(luò)適合特征提取,LSTM網(wǎng)絡(luò)適合處理時序數(shù)據(jù),而動態(tài)手勢識別任務(wù)就是將手在三維空間中的加速度、角速度、角度等時間序列進行分類識別,因此本文采用兩種算法結(jié)合的方法是合理的。
如圖3所示,本文設(shè)計的網(wǎng)絡(luò)整體上分為三部分。第一部分是由卷積層和池化層組成的輸入部分,第二部分是由LSTM單元組成的中間部分,第三部分是由全連接和Softmax分類組成的輸出部分。
圖3 CNN-LSTM網(wǎng)絡(luò)結(jié)構(gòu)
本文旨在研究一種用于虛擬現(xiàn)實界面交互的動態(tài)手勢識別方法,讓用戶可以通過做手勢來對虛擬場景進行控制。系統(tǒng)的整體框架如圖4所示。用戶采用動態(tài)手勢完成交互需要三個步驟:手勢數(shù)據(jù)提取、手勢識別和系統(tǒng)交互。具體為數(shù)據(jù)手套實時采集手的三維運動信息經(jīng)藍(lán)牙傳輸?shù)较到y(tǒng),在系統(tǒng)中經(jīng)數(shù)據(jù)處理后輸入到CNN-LSTM網(wǎng)絡(luò)模型進行識別運算。最后將識別結(jié)果即手勢編號發(fā)送到界面交互系統(tǒng),界面交互系統(tǒng)根據(jù)手勢編號的不同完成相應(yīng)的交互操作。
圖4 系統(tǒng)整體框圖
算法整體框架可以描述為三大步驟:1) 用戶穿戴好數(shù)據(jù)手套,對每一種手勢采集多組手部運動信息數(shù)據(jù),將這些原始數(shù)據(jù)進行數(shù)據(jù)處理構(gòu)建手勢樣本庫;2) 根據(jù)算法步驟對樣本數(shù)據(jù)庫提取特征,并訓(xùn)練CNN-LSTM模型,將模型參數(shù)保存到系統(tǒng);3) 根據(jù)用戶實時輸入的手勢數(shù)據(jù)分類識別出手勢編號,系統(tǒng)根據(jù)此編號作出反應(yīng),完成系統(tǒng)的界面交互任務(wù)。
手勢交互的前提是對手勢的預(yù)定義,簡潔明確的手勢預(yù)定義有助于提升人們的使用興趣和沉浸感。針對虛擬現(xiàn)實界面交互的任務(wù)設(shè)定了包括切換場景、確定取消等操作在內(nèi)的8種手勢,具體含義及說明見表1。
表1 手勢定義說明
續(xù)表1
數(shù)據(jù)準(zhǔn)備:動態(tài)手勢運動數(shù)據(jù)采用自制數(shù)據(jù)手套采集手在空間運動的三軸加速度(Acc)、三軸角速度(Speed)和三軸角度(Ang)數(shù)據(jù),數(shù)據(jù)傳輸速率為50 Hz,如圖5所示。10名志愿者對每種手勢采集10次,共收集800個樣本手勢數(shù)據(jù)。通過編寫程序以文本文件的形式將電腦從串口接收到的手勢數(shù)據(jù)保存在本機。
(a) 加速度數(shù)據(jù) (b) 角速度數(shù)據(jù)
(c) 速度數(shù)據(jù) (d) 角度數(shù)據(jù)圖5 原始數(shù)據(jù)圖
實驗軟件:本文實驗是在Windows 10系統(tǒng)下完成,硬件平臺為第八代英特爾i5處理器、8 GB運行內(nèi)存、1050Ti顯卡;程序在Python3.6環(huán)境運行,搭建了基于TensorFlow庫的CNN-LSTM模型;在Unity3D引擎下開發(fā)了連鑄三維仿真系統(tǒng)的界面交互系統(tǒng)。
對數(shù)據(jù)的處理分三個步驟:數(shù)據(jù)裁剪、歸一化和加入標(biāo)簽。首先是對樣本數(shù)據(jù)的規(guī)整操作即按照手勢樣本的數(shù)據(jù)格式將數(shù)據(jù)裁剪為每行45個數(shù)據(jù),9行(accx/accy/accz/speedx/speedy/speedz/angx/angy/angz)為一個手勢樣本。然后用min-max標(biāo)準(zhǔn)化公式將數(shù)據(jù)規(guī)整到[0,1],即:
式中:a表示樣本數(shù)據(jù)的值即待歸一化的值;a*表示歸一化后的值;amin表示一行數(shù)據(jù)的最小值;amax表示一行數(shù)據(jù)的最大值。最后將數(shù)據(jù)集加入標(biāo)簽,采用one-hot編碼格式在8種手勢數(shù)據(jù)的最后一列加入標(biāo)簽。
為了驗證模型的有效性,對數(shù)據(jù)集進行模型訓(xùn)練和測試,將數(shù)據(jù)集以3 ∶1的比例劃分出訓(xùn)練集和測試集。由于樣本的數(shù)量有限,在訓(xùn)練過程中采用k重交叉驗證方法保證模型對數(shù)據(jù)的充分學(xué)習(xí),實驗取k=5。為了確定LSTM的層數(shù),實驗通過對比LSTM網(wǎng)絡(luò)在2/3/4層的訓(xùn)練情況,發(fā)現(xiàn)在2層到3層的正確率提升為30%,而3層到4層的訓(xùn)練正確率提升為6%,為了節(jié)省計算開銷,模型選擇3層LSTM網(wǎng)絡(luò)。本文對比了單純使用CNN和LSTM網(wǎng)絡(luò)實驗,各個模型的具體的參數(shù)如表2所示,其中MP表示MaxPooling層,F(xiàn)C表示全連接層。
表2 各模型參數(shù)表
實驗采取特定人和非特定人兩組實驗,特定人指一個人對三個模型分別做出50個手勢,統(tǒng)計其正確率;非特定人是指讓5個人分別對3個模型做出10個手勢,統(tǒng)計其平均識別率。實驗結(jié)果如表3所示,可以看出無論是特定人還是非特定人,CNN-LSTM模型的平均識別率均高于另外兩個模型,且特定人的識別率均高于非特定人,但相差不大。
表3 不同模型識別正確率(%)
為了清楚表示CNN-LSTM模型對8種手勢識別的正確率,繪制了識別混淆矩陣如圖6所示??梢钥闯?,模型對所有手勢的識別正確率均達(dá)到了90%以上,其中對手勢3的識別率最高為97%,而手勢4和手勢5容易發(fā)生識別混淆,可能是由于兩個手勢前半部分比較相似。
圖6 8種手勢識別混淆矩陣
為了驗證模型的通用性,在原來8種手勢數(shù)據(jù)的基礎(chǔ)上增加了8種手勢(返回、前進、菜單、確認(rèn)、取消、切換變?yōu)榉聪蜻\動,上一層、下一層變?yōu)橄蛏舷蛳逻\動)進行測試,結(jié)果表明16種手勢的平均識別率為92.8%??傮w而言識別結(jié)果能夠說明模型的識別率高,抗干擾能力強,是一個可用模型。
本文將所建模型應(yīng)用于連鑄三維仿真系統(tǒng)中,由于動態(tài)手勢只能完成指令式交互,不能對大量內(nèi)容輸入,因此將手勢交互方法應(yīng)用于界面交互中。實驗步驟如下:
步驟1將電腦連接藍(lán)牙模塊設(shè)備并設(shè)置串口參數(shù)(波特率、奇偶校驗、數(shù)據(jù)長度、停止位等)。
步驟2將模型參數(shù)導(dǎo)入到Unity3D引擎腳本文件中。
步驟3關(guān)聯(lián)手勢編號和界面操作并修改界面回調(diào)函數(shù)。具體手勢與界面元素對應(yīng)見表1手勢意圖。
如圖7所示,在系統(tǒng)中共有4個場景,分別為大包開澆、結(jié)晶器振動、二次冷卻和火焰切割。上部分表示火焰切割場景調(diào)出菜單操作任務(wù),菜單表示對切割機的部分操作按鈕,對話框為切割機的停止操作。點火操作具體手勢對應(yīng)為:菜單-前進-確認(rèn)(默認(rèn)選中第一個元素)。退出操作手勢對應(yīng)為:返回-前進(默認(rèn)為返回)-確認(rèn)。下半部分表示在大包開澆場景的操作任務(wù),菜單表示連鑄工種的選擇,對話框表示退出系統(tǒng)步驟。
圖7 連鑄系統(tǒng)界面圖
為探索虛擬現(xiàn)實環(huán)境下新型人機交互方式,研究了基于動態(tài)手勢的交互方法,提出一種CNN和LSTM相結(jié)合的神經(jīng)網(wǎng)絡(luò)模型用于識別算法。通過數(shù)據(jù)手套采集了包括加速度在內(nèi)的九軸運動姿態(tài)數(shù)據(jù)集對模型訓(xùn)練和測試。實驗結(jié)果表明,對比單純使用CNN和LSTM神經(jīng)網(wǎng)絡(luò),所提模型不僅在識別率上優(yōu)勢明顯,抗干擾能力與不依賴個體能力也較強?;诖耍瑢⒃搫討B(tài)手勢識別方法應(yīng)用在了連鑄仿真系統(tǒng)的界面交互任務(wù)中,實現(xiàn)了動態(tài)手勢取代按鈕切換場景、確定、取消、上一個、下一個等常用界面操作,增加了VR系統(tǒng)的沉浸感與交互性。