解迎剛,王 全
1.北京信息科技大學 信息與通信工程學院,北京100101
2.北京信息科技大學 現代測控技術教育部重點實驗室,北京100101
手勢伴隨著人們日常交流的各個方面,人們可通過手的動作來表達豐富的語義信息。基于視覺的手勢識別(簡稱“手勢識別”)融合了先進感知技術與計算機模式識別技術,涉及了工學、理學等多個學科,在讓人類和機器更好地交流方面扮演著重要的角色。然后自然世界中手勢的變化具有無窮性,目前的手勢識別技術依然無法完成人與機器自然交互,因而動態手勢識別研究對于科研人員來說仍然具備相當多的挑戰性。
自從圖像傳感器技術問世以來,其技術不斷更新迭代,從彩色化到精細化再到智能化。但是目前基于2D的圖像傳感器由于不能提供現代社會所需要的更多信息,已經逐漸不再被科研人員所青睞,人工智能物聯網正朝著3D化方向發展。文獻[1-4]綜述了各種三維深度傳感技術,重點介紹了不同3D 傳感器的工作機理。本文重點討論三種常用的手勢識別深度傳感器,簡要介紹Leap motion 傳感器,Kinect 傳感器和Time-of-flight(ToF)傳感器(各種傳感器簡要的比較參見表1)。盡管傳統的雙目立體相機,如Point Grey的Bumblebee,也可以感知手的深度,但較高的價格限制了它在實際應用中的普遍適用性。

表1 傳感器技術的比較Table 1 Comparison of sensor technology
Kinect1.0 是微軟在2010 年發布的一款3D 深度傳感器,與OpenNI和SDK庫相結合[5],能夠跟蹤人體關節的骨骼,研究者可以在此基礎上對手勢識別進行研究。Kinect 有兩種關于手勢識別的基本方法:(1)基于骨架的識別[6];(2)基于深度的識別[1]。
在第一種情況下,人體的骨骼關節,特別是手掌關節,可以通過傳感器快速檢測和跟蹤。由于Kinect 快速、低成本的手勢提取[7],通過Kinect傳感器可以對人體骨骼進行跟蹤,提取關節坐標并進行矢量計算,得到人體指向的方向,實現人-機器人交互的指向手勢識別。此外文獻[8-9]通過Kinect 跟蹤人體骨骼并獲取關于人體骨骼的三維深度信息,實現手勢識別和持續人體活動識別。
在第二種情況下,Kinect傳感器關閉其基于Adaboost訓練好的人體骨骼框架,只作為紅綠藍深度(RGB-D)采集設備。周仁等[10]使用Kinect獲取手勢的RGB-D信息,并用深度信息分割手,比傳統方法更有效。但是由于Kinect深度傳感器采集的深度信息的精度不夠高,分割后的手模型[11]不夠穩健。
Leap Motion 傳感器是在2013 年度發布的深度傳感器。與Kinect關注全身的信息相比較而言,它關注的是手部的骨骼信息。它能夠準確地檢測手和手指,精度為0.01 mm[12]。Leap Motion 深度傳感器率先被用于跟蹤用戶的手指,以便在虛擬環境[13]中啟用手動控制的接口。由于Leap Motion深度傳感器的準確性和適用性,許多研究已經成為使用Leap Motion 的先驅作品。基于這些評估[11,14],期望Leap Motion 可以幫助研究人員進一步開發用于3D手勢識別的工具包。
Kinect2.0 是2014 年發布的深度傳感器。Kinect2.0是一個TOF相機,TOF相機是一種低成本的深度測量硬件設施,與Kinect1.0 相比具有更高的精度。基于TOF的手勢識別使機器人能夠由手勢[15]控制。由于其準確性和魯棒性,TOF 傳感器已被用于生成三維點云,有助于識別復雜的手軌跡手勢,如日本手語[16]、波蘭手語[17]等。
基于視覺的動態手勢識別由4個關鍵步驟組成:手勢的檢測與分割、手勢的追蹤、特征的提取和手勢的分類。本文將以動態手勢識別所涉及到的關鍵步驟為中心主線,對手勢識別所涉及到的關鍵技術進行詳細分析,并對各個環節的方法用圖表的方式進行歸納總結。所涉及的方法具體如圖1所示。

