任尚恩,邢樹軍,陳 碩,于迅博,顏玢玢,王葵如,桑新柱
(北京郵電大學(xué) 電子工程學(xué)院,北京 100876)
人機(jī)交互一直是目前研究的熱門課題,它被應(yīng)用于各種不同的顯示設(shè)備,如虛擬現(xiàn)實(shí)(VR)、裸眼3D 顯示等。其中,裸眼3D 顯示技術(shù)可以通過立體顯示設(shè)備將具有空間深度信息的三維立體圖像再現(xiàn)出來,觀看者可以在不佩戴任何輔助設(shè)備的前提下通過裸眼觀測到立體成像,大幅降低了三維立體顯示用戶端的觀測難度。因此,裸眼3D 顯示技術(shù)被認(rèn)為是未來顯示領(lǐng)域的重要發(fā)展方向[1-11]。
在與裸眼3D 顯示器交互的過程中,鍵盤和鼠標(biāo)等傳統(tǒng)交互方式難以滿足用戶進(jìn)行信息交換和更加新穎的體驗(yàn)需求。同時(shí)由于近年全球新冠疫情的反復(fù),減少直接接觸可有效預(yù)防疫情的傳播。因此無需直接接觸的新型交互方式逐漸成為優(yōu)先選擇,如語音交互、眼動(dòng)跟蹤、手勢交互等。
手勢作為人類自原始時(shí)期至今仍在使用的古老有效的溝通方式,具有簡單、表達(dá)直接、含義廣的優(yōu)點(diǎn),在人類交流中起著重要作用。研究表明,一個(gè)人的手勢和他本人的記憶存在直接關(guān)系。與身體姿勢、頭部姿勢不同[12-13],手勢作為一種肢體語言,一個(gè)簡單的手勢蘊(yùn)涵著豐富的信息。人與人通過手勢能夠傳達(dá)大量的信息,實(shí)現(xiàn)高速通信。
手勢交互是一種基于人類手部運(yùn)動(dòng)的交互方式,它可以通過攝像機(jī)或光學(xué)傳感器捕捉人手部動(dòng)作,解析出手勢特征,與計(jì)算機(jī)進(jìn)行信息交換。手勢交互有利于提高用戶的操作效率,并且能夠帶來更加自然親和的交互體驗(yàn),因此,手勢交互可能成為3D 光場最佳的交互技術(shù)之一。利用手勢進(jìn)行交互,核心問題是手勢識(shí)別與分類,推測手勢含義。手勢識(shí)別主要依賴3 種方法:可穿戴的數(shù)據(jù)手套[14]、手部關(guān)鍵點(diǎn)骨骼[15]的三維位置、圖像。
傳統(tǒng)手勢識(shí)別使用RGB-D 圖像序列分類手勢。本文提出一種基于手部關(guān)鍵點(diǎn)的深度學(xué)習(xí)手勢識(shí)別方法,不需要引入大量手部圖像。該方法提出使用Leap Motion 設(shè)備采集手部骨骼關(guān)鍵點(diǎn)數(shù)據(jù),選擇多層感知器神經(jīng)網(wǎng)絡(luò)(Multilayer Perceptron,MLP)對手部關(guān)鍵點(diǎn)數(shù)據(jù)進(jìn)行分類訓(xùn)練,通過學(xué)習(xí)手部關(guān)鍵點(diǎn)的數(shù)據(jù)跳變關(guān)系提取手部特征。
本文提出的方法手勢識(shí)別速度達(dá)到毫秒級(jí),并且可以準(zhǔn)確判斷3D 光場交互中常用的簡單手勢和復(fù)雜手勢。最后,本文展示了一種將所提出的手勢識(shí)別方法應(yīng)用于裸眼3D 光場交互的場景。
手部骨骼關(guān)鍵點(diǎn)取點(diǎn)方式由圖1給出,共21個(gè)關(guān)鍵點(diǎn)。O點(diǎn)是手部掌心點(diǎn)坐標(biāo)。由于人類手部骨骼的特性,在同一種手勢的前提下,手掌中心點(diǎn)與其他21 個(gè)關(guān)鍵點(diǎn)的相對位置恒定。pi是第i個(gè)手部關(guān)鍵點(diǎn)數(shù)據(jù)的三維坐標(biāo):
圖1 手部關(guān)鍵點(diǎn)Fig.1 Key point of the hand
其中:xi表示第i個(gè)點(diǎn)在三維坐標(biāo)系中的x值;yi表示第i個(gè)點(diǎn)在三維坐標(biāo)系中的y值;zi表示第i個(gè)點(diǎn)在三維坐標(biāo)系中的z值。
手部骨骼關(guān)鍵點(diǎn)三維數(shù)據(jù)通過Leap Motion設(shè)備來捕捉。雖然Leap Motion 在實(shí)現(xiàn)手勢交互過程中可以通過人工定義骨骼點(diǎn)距離、方向等定義手勢,但這種方法存在一定的局限性。在復(fù)雜手勢的情況下,人工定義手勢的過程會(huì)面臨巨大的挑戰(zhàn)。因此,本文提出的方法旨在通過省略人工定義手勢的步驟提升手勢識(shí)別的速度和準(zhǔn)確度。
由于手勢在空間中的高度、位置和姿態(tài)的多樣性,在空間中不同位置采集的同一種手勢的三維坐標(biāo)數(shù)據(jù)會(huì)存在顯著差異。這導(dǎo)致神經(jīng)網(wǎng)絡(luò)更加關(guān)注三維坐標(biāo)數(shù)據(jù)的差異性而不是關(guān)鍵點(diǎn)間的數(shù)據(jù)特征,因此神經(jīng)網(wǎng)絡(luò)難以學(xué)習(xí)到有效的手部特征。
為了消除三維坐標(biāo)差異對手勢識(shí)別的干擾,本文提出了一種手勢歸一化方法,旨在將不同位置的手部關(guān)鍵點(diǎn)調(diào)整到相同的位置和方向。該方法能夠有效地減弱從不同位置捕捉手勢所帶來的影響。圖2 是手部關(guān)鍵點(diǎn)數(shù)據(jù)預(yù)處理的方法圖示,其核心有兩點(diǎn):一是將手勢載入同一右手笛卡爾坐標(biāo)系,二是進(jìn)行位姿變換。
圖2 手部關(guān)鍵點(diǎn)預(yù)處理方法Fig.2 Pre-treatment method for key hand points
首先對加載入同一右手笛卡爾坐標(biāo)系中的手部關(guān)鍵點(diǎn)進(jìn)行位移變換。選定掌心點(diǎn)O,如公式(2)所示:
在本文的設(shè)計(jì)中,掌心點(diǎn)O不參與神經(jīng)網(wǎng)絡(luò)訓(xùn)練,而是通過將其位移至xyz坐標(biāo)系原點(diǎn)來達(dá)到手部關(guān)鍵點(diǎn)位移變換的目的。由于手部關(guān)鍵點(diǎn)與掌心點(diǎn)O之間存在線性關(guān)系,掌心點(diǎn)O的位移會(huì)導(dǎo)致手部21 個(gè)關(guān)鍵點(diǎn)的三維坐標(biāo)也發(fā)生相應(yīng)的位移。通過這種方式可將所有手勢調(diào)整到xyz坐標(biāo)系的原點(diǎn)位置。
然后針對位移變換后的手勢進(jìn)行姿態(tài)調(diào)整。提出姿態(tài)調(diào)整的原因有二:一是在該空間內(nèi),同一種手勢保留不同姿態(tài),數(shù)據(jù)之間的顯著性差異仍然存在。二是平移后,21個(gè)手部關(guān)鍵點(diǎn)與掌心坐標(biāo)的相對位置等價(jià)于關(guān)鍵點(diǎn)與坐標(biāo)軸原點(diǎn)的相對位置,手勢姿態(tài)調(diào)整可簡化為向量旋轉(zhuǎn)問題。本文提出利用羅德里格斯公式進(jìn)行姿態(tài)調(diào)整。羅德里格斯公式是描述向量三維旋轉(zhuǎn)的數(shù)學(xué)方程,它可以用來計(jì)算將一個(gè)向量繞某一旋轉(zhuǎn)軸旋轉(zhuǎn)給定角度后得到的新向量。該公式在空間解析幾何和計(jì)算機(jī)圖形學(xué)領(lǐng)域中應(yīng)用廣泛,常用于填寫旋轉(zhuǎn)矩陣。旋轉(zhuǎn)矩陣由式(3)求出:
其中:k=(kx ky kz)T為旋轉(zhuǎn)軸單位向量,由原向量與旋轉(zhuǎn)后的向量叉乘求出,如圖2 所示;θ是旋轉(zhuǎn)角度;R為旋轉(zhuǎn)矩陣;E為單位矩陣。
本文在進(jìn)行手勢姿態(tài)調(diào)整時(shí),首先獲取掌心法向量v1,方向由手心指向手掌內(nèi)側(cè)向下。然后獲取手指方向向量v2,方向由手心指向手指尖端。未進(jìn)行歸一化處理時(shí),兩者在空間中保持垂直關(guān)系,均可被Leap Motion 設(shè)備直接采集得到,如圖2 所示。將向量v1、v2旋轉(zhuǎn)到與坐標(biāo)軸平行的方向,本文選擇先旋轉(zhuǎn)v1至v1-rot,旋轉(zhuǎn)軸為k1。然后再旋轉(zhuǎn)v2至v2-rot,旋轉(zhuǎn)軸為k2。
由公式(3)計(jì)算出旋轉(zhuǎn)矩陣R1、R2,需要注意的是,向量v1旋轉(zhuǎn)后,向量v2并沒有跟隨旋轉(zhuǎn)。這是因?yàn)楸疚膬H對采集得到的數(shù)據(jù)進(jìn)行預(yù)處理而不是對設(shè)備本身采集算法的修改,針對向量v1的數(shù)據(jù)調(diào)整并不能影響實(shí)際采集。
各個(gè)關(guān)鍵點(diǎn)相對于掌心點(diǎn)O的旋轉(zhuǎn)等價(jià)于原點(diǎn)到各個(gè)關(guān)鍵點(diǎn)間向量的旋轉(zhuǎn),由公式(4)算出旋轉(zhuǎn)后的三維坐標(biāo):
其中:Pi為原點(diǎn)到位移后各關(guān)鍵點(diǎn)的向量;Pi-rot的值為旋轉(zhuǎn)后的三維坐標(biāo),如P0-rot的值為大拇指根部關(guān)鍵點(diǎn)旋轉(zhuǎn)后的三維坐標(biāo)值。經(jīng)過位姿變換的同一種手勢,可以有效抑制手部關(guān)鍵點(diǎn)數(shù)據(jù)在空間中的大幅度波動(dòng),消除三維坐標(biāo)數(shù)據(jù)間的顯著性差異。為了提高神經(jīng)網(wǎng)絡(luò)的魯棒性,本文采用數(shù)據(jù)增強(qiáng)的方式。
數(shù)據(jù)增強(qiáng)是在不實(shí)質(zhì)性的增加數(shù)據(jù)的情況下,從原始數(shù)據(jù)加工出更多的表示以接近于更多數(shù)據(jù)量產(chǎn)生的價(jià)值。其原理是通過對原始數(shù)據(jù)融入先驗(yàn)知識(shí),加工出更多數(shù)據(jù)的表示,有助于模型判別數(shù)據(jù)中統(tǒng)計(jì)噪聲,加強(qiáng)本體特征的學(xué)習(xí),減少模型過擬合,提升泛化能力。本文通過添加高斯噪聲的方式增強(qiáng)數(shù)據(jù)。高斯噪聲是指它的概率密度函數(shù)服從高斯分布的一類噪聲,如式(5)所示:
其中:μ為期望,σ2為方差。
為得到手勢分類識(shí)別結(jié)果,本文使用MLP神經(jīng)網(wǎng)絡(luò)對預(yù)處理后的手部關(guān)鍵點(diǎn)進(jìn)行深度學(xué)習(xí)提取手部特征。MLP 神經(jīng)網(wǎng)絡(luò)是一種人工模擬生物神經(jīng)元系統(tǒng)的模型,其最典型的架構(gòu)包括3 層:輸入層、隱藏層和輸出層。
MLP 神經(jīng)網(wǎng)絡(luò)不同層之間是全連接的,即上一層的任何一個(gè)神經(jīng)元與下一層的所有神經(jīng)元都有連接。MLP 由多個(gè)節(jié)點(diǎn)層組成,每一層都完全連接到下一層。除了輸入節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都是一個(gè)帶有非線性激活函數(shù)的神經(jīng)元。多層感知器與人類神經(jīng)元工作原理相似,可以模擬人類學(xué)習(xí)時(shí)神經(jīng)元的變化。多層感知器首先進(jìn)行學(xué)習(xí),然后使用權(quán)重存儲(chǔ)數(shù)據(jù),使用算法來調(diào)整權(quán)重并減少訓(xùn)練過程中的偏差,最后達(dá)到數(shù)據(jù)預(yù)測的效果。
如圖3 所示,Input layer 是網(wǎng)絡(luò)的輸入層,負(fù)責(zé)輸入數(shù)據(jù)。Hidden layer 是網(wǎng)絡(luò)的隱藏層,與輸入層全連接,模擬神經(jīng)元。Output layer 是網(wǎng)絡(luò)的輸出層,輸出分類結(jié)果。
圖3 MLP 訓(xùn)練手勢分類Fig.3 MLP training gesture classification
對每個(gè)手勢關(guān)鍵點(diǎn),將其展開成一組xyz值的集合,作為神經(jīng)網(wǎng)絡(luò)的輸入。共有21 個(gè)關(guān)鍵點(diǎn),對應(yīng)輸入層的63 個(gè)節(jié)點(diǎn)。輸出層節(jié)點(diǎn)數(shù)與需要進(jìn)行分類識(shí)別的手勢種類數(shù)量相同。本文對14 種手勢進(jìn)行分類識(shí)別,輸出層節(jié)點(diǎn)數(shù)為14。網(wǎng)絡(luò)設(shè)計(jì)包括3 個(gè)隱藏層,每層包含512 個(gè)神經(jīng)元。
本文分別考慮了3D 光場交互系統(tǒng)中出現(xiàn)的兩類手勢:簡單手勢和復(fù)雜手勢。共采集14 種,分別對應(yīng)0~13 的標(biāo)簽。前8 種為3D 光場交互中的簡單手勢,后6 種為復(fù)雜手勢。采集15 000 組手部關(guān)鍵點(diǎn)數(shù)據(jù),用以訓(xùn)練網(wǎng)絡(luò)。
為了檢驗(yàn)所提出方法的準(zhǔn)確性和魯棒性,本文對單一手勢數(shù)據(jù)集和混合數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)。1 號(hào)測試集包括8 種手勢,并且在手部捕捉過程中出現(xiàn)較大幅度的活動(dòng)。圖4 展示了本次實(shí)驗(yàn)采集的簡單手勢。
圖4 簡單手勢(左:手勢0~3;右:手勢4~7)Fig.4 Simple gesture (Left: Gesture 0~3;Right: Gesture 4~7)
圖5 復(fù)雜手勢(左:手勢8~10;右:手勢11~13)Fig.5 Complex gestures (Left: Gesture 8~10;Right:Gesture 10~13)
對簡單手勢的實(shí)驗(yàn)結(jié)果如表1 所示。單獨(dú)的8 種手勢識(shí)別均達(dá)到95%以上的準(zhǔn)確率,說明本文提出的方法可以準(zhǔn)確識(shí)別簡單手勢。通過分析1 號(hào)測試集可以得出,當(dāng)手部運(yùn)動(dòng)速度較快或幅度較大時(shí),識(shí)別準(zhǔn)確率顯著下降。因此,在進(jìn)行手勢捕捉時(shí)應(yīng)注意保證手部運(yùn)動(dòng)幅度較小,避免快速移動(dòng)。
表1 簡單手勢識(shí)別結(jié)果Tab.1 Simple gesture recognition results
在復(fù)雜手勢捕捉過程中,應(yīng)避免手部快速移動(dòng)、運(yùn)動(dòng)幅度較大的情況。
對復(fù)雜手勢的實(shí)驗(yàn)結(jié)果如表2 所示。6 種復(fù)雜手勢的識(shí)別正確率均在90%以上,說明本文提出的方法可以用于識(shí)別復(fù)雜手勢。
表2 復(fù)雜手勢識(shí)別結(jié)果Tab.2 Complex gesture recognition results
為驗(yàn)證本文提出的方法在小樣本數(shù)據(jù)集訓(xùn)練下具有優(yōu)秀的性能,將手勢0、1、2、3、4、5、8、12采用不同的分類器進(jìn)行驗(yàn)證對比。分別使用本文提出的方法、Leap Motion 自有手勢識(shí)別和YOLO 目標(biāo)檢測進(jìn)行實(shí)驗(yàn)。實(shí)驗(yàn)中的小樣本數(shù)據(jù)集圖片數(shù)量不超過150 張。
實(shí)驗(yàn)結(jié)果見圖6。通過對比分析可知,本文提出的方法在小樣本數(shù)據(jù)集下表現(xiàn)出優(yōu)秀的準(zhǔn)確率和穩(wěn)定性,并且優(yōu)于另外兩種比較方法。其中,Leap Motion 自有手勢識(shí)別方法穩(wěn)定性較差,YOLO 目標(biāo)檢測統(tǒng)計(jì)的是低置信閾值(0.1)的手勢識(shí)別準(zhǔn)確率,即YOLO 標(biāo)注出的物體與目標(biāo)值在相似度較低的情況下,仍然無法高效準(zhǔn)確識(shí)別手勢,因此YOLO 目標(biāo)檢測并不適合小樣本數(shù)據(jù)集,更適用于數(shù)據(jù)集樣本多的情況。
圖6 小樣本數(shù)據(jù)集手勢識(shí)別結(jié)果Fig.6 Gesture recognition results for small sample dataset
本文提出的方法核心在于對采集得到的手勢數(shù)據(jù)做歸一化數(shù)據(jù)處理。對所有手勢分別進(jìn)行歸一化數(shù)據(jù)處理和不進(jìn)行歸一化數(shù)據(jù)處理。其中,不進(jìn)行歸一化數(shù)據(jù)預(yù)處理的手勢從不同位置以細(xì)微差異姿態(tài)采集兩組數(shù)據(jù)。
實(shí)驗(yàn)結(jié)果如圖7 所示。進(jìn)行歸一化預(yù)處理后,手勢識(shí)別準(zhǔn)確率遠(yuǎn)高于未進(jìn)行歸一化預(yù)處理的實(shí)驗(yàn)樣本,且未歸一化的手勢數(shù)據(jù)隨采集姿態(tài)、位置的不同,手勢識(shí)別結(jié)果也不同。由該實(shí)驗(yàn)可以得出結(jié)論,對采集的手勢數(shù)據(jù)歸一化預(yù)處理是本文提出方法的核心。
圖7 歸一化影響識(shí)別準(zhǔn)確率對比結(jié)果Fig.7 Normalization affects the comparison results of recognition accuracy
為驗(yàn)證所提出的方法可被用于裸眼3D 光場交互,本文設(shè)計(jì)了一種手勢控制光場顯示內(nèi)容切換的交互場景作為評估。圖8 展示了所提出的方法在裸眼3D 人機(jī)交互場景中的應(yīng)用。
圖8 3D 光場交互與顯示。(a)文物模型;(b)猴頭模型。Fig.8 3D light field human-computer interaction and display. (a) Artifact model;(b) Monkey head model.
圖8 (a)和圖8(b)依次展示了從最左側(cè)視點(diǎn)、正前方視點(diǎn)、最右側(cè)視點(diǎn)3 個(gè)角度下拍攝的文物模型和猴頭模型的3D 光場顯示照片。右上角的手勢對應(yīng)進(jìn)行光場人機(jī)交互時(shí)的手勢類型。切換測試共計(jì)20 次,全部正確觸發(fā)光場內(nèi)容切換,可見本文提出的方法可以成功應(yīng)用于3D 光場的人機(jī)交互。
本文提出了一種基于手部關(guān)鍵點(diǎn)的MLP 網(wǎng)絡(luò)提升3D 光場交互準(zhǔn)確度的方法。該方法的核心是通過位移和羅德里格旋轉(zhuǎn)公式對簡化后的手勢模型進(jìn)行姿態(tài)調(diào)整,將同一種手勢歸一化,以消除不同位置采集手部關(guān)鍵點(diǎn)三維數(shù)據(jù)間存在的顯著性差異。為了從關(guān)鍵點(diǎn)的跳變關(guān)系中提取手部特征,引入了多層感知器神經(jīng)網(wǎng)絡(luò)。實(shí)驗(yàn)結(jié)果表明,該方法對3D 光場交互中簡單手勢的識(shí)別率可以達(dá)到為95%以上,對復(fù)雜手勢的識(shí)別率高于90%,識(shí)別速度達(dá)到毫秒級(jí)。另外,本文提出的方法在小樣本數(shù)據(jù)集訓(xùn)練下表現(xiàn)出優(yōu)秀的性能,滿足精準(zhǔn)、快速實(shí)現(xiàn)手勢分類識(shí)別的要求。最后,本文通過展示一種手勢交互控制光場內(nèi)容切換的場景,驗(yàn)證了所提出的方法可以成功應(yīng)用于裸眼3D 光場交互與顯示。