一种基于WiFi信道状态信息的人体动作识别方法*
2019-11-27郭阿英许志猛陈良琴
郭阿英,许志猛,陈良琴
(福州大学物理与信息工程学院,福州 350108)
随物联网的不断发展和应用,人的感知技术已成为实现以人为中心的物联网应用系统的核心关键技术。其中人体动作识别技术在智能家居[1]、医疗监护[2]和体感游戏[3]等方面有着广阔的应用前景。
现有的人体动作感知技术的实现方法主要分为两大类:一是基于穿戴式传感器的方式,如加速度传感器[4]和标记点式光学动作捕捉等[5];另一类是基于非穿戴式的方式,如基于视频图像[6]和基于雷达的识别[7]等。基于传感器的动作感知技术[8]具有易于采集数据的优点,但需随身携带传感器,造成不便。基于视频图像的动作识别技术[9-10]具有直观、易识别的优点,但该方法对于光照敏感,且在有遮挡时无法工作。基于雷达的活动感知技术[7]具有精度高的优点,然而其成本较高,不利于在物联网中广泛使用。为了满足物联网系统中对低成本、高精度和便携的人体动作感知技术的需求,基于WiFi的动作感知技术应运而生。
基于WiFi的无线局域网作为一种便捷、低成本的通信方式得到了广泛的应用。近年来通过利用广泛部署的无线局域网,研究人员提出了许多新的感知技术。文献[11]提出了利用WiFi的信道状态信息(Channel State Information,CSI)识别运动与静止两种状态。文献[12]提出了一种识别人体摔倒的检测系统Wifall,利用CSI的幅度变化识别出人是否摔倒。而文献[13]提出利用相位差进行实时识别摔倒,设计一个名为RT-Fall的系统,性能优于Wifall,但这两者都只能检测摔倒一个动作。文献[14]分析了CSI 与人体移动速度的动态联系,利用小波分解特征设计算法实现了“走”、“坐”、“站”和“弯腰”等动作的识别,然而其准确率仅为93.1%。
为此,本文通过对滤波的优化设计和动作起止区间的提取,基于线性判别分析算法提出了一种人体动作的识别方法,实现了较高的识别准确率。
图3 人体不同动作所对应的WiFi信号CSI幅值变化
1 系统工作原理
本文设计了一个基于WiFi信号的人体动作识别系统,系统框架如图1所示。WiFi信息采集主要通过两台配备有无线网卡的计算机实现,其中一台计算机配置为发送模式,可控制数据包的发送速率;另一台计算机配置为接收模式,通过csitool[15]工具收集WiFi信号的信号强度值和信道状态信息。收发两台计算机间WiFi信号传播的范围构成了检测空间,人体在检测空间中的活动会使得无线信号的传播受到影响,引起传输信道的变化。因此,通过在接收端计算机对WiFi信号进行检测和处理,可识别出人体活动的动作。
图1 系统框图
WiFi的接收信号强度信息(Received Signal Strength Information,RSSI)用于判断链路的质量,但提供的信息比较单一;而CSI是来自物理层的信息,提供了WiFi信号中30个正交频分复用子载波的信道信息,包括幅度和相位,可提供时域和频域的信道状态变化信息[16]。图2是一次测试中WiFi信号的RSSI值和1、10、25三个子载波的CSI值对比情况。从图中可看出,CSI的幅度变化比RSSI明显,可以看成是更加细粒度的RSSI,能够更加精确地反应人体动作对WiFi信号的影响。此外,观察图中三个子载波可以发现,尽管三个子载波所携带的CSI相似,但是不论是幅值大小还是幅度的变化都具有其独特性。因此,所有的子载波携带的CSI信息均可用于人体动作的识别。为了降低复杂度,本文设计的系统取30个子载波CSI的均值进行分析和处理。
图2 WiFi信号的RSSI值和CSI值
图3是人体做出不同动作时所得到的CSI的幅值。从图3(a)可以看出,人处于静止状态时CSI幅度变化不大;而当人体处于运动状态,CSI幅度波动较大,如图3(b)~图3(f)所示。其中,红色箭头标注的是幅度波动大的区间,对应于人体发生动作的起止区间。从图中可以看到CSI对于环境的变化相当敏感,且不同人体动作所对应的CSI的幅度变化特征也不同。由此,通过对CSI的处理和检测可以实现人体动作的识别。
2 人体动作识别算法
2.1 数据预处理
从图3可以看出,采集到的CSI幅度信息带有大量的噪声。为了减少噪声的影响,本文采用了Hampel滤波结合小波变换去噪的方法对采集到的CSI信息进行预处理。
Hampel Filter[17]的原理是把在区间外任何一个点都视为异常点,并将被判为异常点的数据将由中位数进行替代,对采集数据的异常值具有较好的滤波效果。通过对比图4(a)和图4(b),可以发现Hampel滤波可以很好地去除CSI中的毛刺。
小波变换去噪的原理是信号经过小波分解,得到各尺度系数,经阈值处理后进行重构得到去噪后的信号[18]。小波变换去噪可以很好地保护有用信号的尖峰和突变信号。由于人的动作频率处于低频,本文采用无偏风险估计阈值进行处理。从图4(c)看出,采集到的CSI信息经过Hampel滤波和小波去噪处理后波形变得平滑且保留了人体动作引起的CSI幅度变化信息。
图4 数据去噪结果
2.2 动作起止区间检测
从图3可以看出,人体在静止时,CSI信息变化不大,而能够反映人体动作的CSI信息主要包含在发生动作变化所对应的区间。因此,检测出人体动作发生变化的起止区间对提高动作识别准确率具有重要作用。将图3对应的CSI信息经过滤波处理后求方差可以得到图5所示的CSI幅度方差。
图5 人体不同动作所对应的WiFi信号CSI幅值滑动方差
从图5可以看出,在每个动作的持续的时间内,CSI滑动方差都具有大的波动,当动作完成时,滑动方差的值变小且趋于平稳,与无动作静止时的滑动方差相似。由此我们可以依据CSI幅度方差检测动作的起始点,CSI的方差大于设定的阈值时,即表示人体处于活动状态,由此确定检测区间的起始点。
2.3 特征向量的选择
经过前述处理,系统从运动区间的CSI幅度中提取了以下几个特征作为动作识别的特征向量,如表1所示。
表1 动作识别特征向量
2.4 分类模型的选择
综合考虑算法的复杂度和性能后,本文选用了线性判别式分析算法(Linear Discriminant Analysis,LDA)[19]实现人体动作的识别。LDA是模式识别的经典算法,是一种线性分类器。其基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即在该子空间中有最佳的可分离性。该准则也被称为Fisher鉴别准则。
假设有两个类的样本类C和样本类D,其均值分别为:
(1)
(2)
其类内方差分别为:
(3)
(4)
类内散度矩阵为:
Sw=Sc+Sd
(5)
类间散度矩阵为:
Sb=(μc-μd)(μc-μd)T
(6)
根据Fisher鉴别准则表达式:
(7)
令其比值最大化,即可求得投影直线向量为:
(8)
分割点为:
(9)
因此当值大于此分割点时属于类D,反之属于类C。根据以上分类原则,将表1中的特征向量按照以上的步骤进行分类,从而可得到一个好的分类效果。
3 实验结果分析
3.1 实验测试环境
实验采用一发一收两台计算机实现WiFi信号的发射和接收,无线网卡采用Intel 5300 NIC,选用2.4 GHz频段,发射端采用1根天线,接收端采用3根天线,工作模式采用监控模式,发包率为100个/s。如图6所示,天线距离地面高度为1 m,两天线相距2.4 m。人体活动检测区域为2.4 m×2.4 m,如图7所示。
图6 天线的摆放
图7 测试房间示意图
实验测试人员有9位,每位测试者在检测区域分别做“坐下”、“站起”、“蹲下”、“走”、“捡”5个动作,每个动作重复10次,选其中3位参与者的数据作为测试数据,其余6名参与者的数据作为训练数据。
3.2 性能分析
表2是实验测试结果。从表中可以看出,除了走路的动作识别率为80%,其余的动作识别率均在100%,平均识别率为96%,具有较好的识别效果。
表2 实验结果
图8 不同分类模型对比
3.2.1 分类方法
图8是采取不同的分类模型时对应的动作识别率。三种方法的计算时间相近,但是从图中可以看出,本文采用的LDA分类器的动作识别正确率高于SVM和KNN。
3.2.2 滤波方法
图9是本文采用的Hampel滤波结合小波变换的滤波方法和高斯滤波对应的动作识别率的比较情况。由图可知,本文采用的滤波方法除了走路动作的识别率低于高斯滤波,其他动作的识别率均高于高斯滤波方法,且识别率可达到100%。因此从总体来看,本文采用的滤波方法的优于高斯滤波,具有较好的效果。
图9 不同滤波方法的对比
3.2.3 数据传输速率
对上述5组动作采用不同数据传输速率进行实验,每组动作采集20组数据,不同数据传输速率对应的平均识别率如图10所示。由图可以看出数据传输速率较小时对应的动作识别较小,随着数据传输速率的增大,识别率也逐渐增大。因为当数据传输速率较小时,捕捉到的动作信息也较小。而较高的数据传输速率虽有较高的识别率,但是对设备性能要求较高,也会带来更多的计算量。
图10 不同数据传输速率的对比
图11 室内外环境下的对比
3.2.4 室内外环境
图11是5种动作在室内外环境下对比的平均识别率。室外环境为楼顶。由图可知室外环境下的动作识别率会下降。由于室外的噪声大,且存在风吹树叶产生的干扰性移动物等因素会影响传输信道的稳定性,导致了数据不理想。
4 结束语
本文提出了一种基于WiFi信道状态信息的人体动作感知方法。提出了采用Hampel滤波结合小波变换去噪对采集到的CSI进行处理,以及通过CSI方差识别人体活动区间的方法,构建特征向量并利用线性判别分析作为分类模型,实现了对人体“坐下”、“站起”、“蹲下”、“走”、“捡”5个动作的识别。实验表明该方法具有较好的识别率,对“坐下”、“站起”、“蹲下”、“捡”4个动作的识别准确率可以达到100%,对“走”的识别准确率也可达到80%。需要指出的是,本文的研究是针对单人单个动作的识别,未来还可进一步研究多人同时动作或者发生连续动作的检测,以实现在更复杂的应用场景中人体动作的智能感知和识别。