孫延鵬,艾 俊,屈樂樂
(沈陽航空航天大學(xué) 電子信息工程學(xué)院,沈陽 110136)
手勢識別已經(jīng)是人機交互的熱點領(lǐng)域[1-3]。該技術(shù)利用傳感器捕獲手勢動作,并對其進行實時的識別,已廣泛應(yīng)用在智能家居[1]、手語翻譯[2]以及游戲交互[3]等領(lǐng)域。傳統(tǒng)獲取手勢動作信號的設(shè)備主要為光學(xué)傳感器[4-5],與該種捕獲方式相比,雷達傳感器可以不受光照、煙霧等外部環(huán)境的干擾。
近幾年來,基于雷達的手勢識別方法引起了很多關(guān)注[6-12]。文獻[6]采用主成分分析法(Principal Component Analysis,PCA)來識別手勢動作,分類結(jié)果表明了基于雷達的手勢識別在智能家居領(lǐng)域中有良好的潛力。文獻[7]將多種傳感器的數(shù)據(jù)進行融合,采用異源圖像配準和三維卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)相結(jié)合的方法對汽車駕駛中的典型手勢進行識別。文獻[8]通過深度卷積神經(jīng)網(wǎng)絡(luò)(Deep Convolutional Neural Network,DCNN)提取微多普勒特征,并對其進行分類,實驗結(jié)果顯示7種手勢動作的識別精度為93.1%。文獻[9]使用60 GHz的專用毫米波雷達芯片收集手勢動作,并從中提取低維特征向量,通過隨機森林分類器對多種手勢動作進行識別。文獻[10]先提取手勢動作的多維參數(shù)并將其融合,進而通過CNN進行手勢識別。文獻[11]采用雙流融合神經(jīng)網(wǎng)絡(luò)(Two-Stream Fusion Neural Network,TS-FNN)識別10種生活中常見的手勢動作。文獻[12]分別提取手勢動作的距離-多普勒-時間圖特征、距離-時間特征、多普勒-時間特征、水平方向角度-時間圖特征,并通過輕量化的CNN對手勢動作進行分類。
目前,通過光學(xué)傳感器進行手勢識別對外部環(huán)境依賴較大。針對該問題,本文提出了一種基于連續(xù)波雷達的手勢識別方法。同時,基于雷達的手勢識別方法大多采用神經(jīng)網(wǎng)絡(luò)進行特征提取和分類判決,這樣會增加算法的計算復(fù)雜度和模型的訓(xùn)練時間。針對此問題,本文選取手勢動作的時頻譜中的方向梯度信息作為特征,并通過支持向量機(Support Vector Machine,SVM)進行分類。具體做法如下:第一步,采用K頻段雷達收集手勢動作的回波數(shù)據(jù);第二步,對回波數(shù)據(jù)進行時頻分析獲得手勢動作的時頻譜;第三步,通過分析手勢信號與背景雜波之間信號強度分布的差異,為每個手勢分別選取合適的閾值,將背景雜波從其時頻譜中去除;第四步,從處理后的時頻譜中提取手勢動作的方向梯度直方圖(Histogram of Oriented Gradient,HOG)特征,組成特征數(shù)據(jù)集;第五步,通過SVM對特征數(shù)據(jù)集進行訓(xùn)練與測試,實現(xiàn)手勢識別?;趯崪y數(shù)據(jù)的實驗結(jié)果表明,本文所提算法對4種典型手勢動作具有良好的識別效果,且該方法的識別精度要優(yōu)于PCA+SVM和DCNN。
本文使用K頻段雷達收集手勢動作的實驗數(shù)據(jù)。實驗時,雷達工作在連續(xù)波(Continuous Wave,CW)狀態(tài),載波頻率為24 GHz,基帶信號采樣頻率為128 kHz,系統(tǒng)的輸出功率為16 dBm,天線增益為15 dBi。手指和天線在同一直線方向,且兩者相距0.3 m。收集的手勢動作包括打響指、彈手指、抬手、招手4種,4種手勢動作的解釋說明和圖示分別如表1和圖1所示。實驗成員由兩名男性和兩名女性組成,每人每個手勢重復(fù)50次,一個完整的手勢周期為2 s,共收集4×4×50=800組數(shù)據(jù)。
表1 4種手勢動作的解釋說明
圖1 4種手勢動作的圖示
典型的基于連續(xù)波雷達的手勢識別流程主要有回波信號預(yù)處理、目標特征選擇與提取、特征數(shù)據(jù)集的構(gòu)建和分類器訓(xùn)練與測試等,如圖2所示。
圖2 典型識別流程
為了使手勢動作的多普勒特征直觀地顯示出來,選用漢明窗的短時傅里葉變換對回波數(shù)據(jù)進行時頻分析,表達式如下:
(1)
式中:z(u)為雷達回波信號,g(u)為短時傅里葉變換的窗函數(shù),u為時間,t為窗函數(shù)滑動的位置,f為頻率。
從式(1)可以看出,STFT實際上刻畫的是信號在時間-頻率平面上的分布,描述了手勢動作信號的瞬時頻率隨時間的變化關(guān)系。圖3和圖4分別提供了同一名實驗人員的4種手勢動作的時頻譜和4名實驗人員均作招手動作的時頻譜。
圖3 4種手勢的時頻譜
圖4 4名實驗人員招手的時頻譜
從圖3中可以看出不同手勢動作的時頻譜也互不相同。打響指時,中指向后的速度比大拇指向前的速度快,所以其負多普勒頻移大于正多普勒頻移。在彈手指時,中指開始向靠近雷達天線方向運動,而后又向遠離雷達天線方向運動,所以其多普勒頻移的變化為由正到負。因為抬手是一個連貫動作,所以其多普勒頻移也是連續(xù)變化的。而招手時,手指彎曲和展開的速度相近,所以其負多普勒頻移和正多普勒頻移近似相等。從圖4可以看出,不同實驗人員的相同手勢動作具有相似的時頻譜。時頻譜圖中的這些特性可以用來對手勢動作進行分類。
為了從手勢動作的時頻譜圖中提取明顯的特征,必須要去除其中的背景雜波。解決該問題的關(guān)鍵在于確定背景雜波和手勢動作之間的閾值。背景雜波(無任何手勢動作)的強度分布直方圖如圖5(a)所示。通過觀察直方圖,可以發(fā)現(xiàn)背景雜波具有類似高斯分布的特征。以招手為例,該手勢動作信號的強度分布直方圖如圖5(b)所示。
圖5 信號強度分布直方圖
通過兩者的對比,可以使用圖5(b)中開始偏離類高斯分布的最低信號強度作為去除背景雜波的閾值,從圖中可以讀出招手動作的閾值為-6 dBm。
同理,也可以確定打響指、彈手指和抬手的閾值分別為-6 dBm、-5 dBm和-8 dBm,使用該方法處理之后的時頻譜如圖6所示。通過與圖3的對比可以看出,該方法在當前的實驗條件下具有很好的效果,可以有效去除背景雜波。
圖6 閾值處理后的時頻譜
HOG特征是由圖像中局部區(qū)域的方向梯度信息通過統(tǒng)計形成的,而梯度信息主要存在于目標的邊緣區(qū)域[13-14]。從時頻譜圖中可看出手勢動作的邊緣區(qū)域的顏色有明顯變化,即該區(qū)域梯度發(fā)生突變,因此可以提取其HOG用于分類。在時頻譜圖中每個像素點在水平方向和垂直方向的梯度強度分別為
Gx(x,y)=I(x+1,y)-I(x-1,y),
(2)
Gy(x,y)=I(x,y+1)-I(x,y-1)。
(3)
式中:I(x,y)為像素點(x,y)的像素值。則每個像素點的梯度強度和梯度方向分別為
(4)
(5)
式中:Gx(x,y)為像素點(x,y)在其水平方向的梯度強度,Gy(x,y)為像素點(x,y)在其垂直方向的梯度強度。
由于方向梯度直方圖是在元胞(cell)中計算的,所以在得到每個像素的梯度強度值和方向后,需要將一幅圖片分割成若干個元胞。每個元胞由8×8個像素組成,其含有8×8×2=128個值,其中2代表了梯度強度和方向。為了得到更好的效果,通常將梯度方向θ取絕對值,故θ的取值范圍為0°~180°,即認為兩個方向相反的箭頭均表示同一方向。如圖7所示,把每個元胞所在的平面按照180°平均劃分為9個通道(bin),可以降低計算量和增加魯棒性。接下來根據(jù)元胞內(nèi)每個像素的梯度方向與其相鄰的兩個通道角度的距離比例,將該像素的梯度強度分配到其相鄰的兩個通道內(nèi),再通過統(tǒng)計形成每個元胞的方向梯度直方圖,即該元胞的特征向量。
圖7 HOG特征的方向
在每張圖片的局部,將4個相鄰的元胞組成一個塊(block),其尺寸大小為16×16個像素,并對其進行歸一化處理。把一個塊內(nèi)的每個元胞的特征向量首尾依次拼接起來,得到該塊的特征向量。在更大的局部上,將若干個相鄰的塊組成一個窗(window),把一個窗內(nèi)的每個塊的特征向量首尾依次拼接起來,得到該窗的特征向量。最后,通過塊在窗中滑動而窗在圖片中滑動,就可以得到整張圖片的HOG特征。
經(jīng)過預(yù)處理和特征提取后,還需要選擇合適的分類器對手勢動作進行識別,才可以獲得較高的識別精度。由于本文所進行的手勢識別是非線性多分類問題,所以采用傳統(tǒng)的線性分類方法不能得到較好的識別性能。因為SVM分類器的識別性能僅與訓(xùn)練集數(shù)據(jù)有關(guān),具有良好的泛化能力,且計算復(fù)雜度較低,易于實現(xiàn),故選用SVM分類器進行手勢識別。
SVM原始的最佳分離超平面算法只能解決線性二分類問題[15],但后來通過核函數(shù)的引入,可以實現(xiàn)非線性分類。其原理為利用非線性變換將原始的輸入空間轉(zhuǎn)化為某個維度更高的特征空間中進行線性分類,在該空間中可以學(xué)習(xí)線性支持向量機,判決函數(shù)為
(6)
式中:n為支持向量的個數(shù){x1x2…xn};{ω0ω1…ωn}為權(quán)值;K(xi,xj)為核函數(shù),本文選用高斯核函數(shù)為K(xi,xj)=exp (-γ||x-y||2)。
利用一對多(One vs.Rest,OvR)來實現(xiàn)多分類問題。OvR會依次從4個手勢動作中選出一個類別作為正類,其余的類別作為負類,進而產(chǎn)生4個二分類分類器。在測試集判斷類別階段,若只有一個分類器判斷是正類,則該分類器所對應(yīng)的類別即為最終的分類結(jié)果;若同時有多個分類器判斷是正類,還需要對它們的預(yù)測置信度大小進行比較,從中選擇信度最大的類別標記作為最終的分類結(jié)果。
手勢動作的輸入數(shù)據(jù)類型為從時頻譜圖中提取的HOG特征向量,其維度大小為2 304。為了測試本文所提方法的識別性能,采用不同大小的訓(xùn)練數(shù)據(jù)集來對識別精度進行測試。將訓(xùn)練數(shù)據(jù)的比例設(shè)置為10%~90%,步長為10%,所得的識別精度如圖8所示。從圖中可以看出,在訓(xùn)練數(shù)據(jù)的比例為60%之前,識別精度增長非常迅速;而訓(xùn)練數(shù)據(jù)的比例在60%~90%之間時,識別精度的增長變得緩慢;尤其當訓(xùn)練數(shù)據(jù)的比例在70%~90%之間時,識別精度幾乎不變。
圖8 在不同大小測試集下的識別精度
當訓(xùn)練數(shù)據(jù)占70%時,分類結(jié)果的混淆矩陣如表2所示。從表中可以看出,本文所提方法能準確地識別出彈手指和打響指,因為兩者的時頻譜差異較大,進而造成它們之間的HOG特征互不相同,故分類器識別的精度較高;而對抬手和招手的識別會發(fā)生一些混淆,因為在兩者的時頻譜中瞬時頻率都隨時間連續(xù)變化,且多普勒頻移都是由負到正,進而造成它們之間的HOG特征比較相似,所以導(dǎo)致分類器產(chǎn)生了錯誤分類。
表2 本文所提方法的混淆矩陣
為更好地說明本文所提算法的優(yōu)越性,將其與PCA+SVM[6]和DCNN[8]進行對比實驗。PCA+SVM的輸入數(shù)據(jù)類型為從時頻譜圖中提取的微多普勒特征向量,其維度大小為650,而DCNN的輸入數(shù)據(jù)類型為時頻譜圖,其尺寸大小為147×147。
從數(shù)據(jù)集中隨機選取70%的數(shù)據(jù)用于訓(xùn)練,余下30%的數(shù)據(jù)用于測試,得到4種手勢動作的識別精度如表3所示。從表中看出,本文所提方法在所有手勢動作中都獲得了最高的識別精度,這說明該方法優(yōu)于基于PCA+SVM的方法和基于DCNN的方法。利用PCA進行特征提取,會使時頻譜中的部分有效信息丟失,進而導(dǎo)致分類效果最差。采用DCNN的分類結(jié)果雖然要好于PCA+SVM,但仍沒有本文所提方法的識別精度高,且算法的計算復(fù)雜度還會大幅增加。
表3 不同方法的識別精度
本文所提方法采用的硬件平臺是Intel?CoreTMi5-3210M CPU @2.50 GHz,8 GB的內(nèi)存,Microsoft Windows 10系統(tǒng);軟件采用Visual Studio Code,運行環(huán)境為Python3.7.4。由于手勢識別的模型可以提前訓(xùn)練完成,即訓(xùn)練時間可以不用考慮,所以表4中僅列出了測試時間。從表中可以看出,DCNN的測試時間最少,PCA+SVM的測試時間最多??紤]到手勢識別在應(yīng)用中是一個實時動態(tài)的過程,所以測試時間不宜過長。本文所提方法在未優(yōu)化的前提下測試時間為0.23 s,基本可以滿足實時性的要求。未來還可以在圖形處理單元(Graphics Processing Unit,GPU)平臺上對程序進行優(yōu)化,進一步縮短測試時間,達到實時處理的要求。
表4 不同方法的消耗時間
本文提出了一種基于連續(xù)波雷達的手勢識別方法,提取手勢動作時頻譜中的HOG特征,通過SVM進行分類識別?;趯崪y數(shù)據(jù)的實驗結(jié)果表明,本文所提方法的識別精度高達95%以上,優(yōu)于基于PCA+SVM的方法和基于DCNN的方法。在下一階段的工作中,將增加對其他種類手勢動作的分類研究,使該方法具有更廣闊的應(yīng)用前景。