文献阅读01 《WiFall: Device-Free Fall Detection by Wireless Networks》
检索关键字:Wireless, channel state information, fall detection, device-free, machine learning
发表期刊:IEEE TRANSACTIONS ON MOBILE COMPUTING(TCM),第16卷第2期,2017-02-01
作者:Yuxi Wang, Student Member, IEEE, Kaishun Wu, Member, IEEE, and Lionel M. Ni, Fellow, IEEE
Abstract
- 文章使用 CSI(Channel State Information) 作为活动指示信号;
- WiFall可实现单人的跌倒检测。在文章所述的三种测试环境–客厅、实验室、宿舍中的平均检测准确率为90%,误报率为15%。使用随机森林算法也可以达到94%的准确率和13%的误报率。
1 INTRODUCE
文章主要贡献:
- 文章探索了细粒度的 CSI 进行跌倒检测的可行性。利用时间稳定性和频率多样性设计了 WiFall ,一种无源无设备的跌倒检测系统。
- 从非侵入式检测出发,使用单类 SVM 和随机森林算法对不同的人行为进行分类。
文章结构:在第2节中介绍 WiFall 的相关工作,在第3节中介绍背景知识。在第4节中介绍 WiFall 系统的详细设计,第5节介绍Wi Fall系统的评估方法,第6节给出评估结果,在第7节给出关于 WiFall 的结论和讨论。
2,3 章这里略过,有需请自行阅读
4 WIFALL SYSTEM
本章首先介绍 WiFall 的系统架构,再对系统中的主要模块进行详细说明
4.1 System Overview(系统概要)
-
如图.2 所示 WiFall 系统由感知(Sensing)、学习(Learning) 和报警(Alerting) 3个主要阶段组成。
-
感知阶段。AP 端发射信号,STA端在同一 interest 区域采集 CSI 信息。这里原文描述是 in the same area of interest 我没理解这个 interest area 是什么意思,可能就是 LOS([LOS介绍](视距无线传输 (Line of Sight,LOS)-CSDN博客)) 区域。
-
学习阶段。本阶段包含三个模块:数据处理、剖面构建、活动决策模型。作者从经过降噪和重构的 CSI 数据中提取 CSI 轮廓。在训练过程中收集的概要文件存储在概要文件数据库中,在测试过程中收集的概要文件通过应用两种机器算法进行活动决策。
-
报警阶段略过,有需请阅读原文。
4.2 Data Processing(数据处理)
4.2.1 数据重构
作者使用 CSI Tool 采集 CSI 信号,原始数据维度为:
N
t
x
×
N
r
x
×
30
Ntx \times Nrx \times 30
Ntx×Nrx×30
三个维度分别为发射天线数,接受天线数,一对收发天线间通信信道上的30条子载波。一个 CSI 数据包包含 9 个 stream ,可以表示为:
CSIi,j 中,i 为 stream 编号,j 为子载波编号。文章使用 CSI 幅值信息进行活动分类,后文的 CSI 也都指幅值信息。
-
人体活动对 9 个 stream 的影响不同,而对 30 条子载波的影响相似,如图3,4所示:
所以作者尝试将不同 stream 的 30 条子载波分别聚合。聚合公式为:
f0 为中心频率。故聚合得到的每个时隙的 CSI 数据为一个 9 列的矩阵,如下所示:
-
但是在多径丰富的环境中,聚合会部分地损失子载波的频率分集,即会损失部分特征,所以作者将 CSI 数据包重构为:
实际就是保留全部子载波,只是将编号相同的子载波置于相邻位置。重构后的数据为一个 270 列的矩阵,作者将这个 270 列的矩阵用于跌倒识别。而上述的 9 列矩阵 CSISt 用于异常检测。
4.2.1 数据降噪*
环境中的温度和房间陈设等环境因素也可能造成接受信号的波动,作者使用加权移动平均滤波器(weighted moving average filter) 降低环境噪声。公式如下:
式中先对 CSI 数据进行加权求和,再使用归一化后的权重计算平均值,其中 m 为窗口大小。
4.3 Profile Construction(剖面构造)
本节介绍如何构建 CSI 轮廓
4.3.1 Anomaly Detection(异常检测)
异常检测目的是将 CSI 信息中的人体活动区间截取出来,并分离出相应的异常模式,即识别出活动的发生。
- 文章异常检测基于局部离群因子算法实现(LOF),文章将每一个 stream 作为 LOF 函数的输入。本文中,如果一个 stream 中出现离群点,就认为其为异常 stream,如果9个 stream 中多数 stream 为异常的,则认为该段数据对应的活动是异常的。
- LOF 实现:
-
K-临近距离。在距离数据点 P 最近的几个点中,第 k 个最近的点和点 P 之间的距离称为 K-临近距离,记为 K − d i s t a n c e ( p ) K-distance(p) K−distance(p)。 d k ( p ) = d ( p , o ) d_k(p) = d(p,o) dk(p)=d(p,o),这里的距离计算可以采用欧式距离、汉明距离、马氏距离等。
-
K-距离领域。以点 P 为原点,以K-邻近距离 d k ( P ) d_k(P) dk(P)为半径画圆,这个圆内的范围就是K-距离邻域, N k ( p ) = [ d ( p , o , ) < = d k ( p ) ] N_k(p)=[d(p,o^,)<=d_k(p)] Nk(p)=[d(p,o,)<=dk(p)]。
-
可达距离。在点 P 与 O 的距离中、距离点 O 最近的第 K 个点中取较大的一个, r e a c h − d i s t a n c e k ( o , p ) = m a x [ d k ( o ) , d ( o , p ) ] reach-distance_k(o,p)=max[d_k(o),d(o,p)] reach−distancek(o,p)=max[dk(o),d(o,p)]。
-
局部可达密度。点 P 的局部可达密度是 P 的最邻近的平均可达距离的倒数,距离越大,密度越小。计算每个点的局部第k局部可达密度:
-
局部异常因子。LOF算法衡量一个数据点的异常程度,并不是看它的绝对局部密度,而是看它跟周围邻近的数据点的相对密度。数据点 P 的局部异常因子为点 P 邻域内点的局部平均局部可达密度和数据 P 的局部可达密度的比值。LOF的值越大,点越异常,LOF 趋近 1 说明点为正常点。计算每个点的第k局部离群因子:
- 问题:问题:LOF 是基于局部密度的异常检测算法,但是文章中 LOF 的输入是一个 stream,其中的30条子载波由于频率不同,幅值差距较大,直接将一个 stream 输入 LOF 函数可能造成将另一个子载波的值计算为异常值。这一点作者没有写明他们的处理方式。
4.3.2 SVD Matrix Factorization
-
特征值分解是矩阵分解的一种方法,矩阵分解也称为矩阵因子分解,即将原始矩阵表示成新的结构简单或者具有特殊性质的两个或多个矩阵的乘积,类似于代数中的因子分解。特征值分解的实质是求解给定矩阵的特征值和特征向量,提取出矩阵最重要的特征,其中特征值分解公式: A = Q Σ Q − 1 A=QΣQ^-1 A=QΣQ−1,Q为特征向量矩阵,Σ为特征值对角矩阵。 特征值分解仅适用于提取方阵特征,但在实际应用中,大部分数据对应的矩阵都不是方阵,这时就需要提取主要特征;奇异值分解是将任意较复杂的矩阵用更小、更简单的3个子矩阵的相乘表示 ,用这3个小矩阵来描述大矩阵主要的特性。
-
矩阵 A 的 SVD 分解为: A = U Σ V T A=UΣV^T A=UΣVT。 U U U为左奇异向量矩阵,大小为 m×m; Σ Σ Σ为奇异值矩阵,一个 m×n 的对角矩阵,主对角线上的元素都为奇异值; V T V^T VT为右奇异值矩阵,大小为 n×n。
-
问题:文章没有说明其提取出来的前三个特征值是什么,我们能够猜测是前三个特征向量,但是特征向量跑出来的图很奇怪,所以这里不清楚后文 SVM 的特征提取是使用 SVD 处理后的数据还是原本的 CSI 数据。
总结
文章在书面上似乎只是描述了作者使用 CSI 识别人行为的处理思路,对于每一步当中的数据处理和数据结构没有做更加细致的说明,这也为文章复现带来的困难。即作者只写明了自己使用的方法,而没有具体的对每一步处理的输入输出进行说明。