圖1 手勢識別基本流程Fig.1 Basic process of gesture identification
在手勢識別的過程中,第一步就是要檢測到手的存在。手的檢測就是從視覺傳感器獲得的視頻序列中檢測是否有手的存在,并且定位手在圖像中的像素點集合的位置。手的分割是將上一步手勢檢測定位到的像素點坐標的集合分離出來,有效地減少像素點的計算,便于后續操作。手勢按可觀察的特征可分為靜態手勢和動態手勢。動態手勢識別不僅要進行手的檢測和手的分割,而且還需要對手進行跟蹤,識別其動態特征。解決手部檢測和分割問題的主要方法如下。
2.1.1 基于運動信息
手的運動是檢測手勢的有用特征。該領域有兩種研究方法:差分圖像和光流。差分圖像方法可以顯著消除由于背景圖像變化所帶來的影響。但該方法不能分割靜止的物體,只對運動的物體有效。與此相反的是,光流法可以在不知道圖像背景的情況下,清楚地表示手勢的運動,即使環境比較復雜,也能很好地完成手勢的檢測。圖勞和達拉爾擴展了著名的定向梯度直方圖(Histogram of Oriented Gradient,HOG)方法[18]。基于運動信息的分割方案需要假定一些前提,才能達到很好的效果。例如,差分圖像方法要求前景圖像和背景圖像之間有明顯的色差。光流法要求背景是恒定不動的,光照不變對其檢測效果影響很大,并且圖像中的主要運動成分必須是手勢運動。
2.1.2 基于外觀特征
外觀特征是指手的皮膚顏色、質地分布、指尖位置及其形狀、手的形狀和輪廓。在眾多的外觀特征中,膚色分割因為簡單快速的特性被研究者喜愛。皮膚顏色檢測已采用兩種方法實現:一是基于像素級別的膚色檢測,其圖像中的每個像素分別被分類為皮膚或者非皮膚。第二種方法是區域膚色檢測,其中根據強度和紋理等信息對皮膚像素進行空間處理,研究者根據對RGB、HSV 等顏色中的手勢進行建模分析。但是基于膚色的方法的魯棒性和適應性較差,比如光照變化、背景問題和其他類型的噪聲。在復雜的環境中,基于顏色的手勢識別系統很容易受到光照和陰影的影響。因此,為了改變這一不足,增加基于膚色方法在復雜環境中的識別效果,研究者在多種方法融合之間尋找突破口。例如,Lan 等通過將顏色信息、運動信息和形狀定位,有效提高了手勢分割[19]的精度。
2.1.3 基于學習算法
最近的一個研究趨勢是使用學習算法進行手部檢測。視覺特征方法基于各種視覺特征,而學習算法是指在傳感器獲得數據之后,利用機器學習算法從這些數據中識別出手勢。雖然有些算法是基于視覺特征方法的,但圖像背景去除對于學習算法是不必要的。人工神經網絡(Artificial Neural Network,ANN)、支持向量機(Support Vector Machine,SVM)和隨機決策森林(Random Decision Forest,RDF)等學習算法在手勢識別系統[20]得到了廣泛的應用。
2.1.4 基于骨架模型
由于深度傳感器的普及,許多研究使用三維模型來識別手勢,最常用的是骨架模型。骨架模型是一種簡化的人手模型,它只保留了人手中最有價值的信息。骨架模型方法在手勢檢測中很有優勢,因此已成為深度傳感器[21]的一種有吸引力的解決方案。
通過表2可以知道,手勢由于具有高自由度以及手勢背景的復雜性,基于外觀的方法雖然可以完成手勢的檢測與分割,但是容易受到類膚色的影響。通過分析文獻發現,如果只提取手部區域,單一的方法難以避免噪聲的影響,而采用多方法綜合可以大幅度地提高手勢檢測與分割的效果。因此,應該按照手形的變換,設計合理有效的方法,以提高分割算法的魯棒性。

