移动设备抬起唤醒功能

2018/08/08 俞多 机器学习

目前很多设备都支持抬起唤醒。使用支持抬起唤醒功能的手机,在屏幕熄灭时,不用点击手机按钮,只需拿起手机就可以点亮屏幕,为很多人提供了方便,同时也延长了手机按键的寿命。

手机是如何知道你想点亮屏幕的呢, 或者说手机是如何知道你拿起它,是如何做到的?

当我们拿起手机时,手机的传感器数据会跟随拿起的动作产生变化。传感器数据是连续的信号数据,观察一段时间内的传感器变化会更有意义。

这里我做了一个简单的数据采样,可以看一下当设备静止时,加速度传感器和陀螺仪的数据表现:

  • 加速度X,Y,Z轴数据:

  • 陀螺仪X,Y,Z轴数据:

当拿起手机时,加速度传感器和陀螺仪的数据表现:

  • 加速度X,Y,Z轴数据:

  • 陀螺仪X,Y,Z轴数据:

对比两组数据可以看出,当拿起手机时传感器数据的变化非常明显。那我们就可以假设手机系统中有一个特殊的模块,可以根据传感器的数据变化,来识别用户拿起手机的动作。该模块中接收到的传感器数据的变化规律类似上图,那么就可以判断用户当前已经拿起了手机,进而把识别结果传递给显示模块,最终点亮屏幕。

这里的变化规律指的是连续数据的特征值, 如统计学中的均值、方差、最值等。

我们收集了平时用户在操作手机时产生的传感器数据,并提取出了每组数据的均值、方差。把每组数据的均值(x轴)、方差(y轴)以散点图(如下图)的形式展现出来,观察到抬起动作的特征数据(蓝色点)基本都在蓝色圈的范围之内,而其它动作产生的特征数据(除蓝色点外其它颜色的点)都分散在坐标系的各个位置。有了这一规律,我们就可以基本确定抬起动作的特征数据范围,通过编写程序来判断本次操作是否为抬起动作。

综上所述,想要判断抬起动作,需要预先收集大量的(用户拿起手机行为的)传感器数据,把这些传感器的特征值提取并归纳,看这些值都在哪些范围波动。有了取值范围就可以编写程序来判断新产生的数据的特征值是否在这个范围之内,综合多个特征的判断可以给出一个总体评分,来识别用户新产生的数据属于抬起动作的概率为多少。最终的识别结果传递给手机显示模块,如果被识别为抬起动作,则唤醒屏幕。如下图所示:

通过以上步骤,可以简单实现一个抬起唤醒的功能。但目前实际应用的抬起唤醒功能是要比上面讲述的要复杂的多,大多数都是用机器学习来实现的,并且不仅要考虑到存储资源及电量的消耗、还要考虑行为识别的准确率。

Search

    欢迎下载我们的APP

    Table of Contents