?

基于人機交互的端對端手勢識別控制框架的設計與實現

2023-08-26 04:13霍英陳臺興孫錦森張嘉明林鴻森
電腦知識與技術 2023年20期
關鍵詞:手勢識別人機交互神經網絡

霍英 陳臺興 孫錦森 張嘉明 林鴻森

關鍵詞:手勢識別;MediaPipe;神經網絡;人機交互

中圖分類號:TP391 文獻標識碼:A

文章編號:1009-3044(2023)20-0017-03

0 引言

手勢識別[1]和手部檢測具有廣泛的潛在應用,涵蓋車內手勢、手語識別、虛擬現實等領域。手勢技術使得用戶可以在不接觸設備的情況下實現控制或互動,因此越來越受到人們的關注和青睞。然而,互聯網上的手勢識別模型雖然眾多,但它們只適用于特定的手勢集,缺乏規范和架構設計,最終難以為用戶提供方便的使用和構建體驗。因此,文章提出了一種端對端、可擴展的框架,允許用戶使用手勢實時控制計算機系統,實現人機交互[2]。該框架在不同的硬件(CPU/GPU) 和操作系統上工作,并依靠一個中等分辨率的攝像頭來檢測手勢。該框架使用手勢技術代替鼠標操作和鍵盤快捷鍵,讓用戶能夠通過手勢輕松控制桌面。此外,還提供了一個易于使用的配置,用戶可以重新映射手勢和動作,添加新的自定義動作和手勢。

該框架設計了兩種手勢類型:靜態和動態。靜態手勢指的是單一的手部姿勢就能夠提供足夠的信息來進行分類的手勢,例如“V字”手勢。而動態手勢[3]則不能僅通過一個姿勢來檢測,需要一連串的姿勢才能被理解和分類。例如,在移動手的同時保持手型姿勢的手勢“( 向上滑動”) ,或者是涉及連續改變手姿勢的手勢“( 捏”) 。通過將手部運動與連續的姿勢變化相結合,可以創造出大量的動態手勢。

該框架采用了模塊化設計,將其分為若干邏輯組件,每個組件執行特定任務。手勢接收器從圖像中獲取關鍵點,將其傳遞給手勢識別器,后者使用神經網絡對靜態和動態手勢進行分類。最后,手勢執行器執行分類結果的動作。該框架的關鍵特點是,它具有高度的可定制性。除了內置的鼠標和鍵盤功能,用戶還可以將手勢映射到任何桌面操作上,包括Shell等腳本。這使得該系統的使用方式非常靈活。用戶可以將手勢用于啟動應用程序、設置環境等。此外,框架還提供了一種添加新手勢的方法,以滿足用戶不同的需求。

1 準備工作

1.1 識別方法

通過查閱資料,研究者發現了許多關于從靜態圖像或視頻中進行手勢識別的文獻。這些解決方案通??梢苑譃橐韵聨最悾?) 通過相機或傳感器提供純RGB圖像與深度數據(RGB-D) ;2) 通過檢測手部關鍵點(手掌和手指關節)作為中間步驟或直接從視頻中執行端到端檢測;3) 將檢測關鍵點作為最終目標,而不是手的三維重建[4];4) 手勢是預先分割的或必須實時分割的[5]。

基于上述研究,研究者采用單目RGB視頻流,并將其輸入一個兩階段的神經網絡架構。在第一階段中,使用現成的MediaPipe[6]框架從單個視頻幀中檢測手部關鍵點,并生成一個手部關鍵點序列。在第二階段中,使用自己的神經網絡模型對這個關鍵點序列進行靜態和動態手勢的檢測。

1.2 識別框架

手勢識別在多種領域中有著廣泛應用,例如虛擬界面控制、游戲、增強現實/虛擬現實環境交互、汽車人機界面、家庭自動化、教育、零售商業環境以及消費電子產品控制等。手勢的高表達性和直觀性使其成為這些應用中非常有價值的交互方式。盡管手勢識別市場正在快速增長,但幾乎沒有任何端到端的開源手勢識別框架。GRT是一個例外,這是一個為實時手勢識別而設計的C++機器學習庫,它提供了創建自定義識別器的構建模塊。相比之下,研究者使用神經網絡作為構建模塊,并采用PyTorch[7]框架進行模型開發,可以進一步提高手勢識別的準確性和效率。

2 架構設計

