基于支持向量机的格斗评估算法研究
2018-10-22陈泽嘉曾培峰
陈泽嘉,曾培峰
(东华大学 计算机科学与技术学院,上海 201620)
0 引言
随着人工智能技术的不断发展,军队和警察训练通常用“导控无人化”取代传统的完全基于人工的训练模式。在士兵拳击训练中,击打对象通常是人形靶,为了检测士兵训练指标,需要在人形靶配置多个相关传感器,以全方位采集训练数据,并根据这些数据自动完成士兵格斗水准的评判。
士兵格斗水准评判包括数据提取和预测,涉及行为识别领域。SONG S K[1]在低频的设备环境下,以秒为单位分隔样本的时间序列,结合传感器数据相邻时间间隔的特征进行SVM训练,以样本重用弥补设备性能,然而数据维度高,容易产生无用的干扰数据影响预测结果。BAO N[2]提出阶段化的波形分析方法,对不同运动事件做出特征分析,其后两个阶段包含对一次振动余波的判断,下一步观测需要等待设备稳定后进行,不太适合数据采集频率较高的场合。文献[3]提出的支持向量机多分类方法,基于新特征的运动识别,结合时域、频域特征,对一个时间段内的样本的特征进行综合。利用交叉验证对核函数进行,选取得到了优于BP网络的时间性能。DOUKAS C[4]等人从三轴加速度计收集数据,保留了三个维度的加速度值并加入加速度信号幅值特征,同时通过验证对核函数和惩罚因子进行选择,其SVM模型在径向基核函数下达到最佳分类效果。
简单投票策略是支持向量机一对一分类模式常用的预测方法,而其缺陷在于不同二元分类器之间的竞争性关系弱,许多研究对此进行改进,如文献[5]提出的改进的投票策略通过计算新样本到各类别k近邻平均距离及中心距离,得到不同类别的竞争权重,其只是简单计算样本间的欧氏距离。而本平台中拳击力量不固定,样本值尺度跨度大,新样本和训练集各类样本的距离值很大程度相关于击打力量,会影响分类判别准确性。同时,投票过程以概率预测[6]代替类别标签的预测,可以更精确描述待测样本对某一类别的隶属程度。
文献[7]和[8]通过合成加速度的计算,消除各维度加速度分量的随机性问题和误差,获得稳定的数据样本。文献[9]和[10]使用有限状态机,对活动的过程进行模拟,提出以加速度差分表示加速度的变化,设置转移阈值以控制状态转移。文献[11]利用重力分解出加速度向量在水平和垂直方向上的分量,以垂直加速度向量描述设备的上下振动,以合成加速度的标量形式表示水平分量。
士兵格斗水准的评判涉及击打部位、力量和方向三个要素的特征提取。综合考虑以上因素,本文提取加速度水平分量,以差分合成加速度作为新特征。在击打预测方面,分析一对一策略的支持向量机的多分类方法对击打事件的判断准确度;并利用支持向量机概率模型,在相对竞争权重的投票策略基础上,使用一种新的样本距离计算方法,来获得样本对于类别隶属程度的一个较好的描述。最后利用交叉验证对模型的核函数和超参进行优化。
1硬件平台
为了采集拳击数据,设计的人形靶模型如图1所示。图中标号1~9的位置配备了9个ST公司的三轴加速度计LIS3DH,分别设置在头部、胸部等关键部位。人形靶的内部安放有一块以ARM Cortex为核心的主控板,通过I2C接口获取传感器的三维加速度数据,通过UDP协议将数据包发送给PC。作为上位机的PC完成数据处理。数据处理包含数据滤波、特征提取、模型训练、验证、预测等过程。平台以开源库LibSVM[12]为基础,封装支持向量机多分类器。
图1 加速度传感器布置示意图
2 支持向量机及特征提取
2.1 数据预处理
2.1.1特征提取
为了对格斗训练的拳击部位、力量等指标进行有效评估,需要从原始特征中提取出更具表达能力的新特征。加速度传感器的三维加速度数据由x、y、z三个方向上的数值构成:
(1)
传感器测量的数据表示系统整体受力情况。式(1)的数值无法直接表示受击打力的情况,可以用加速度差分来表示,即:
Δa={ax(t1)-ax(t0),ay(t1)-ay(t0),az(t1)-az(t0)}
(2)
格斗训练的击打多以水平出击为主,力的垂直分量会对评判结果产生干扰,需要去除这部分分量。通过系统静止状态下采集到的加速度数据,记录为传感器重力读数,作为垂直方向的加速度向量标定,用公式(3)表示。由(4)式求加速度Δa在重力向量g下的水平分量Δah。
(3)
(4)
水平分量ah仍然只是一个三维加速度向量,不能用以描述击打力量。合成加速度方法不仅可以作为描述力量大小的特征,且对击打测试中不同维度数据随机产生的噪声也有很好的抑制效果:
(5)
综上,作为每个传感器的特征数据包含一个水平分量化的加速度差分向量Δah和一个合成加速度标量aC。
2.1.2数据滤波
击打会使加速度传感器产生的抖动以数据噪声的形式表现出来。图2显示了一次击打过程的波形图,其中横轴代表时间,纵轴代表加速度,其单位和重力加速度g在数值上比例约为1 600:1。在波峰中,z轴分量产生一个波形毛刺,会对峰值检测产生干扰,文中使用窗口大小为5的高斯滤波对数据进行滤波处理。
图2 未处理的加速度波形
图3为高斯滤波后加速度波形的示意图。可以看出,处理后的波形比较平滑,便于进行峰值检测及特征提取。
图3 经过高斯滤波的加速度波形
2.1.3基于时间段的采样策略
传感器检测到的击打会在波形上会产生一个较高的波峰(或波谷),因此将峰值时刻的数据作为样本。为了处理不同传感器对击打的响应存在时间差,使用基于时间段的采样策略:设置一个时间区域,以第一个峰值到达时间为起点,在这个时间区域内监控每一帧数据,判断其他传感器是否检测到新的峰值,将符合要求的值放入同一样本中。对于未检测到峰值的传感器,取时间段内最大冲击值。对于一个N帧长的时间段,新样本计算方法如下:
(6)
式中,ai(t)表示t时间上样本的第i个数据,而aC(t)表示t时间上样本的合成加速度,tpeak表示峰值时刻。对于没检测到峰值的情况,需要取最大冲击值的样本,这里用合成加速度aC(t)来描述冲击值,即所选择的tm时刻的样本具有时间段内最大的aC(t)值。经反复实验测试,120 ms的时间段对于绝大部分击打效果较好。
2.2 击打状态分析及峰值检测
为了清晰地解析训练过程运行规律,采用有限状态机进行状态分析及击打检测。整个过程分为以下三个状态:
状态1:稳定状态。设备处于静止状态下,三个维度的加速度基本保持不变。
状态2:击打状态。当一个冲击产生,使相邻两帧之间读数差大于一定值时,则可判定为受到击打。这个状态会持续一定时间,直到到达波峰,同时产生一个峰值事件。
状态3:恢复状态。击打状态结束后,波形振幅小于先前波峰幅值并且逐渐减小,持续一段时间后,如果其变化小于一定程度,则恢复到稳定状态。
图4 击打事件的状态分析
图4表示一个击打过程,编号1~3分别对应击打过程3个状态时间轴的范围,三种状态按顺序切换,完成一次循环。为了识别每一个击打波峰,采用峰值检测法。在击打状态中,由于冲击的到来已经产生波形的波动,这个波动具有一定方向,峰值出现需要满足的条件是波动方向改变。在检测到击打的那一刻,记录下相邻两帧的合成加速度aC(t0)和aC(t1),如果存在之后的某一帧合成加速度aC(tn)满足条件:
(aC(tn)-aC(tn-1))*(aC(t1)-aC(t0))<0
(7)
表示当前波动方向相对于初始波动方向相反,即判定t(n-1)为波峰时刻。
在图4中显示了邻近的两个传感器对同一次击打的判定。可见当击打到来时,波形在稳定状态结束的后一帧即检测到击打,以顶端一长垂线段表示;在下一帧,该击打达到波形峰值,以顶端一短垂线段表示。
2.3 支持向量机多分类
对击打部位预测是系统主要功能。在一对一策略的支持向量机多分类方法中,m类分类问题被转化为m(m-1)/2个二元分类问题。每个二元分类器需解决如下等价的最优化问题:
(8)
其中i、j分别表示构成每个二元分类器的两类别序号;C是惩罚因子,决定对离群点损失的重视程度;φ(xt)表示所选用的核函数,由于样本数据维度不高,线性核可能不易对样本进行有效分类,因此采用高斯核,如式(9)所示,它属于径向基核函数的一种。
(9)
式(9)中除变量x外的系数被提取出以单一参数γ表示,代表核函数的径向作用范围,提取后的核函数如(10)式表示。γ和惩罚因子C共同组成影响模型分类效果的超参。
(10)
2.4 支持向量机多分类在本平台的应用
本平台共使用9个传感器,每个传感器设置为一个类别,组成36个二元分类器。对于每个具有类别标签y的样本,其训练过程涉及所有包含类别y和y′的二元分类器,其中y≠y′,样本向量如式(11)所示:
(11)
对于二元分类器,使用支持向量机概率输出代替类别标签输出:
(12)
其中,Cij是区分第i和第j类的分类器,产生一个介于0和1之间的值表示样本对类别i的隶属程度预测,同时,对类别j隶属程度为pji=1-pij。
上述过程完成后,需要在计算不同二元分类器的竞争权重:计算样本到各类别距离,来修正隶属程度。使用新的样本距离计算方法。在这里,首先定义样本中各类别的分量,令TN={a1N,a2N,…,a4N}表示待测样本,TiS={ai1S,ai2S,…,ai4S}i∈[1,k]表示类别i的训练样本。TN与TiS之间距离公式如下:
(13)
其中
bias=a4N/ai4S
(14)
式(13)中新的距离计算方式,通过选取两样本中合成加速度作为各类别尺度大小的表示,使用尺度比值对另一样本进行同一化,可以得到两样本向量在模拟相同合成加速度的情况下的距离,消除了待测样本与训练样本的不确定偏差。相同尺度下的距离,表示了样本间各类别方向的差异性,同时该距离结果保留了待测样本的尺度,可以进一步表示样本间各类别尺度的差异性。接着计算待测样本与各类别训练样本中k近邻的平均距离:
(15)
最后,得到更新后的竞争权重值:
(16)
预测阶段,一个不包含类别标签的新样本被带入每个二元分类器进行运算。维护一个各类别竞争计数数列Vi(1≤i≤9),其对对应的竞争权重值wij进行累计累加,最终选取累加值最高的为结果类别,判定依据为:
(17)
3 算法验证与分析
在对系统多分类模型进行训练时,对每个传感器各进行100次击打模拟,9个类别一共900组样本。
另外,核函数的选择及相关超参的设置对SVM分类的结果有所影响。为了验证不同核函数和超参的效果,采取LOO Cross Validation的验证方法,使用先前用于训练的样本,每条样本单独作为验证集,其余样本作为训练集,重复该步骤直到每条样本都已验证。
表1中给出的是不同核函数及使其取得最高准确率的超参。线性核函数与径向基核函数验证结果相近,而后者优势较大,其对低维样本能实现更好的分类结果,所以本文选择径向基核函数。
表1 不同核函数准确率的验证结果
核函数和超参的优化后,对平台的9个传感器击打部位进行预测,得到表2所示的混淆矩阵。表中每一列代表预测类别,每一行代表了样本数据的期望类别,对每类进行100次测试,预测结果列于相应行中。
表2 一对一策略SVM多分类器预测的混淆矩阵
文献[12]中指出LibSVM同样使用一对一策略进行多分类,为了进一步验证算法的性能,使用LibSVM已封装的多分类模型进行对照。将同一组样本集带入LibSVM的多分类模型中,算出的混淆矩阵如表3所示,可以看到LibSVM预测准确率为87.9%,本文提出的多分类封装准确率为93.1%,另外,不使用新的距离计算方式的权重投票多分类预测准确率为92.5%。
在运行时间方面,通过增加样本规模进行测试得出,1 000组以内的样本所需要的训练时间均小于800 ms。另外,对一次击打的预测时间不超过600 ms。
表3 LibSVM多分类器预测的混淆矩阵
4 结论
本文以基于时间段的加速度值特征构成样本,采用一对一策略的支持向量机多分类模型,实现高效率的击打方位预测。通过算法验证可以看出,本文使用一对一多分类,基于权重投票预测策略及新的距离计算方式,表现出相对LibSVM封装更高的预测准确率。最后通过交叉验证对核函数和超参进行优化,得到一个较为可观的模型。