當前位置:
首頁 > 最新 > 根據手機感測器數據識別用戶運動模式

根據手機感測器數據識別用戶運動模式

隨機智能手機的普及,在日常生活中,大多數人在做任何事情的時候,都會隨身攜帶手機。如果開啟手機中的感測器,當用戶運動時,就可以採集大量的用戶信息,根據這些信息,就可以判斷當前用戶的運動模式,如行走、上樓梯、下樓梯、坐、站立、躺下等等。基於這些運動模式,設計不同的場景,為健身類或運動類應用(APP)增加一些有趣功能。

在智能手機中,常見的位置信息感測器就是加速度感測器(Accelerometer)和陀螺儀(Gyroscope)。

加速度感測器:用於測量手機移動速度的變化和位置的變化;陀螺儀:用於測試手機移動方向的變化和旋轉速度的變化;

感測器

本文主要根據手機的感測器數據,訓練深度學習模型,用於預測用戶的運動模式。

技術方案:

DL:DeepConvLSTMKeras:2.1.5TensorFlow:1.4.0

本文源碼:https://github.com/SpikeKing/MachineLearningDemos/tree/master/motion_detector

數據

本例的數據來源於UCI(即UC Irvine,加州大學歐文分校)。數據由年齡在19-48歲之間的30位志願者,智能手機固定於他們的腰部,執行六項動作,即行走、上樓梯、下樓梯、坐、站立、躺下,同時在手機中存儲感測器(加速度感測器和陀螺儀)的三維(XYZ軸)數據。感測器的頻率被設置為50HZ(即每秒50次記錄)。對於所輸出感測器的維度數據,進行雜訊過濾(Noise Filter),以2.56秒的固定窗口滑動,同時窗口之間包含50%的重疊,即每個窗口的數據維度是128(2.56*50)維,根據不同的運動類別,將數據進行標註。感測器含有三類:身體(Body)的加速度感測器、整體(Total)的加速度感測器、陀螺儀。

以下是根據數據繪製的運動曲線,站立(紅色)、坐(綠色)、躺下(橙色)的振幅較小,而行走(藍色)、上樓梯(紫色)、下樓梯(黑色)的振幅較大。

運動曲線

以下是在行走(Walking)中,三類感測器的三個軸,共9維數據的運動曲線:

感測器 - 行走

以下是在坐(Sitting)中的運動曲線:

感測器 - 坐

通過觀察可知,不同運動模式的感測器數據曲線擁有一定的差異性,但是有些運動模式的差異性並不明顯,如行走、上樓梯、下樓梯之間;相同運動模式的感測器數據曲線也各不相同。

在數據源中,70%的數據作為訓練數據,30%的數據作為測試數據,生成訓練數據的志願者與生成測試數據的不同,以保證數據的嚴謹性,符合在實際應用中預測未知用戶動作的準則。

UCI數據源

模型

模型是基於深度學習的DeepConvLSTM演算法,演算法融合了卷積(Convolution)和LSTM操作,既可以學習樣本的空間屬性,也可以學習時間屬性。在卷積操作中,通過將信號與卷積核相乘,過濾波形信號,保留高層信息。在LSTM操作中,通過記憶或遺忘前序信息,發現信號之間的時序關係。

DeepConvLSTM演算法的框架,如下:

DeepConvLSTM

將每類感測器(身體加速度、整體加速度、陀螺儀)的3個坐標軸(XYZ)數據,合併成一個數據矩陣,即(128, 3)維,作為輸入數據,每類感測器均創建1個DeepConvLSTM模型,共3個模型。通過3次卷積操作和3次LSTM操作,將數據抽象為128維的LSTM輸出向量。

在CNN的卷積單元中,通過卷積(1x1卷積核)、BN、MaxPooling(2維chihua)、Dropout的組合操作,連續3組,最後一組執行Dropout。通過MaxPooling的降維操作(2^3=8),將128維的數據轉為為16維的高層特徵。

CNN

在RNN的時序單元中,通過LSTM操作,隱含層神經元數設置為128個,連續三次,將16維的卷積特徵轉換為128維的時序特徵,再執行Dropout操作。

LSTM

最後,將3個感測器的3個模型輸出,合併(Merge)為一個輸入,即128*3=384,再執行Dropout、全連接(Dense)、BN等操作,最後使用Softmax激活函數,輸出6個類別的概率。

Merged

選擇概率較大的類別,作為最終預測的運動模式。

效果

在第48層中,即Concatenate層,將3個感測器的LSTM輸出合併(Merge)成1個輸入,不同類別的特徵,效果也不同,如:

Merged Layer

訓練參數:

epochs = 100 batch_size = 256 kernel_size = 3 pool_size = 2 dropout_rate = 0.15 n_classes = 6

最終效果,在測試集中,準確率約為95%左右:

loss: 0.0131 - acc: 0.9962 - val_loss: 0.1332 - val_acc: 0.9535 val_f1: 0.953794 — val_precision: 0.958533 — val_recall 0.949101

如果繼續調整參數,還可以提升準確率。

通過深度學習演算法訓練的用戶動作識別模型,可以應用於移動端進行場景檢測,包含行走、上樓梯、下樓梯、坐、站立、躺下等六種動作。同時,95%的準確率已經滿足大多數產品的需求。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 齊魯壹點 的精彩文章:

2017年,煙台旅遊質監所受理旅遊投訴諮詢432起
泰安有位百歲「文藝」老農,飽讀詩書練得一手好書法

TAG:齊魯壹點 |