训练Android应用程序使用机器学习识别传感器模式

训练Android应用程序使用机器学习识别传感器模式,android,machine-learning,tensorflow,accelerometer,android-sensors,Android,Machine Learning,Tensorflow,Accelerometer,Android Sensors,我希望我的应用程序能够在携带手机的用户摔倒时检测,只使用加速计数据(因为它是所有智能手机上唯一可用的传感器) 我首先尝试实现一种检测自由落体的算法(加速度计总加速度接近零,然后是由于撞击地面而产生的高加速度,以及当用户快速下楼时的一段短时间静止以消除误报),但是有很多方法可以落下,对于我的算法实现,我总能找到一个没有发现坠落或错误发现坠落的案例 我认为机器学习可以帮助我解决这个问题,通过学习来自不同设备的大量传感器值,不同的采样率,什么是下降,什么不是 Tensorflow似乎是我所需要的,因为

我希望我的应用程序能够在携带手机的用户摔倒时检测,只使用加速计数据(因为它是所有智能手机上唯一可用的传感器)

我首先尝试实现一种检测自由落体的算法(加速度计总加速度接近零,然后是由于撞击地面而产生的高加速度,以及当用户快速下楼时的一段短时间静止以消除误报),但是有很多方法可以落下,对于我的算法实现,我总能找到一个没有发现坠落或错误发现坠落的案例

我认为机器学习可以帮助我解决这个问题,通过学习来自不同设备的大量传感器值,不同的采样率,什么是下降,什么不是

Tensorflow似乎是我所需要的,因为它似乎可以在Android上运行,但尽管我可以找到教程将其用于离线图像分类(),但我没有找到任何帮助来制作从运动传感器值学习模式的模型

我试图通过入门页面学习如何使用Tensorflow,但失败了,可能是因为我不太精通Python,也没有机器学习背景。(我精通Java和Kotlin,熟悉Android API)

我正在寻求社区的帮助,帮助我使用Tensorflow(或机器学习中的其他东西)训练我的应用程序识别跌倒和其他运动传感器模式


作为提醒,Android以随机速率报告运动传感器值,但为每个传感器事件提供以纳秒为单位的时间戳,该时间戳可用于推断自上一个传感器事件以来经过的时间,并且传感器读数作为每个轴(x、y、z)的浮点(32位)。

如果数据组织良好,然后,您可以使用基于Java的Weka机器学习环境:

您可以使用Weka来处理数据上的所有不同算法。Weka使用ARFF文件作为数据。如果您的数据是JSON或CSV格式的,那么很容易创建它。 一旦你找到了一个有效的算法/模型,你就可以轻松地将其放入你的Android应用程序中:

如果你不需要深入学习算法,你真的不需要Tensorflow,我认为你不需要。如果您确实需要deep learning algo,那么DeepLearning4J是一款基于java的Android开源解决方案: 步骤1)

创建一个培训数据库。 您需要一些标记为“坠落”和“未坠落”的加速计数据样本。 所以你基本上会记录不同情况下的加速度,并给它们贴上标签。i、 e.给出数据量的数量级,1000到100000个0.5到5秒的周期

步骤2)

使用SK学习python。尝试使用不同的模型对数据进行分类。 X是包含3个加速度轴样本的向量。 Y是你的目标。(坠落/未坠落) 您将创建一个可以将X分类为Y的分类器

步骤3)

使您的分类器与Android兼容。 Sklearn porter将以您喜欢的编码语言为您移植代码。

步骤4)


在你的应用程序中实现这个移植的分类器。给它输入数据。

嗨,你能实现坠落检测吗?我还想在加速计数据上应用一些ML。@TinaJ我没有时间尝试当前的解决方案,但我想知道其中一个是否适合您!看起来Weka是个不错的工具。如果我有时间,我想知道这有多容易。我也和你一样,没有python背景(只有Java)!请告诉我你的ML进展情况!哈哈