在移动互联网时代,传统服务与移动互联网技术的深度融合,给金融、军事、交通、娱乐等各个方面带来新的发展动力,为人们的生产生活带来极大便利。智能化生活辅助是移动互联网时代重要发展方向,自动感知用户当前状态是智能家居的重要前提。
自动感知主要分为主动式和被动式两类。前者通过用户携带设备采集的数据识别用户活动。目前主动活动识别方面的研究主要集中于利用全球定位系统 (Global Positioning System, GPS)、加速计、陀螺仪、气压计、地磁传感器、WiFi芯片等获取的数据进行识别。例如Pei等[1]采用GPS与WiFi对人的行为:坐、普通行走、快速行走、站、快速转向、缓慢转向进行识别;Guinness[2]使用手机的GPS与加速计和地理信息 (坐标点,车辆运动与停止) 等信息,采用机器学习算法识别用户行为,包括步行、跑动、驾驶、乘公交、乘火车,但是GPS耗电较大,难以长时间持续工作,而且在室内环境GPS信号可用性较差,为此,研究人员转向使用功耗较小的传感器,例如加速计、陀螺仪、气压计、地磁传感器等;Google开发了活动识别应用程序接口 (Application Programming Interface, API) 可使用功耗较低的加速计数据[3],利用监督机器学习算法识别用户静默、行走与驾驶活动;Frank等[4]等利用用户腰间放置的加速度传感器识别用户行为,可以识别坐、站、步行、跑动、跳跃、落下、躺; Elhoushi等[5-7]使用加速计、陀螺仪、地磁仪、气压计识别用户高程发生变化的情况,例如上楼梯与下楼梯、乘坐电梯、站立与乘扶梯等,但是,加速计读数依赖于位置与朝向,需要非常高的采样率,因此处理复杂度较高,需要很多数据才能训练得到满意的结果;Vanini[8]利用功耗与采样率更低的气压计识别用户楼层变化;Sankaran等[9]也使用气压计识别用户静默、行走与驾驶行为,测试结果好于Google的活动识别算法;Wu等[10]采用气压计识别室内门的开关, 虽然气压计功耗低,且具有较好的识别能力,但是大多数手机没有气压计,难以大规模普及使用。总的来说,主动式活动识别需要用户携带特定设备,有一定的局限性。
被动式活动感知则不需要用户携带任何设备,采用特定基础设施采集用户活动产生的数据识别用户当前状态。采用的信号包括调频 (Frequency Modulation, FM)[11]、WiFi[12]等。为了提高识别精度,采样率都在10 Hz以上,所使用的分析方法大体上可以分为四类:一是对信号进行傅里叶变换,获取信号的频域信息,利用频域特征识别用户状态[13];二是采用机器学习算法,对信号特征进行分类,通过匹配识别用户状态[14];三是基于信号多普勒效应识别用户状态[15];四是对信号强度的升降规律进行总结,判断用户状态[16]。这些被动式的活动识别依赖于特殊设备,难以广泛部署。
针对上述两种方法的缺点,本文提出一种基于普通WiFi信号热点和智能手机的活动识别算法,主要原理是:无线信号传播会受到用户行为的影响,用户不同行为会导致信号分布有所区别,通过对信号强度特征的分析,可以反推出用户活动。主要方法是利用机器学习算法对实时接收到的WiFi信号特征进行分类,通过特征匹配实现活动识别。实验表明本算法能够有效识别站立、躺下和行走三种活动,并能够识别用户行走方向,在智能家居辅助中具有广泛用途和重要意义。
1 算法框架本文算法流程如图 1所示,主要分为三个阶段:数据输入、训练和测试。
为了实现本算法,需要在房间内设置WiFi接入点和信号接收设备,这里采用普通Android智能手机测量WiFi信号并记录。测试人员在信号发射设备与测量设备之间的空间活动,由于人体对无线信号的吸收、遮挡和反射,测量设备接收到的信号在不同条件下信号特征不同。手机采集到不同活动下的无线信号后,为这些信号添加标签,分别表示该信号是在什么条件下测量的。将这些数据随机分为训练集和测试集:在训练阶段,采用不同的机器学习算法对训练集数据进行分类,得到不同的分类器; 在测试阶段,使用测试集数据评价不同分类器分类效果,选择分类精度最好的分类器进行动作识别。下面详细介绍这三个阶段。
2 基于无线信号特征的活动识别 2.1 数据输入数据输入阶段分为三个步骤,分别是测量、预处理和特征提取,下面分别介绍这三个步骤。
2.1.1 测量利用智能手机的WiFi芯片获取无线热点的信号强度。未Root智能手机的WiFi芯片刷新率约为2 Hz,虽然可以对手机Root后将刷新率提升到10 Hz,为了提高算法可用范围,本文使用2 Hz的数据作为输入,采集到的数据为S:
$ S = \{ rs{s_i}|i = 1, 2, \cdots, T\} $ | (1) |
其中: rssi为第i时刻接收到的信号强度,T为测量时长。
图 2给出了不同活动条件下,接收到的信号强度。从图 2可以看出,在不同的活动条件下,测量到的无线信号有差异,这个差异可以作为活动识别的依据。通过分析信号强度特征就可以反推用户可能的活动状态。
人的活动是动态变化的,单一时刻的测量值难以体现这种动态特性,通常的做法是将测量数据进行分组,将某个时间段内 (识别窗口) 的数据作为一组,分析每组内信号特征,再进行分类与识别。
假设识别窗口为ΔT,每个识别窗口数据不仅包含当前时刻测量值,还包含前
$ W = \{ {w_i}|i = 0, 1, \cdots T-\Delta T + 1\} $ | (2) |
其中:
$ {w_i} = \{ rs{s_{i*\Delta T + j}}|j = 0, 1, \cdots, \Delta T-1\} $ | (3) |
通过分组,每个组内都有很多测量数据,信号特征主要是针对每个分组内的数据进行的计算。本文使用的特征值包括幅度、标准差、N+和N-。
1) 幅度 (Range)。幅度就是组内最大测量值与最小测量值的差,表示信号强度最大变化范围:
$ Range = \max (w)-\min (w) $ | (4) |
其中: max (w) 和min (w) 分别表示w组内的最大值和最小值。
2) 标准差 (Var)。标准差描述数据的离散程度,即测量值与期望的平均距离:
$Var(w) = \sqrt {\sum\limits_{i = 0}^{|w|} {{{(rs{s_i}-mean(w))}^2}/|w|} } $ | (5) |
其中: rssi∈w,mean(w) 表示w内的平均测量值,|w|表示w测量值数量。
3) N+表示同一组内上一时刻测量值比下一时刻测量值大的比例:
$ {N^ + }(w) = \frac{{|\{ rs{s_i} > rs{s_{i + 1}}\} |}}{{|w|-1}} $ | (6) |
其中: rssi、rssi+1∈w。
4) N-表示同一组内上一时刻测量值比下一时刻测量值小的比例:
$ {N^-}(w) = \frac{{|\{ rs{s_i} < rs{s_{i + 1}}\} |}}{{|w|-1}} $ | (7) |
其中: rssi、rssi+1∈w。
从上述定义可以看出,这4个特征并不涉及信号绝对大小,而是体现了信号强度变化情况。无线信号传播受大量因素的影响,包括天气、室内布局、人员运动等,因此信号强度是时刻变化的。通过对信号变化情况的分析,可以推断出信号传播环境的变化,也就能够推断出影响信号传播因素的变化情况。因此,这里选取这4个体现信号强度变化的变量。值得注意的是这4个变量的选取并不是唯一的,未来还可以提出并使用更多的变量。
2.2 训练训练是为了得到分类器,用于判断用户活动。训练数据是在已知用户活动类型的情况下采集的,因此,数据中增加了用户活动类型标签。
为了寻找最佳机器学习算法,本文在训练阶段将使用各种不同的机器学习算法对加了标签的训练数据进行分组,包括决策树 (Decision Tree,DT)、随机森林 (Random Forest,RF)、支持向量机 (Support Vector Machine,SVM)、K近邻 (K Nearest Neighbor,KNN)、逻辑回归 (Logistic Regression,LR)、朴素贝叶斯 (Naive Bayesian,NB) 和人工神经网络算法 (Artificial Neural Network,ANN)。
本文采用机器学习工具ORANGE[17]进行数据分类。ORANGE是一个图像化的机器学习工具箱,不用编写一行代码就能够使用大量机器学习算法对数据进行读取、处理和可视化。ORANGE界面如图 3所示。
从图 3可以看出,ORANGE主界面分为两部分,左侧是工具组件,右边是分析流程界面。通过拖拽方式将左边工具按照机器学习的流程组合起来就可以使用各种算法对数据进行处理。
2.3 测试测试是为了寻找最佳分类器,因此,输入也是带有标签的测量数据。在测试阶段,利用训练阶段得到的分类器,对测试数据进行分类。不同分类算法对同一组数据分类效果可能是不同的,为了评价不同分类算法性能,人们定义了很多评价指标,主要包括:
1) 混淆矩阵 (Confusion matrix)。
混淆矩阵是评价不同分类算法最简单直观的方法,对类别数量没有限制。混淆矩阵中的每行表示真实类别,每列表示预测的类别。第i行和第j列元素nij表示类型i被识别为类型j的次数。假设总的识别次数是n,类型i的识别次数为ni。混淆矩阵越接近于对角矩阵,说明该识别算法效果越好。表 1是一个混淆矩阵示例。
基于混淆矩阵,有表 2所示的评价指标。
基于上述定义,下面给出了本文所使用的评价指标:
2) 正确率 (Accuracy, Acc)。正确率是指被正确分类的样本比例:
$ Acc = \sum\limits_i {{n_{ii}}/n} $ | (8) |
3) 精度 (Precision, Prec)。精度就是指被归为该类中真正属于该类的比例:
$ Pre{c_i} = T{P_i}/(T{P_i} + F{P_i}) $ | (9) |
4) 敏感度 (Sensitivity, Sens)。又被称为真正率 (True Positive Rate,TPR)、召回率 (Recal) 或者命中率 (Hit),也就是正确分类概率:
$ Sen{s_i} = T{P_i}/(T{P_i} + F{N_i}) $ | (10) |
5) 特效率 (Specificity, Spec)。又被称为真反率 (True Negative Rate,TNR),也就是反例中被正确分类的概率:
$ Spe{c_i} = T{N_i}/(F{P_i} + T{N_i}) $ | (11) |
6) F测度 (F-Measure, F1)。也就是灵敏度和精度的调和平均值:
$ F1 = 2/(1/Sen{s_i} + 1/Pre{c_i}) $ | (12) |
为了对算法进行测试,使用华为P9 Plus开启便携式热点功能作为信号发射器,实验环境为如图 4所示的会议室。
会议室面积约25 m2,热点置于会议室一角的座椅,距离地面约0.4 m,接收信号的手机置于房间另一角的座椅,距离地面约0.4 m。基于安卓操作系统编写数据采集软件ActivityRecognition.apk,软件数据采样率设定为0.5 s,采用Meizu MX3作为信号接收器,手机操作系统是Android (version 4.4),软件工作界面如图 5所示。
从图 5可以看出,数据采集界面主要分为两部分,上方的视图是信号强度曲线,下方视图是信号强度变化曲线,变化曲线取值为离散值,0表示当前时刻信号强度与上一时刻相等;-1表示当前时刻信号强度小于上一时刻;1表示当前时刻信号强度大于上一时刻。不同活动条件下的信号强度被记录在文件,用于机器学习和识别。
实验过程中,房间内仅有一人在发射源与接收器之间运动。实验分为3个层次进行,分别是判断室内是否有人,判断室内人的活动类型以及具体活动的细节,使用的时间窗口为2 s。
1) 判断室内是否有人。
判断室内是否有人对室内监控有重要意义。例如,家里上班时间出现异常信号,则可能是家里有入侵者,此时可以发送警报提醒。表 3是使用不同算法识别室内是否有人的准确度。
从表 3可以看出,KNN算法分类准确度最高,达到0.805 4,接下来是朴素贝叶斯算法、决策树和随机森林算法,这三个算法的识别准确度都在70%以上。
2) 判断室内人的活动类型。
室内有人的情况下,有时候还需要知道人处于什么状态,判断人是躺下、站立还是行走,这对于老人健康监控有重要意义。例如,在平时活动时间发现老人长时间处于躺下状态,则可以发送信号提醒老人可能滑倒。表 4是不同算法准确度对比。
从表 4中可以看出,人工神经网络、支持向量机和决策树识别准确度最高,达到95.65%,可以有效识别用户不同状态。
表 5是采用决策树算法识别室内用户室内站立、躺下和行走的混淆矩阵。
从表 5可以看出,决策树算法能够有效从三种状态中区分出躺下,准确度达到100%,站立和行走有可能识别错误,识别站立和行走的准确度分别为85%和94%。
3) 室内人的活动细节。
上述实验只能判断大概的活动,有时候需要更多细节。例如,判断行走的方向是在靠近接收机或者远离接收机运动。表 6是不同算法行动方向估计不同评价指标对比, 这里的方向分为两种,分别是靠近接收机和远离接收机。
从表 6可以看出,决策树在特效率、精度这两个指标最佳。朴素贝叶斯算法在识别准确度、敏感度、F测度这三个指标性能最佳,其中,所有算法识别准确度都在75%以上,朴素贝叶斯算法的准确度达到80%。
4 结语本文基于机器学习算法,提出利用广泛存在的WiFi信号强度识别室内活动。实验结果显示,本文算法能够以80%以上概率判断室内是否有人; 在室内有人的情况下,能够以95%以上概率判断人处于躺下、站立或者行走状态,并80%的概率识别人的运动方向。
实验结果显示,无论是识别是否有人,还是识别人的运动详细信息,准确度还没有达到100%,原因可能是本文所使用的信号所包含的信息不足以进行有效判断。未来有三方面工作可以开展:第一是继续挖掘可能存在的体现信号变化情况的变量,基于新的变量进行活动识别;第二是采用更多的信号发射器与接收机,通过多个发射与接收机合作,以更高的精度识别室内活动更多的细节;第三是结合其他传感器进行判断,例如气压计等,通过判断周围气压变化,提高识别精度。
[1] | PEI L, GUINNESS R, CHEN R, et al. Human behavior cognition using smartphone sensors[J]. Sensors, 2013, 13(2): 1402-1424. doi: 10.3390/s130201402 |
[2] | GUINNESS R E. Beyond where to how:a machine learning approach for sensing mobility contexts using smartphone sensors[J]. Sensors, 2015, 15(5): 9962-9985. doi: 10.3390/s150509962 |
[3] | Activity Recognition. Google's activity recognition API[EB/OL].[2016-02-20]. http://developer.android.com/google/play-services/location.html. |
[4] | FRANK K, NADALES V, JOSEFA M, et al. Reliable real-time recognition of motion related human activities using MEMS inertial sensors[EB/OL].[2016-06-20]. http://elib.dlr.de/64996/2/activityRecognition.pdf. |
[5] | ELHOUSHI M, GEORGY J, WAHDAN A, et al. Using portable device sensors to recognize height changing modes of motion[C]//Proceedings of the 2014 IEEE International Instrumentation and Measurement Technology Conference. Piscataway, NJ:IEEE, 2014:477-481. |
[6] | ELHOUSHI M. Advanced motion mode recognition for portable navigation[EB/OL].[2016-06-20].https://www.researchgate.net/profile/Mostafa_Elhoushi/publication/309619569_Advanced_Motion_Mode_Recognition_for_Portable_Navigation/links/581a541808aed2439386b63f/Advanced-Motion-Mode-Recognition-for-Portable-Navigation.pdf. |
[7] | ELHOUSHI M, GEORGY J, KORENBERG M, et al. Robust motion mode recognition for portable navigation independent on device usage[C]//Proceedings of the 2014 IEEE/ION Position, Location and Navigation Symposium. Piscataway, NJ:IEEE, 2014:158-163. |
[8] | VANINI S, GIORDANO S. Adaptive context-agnostic floor transition detection on smart mobile devices[C]//Proceedings of the 2013 IEEE International Conference on Pervasive Computing and Communications Workshops. Piscataway, NJ:IEEE, 2013:2-7. |
[9] | SANKARAN K, ZHU M, GUO X F, et al. Using mobile phone barometer for low-power transportation context detection[C]//Proceedings of the 12th ACM Conference on Embedded Network Sensor Systems. New York:ACM, 2014:191-205. |
[10] | WU M, PATHAK P H, MOHAPATRA P. Monitoring building door events using barometer sensor in smartphones[C]//Proceedings of the 2015 ACM International Joint Conference on Pervasive and Ubiquitous Computing. New York:ACM, 2015:319-323. |
[11] | SHI S, SIGG S, JI Y. Activity recognition from radio frequency data:multi-stage recognition and features[C]//Proceedings of the 2012 IEEE Vehicular Technology Conference. Piscataway, NJ:IEEE, 2012:1-6. |
[12] | ABDELNASSER H, HARRAS K A, YOUSSEF M. Ubibreathe:a ubiquitous non-invasive WiFi-based breathing estimator[C]//Proceedings of the 16th ACM International Symposium on Mobile Ad Hoc Networking and Computing. New York:ACM, 2015:277-286. |
[13] | PU Q, GUPTA S, GOLLAKOTA S, et al. Whole-home gesture recognition using wireless signals[C]//Proceedings of the ACM SIGCOMM 2013 Conference on SIGCOMM. New York:ACM, 2013:485-486. |
[14] | 蔡晓东, 杨超, 王丽娟, 等. 验证和识别相融合的深度行人识别网络[J]. 计算机应用, 2016, 36(9): 2550-2554. ( CAI X D, YANG C, WANF L J, et al. Deep network for person identification based on joint identification-verification[J]. Journal of Computer Applications, 2016, 36(9): 2550-2554. doi: 10.11772/j.issn.1001-9081.2016.09.2550 ) |
[15] | CHEN X, EDELSTEIN A, LI Y, et al. Sequential Monte Carlo for simultaneous passive device-free tracking and sensor localization using received signal strength measurements[C]//Proceedings of the 201110th International Conference on Information Processing in Sensor Networks. Piscataway, NJ:IEEE, 2011:342-353. |
[16] | ABDELNASSER H, YOUSSEF M, HARRAS K A. Wigest:a ubiquitous WiFi-based gesture recognition system[C]//Proceedings of the 2015 IEEE Conference on Computer Communications. Piscataway, NJ:IEEE, 2015:1472-1480. |
[17] | ORANGE[EB/OL].[2016-06-20].http://www.ailab.si/orange/. |