研究者利用開源框架MediaPipe來檢測攝像頭捕捉的圖像中的手部關鍵點。MediaPipe模塊從攝像頭讀取數據,進行處理并生成關鍵點,接著通過ZeroMQ (一種消息傳遞隊列)將其傳輸給手勢接收器。手勢接收器接收關鍵點后將其傳輸給手勢識別器,后者對其進行特征編碼,并送入神經網絡進行手勢檢測。最后,手勢接收器將檢測到的手勢發送到手勢執行器,以執行相應的動作。

2.1 MediaPipe

一個跨平臺框架,提供各種機器學習解決方案。MediaPipe中的手部跟蹤器[8]是一個高保真的解決方案,可以從單一圖像中推斷出手部的21個三維坐標,跟蹤平滑,能夠應對自我封閉的情況,也就是手覆蓋自身。在使用其手部跟蹤功能時,它能夠跟蹤用戶的手掌并生成手部坐標或關鍵點。

2.2 手勢接收器

手勢接收器充當其他模塊的控制器。它能夠從MediaPipe模塊接收到關鍵點,并將其傳遞給手勢識別器和鼠標跟蹤器進行處理。隨后,它將處理后的輸出(即手勢名稱)傳遞給手勢執行器,以執行相應的操作。

2.3 手勢識別器

手勢識別器是一個核心模塊,用于對給定的關鍵點進行手勢分類。為此,框架使用了兩個神經網絡,一個用于檢測靜態手勢,另一個用于動態手勢。這些神經網絡的結構和訓練細節將在后續章節中詳細介紹。通過這些神經網絡的處理,框架能夠對手勢進行準確的分類,并將分類結果傳遞給其他模塊以執行相應的操作。

2.4 鼠標追蹤器和手勢執行器

鼠標追蹤器模塊能夠實時追蹤用戶手指在屏幕上的移動,并將其映射到光標的移動。通常情況下,使用食指尖端作為追蹤鼠標的關鍵點。隨著手指的移動,追蹤器可以將其在屏幕上的運動投影到光標的移動上。

手勢執行器模塊接收手勢識別器所識別的手勢名稱作為輸入,并根據預定義的手勢動作映射表執行相應的操作??蚣茴A先定義了一小部分手勢及其對應的動作,以涵蓋常見的使用情況。

3 手勢識別器

手勢識別器的輸入是由MediaPipe生成的21個三維關鍵點,每個關鍵點對應于手上的一個位置。每個關鍵點由三個坐標組成,分別表示該點在三個維度上的位置(x,y,z )(x,y,z )。因此,手勢識別器的輸入向量是一個長度為63的向量。這些輸入向量經過預處理,被轉換為神經網絡期望的特征,以便進行手勢分類。具體如下所述:

3.1 靜態手勢

3.1.1 特征提取

由MediaPipe生成的21個關鍵點被轉換為神經網絡所需的向量。該向量是通過計算相對手部向量得出的,即輸入關鍵點之間的向量差。這些相對向量以一種位置不變的方式編碼手的姿勢信息,也就是說,無論手在網絡攝像頭的視野中處于什么位置,都能檢測到相同的手勢。以第一個相對手部向量(從手掌底部到拇指的第一個關節)為例,可以通過以下方式計算得出:

其中,V0V0和V1V1代表圖2中標有0和1的點的三維坐標,V01V01代表它們之間的相對向量。通過計算一共有16個相對的手部向量(拇指4個,其他手指3 個),每個手部向量由(x,y,z )(x,y,z ) 坐標組成,總共有48個坐標。最后,添加上標志手,即執行手勢的手,這個49-D向量被送入神經網絡。

3.1.2 數據集

在進行網絡訓練時,研究者收集了自己的數據,并創建了一個小型的數據集。研究者采用了以下方法收集這些數據:首先指定手勢的名稱,然后執行Me? diaPipe 框架并捕獲關鍵點。這些關鍵點被記錄在CSV文件中,并與相應的手勢名稱一起使用。對于每個手勢,收集了約2 000個樣本。雖然實現靜態手勢相對簡單,但手只能做出有限的姿勢,具有一定的局限性。因此需要收集動態手勢的數據以提高模型的泛化能力。

3.2 動態手勢

3.2.1 特征提取

為了提取特征向量,將輸入序列中的每一幀轉換為一個向量,該向量由以下內容組成:手掌底部的絕對坐標,即V0xV0x和V01yV0y。這是因為一些手勢,如“向上刷”“向右刷”,涉及手的移動;手掌底部的時間坐標。這包括該坐標相對于上一個時間段的位置變化,從而獲取手勢方向信息;相對手部向量的坐標。與靜態情況類似,這些坐標用于捕捉手的姿勢。

