论文:Brajdic A, Harle R. Walk detection and step counting on unconstrained smartphones[C]//Proceedings of the 2013 ACM international joint conference on Pervasive and ubiquitous computing. ACM, 2013: 225-234.
下面内容主要是对上述文章的翻译、总结、及部分自己的理解。
摘要
文章评估了一些常规的基于智能手机传感器的步伐检测(WD, walk detection)和步数统计(SC, step counting)算法。使用丰富的数据集(27个人,130次行走,6个智能手机放置位置)对这些算法参数了进行优化。结果表明步伐检测WD中使用标准差阈值法,步数统计(SC)中使用窗口峰值检测法的误差率低于3%。6种其他的手机放置位置中,只有后口袋会显著降低步数统计性能,诸多算法都会出现漏检。
Introduction
文章目标是探索基于无约束智能手机有效且鲁棒的步伐检测和步数统计算法。作者调研目前几种步伐检测和步数统计算法,并基于不同位置的智能手机数据进行了评估。作者定义了一种用于统一比较不同算法的度量标准,基于此可以得出在将来基于智能手机的PDR系统中能够使用的最优算法。本篇论文与其他当前已经存在的工作的不同之处在于:
- 采用消费级智能手机进行采集数据;
- 智能手机不需要与使用者固定,允许被自然的使用;
- 分析了大量的数据,涉及27个不同的个体以不同的行走速度产生的130组传感器轨迹;
- 在某一个智能手机放置位置处,基于不同的标准算法可以得到一个公平,量化的比较结果。
本文研究中所使用的加速度计数据集(含说明)均可以在下面链接里免费获取:[数据集](http://www.cl.cam.ac.uk/ ̃ab818/ubicomp2013.html)。
1 算法测试
步伐检测(walk detection) | 步数统计(step counting) | |
---|---|---|
时域 | 加速度计模长阈值:MAGN_TH,加速度计信号能量阈值:ENER_TH,标准差阈值:STD_TH | |
时域 | 窗口峰值检测:WPD | |
时域 | 过零统计:MCC | |
时域 | 归一化步数统计+标准差阈值:NASC+STD_TH | 归一化步数统计:NASC |
时域 | 动态时间规划:DTW | |
频域 | 短时傅里叶变换:STFT | 短时傅里叶变换:STFT |
频域 | 连续小波变换:CWT | 连续小波变换:CWT |
频域 | 离散小波变换:DWT | 离散小波变换:DWT |
特征聚类 | 隐式马尔科夫模型:HMM | 隐式马尔科夫模型:HMM |
特征聚类 | K-Means聚类算法:KMC | K-Means聚类算法:KMC |
步伐检测的任务是提取迈步发生的时间段;步数统计算法是在已经定义好的迈步时间段统计步数。
1.1 时域算法
- 阈值法
步伐检测:将所有的可用传感器作为输入,当这些变量的加速度计模值(MAGN_TH),加速度计信号的功率谱(ENER_TH,在一个大小为 e n e r w i n ener_{win} enerwin大小的窗口内计算),以及加速度计的标准差(STD_TH,窗口大小为 s t d w i n std_{win} stdwin)超过一定的阈值时,认为检测到了行走。
步数统计:无
- 窗口峰值检测(WPD)
步伐检测:无
步数统计:使用一个滑动中值滤波窗口对加速度计模值进行处理(窗口大小为 M o v A v r w i n MovAvr_{win} MovAvrwin),使用峰值检测法(窗口大小为 P e a k w i n Peak_{win} Peakwin)找出与脚触底时刻关联的峰值信号。
- 过零统计(MCC)
步伐检测:无
步数统计:使用一个大小为 M o v A v r w i n MovAvr_{win} MovAvrwin的中心滑动窗口首先平滑加速度计的模值信号,然后使用使用信号均值 M e a n w i n Mean_{win} Meanwin将窗口切成上下两片,统计每一个正向穿过窗口均值的时刻为一步。
- 归一化自相关步数统计(NASC)
步伐检测:采用NASC算法进行。当超过标准差阈值 σ t h r e s h \sigma_{thresh} σthresh,在一个2秒的窗口内评估归一化自相关系数(大致延迟为 T m i n T_{min} Tmin到 T m a x T_{max} Tmax),也就是对当前信号和过去的一段时间信号计算相关性的操作,可用来找出信号中的相似信号模式。如果自相关系数的最大值超过阈值 R t h r e s h R_{thresh} Rthresh,认为用户在行走。当标准差低于 σ t h r e s h \sigma_{thresh} σthresh,认为行走结束。
步数统计:在一个2秒的滑动窗口连续计算归一化自相关系数。对每个窗口,将与最大自相关系数对应的滞后时间作为迈步周期,同时计算作为一步。步数是这些小步的累加值。
- 动态时间规划(DTW)
步伐检测:无
步数统计:使用DTW随着步伐的发生在加速度信号里做步态模板匹配(基于DTW建立的非线性映射可以对步速或者信号形状进行统计)。对每个对象人工识别最优的步态模板,对平滑后的信号重复使用DTW子序列进行匹配去提取单独的步伐。最小步长和两步之间的最大距离是动态变化的。当步态模板能够被通过一个预处理步骤进行提取时,这能够最好的表现算法的性能。
1.2 频域算法
- 短时傅里叶变换(STFT)
步伐检测:使用STFT将信号分隔成大小为 D F T w i n DFT_{win} DFTwin的连续时间窗口,当信号窗口有典型行走频率 f r e q w a l k freq_{walk} freqwalk范围内的典型能量谱时认为进行了行走。
步数统计:将窗口的宽度设定为检测到行走时的时域步伐时间段,使用STFT计算每个窗口的子步数,然后将其累加便可以实现步数的统计。
- 连续/离散小波变换(CWT/DWT)
步伐检测:通过计算行走频率带能量和所有频率的能量比率,设定一定的阈值提取行走时间段,能量的计算通过 C W T / D W T CWT/DWT CWT/DWT进行。
步数统计:将行走频率带之外的CWT/DWT系数置0,并进逆向变换,以消除信号中的直流分量,只保留行走信息。接着,对单独的步伐使用过零检测进行提取。
1.3 特征聚类
作者对两种聚类方法进行了测试,隐形马尔科夫(HMMS)和K-Means聚类(KMC),均是序列聚类的典型方法。没有考虑诸如SVM之类的方法进行聚类是因为这些方法均需要不同程度的监督训练。选择KMC是因为由于其具有更少的计算量和更好的精度,有利于自组织图?。相似的原因,选择了HMMs(除了HMMs的序列自然性?)而不是GMMs。
文中使用的特征包含时域的信号均值、信号能量、信号标准差,频域的谱熵指数、时域频率。为了适应不同类型的步态,没有单独使用FFT系数作为无约束移动下的时域频率。而且,也没有包含维度衰减和奇异特征(比如轻微失重)。
- 隐形马尔科夫模型(HMM)
步伐检测:以无监督的方式使用Viterbi算法训练一个高斯分布下的双状态(行走/空闲)隐形马尔科夫模型。将特征向量传递进模型里,并通过leave-one-out进行交叉验证。使用关联协方差矩阵,这对隐形马尔科夫模型的所有状态都是一样的(这是为了从更少的数据的里学习隐形马尔科夫模型,而且避免过拟合)。
步数统计:当隐形马尔科夫模型应用到行走信号上时,其可以被训练识别步态区间步态的动作,比如抬脚跟,抬脚尖,脚跟触底,脚静止。对不同数量的隐形马尔科夫状态进行测试,发现使用两个隐形状态的简单马尔科夫模型会产生相同的步数统计结果。在噪声比较大时刻,模型仍将会将一个状态分配给正向峰值,另一个给迈步周期的负向谷值。为了考虑不同行走速率,在一个滑动窗口动态的训练HMMs。
- K-Means聚类(KMC)
步伐检测:KMC可以被直接用来进行步伐检测【9】,但是作者在自己采集的数据集上进行测试法相效果很一般,因此作者没有进行一步研究。
步数统计:使用LIoyd’s算法将特征向量在滑动窗口上分为两类(峰/谷)【34】。每隔50次便使用不同的质心重启算法,避免陷入局部极小。通过计算最近聚类实现预测。对HMM,对选择的不同特征使用leave-one-out进行交叉验证。