手勢辨識是電腦科學和語言技術中常見的主題之一,能夠透過數學演算法解釋人類手勢。這在機器和人類之間搭起更豐富的橋梁,讓生活更有趣、更智慧。依據影像/影片的手勢辨識有許多研究,這些研究通常使用2D攝影機。本文將探討利用新的飛行時間(Time-of-Flight;ToF)3D手勢辨識解決方案。
在目前的COVID-19疫情下,大眾對「無接觸」解決方案的使用者介面要求越來越多,而保持社交距離正成為「新常態」。我們平常仍需要接觸公共場所中的多個物件,特別是操作ATM、自動販賣機、工廠機器的介面。全新的ST感測技術與強大的AI演算法結合,我們可以透過3D手勢辨識來實現這種解決方案。
展示概述
這個展示目前能夠辨識多達8種手勢,包括向左滑動、向右滑動、向上滑動、向下滑動、點選、點兩下、順時針旋轉和逆時針旋轉。我們使用ST最新的VL53L5CX ToF 8X8多區域測距感測器輸入,接著於STM32上運行神經網路,最後可在PC GUI上顯示辨識結果。
針對硬體,選擇能與VL53L5 EVK擴充板結合的STM32F401RC Nucleo開發板。
輸入感測器
VL53L5CX是先進的ToF多區域測距感測器,可強化ST FlightSense產品系列。
特色
‧ 快速、準確的多區域測距感測器
– 具有4x4或8x8獨立區域的多區域測距輸出
– 具有中斷可程式化閾值,可喚醒host的自主低功耗模式
– 最大4公尺的測距
‧ 具有視角(FoV)的完全整合微型模組
– 發射器:940 nm不可見光垂直腔面發射雷射(VCSEL)和整合式類比驅動器
– 在發射器和接收器上使用繞射光學元件(DOE)的63°對角方形FoV
– 尺寸:6.4 x 3.0 x 1.5 mm
‧ 易於整合
– 單一可回流元件
– 彈性的電源選項,單一3.3V或2.8V操作或3.3V或2.8V AVDD與1.8V IOVDD的組合
擷取和標記資料集
對於訓練人工神經網路模型而言,擷取充足、不同手勢的資料相當重要。
使用Python開發的特定GUI,可以用手勢輕鬆擷取和標記來自ToF感測器的原始資料,並建立自己的資料集。
資料集包含每個手勢的數千個樣本(展示中有8個樣本:向左滑動、向右滑動、點選、點兩下、順時針旋轉、逆時針旋轉、向上滑動、向下滑動)。
顯然地,可以使用相同工具為新的自定義手勢,並建立不同的資料集。
建立和訓練神經網路
針對神經網路部分,開發者選擇簡單、彈性、強大的架構Keras來建立NN。由於手勢是序列行為,因此選擇CNN + GRU層來建立模型。經過大約50個epoch的訓練後,訓練集和驗證集可達到95%以上的準確度,而且loss僅約0.08。
針對測試資料集,每個手勢也達到良好的準確度。F1 score可達到96%。
最後可將最佳模型和參數另存為gesture.h5,以便在MCU端實作。
在MCU端實作手勢模型
事前準備:需要在STM32CubeMX中安裝X-Cube-AI擴充套件。目前的最新版本是7.2.0,其支援scikit-learn機器學習模型。
X-Cube-AI設定:設定使用的開發板後,可以從「Software Packs」->「Select Components」載入X-Cube-AI,也可以使用快速鍵Alt+O。
在「軟體套件元件選擇」視窗中,必須勾選X-Cube-AI/Core Bundle才能上傳NN模型並產生相關的STM32 NN 函式庫。然後按一下[確定]完成選擇。
啟用X-CUBE-AI元件:點擊 [STMicroelectronics X-CUBE-AI 7.2.0]開啟初始AI設定視窗,接著勾選 [Artificial Intelligence Core]以開啟X-CUBE-AI核心元件。此外,亦須勾選[Artificial Intelligence Application]才能新增附加AI應用。
載入NN
1. 新增網路。
2. 將模型名稱變更為「gesture」。
3. 選取輸入模型類型為「Keras」。
4. 選取「Browse」鍵以選擇要實作gesture.h5的模型。
5. 點擊「Analyze」分析模型。
分析後,將顯示模型各層的詳細報告,以及此模型需要使用的MACC、快閃記憶體、RAM資訊。
最後在CubeMX中按下「Generate code」,這會在專案中建立一個X-CUBE-AI資料夾,使用者可以在此資料夾中找到一些實用檔案。
‧ gesture.c和gesture.h是模型拓樸檔案。
‧ gesture_data.c和gesture_data.h是參數及bias檔案。
‧ app_x-cube-ai.c和app_x-cube-ai.h檔案亦提供通用的多網路推斷API,可供AI客戶端應用程式使用。
如果需要更新模型參數來達到更好的效能,只需要更新gesture_data.c和gesture_data.h檔案。
顯示結果
最後,將UART log顯示到電腦,在GUI端顯示我們的預測結果。若在ToF感測器前距離20-80公分處做出順時針旋轉手勢時,GUI將顯示預測結果,如下圖所示。百分比是這個手勢的機率。
現在,3D手勢展示已完成,而且此解決方案可以在下列幾個應用中使用。
‧ 智慧家電可在使用者手不乾淨或潮濕時,利用手勢辨識控制不同設備。
‧ 互動娛樂,例如遊戲機。
‧ 人機互動提升機器智慧化,使人更安全,特別是在COVID-19環境或一些危險環境中。