您的位置 首页 kreess

HAR人體姿態識別技術概括與細節講解

HAR人體姿態識別技術通過采集人體運動產生的各種物理信息來識別姿態動作,包括身體姿態、手指運動、面部運動等,用於醫療康復、安全駕駛等方面。[1]本專欄將介紹實現-手機-人體

HAR人體姿態識別技術通過采集人體運動產生的各種物理信息來識別姿態動作,包括身體姿態、手指運動、面部運動等,用於醫療康復、安全駕駛等方面。[1]

本專欄將介紹實現-手機-人體姿態識別的具體步驟以及註意細節,幫助大傢簡單入門並快速掌握HAR的綱要。

實現步驟分三步:1.手機采集數據 2.電腦訓練分類算法 3.手機端部署算法

采集數據篇

我們可以利用手機的微信小程序的API調用手機的加速計與陀螺儀,采集手機X、Y、Z三個方向的加速度與角速度,總共為六軸數據。[2]

不同動作之間的六軸數據分佈是不同的,如下圖為walking走路、standing站立、sitting坐,lying躺,四個動作的六軸數據圖像,上方為加速度三軸波形,下方為角速度三軸波形。[3]

根據數據之間的不同,算法便能明顯地區分出來幾種動作。我們可以DIY自定義自己想要識別的動作再對它們進行數據采集。

小程序的加速計與陀螺儀調用API的模式推薦用'game'模式,采樣頻率為50Hz,符合常用的六軸HAR數據采集頻率。對一個動作連續采樣一段時間後即可將數據保存在小程序自帶的雲數據庫中,最後一起導出作為訓練算法數據集。

采集數據小程序代碼在我的GitHub分享:https://github.com/Yuan-SDUWH/HAR-activity-recognition-smartphone 改一改雲環境就可以用

2.訓練算法篇

數據預處理

采集到一定量的數據後,註意對比各個動作之間采集的數據量的大小,是否有數據集明顯失衡現象,如果有的話,則在訓練集測試集分割的時候最好不要隨機7:3分割,可以嘗試分層抽樣。否則可能會出現某動作數據量大,則算法傾向於識別為它的現象。

對於采集到的數據,我們可以對數據點用各種濾波器去除噪聲,常見的有中值濾波器、巴特沃斯濾波器等,python有許多濾波器包,直接調用就能對數據自動濾波去噪。

采集到的/濾波完的數據一般為很長的六段六軸數據列表,我們需要對每一段數據進行分段,也就是加窗。比如取2.56s采樣的數據量為一段,也就是2.56s50Hz=128個數據點為一段。且常用前後overlap(重疊),比如推薦50%重疊,也就是窗口大小(步長)(幀移)為50%*128=64個數據點,即每次分段之後往後移64個開始分下一段。overlapping見如下圖片:我們得到如下ABC三個小數據段,每個數據段都是128個數據點,相鄰數據段之間均有一半的重疊。

對每一條長數據都進行如下的分段分割,即可得到一個大的數據段矩陣,維數均為128。

每個動作都采集6個軸上的數據,每個軸的數據都進行濾波和相同步長加窗&overlapping,我們就可以得到處理好的六軸數據訓練集,數據都有著相同的維度便於輸入算法訓練。

動作對應的標簽一般化為0、1、2、3等整數

分類器算法訓練

處理好數據集後,選擇訓練算法則比較自由。常用的分類算法有隨機森林、樸素貝葉斯、CNN、LSTM、SVM、MLP等,都可以任意選擇進行準確率和效率的對比,列出來的分類器效果都比較好。我測試的隨機森林準確率在96-99%,MLP在87%左右,LSTM在90%左右,CNN在87%左右。

3.部署算法篇

算法也是部署到手機小程序上進行應用,這樣省去做app的麻煩,直接調用小程序的加速計陀螺儀接口就可以像采集數據時一樣進行實時的數據采集,然後輸入訓練好的算法進行分類識別和結果輸出。

訓練好的算法部署到小程序上有兩種方案。

方案一:在小程序.js文件裡用JavaScript重寫算法框架(機器學習算法比較簡單,容易寫),並且保存python訓練好的權重矩陣和各種參數的值並復制粘貼到小程序Page的data中。小程序采集數據的同時就可以在js文件裡進行代數運算(矩陣運算、激活函數判斷運算等等,容易寫)然後輸出結果。

這個方案的好處是斷網瞭離線也可以進行識別,因為調用加速計陀螺儀、js文件裡進行運算都不需要連網和服務器進行數據傳輸,直接在手機本地做就好,傳統機器學習算法比較適用。缺點是由於代碼包大小的限制以及算力,復雜的深度學習算法可能無法保存下來太多參數/運行數據所以無法成功運行。

方案二:租服務器部署python算法,小程序采集數據後將數據打包傳輸到服務器端,服務器端把收到的數據輸入訓練好的算法中進行運算,輸出結果後再傳回小程序端。

這個方法的優點是便捷,不需要JavaScript重寫算法,復雜的深度學習算法比如LSTM、CNN等可以直接搬上去用。

具體小程序運行的效果演示見我的嗶哩嗶哩視頻,從05:28開始https://www.bilibili.com/video/BV1qk4y1B7jt 前面講實現步驟概括采集數據時也有采集數據的小程序使用演示

參考

  1. ^封面圖片取自 https://github.com/CMU-Perceptual-Computing-Lab/openpose
  2. ^手機三軸 https://www.jianshu.com/p/6d6b213912f5
  3. ^https://github.com/anas337/Human-Activity-Recognition-Using-Smartphones.github.io

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

返回顶部