程杰 陳建華 許舒涵
關鍵詞:手勢識別;ESP32;彎曲傳感器;SVM;神經網絡*
據中國殘疾人人口數據庫有關數據,我國持殘疾證人口中聽力殘疾和言語殘疾共計249.2 萬人,且多為農村人口。由于工作和生活中大多數人不熟悉手語,造成了聾啞人難以融入社會生活的問題。因此,迫切需要一款低價、便攜的手語翻譯系統來輔助聾啞人與普通人溝通。
鑒于手語翻譯系統在輔助聾啞人融入社會中起到的重要作用,本文通過設計一款適用于手語采集與輸入的智能手套及翻譯系統采集手勢,形成數據庫并訓練機器學習模型。使用者佩戴手套以后做出不同手勢,手套將采集到的手指彎曲程度、加速度等信息在單片機進行預處理以后,通過UDP 協議經Wi-Fi 傳遞至云端處理,云端接收數據報后通過分辨通過分辨靜態(tài)手勢與動態(tài)活動,將數據二次處理后放入已經訓練好的模型中進行預測,并在網頁界面實時顯示結果,實現全平臺兼容。該方案穩(wěn)定性較高,可拓展性及可維護性極強,人機交互友好,解決了當前非接觸式手勢識別精度低、易受干擾、處理速度慢等痛點。
經過測試該方案識別準確性高達91.02%,方差0.0012,硬件成本僅為296 元且可拓展性高,人機交互友好,具備廣泛普及的條件,能有效輔助聾啞人士進行簡單交流,更好的參與社會生活,并且還可以作為教學用具進行手語培訓。
1 手勢識別方案選擇
方案1 基于傳感器和MPU6050 姿態(tài)傳感器的手勢識別數據手套上的傳感器能識別手指彎曲以及手部的運動,識別率較高,并且成本低有利于推廣,數據量低傳輸速度快,處理難度低。
方案2 基于計算機視覺的手語識別通常采用攝像頭作為傳感設備,無須穿戴,體驗感較好,但是感受與識別技術容易受到周圍環(huán)境因素的影響,如光照等。同時需要處理的數據量巨大,識別的實時性較低,并且不適用于日常環(huán)境。
2 系統設計
2.1 系統組成
本系統總體設計框圖如圖1 所示,包括彎曲傳感器、姿態(tài)傳感器MPU6050、ESP32、服務器、網頁端五部分。
2.2 系統工作過程
彎曲傳感器和姿態(tài)傳感器分別采集手指彎曲數據和手掌朝向、運動數據。采集到的數據在ESP32 進行滑動濾波和歸一化處理后以UDP 報文發(fā)送給服務器進行分類和識別最終將識別結果呈現在網頁端。
3 系統功能實現
3.1 硬件部分
系統的硬件部分將五根彎曲傳感器通過幾段在手指關節(jié)處的軟管固定使其可以在軟管中自由滑動,從而實現良好的佩戴體驗并提高數據采集的準確性。將陀螺儀、單片機通過排母固定于主板上,并將主板通過手環(huán)固定于手腕上,從而盡可能降低了佩戴該裝置對手部活動的影響,單片機和彎曲傳感器之間通過杜邦線連接,采用電池供電形式,實現了舒適的穿戴體驗。
3.1.1 彎曲傳感器
彎曲傳感器采集五根手指的彎曲數據,如圖2 所示,R1為彎曲傳感器等效電阻, R2為可變電阻,用于分壓使得輸出電壓不高于ADC最大可分辨的電壓2 450 mV。由于拇指與另外四指采用的彎曲傳感器不同,因此對于拇指,R1的范圍為25 kΩ~135 kΩ,R < 2 24.04 kΩ;對于其它四指,R1的范圍為9 kΩ~22 kΩ,R 2< 8.64 kΩ。
3.1.2 姿態(tài)傳感器
姿態(tài)傳感器采用MPU6050,用于識別手掌朝向和手部的運動數據。姿態(tài)傳感器MPU6050 可以測定x、y、z 三個坐標軸的加速度,當傳感器靜止時加速度分量的絕對值最大的坐標軸所對應的平面向上,若該最大加速度為正值則該坐標軸負方向所對應的平面向上,反之則該坐標軸正方向對應的平面向上?;谶@個原理實現了對手掌朝向的判斷。另外,通過航向角、橫滾角、俯仰角的變化識別手部的運動情況。
3.1.3 ESP32
ESP32-C3-WROOM-02 對彎曲傳感器的數據進行歸一化和濾波處理,同時將彎曲傳感器和姿態(tài)傳感器輸出以UDP 報文形式發(fā)送到服務器。
3.1.4 主板設計
如圖4 所示,主板電路由ESP32、MPU6050 模塊、自動下載電路組成,具備WiFi 連接、六軸運動數據采集與處理、自動復位等功能。傳感器電路由彎曲傳感器、可變電阻及運放構成,實現將手指彎曲程度的變化轉換成電壓變化的過程。由于ESP32 單片機中,可設置的最大ADC 采樣范圍為150 ~2 450 mV,因此可變電阻和彎曲傳感器電阻對V cc 進行分壓使得電路輸出電壓不超過閾值電壓。通過調整可變電阻的大小實現可變電阻與彎曲傳感器電阻對電源電壓分壓,電壓信號通過運放增強驅動能力,避免長距離傳輸造成的損耗,從運放輸出端輸出,實現對手指彎曲程度的采集。該電路的設計應該 注意在運放輸出端與地之間接一個100 nF 的電容進行濾波,并且傳感器電路應該盡可能離單片機近一些,以避免長距離傳輸造成的損耗。
3.2 軟件部分
3.2.1 手套端程序設計
如圖5 所示, 本項目的程序設計基于ESP32 的RTOS,在此基礎上,單片機任務主要分為三部分:串口任務、ADC 任務、UDP 任務。
1)串口任務設計
初始化后讀取緩沖區(qū)中存儲的彎曲傳感器數據,然后對數據進行處理,處理結束后判斷緩沖區(qū)是否有數據,若有則重復讀取數據、處理數據、判斷緩沖區(qū)有無數據步驟,反之則延時10 ms 切換其他任務。
2)ADC任務設計
初始化后進行ADC 采樣,采樣完成后進行數據處理及存儲,然后延時30 ms 并返回ADC 采樣步驟進行循環(huán)。
3)UDP任務設計
初始化后連接Wi-Fi,連接完成后處理ADC 數據,之后判斷ADC 滑動濾波窗口是否已滿,若已滿則發(fā)送數據并延時10 ms 然后判斷發(fā)送是否出錯,若出錯則返回連接Wi-Fi 步驟重新執(zhí)行以后步驟,若未出錯則返回處理ADC 數據步驟重新進行。如果ADC 滑動濾波窗口未滿則直接跳轉至延時10 ms 階段并執(zhí)行后續(xù)步驟。
4)濾波程序設計
在數據處理過程中,源信號往往受到多種因素的干擾,使得采集到的信號包含多種類別的噪聲。如圖 6 是通過ADC 直接采集到的彎曲傳感器上的電壓,可以看到,數據有明顯的波動。本子程序采用滑動濾波方式,控制窗口大小為450 ms,能較好地平衡抖動與細微動作。同時使用歸一化處理使手套具備更強的魯棒性,適配多用戶情況下的手勢識別。如圖7 是經過濾波和歸一化處理后的數據。
3.2.2 服務端程序設計
服務端程序設計如圖8 所示,初始化時,加載訓練好的SVM 模型和ANN 模型并且初始化套接字,等待數據報。接收數據報后,對數據進行預處理,判斷數據是否來自動態(tài)手勢,若不是,則將數據放入線性分類器進行處理,顯示結果;若數據來自動態(tài)手勢,則放入列表,循環(huán)“采集- 堆?!痹摬僮?,直至動作結束,將數據縮放后放入ANN 模型,得出結果。
服務端基于Python 的Web 應用程序框架Streamlit搭建,如圖9 所示,數據處理的結果可以實時呈現。
3 測試方案與測試結果
為了測試設計的識別準確率和可靠性,我們邀請200 位受試者以20 人為一組分為A~J 共計10 組進行測試,得出每組的平均正確率如表2 所示。
表格 2 測試分組正確率
可見本設計具有良好的識別準確率和可靠性。但測試者所做手勢準確與否、數據庫數據量等會對測試結果造成一定影響。
4 結束語
本文設計并實現了一種適用于手語采集與輸入的智能手套及翻譯系統,硬件和軟件經測試均可正常運行并達到良好的準確性和穩(wěn)定性,實現了識別準確率高達91.02% 方差僅為0.0012. 手套功耗僅為0.32 W,資源利用率為59.3%,采集速率達到模塊理論上線,硬件成本可以控制在296 元。本設計能很好的解決聾啞人的日常溝通問題幫助他們更多的參與社會生活,并且可用于教學用途,輔助學習者更快、更規(guī)范地學好手語。