表2 手勢檢測與分割方法比較Table 2 Comparison of gesture detection and segmentation methods
在動態手勢識別中,需要跟蹤手部的軌跡,持續不斷的手勢追蹤對于手勢識別來說非常重要。這意味著空間分割和時間分割對于識別動態手勢都是必要的,對于可以用單幀表示的靜態手勢[23],沒有必要進行手勢跟蹤。從本質上來說,手勢追蹤是對時序上連續的圖像進行逐幀分析,在圖像幀與幀之間變化間隔之內計算出被追蹤的目標。但是因為手勢作為追蹤目標,目標相對比較小,而且手勢的動作變換比較快,相對于汽車之類的物體來說,在空間中的自由度比較高,所以導致了對手部追蹤的困難性。從近年來手勢追蹤的國內外文獻及技術實現上來看,常見的手勢追蹤算法主要有如下幾種:基于運動信息的手勢追蹤、基于匹配的手勢跟蹤、基于擴展外觀模型匹配的手勢跟蹤、基于稀疏表示的手勢追蹤以及基于深度信息的手勢追蹤。常用的手勢追蹤方法對比情況如表3所示。
由表3 可知,在實際應用中,單一的跟蹤算法針對手勢的追蹤效果比較差,難以準確追蹤手勢位置。因此,實際應用中往往需要結合多種算法來提高手勢跟蹤方法的魯棒性。Yuan 等[36]提出了一種基于多特征融合的模型,并將其應用于視覺跟蹤的相關濾波框架中,實驗結果表明,該模型在提高跟蹤器的跟蹤性能和魯棒性方面非常有效。Danelljan 等[37]研究了顏色在逐點檢測框架中的作用,提出了一種自適應的低維顏色屬性變換方法以提高跟蹤效果。對于傳統的MeanShift算法在遇到目標遮擋的情況下容易丟失目標狀況,Khan等[38]結合運動目標的空間信息,有效解決了運動目標遮擋帶來的跟蹤效果下降的問題。李妍妍等[39]提出一種自適應跟蹤窗口的處理方法,大大增加了持續跟蹤目標的概率,減少了目標的誤跟蹤,并且可以在跟蹤過程中適應目標尺度的變化。雖然基于稀疏表示的方法與基于深度學習的方法改善了目標追蹤效果,但是手勢特征的細節信息容易丟失。為此,Qian等[40]提出了一種基于深度學習和自適應粒子濾波的在線視覺跟蹤算法,該算法在目標或攝像機快速移動時表現出了先進性。Zhao 等[41]提出一種采用結構化局部稀疏表示方法對目標周圍的背景區域進行分析,并設計了一種加權搜索方法尋找最佳候選目標。針對復雜場景中其他不是目標的物體對目標跟蹤的影響,李東杰等[34]提出一種適合于復雜場景下手勢跟蹤的規劃區域的檢測跟蹤方法,該方法對于過濾當前背景中非目標對跟蹤目標的不良影響非常有效。針對復雜背景下手勢運動過程中的手勢形態變化容易出現跟蹤目標丟失,跟蹤過程中出現漂移,光照變化的魯棒性不高等情況,王彩紅等[42]提出了一種基于時空上下文的手勢跟蹤與識別方法。該方法結合手勢檢測算法,可以實時更正手勢的位置信息,有效提高了手勢跟蹤在各方面的魯棒性。因此,根據以上多種方法的綜合分析,可以預測多種手勢追蹤方法的結合仍然將會是動態手勢識別研究的熱點。