3.2.2 數據集

為了訓練動態手勢識別模型,使用SHREC[9]數據集。這個數據集包含2 800個序列,包括14種手勢,如“向上滑動”“點擊”等常見手勢,以及“滑動+”等更復雜的手勢。這些序列是可變長度的,由多人以兩種方式進行采集:使用整個手掌或只使用手指。為了收集更多數據,框架還提供一個腳本,用于記錄動態手勢的數據。

4 模型訓練和結果分析

通過PyTorch-Lightning 框架來建立神經網絡分類器。PyTorch-Lightning是一種開源深度學習框架,它提供了模塊化的模型開發工具,讓用戶能夠快速地構建神經網絡。該框架提供了訓練、驗證和測試等功能,同時也支持分布式訓練。其優點是可擴展性強、易于使用、性能良好等。使用該框架能夠顯著減少代碼量,并加快開發速度。

4.1 靜態手勢

為了檢測靜態手勢,使用一個具有兩個線性層的前饋神經網絡分類器,該分類器接收特征向量并將其歸類為可用的手勢之一。該網絡經歷了大約50次迭代,訓練后的混淆矩陣如圖3所示。雖然無法記錄所有可能的靜態手勢,但考慮到后續用戶的擴展性,研究者采用了一些處理方法以解決數據不平衡的問題。除了相關的手勢集,還引入了一個“空”手勢,如果沒有檢測到相關的手勢,就會選擇這個手勢。為了訓練分類器,收集了各種不相關的靜態手勢,并將它們標記為空。盡管這提高了分類器的性能,但仍然出現許多假陽性的情況。為了解決這個問題,通過對“空”手勢的得分進行縮放,手動校準分類器的softmax輸出。

4.1.1 實驗結果

這些優化使靜態分類器能夠在多個用戶和不同的照明條件下達到很高的檢測精度,并取得了驗證準確率為98.52%的良好性能。此外,研究者還對響應時間進行了檢測,發現沒有明顯的延遲。

4.2 動態手勢

為了更準確地檢測動態手勢,采用由線性層組成的遞歸神經網絡,與雙向GRU相連,對傳入的特征進行編碼。在檢測動態手勢時,關鍵問題在于準確計算手勢的起始和結束時間。為了避免這個問題,研究者使用信號鍵來表示手勢的起始和結束,并將鍵盤中的“Ctrl”鍵用作信號鍵。這種方法能夠處理不同長度的手勢,并減少錯誤分類的數量。除了SHREC提供的手勢外,研究者還使用這種方法增加了一個名為“圓圈”的手勢。盡管“圓圈”是一個復雜的手勢,但網絡在測試期間能夠準確檢測出該手勢,這表明網絡也能成功地應用于其他手勢。

4.2.1 實驗結果

研究者使用混淆矩陣對各種手勢進行了分類和評估,結果如圖4所示。圖4表明,動態手勢的性能比靜態手勢低,平均準確率約為85%。這是因為動態手勢涉及兩個因素:手的姿勢和手隨時間的位移。從混淆矩陣中可以看出,那些涉及手部位移的手勢(如“滑動”) 被準確地檢測出來,而那些涉及手指方向變化的手勢(如“點擊”) 則相對較難。

在多次測試中,出現領域不匹配的問題。具體來說,研究者使用了由RGB相機捕獲的數據流進行測試,而SHREC數據集是由英特爾RealSense深度相機記錄的。由于這種領域不匹配,框架在測試過程中失去了一定的準確性。為了解決這個問題,研究者計劃改進特征計算方法,并使用更大、更具代表性的數據集進行訓練。通過這種方式,可以提高模型的準確性和可靠性,以更好地適應各種不同的環境。

5 結論

文章提出了一個基于人機交互的端對端手勢識別控制框架,其可以通過用戶的偏好進行定制。除了提供一個全功能的鍵鼠替代品外,框架還支持自定義手勢和動作的添加,以便用戶在不同的環境下使用。未來,研究者的目標是通過提高檢測精度進一步改進這個框架,使得增量訓練新手勢更加有效,并進行用戶研究以評估框架的可用性。

猜你喜歡
手勢識別人機交互神經網絡
神經網絡抑制無線通信干擾探究
基于手勢識別的工業機器人操作控制方法
人機交互課程創新實驗
基于神經網絡的拉矯機控制模型建立
復數神經網絡在基于WiFi的室內LBS應用
基于支持向量機回歸和RBF神經網絡的PID整定
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合