1

識別傳感器的模式,我想我的應用程序能夠檢測當攜帶手機用戶下降,僅使用加速度計數據(因爲它是在所有的智能手機唯一可用的傳感器)。列車的Android應用程序中使用機器學習

我首先嚐試實現一種算法來檢測自由落體(加速度計的總加速度接近於零,然後是由於地面打擊引起的高加速度,以及當用戶剛剛快速走到樓下時短暫靜止以消除誤報) ,但有很多方法可以下降,而且對於我的算法實現,我總能找到一個情況,即沒有檢測到跌倒,或者跌倒被錯誤地檢測到。

我認爲機器學習可以幫助我解決這個問題,通過從大量來自不同設備的傳感器值,不同採樣率,什麼是下降和什麼是不是。

Tensorflow似乎是我需要的,因爲它似乎可以在Android上運行,但雖然我可以找到教程來使用它進行離線圖像分類(here for example),但我沒有找到任何幫助來製作模型從運動傳感器值中學習模式。

我試圖學習如何使用入門頁面使用Tensorflow,但未能,可能是因爲我不太流利的Python,並且沒有機器學習背景。 (我在Java和Kotlin中流利,並習慣於Android API)。

我在社區尋求幫助,以幫助我使用Tensorflow(或機器學習中的其他東西)來訓練我的應用程序,以識別跌倒和其他運動傳感器模式。

作爲提醒,Android以隨機速率報告運動傳感器值,但爲每個傳感器事件提供納秒時間戳,可用於推斷自上次傳感器事件以來的時間,並提供傳感器讀數作爲每個軸(x,y,z)的浮點(32位)。

+0

嗨,你是否能夠實現下降檢測?我也想在加速計數據上應用一些ML。 –

+0

@TinaJ我沒有時間去嘗試當前的解決方案,但我很想知道這些解決方案是否適合您! –

+0

Weka是一個很好的工具。如果我有時間,我想知道它是多麼容易。我也喜歡你,沒有python背景(只有Java)!請更新我的ML進展!哈哈 –

回答

1

如果你有良好的組織你的數據,那麼你可能能夠使用基於Java的的Weka機器學習環境: http://www.cs.waikato.ac.nz/ml/weka/

您可以使用Weka的玩弄你的數據的所有不同的算法。 Weka使用ARFF文件作爲數據。如果您使用JSON或CSV格式的數據,創建該數據非常容易。 一旦你找到一個算法中/模型作品裏,你可以輕鬆將它放入您的Android應用: http://weka.wikispaces.com/Use+Weka+in+your+Java+code

你真的,如果你不要求深度學習交易算法,我不認爲你不需要Tensorflow要求。如果你確實需要的深度學習算法中,然後DeepLearning4J是Android基於Java的開源解決方案: https://deeplearning4j.org/android

0

STEP 1)

創建一個訓練數據庫。 您需要一些標記爲「下降」和「不下降」的加速計數據樣本。 因此,您將基本記錄不同情況下的加速度並標記它們。即給出數據量的數量級,從0.5到5秒的1000到100,000個週期。

STEP 2)

使用SK學習python。嘗試使用不同的模型來分類數據。 X是包含3個加速度軸的樣本的矢量。 Y是你的目標。 (下降/不下降) 您將創建一個分類,可劃分X到Y

STEP 3)

讓您的分類與Android兼容。 Sklearn-porter將以您喜歡的編碼語言移植您的代碼。 https://github.com/nok/sklearn-porter

STEP 4)

在應用程式這個端口分類。用數據提供它。