表3 手勢追蹤方法對比Table 3 Comparison of gesture tracking methods
手勢分類是對提取的手勢時空特征進行分類,是手勢識別的最后一個階段。手勢分類的方法主要有以下幾種。
2.3.1 基于模板匹配
模板匹配法是最早被提出來的識別方法,也相對容易,多用于靜態手勢識別。該方法是將輸入圖像與模板(點、曲線或形狀)匹配,并根據匹配相似性進行分類。坐標距離、點集距離等,輪廓邊緣匹配、彈性圖匹配等都可以用于匹配度計算。模板匹配法的優點是在小樣本的情況下速度非常快,對于光照、背景變化的適應性較好,應用范圍廣,但分類精度不高,可以識別手勢的類型有限,適用于小樣本、形狀變化小等情形。
2.3.2 基于機器學習
機器學習可以讓計算機在海量數據中產生符合數據一般規律的模型,手勢識別可以通過許多流行的機器學習分類算法來解決,如支持向量機、K-最近鄰算法(K-Nearest Neighbor,KNN)等。
支持向量機在數據集利用監督算法來對二元模型進行分類,其本質是在特征空間找到決策邊界從而找到最合適的分類器。支持向量機還可以利用核方法,將其擴展為非線性分類器。它的學習策略是間隔最大化,可形式化為求解凸二次規劃問題[43]。
Pisharady 等人利用邊緣和紋理特征,結合SVM 進行手勢識別。實驗結果表明,該算法具有獨立于人的性能,對手大小和復雜背景[44]的變化是可靠的。然而,SVM方法在面對大量樣本時會明顯降低計算速度。
2.3.3 基于深度學習
深度學習是一個新的機器學習分支,它可以模擬生物神經系統和現實世界的相互作用,具有強大的自適應、抗干擾和移動學習能力。此外,與傳統的學習算法不同,深度學習不需要手工工程,這使得有可能利用指數增長的可用數據和計算能力[45]。卷積神經網絡和遞歸神經網絡[46]是兩種流行的深度學習算法。由于深度學習[47]在許多領域表現出來的性能都特別強大,基于深度學習的手勢識別方法已經成為主流。
多層深度學習網絡學習數據中的潛在規律,從而提供很好的預測結果,這項技術面臨的最大挑戰是數據集可能會影響學習的時間。表4呈現了一系列論文,這些論文使用基于深度學習算法去檢測ROI。作者利用7種流行的手勢,這些手勢由攝像頭捕獲,并生成24 698 張圖片。特征提取和自適應深度卷積網絡被用于手勢分類。實驗評估結果用了100%的訓練集和99%的測試集,耗時15 598 s[48]。而其他系統按照拍照順序去跟蹤手勢,然后用Y-Cb-Cr Color Space技術除去背景色,除此之外,KCF被用來跟蹤ROI。生成的圖像送入卷積神經網絡(Convolutional Neural Networks,CNN)。CNN模型被用來與改進的Alex 網絡和VGG 網絡做對比,訓練集的識別率為99.9%,測試集的識別率為95.61%[49]。基于神經網絡的新方法忽略分割和檢測階段,將調整后的圖片直接送入網絡。該系統實時性好,簡單背景的準確率為97.1%,復雜背景的準確率為85.3%[50]。

表4 基于深度學習的手勢分類方法及效果Table 4 Geometric classification method and effect based on deep learning
Kinect傳感器產生的深度圖像用于分割彩色圖像,然后將顏色建模與卷積神經網絡相結合,使用誤差反向傳播算法來調節神經網絡的閾值和權重,支持向量機分類算法被加入網絡去增強實驗結果[51]。其他的研究使用高斯混合模型過濾掉用于訓練CNN圖片中非皮膚顏色以識別7個手勢,平均識別率為95.96%[52]。遞歸神經網絡從記錄的視頻序列中采樣得到多個幀送入網絡。為了提取代表幀,使用了基于語義分割的反卷積神經網絡。采用平鋪圖像模式和平鋪二值模式對去卷積網絡進行訓練[53]。雙通道卷積神經網絡(Double Channel Convolutional Neural Network,DC-CNN)[54],在將原始圖像輸入網絡之前,對其進行預處理。每個雙通道CNN都有一個單獨的權重和用于分類輸出結果的softmax分類器,系統的識別率為98.02%。崔虎等[56]提出了一種基于異步多時域時空特征的手勢識別方法。首先通過輕量級三維卷積網絡提取視頻序列的不同時間步態的短期時空特征,然后通過改進的卷積長短期記憶網絡學習長期時空特征,最后將不同步態的時空特征融合為異步多時域特征,以此來對手勢進行分類識別。王粉花等[57]提出一種融合雙流三維卷積神經網絡(I3D)和注意力機制(CBAM)的動態手勢識別方法CBAM-I3D,該方法有效提高了動態手勢的正確率,識別率達到了90.76%。最后,一種新的基于SPD流形學習的神經網絡用于骨骼手勢識別被提出[55]。
2.3.4 HMM
隱馬爾可夫模型(Hidden Markov Model,HMM)是一種基于貝葉斯的統計模型,主要處理基于時間序列或狀態序列問題。隱馬爾可夫模型是馬爾可夫鏈的一個擴展,是著名的有向圖模型,作為基于概率統計的典型方法用于語音識別、手勢識別等領域[43]。
對于手勢識別問題,由于手勢動作的上下文環境敏感性強,隱馬爾可夫模型更適用連續手勢識別場景。在連續信號的應用中,隱馬爾可夫模型訓練和識別屬于計算密集型的。其中狀態轉換性質會帶來大量的概率密度計算,模型訓練和目標識別速度將隨著參數量增大而變慢。針對這一現象,離散隱馬爾可夫模型被廣泛應用于一般手勢識別系統中。
2.3.5 DTW
動態時間規整(Dynamic Time Warping,DTW)是一種非線性時間歸一化的匹配技術,解決了兩個序列長度不一致的匹配問題,廣泛應用于語音識別、圖像匹配、手勢分類等領域。它通過非線性歸一化函數,采用動態規劃方法,讓輸入序列和模板序列的點值實現一對多匹配或者一對一匹配,求得兩端序列的最佳對齊方法。在手勢樣本模板庫比較小的情況下,DTW 算法在不同運動速度手勢的匹配和識別方面表現優異。但是,當手勢樣本模板庫比較大的情況下,該算法的識別速度以及穩定性會大大下降,特別是當手勢比較復雜,或者是雙手手勢的組合情況下。
綜上所述,比較了基于模板匹配、機器學習方法、深度學習算法、幾何特征、HMM和DTW的手勢識別方法,如表5所示。

