惠 丹
(西安理工大學,陜西 西安 710048)
目前,隨著可穿戴設備的普及,越來越多的人開始使用例如智能手表等設備??纱┐髟O備主要使用觸摸屏作為交互手段(如智能手表),然而為了保證便攜性,可穿戴設備的觸摸屏很難提供足夠大的面積來實現(xiàn)各種交互,這樣的限制也導致用戶在使用觸摸屏時很容易出現(xiàn)誤觸或操作錯誤。因此如何提高可穿戴設備觸摸屏手勢識別的準確率成為了重要的研究方向。
本文以智能手表為例,提出一種基于深度學習算法卷積神經(jīng)網(wǎng)絡(CNN)分類模型的用戶手勢識別系統(tǒng)。該手勢識別系統(tǒng)利用智能手表上的加速度傳感器獲取用戶的手勢數(shù)據(jù),通過訓練CNN模型,使機器可以通過對比加速度傳感器在三個向量軸的數(shù)據(jù)差異以及數(shù)據(jù)的時間長短來實現(xiàn)對用戶手勢識別分類的目的。
如圖1所示,本系統(tǒng)由可穿戴設備(智能手表)、智能手機和PC端組成。設定10種手勢模式進行實驗,首先通過加速度傳感器采集參與實驗者在智能手表上的手勢交互數(shù)據(jù)(包括三個加速度軸的數(shù)據(jù)以及手勢的執(zhí)行時間),然后使用藍牙收集數(shù)據(jù)并傳輸?shù)街悄苁謾C上,利用已開發(fā)好的手機應用把手機采集到的數(shù)據(jù)樣本進行批處理,再把數(shù)據(jù)樣本通過WiFi共享到PC端,PC端把數(shù)據(jù)樣本集導入CNN神經(jīng)網(wǎng)絡識別手勢模型并最終返回識別結果[1]。
圖1 系統(tǒng)總體架構
當前大部分可穿戴設備中都裝備有加速度傳感器。本文選擇配備了三軸加速度傳感器和藍牙通信模塊的安卓智能手表作為實驗設備,三軸加速度傳感器用于收集x、y、z軸上加速度的數(shù)據(jù)值[2]。
在執(zhí)行數(shù)據(jù)收集時,用戶首先從已開發(fā)的安卓應用中的模式列表選擇手勢模型的類型,然后智能手表將采集到的傳感器數(shù)據(jù)通過藍牙模塊發(fā)送到智能手機。手機獲取所收集數(shù)據(jù)后,整理成數(shù)據(jù)集并發(fā)送到PC端,PC端顯示基于接收到的數(shù)據(jù)的手勢模型分類結果。本研究中由于智能手機的計算性能有限,無法使用移動設備來訓練機器學習模型,因此本文使用云計算平臺來實現(xiàn)。移動設備和PC端通過WiFi進行數(shù)據(jù)通信,PC端獲取手勢交互數(shù)據(jù)集后,利用CNN模型判斷手勢類型并發(fā)送結果。本研究使用TensorFlow進行實驗。
由于智能手表的觸摸屏面積有限,因此本文在二維平面上選擇9個點來確定手勢模型,這樣不僅符合用戶在使用智能手表的交互習慣[3],也能最大限度測試該系統(tǒng)在實際交互場景下的識別準確率。
本文選取10種手勢模型(如圖2所示)作為實驗手勢模型,選擇這10種手勢模型是因為它們符合用戶在使用智能手表時大部分的交互場景[4-5],并且這10組手勢模型中組和組之間有一定的相似性,這樣可以更好地測試系統(tǒng)的性能。
圖2 10種實驗手勢模型
實驗參與者在佩戴的智能手表上執(zhí)行給定的10組手勢。圖2中的9個參考點是為了方便參與者而提供的。實驗參與者按照自己的使用習慣去進行手勢操作(如姿勢、手型、動作等)。
(1)
這樣,Ax、Ay、Az就組成了智能手表收集的初始手勢樣本數(shù)據(jù)。通過實驗對比可以發(fā)現(xiàn),在測試不同的手勢模型時,加速度傳感器的運行時間以及所獲取的x、y、z軸上的加速度值是不同的。例如,在P1模式下加速度值有兩個數(shù)據(jù)波動,而在P9模式下加速度值有三個以上的數(shù)據(jù)波動,并且兩種手勢在執(zhí)行時間上的差異約為0.8 s。因此可以通過CNN模型訓練機器分析不同手勢模型的數(shù)據(jù),并最終實現(xiàn)手勢識別的目的[6]。
本文通過CNN神經(jīng)網(wǎng)絡實現(xiàn)對10種手勢模型的分類。為了使用CNN模型,需要對輸入數(shù)據(jù)大小進行修正。本研究在實驗中把獲取數(shù)據(jù)的時長固定為10 s,所收集的手勢以10 Hz頻率采樣,每個數(shù)據(jù)大小為100。因此,輸入數(shù)據(jù)的總大小為1×100×3,其中x、y和z軸各有100個數(shù)據(jù)。圖3顯示了CNN模型的設計結構。CNN模型一般由輸入層、隱藏層和輸出層組成,而本文設計的CNN模型分為輸入層、卷積層、池化層、全連通層和輸出層。輸入層根據(jù)輸入格式分類數(shù)據(jù);隱藏層由卷積層、池化層組成,卷積層計算連通區(qū)域與其自身加權值之間的卷積[7],池化層進行下采樣,對特征信息稀疏處理,減少數(shù)據(jù)運算量;在完全連接層中,所有節(jié)點都是相互連接的,每個節(jié)點的結果由權重矩陣做乘法并設定一個偏差值對數(shù)據(jù)重新擬合,減少特征信息的損失;在輸出層,通過Softmax分類器處理后的數(shù)據(jù)按概率返回分類結果。
圖3 CNN神經(jīng)網(wǎng)絡
本文設計的CNN模型的總體結構如圖3所示。其中Conv、Pool和Full分別是卷積層、池化層和完全連接層的縮寫,卷積層feature map的初始數(shù)值為9,每次增加2倍,池化層使用max pooling方法減少運算數(shù)據(jù)。為了避免過度擬合,該網(wǎng)絡共設有3個全連接層,其中dropout rate設置為0.5。本研究中使用了ReLU作為激活函數(shù),交叉熵作為成本函數(shù),ADAM作為優(yōu)化器。這樣做的目的是為了使整個CNN網(wǎng)絡在處理數(shù)據(jù)時保證特征信息的損失降到最低,并且訓練參數(shù)(如權值和偏差)可以實時更新,這樣可以提高運算效率并保證識別的準確性。
為了對模型的性能進行評價,本實驗共收集了3 000組實驗數(shù)據(jù)?;谶@個數(shù)據(jù)集,對提出的手勢識別系統(tǒng)進行訓練和測試。訓練和測試過程通過3次驗證以保證性能評估結果的可靠性,各手勢模型的數(shù)據(jù)樣本量均為300組。
本實驗使用準確率(Accurary)、精確率(Precision)、召回率(Recall)三個評估指標對該手勢模型識別系統(tǒng)進行性能評估。
上述公式中,True Positive(TP)表示將正類預測為正類數(shù);True Negative(TN)表示將負類預測為負類數(shù);False Positive(FP)表示將負類預測為正類數(shù);False Negative(FN)表示將正類預測為負類數(shù)。這三個評估指標是在深度學習性能評估中最常使用到的[8]。
通過實驗,該手勢模型識別系統(tǒng)性能的詳細評估結果如表1所示。
表1 系統(tǒng)性能評估結果
由實驗結果可以得出該手勢模型識別系統(tǒng)的三項性能指標都很高,均在97%以上,其中P1、P6、P9和P10都顯示出極高的識別準確率,達到99%以上。P7和P8的準確率在97%以上,而P3的準確率相對較低,為94.2%(如表2所示)。由于P2和P3、P5和P6具有相似的特征,因此,系統(tǒng)會出現(xiàn)誤判。此外,P1與P2,P3與P8,P4與P7、P9,P5與P6、P8等均有誤判的情況出現(xiàn),但是總體而言該系統(tǒng)的識別準確率是令人滿意的,并且誤判率可以通過增大訓練數(shù)據(jù)樣本量進行降低[9-10]。
表2 各手勢模型識別準確率
隨著可穿戴設備越來越多地被人們使用,用戶需要更加舒適便捷的人機交互,然而由于可穿戴設備尺寸和體積的限制,需要提高可穿戴設備的手勢識別率以提升交互體驗。因此,本文以智能手表為例提出基于深度學習算法的手勢識別系統(tǒng)。該系統(tǒng)對設定的10組手勢的識別準確率達到97.5%,并且準確率、精確率和召回率三項系統(tǒng)性能指標都達到了97%以上,而且隨著訓練樣本的數(shù)據(jù)量增大,該系統(tǒng)的準確率還可以繼續(xù)提高。該系統(tǒng)不僅可以提高可穿戴設備的手勢識別率,還可以用來識別用戶的個人生物信息,因此可以將該系統(tǒng)擴展到如數(shù)字簽名、個人安全或用戶標識等其他領域。