薛源,殷锋,袁平
(1.四川大学计算机学院,成都 610065;2.西南大学计算机科学与技术学院,成都 610041;3.重庆大学数学与信息工程学院,重庆 400044)
近年来,随着人们对健康的重视,室内人体运动识别受到了越来越多的关注,各种识别方式层出不穷。在人体动作识别的发展过程中,识别技术不断创新。基于图像的识别技术对光线的要求较高,同时也需要被识别对象在视觉范围内才可以进行准确识别;基于传感器的可穿戴设备会在一定程度上对用户的生活造成影响,而且其识别的准确率也不能很好地保证。
随着Wi-Fi技术的发展,普通商用Wi-Fi设备开始被人们所重视,一般的Wi-Fi设备就可以对人体动作进行研究。2013年,Pu等人提出了WiSee[4]系统,用来对房间内的人体手势行为进行识别,其准确度达到了94%。
2014年,B.Kellogg等人提出了AllSee[3],通过分析RSS信号对手势动作进行识别,该系统取得了97%的识别精度。2015年,Abdelnasser等人提出了WiGest[1]。它通过利用通用Wi-Fi设备的RSSI信号对上下变动的七种手势进行分析,达到了87.5%(单AP)和96%(三AP)的精确度。该系统通过分析信号的上升沿、下降沿以及其停顿来描述复杂的手势。2016年,Tan.S等人提出WiFinger[2]在处理环境影响方面有了较大的改进。将频域CSI信号转换为时域功率时延谱,可以去除延迟较长的信号分量,从而减轻多经效应的影响。2018年,Fan.T等人提出了WiCatch[5],与以往的识别系统不同,在该系统可以识别有限的双手手势动作。
系统分为发射器和接收器两部分。发射器是一部2.4GHz的单天线路由器,接收器是经过改造的Wi-Fi雷达[8]。系统采集CSI信号,并依据其变化情况进而测定房间内人体运动情况。
在无线通信中,通常使用信道冲击响应(Channel Impulse Response,CIR)对无线信道的多径传播进行建模,系统输出可表达为:
其中,αi,θi和 τi分别表示多径传播下,第 i条传播路径的无线信号的幅度的衰减尺度、相位偏移的尺度以及时间延迟的大小。δ(τ)表示狄拉克脉冲函数。CIR和信道频率响应(Channel Frequency Response,CFR)互为傅立叶变换,因而可以通过对CFR的测量间接获得CIR。本文中通过采集CSI(CFR的间隔采样)信号获取信息。
CSI是物理层的信道信息,反映了无线信道的性能,它可以表示为:
其中,H(fk)表示中心频率为 fk的子载波的CSI,||H(fk)||表示该子载波的幅频响应,∠H(fk)表示该子载波的相频响应。
由于环境无线信号的存在和设备内部的电流等因素,所获取到的数据中包含着大量的噪声,这些噪声会严重影响数据分析。
对于原始数据,首先需要将个别离群点去除。因为设备原因,有时信号会出现明显的突变。为此,本文采取了 Hampel滤波,将不在区间 [μ-γ×σ,μ+γ×σ]范围内的点都定义为离群点。其中,μ为数据平均值,σ为数据标准差,σ为倍数,本文中将其定为3。样本数据值与中值相差3倍的标准差,则用中值替换该样本值。与中值滤波器简单地使用窗口数据的中值作为过滤后的数据值相比,Hampel滤波器对于数据的处理更加细致,因此减小了过度过滤的可能。
由于人体动作的频率都集中在中低频区间,在进行过初步处理后,所取得的图像中仍然具有很强的抖动性。这是因为所取得的数据是室内多条多径信号和电磁噪声等多种噪声叠加后产生的采样结果,有大量无关信息。为了取得更直观且更精确的动作信息,我们需要将高频分量和直流分量去除。对于不同的人体动作,频率范围如表1所示。
表1 常见行为频率图[6]
本文采用数字滤波的方式对数据进行再次处理。数字滤波器的系统函数可以表示如下:
与之相对应的表示滤波器输入信号和输出信号关系的常系数线性差分方程表示如下:
本文采用常见的巴特沃斯滤波器对数据进行处理。对于巴特沃斯滤波器,其幅度平方函数为:
其中,ω表示信号频率,ωc表示滤波器的截止频率,n表示滤波器的阶数。巴特沃斯滤波器在过滤时能够较好地保持通带内信号的幅值。由于研究目标是人体动作,根据表1,选择基本频率为0-300Hz。
通过表中数据可以对滤波范围进行一定的估计,滤波前后的图形如图1。可以看出,环境噪声对接收端的CSI测量值产生了较大影响,经过滤波以后,情况得到了明显改善。
图1 滤波前后的对比情况
对信号进行预处理后的信息包含了有效的动作信息。但是在这些信息中,包含动作信息的同时,也包含了一些无动作时的信息。为了对动作进行提取,首先需要对信号进行分割。
在一个OFDM系统内,子载波之间的相关矩阵很容易求出,由此可以得到相关矩阵的特征向量和特征值。在安静的环境下,第二个特征向量会在相邻子载波之间随机变化。在环境内出现动作时,子载波之间出现一定的相关性,它的第一个插值会变得更小,该值可以表示为:
其中,Nc是子载波的个数,|q2()l-q2(l-1)|是相邻子载波的系数差,通过来判断是否有动作出现。通过对数据段的切分,可以将每个动作所对应的时间域取出,方便进行进一步的分析。
在取得动作片段以后,需要对动作片段进行分类识别。由于不同的动作所导致的CSI信号变化不同,从整体变化的方式来看,在同一时间段内,子载波之间虽然存在有微小的差异,但是其基本的变化趋势是相同的。为了获得更加精确的运动情况,在处理中,本文充分利用了30个子载波的数据构造特征矩阵。
基于上述原因,本文选择方差作为动作的特征值。对于任一CSI序列,其方差可以表示该段序列的离散程度和变化情况。根据所有子载波的这一特点,结合SRC分类算法,本文对t时间内的CSI序列求移动方差。
对于一个CSI序列H={H1(1),H2(2),H3(3)…Hk(t)},计算其在滑动窗口m内的CSI序列方差的公式为:
其中,Hk(t )代表在t时刻内,第k个子载波的CSI幅值,由该式可以计算得到一个特征方差矩阵,该矩阵包含了子载波的信号特征,同时也能反映出由于人体动作所引起的CSI变化情况。不同的人体动作(站起、行走)等动作所引起的移动方差有明显的区别。
在上述过程中,我们得到了不同动作最具代表性的特征,需要一个正确的分类器来进行识别。本文采用支持向量机(SVM)对不同动作进行分类。由于原始数据当中的数据并不全部都是线性可分的,因此需要将其原始空间映射到高维空间,从而对数据集进行区分。本文采用LIBSVM[7]进行处理。
本文设计了一套基于Wi-Fi信号的人体动作识别系统。人体在Wi-Fi环境中运动时,会对信号波形产生一定的影响,系统首先对数据信号进行采集,然后对采集到的数据进行一系列的去噪操作,接着对其进行分割并计算其特征值,最终采用LIBSVM系统进行动作分类,从而可以对人体运动情况进行简单的识别和判断,具有一定的应用价值。