表5 手勢識別常用方法對比Table 5 Comparison of common gesture recognition methods
手勢的研究已經成為一個令人興奮的相關領域,它提供了自然交互的方式,降低了使用傳感器的成本。傳統的交互方法依賴于不同的設備,如鼠標、鍵盤、觸摸屏、用于游戲的操作桿和機器控制的控制臺。下面描述了一些常見的手勢應用。
2.4.1 臨床與健康心理學
在臨床手術中,為了縮短手術時間或提高結果的精確性,外科醫生可能需要患者整個身體結構的細節或詳細的器官模型,通過使用醫學成像系統,如MRI、CT 和X-ray 系統來實現。這些系統從患者的身體中收集數據,并將其作為詳細的圖像顯示在高分辨率的電子大屏。外科醫生可以通過使用計算機視覺技術在攝像頭前做手勢來觀察圖像的交互。這些手勢能實現一些操作,如縮放、旋轉、圖像裁剪和切換到下一張或上一張幻燈片,而無需使用任何周邊設備,如鼠標、鍵盤或觸摸屏。任何額外的設備都需要消毒,這對于鍵盤和觸摸屏來說可能很困難。此外,手勢可以用于輔助目的,如輪椅控制[58]。
2.4.2 手語識別
手語是無法用言語與他人交流的一種交流方法,它由一組手勢組成,每個手勢代表一個字母、數字或表情。許多研究論文提出了聾啞人的手語識別,使用戴在手上的手套傳感器,根據手部運動做出反應,或者,它可能涉及使用計算機視覺技術來識別手勢,從而發現與攝像頭的互動。對于上述兩種方法,用于手勢分類的數據集與用戶做出的實時手勢相匹配[59-61]。
2.4.3 社會輔助機器人
手勢可以作為命令,為機器人提供有意義的指令。該機器人將根據不同的指令調用不同的邏輯代碼,完成不同的功能。如今,在人機交互方面,人們可以使用更自然的方式來讓機器人為人類服務[62]。
2.4.4 虛擬環境
虛擬環境是基于一個3D模型,需要一個3D手勢識別系統,以便作為一個HCI 實時交互,這些手勢可用于修改和查看或用于娛樂目的,例如彈奏虛擬鋼琴。該手勢識別系統利用數據集與采集到的手勢進行實時匹配[63]。
2.4.5 智能家居
手勢可以有效地用于家庭自動化。握手或做一些手勢可以很容易地控制燈光、風扇、電視、收音機等。它們可以用來改善老年人的生活質量[64]。
2.4.6 個人電腦和平板電腦
手勢可以作為一種替代輸入設備,使計算機無需鼠標或鍵盤就可以進行交互,例如通過桌面環境拖動、拖放和移動文件,以及剪切和粘貼操作。手勢還可以用來控制幻燈片顯示[65]。此外,它們還能與平板電腦一起使用,聾啞人可以在平板電腦的攝像頭前移動手,與他人進行互動,這需要安裝一個將手語翻譯成文本的應用程序,并將其顯示在屏幕上。這類似于語音到文本的轉換。
2.4.7 游戲手勢
手勢互動用于游戲的最佳例子是微軟的Kinect Xbox,它的屏幕上有一個攝像頭,通過電纜接口與Xbox設備連接,用戶可以通過使用Kinect攝像頭傳感器跟蹤的手部動作和身體動作與游戲互動。
以上章節對動態手勢識別技術過程進行了全面的描述,雖然動態手勢識別已經取得了顯著的進步,但是由于動態手勢識別技術是一個跨學科且快速發展的學科,仍然面臨著很多的挑戰。例如:如何在手部遮擋、不同的光照條件下,保持手勢識別的穩健性,如何有效地解決手勢的誤追蹤問題,以及巨大的計算成本,使得現有的動態手勢識別算法在實時性、運算速度、識別率等方面還有許多問題有待解決。因此,本文將介紹一些動態手勢識別技術所面臨的挑戰和未來可能的研究方向。
(1)復雜背景下的手勢檢測問題
大多數現有的手勢檢測過程的研究是假設手勢的背景是簡單的,但應用中的背景卻比較復雜。比如,在機器與工人的人機交互過程中,傳感器設備所采集到的手勢會包含大量復雜的背景環境,包括光照的改變、背景環境的改變,這樣會增加手勢檢測的難度,導致手勢識別的精度下降。因此,研究在復雜背景下的手勢檢測如何提高手勢識別的魯棒性,提高動態手勢識別在復雜場景的交互能力,將會是未來的一個研究方向。
(2)動態手勢的追蹤與匹配問題
在動態手勢識別的過程中,由于手勢的多變性和高自由度,以及手勢背景的復雜性,導致長時間追蹤手勢和提高手勢追蹤的精度一直具有挑戰性。但是在一些3D 游戲和虛擬現實中,長時間的手勢追蹤是必須的。因此,如何提高動態手勢的跟蹤精度,提升用戶手勢交互方面的體驗,將會是未來的一個研究方向。
(3)手勢的實時性與計算量問題
對于手勢圖片和手勢視頻序列,要想得到高精度的手勢識別率,設計比較深的網絡層是非常有必要的,從而使得深度神經網絡的訓練變得非常有障礙性,主要包括以下幾點:①數據量,訓練深度神經網絡需要海量的樣本來作為訓練集,而人工標注訓練集也是巨大的工程量;②內存存儲,深度神經網絡需要存儲大量的參數,以及為了在大規模的訓練集中提高訓練效率,需要較大的內存存儲去滿足每次大批量地送入訓練數據進行訓練;③昂貴的計算成本,大規模的訓練集不但需要較大內存,還需要有性能強悍的計算設備來加快訓練和測試速度。因為在一些危險人機交互場景中,實時性是一個很重要的要求,所以如何在保證精度的前提下提高手勢識別的實時性和減小運算成本將會是未來的一個研究方向。
因此,就當前研究情況來看,手勢識別中手勢存在的多樣性和歧義性以及時空的差異性是手勢識別中的常見難題,局限性在一些經典的方法中還是存在的,主要原因在于手勢動作變換的多樣性、手勢語義的復雜性以及背景噪聲的干擾,在數據量較少時可以表現出其自身優越性。目前,基于深度學習的動態手勢識別發展較為迅速,應用較廣,是當前研究的熱點。而如何在保證識別準確率的情況下,有效減少高計算成本和運行時間,提高手勢識別的實時性將是未來研究的重點。如果這些問題得到解決,那么極有可能會解決傳統方法所遇到的一系列問題,讓動態手勢識別的發展迎來下一波熱潮。
本文首先介紹了幾種常見的視覺傳感器,其次介紹了動態手勢識別的基本過程,并對每個過程所涉及的方法進行了詳細的對比分析,總結了各類方法的優缺點。最后根據本文總結的內容,分析了目前動態手勢識別存在的未解決問題,并說明了將來可能的發展方向。
手勢識別作為人類與機器交互的自然方式,應用非常多,如手語識別、遙控機器人、3D游戲和虛擬現實等,將會是一個持續的研究熱點。希望相關科學研究者繼續完善動態手勢識別的研究,讓動態手勢識別技術對未來社會發揮更多的作用。