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)

在应用程式这个端口分类。用数据提供它。