APP下载

一种基于连续波雷达的手势识别方法*

2021-07-28孙延鹏屈乐乐

电讯技术 2021年7期
关键词:元胞手势分类器

孙延鹏,艾 俊,屈乐乐

(沈阳航空航天大学 电子信息工程学院,沈阳 110136)

0 引 言

手势识别已经是人机交互的热点领域[1-3]。该技术利用传感器捕获手势动作,并对其进行实时的识别,已广泛应用在智能家居[1]、手语翻译[2]以及游戏交互[3]等领域。传统获取手势动作信号的设备主要为光学传感器[4-5],与该种捕获方式相比,雷达传感器可以不受光照、烟雾等外部环境的干扰。

近几年来,基于雷达的手势识别方法引起了很多关注[6-12]。文献[6]采用主成分分析法(Principal Component Analysis,PCA)来识别手势动作,分类结果表明了基于雷达的手势识别在智能家居领域中有良好的潜力。文献[7]将多种传感器的数据进行融合,采用异源图像配准和三维卷积神经网络(Convolutional Neural Network,CNN)相结合的方法对汽车驾驶中的典型手势进行识别。文献[8]通过深度卷积神经网络(Deep Convolutional Neural Network,DCNN)提取微多普勒特征,并对其进行分类,实验结果显示7种手势动作的识别精度为93.1%。文献[9]使用60 GHz的专用毫米波雷达芯片收集手势动作,并从中提取低维特征向量,通过随机森林分类器对多种手势动作进行识别。文献[10]先提取手势动作的多维参数并将其融合,进而通过CNN进行手势识别。文献[11]采用双流融合神经网络(Two-Stream Fusion Neural Network,TS-FNN)识别10种生活中常见的手势动作。文献[12]分别提取手势动作的距离-多普勒-时间图特征、距离-时间特征、多普勒-时间特征、水平方向角度-时间图特征,并通过轻量化的CNN对手势动作进行分类。

目前,通过光学传感器进行手势识别对外部环境依赖较大。针对该问题,本文提出了一种基于连续波雷达的手势识别方法。同时,基于雷达的手势识别方法大多采用神经网络进行特征提取和分类判决,这样会增加算法的计算复杂度和模型的训练时间。针对此问题,本文选取手势动作的时频谱中的方向梯度信息作为特征,并通过支持向量机(Support Vector Machine,SVM)进行分类。具体做法如下:第一步,采用K频段雷达收集手势动作的回波数据;第二步,对回波数据进行时频分析获得手势动作的时频谱;第三步,通过分析手势信号与背景杂波之间信号强度分布的差异,为每个手势分别选取合适的阈值,将背景杂波从其时频谱中去除;第四步,从处理后的时频谱中提取手势动作的方向梯度直方图(Histogram of Oriented Gradient,HOG)特征,组成特征数据集;第五步,通过SVM对特征数据集进行训练与测试,实现手势识别。基于实测数据的实验结果表明,本文所提算法对4种典型手势动作具有良好的识别效果,且该方法的识别精度要优于PCA+SVM和DCNN。

1 手势动作的采集

本文使用K频段雷达收集手势动作的实验数据。实验时,雷达工作在连续波(Continuous Wave,CW)状态,载波频率为24 GHz,基带信号采样频率为128 kHz,系统的输出功率为16 dBm,天线增益为15 dBi。手指和天线在同一直线方向,且两者相距0.3 m。收集的手势动作包括打响指、弹手指、抬手、招手4种,4种手势动作的解释说明和图示分别如表1和图1所示。实验成员由两名男性和两名女性组成,每人每个手势重复50次,一个完整的手势周期为2 s,共收集4×4×50=800组数据。

表1 4种手势动作的解释说明

图1 4种手势动作的图示

2 手势动作的识别

典型的基于连续波雷达的手势识别流程主要有回波信号预处理、目标特征选择与提取、特征数据集的构建和分类器训练与测试等,如图2所示。

图2 典型识别流程

2.1 时频分析

为了使手势动作的多普勒特征直观地显示出来,选用汉明窗的短时傅里叶变换对回波数据进行时频分析,表达式如下:

(1)

式中:z(u)为雷达回波信号,g(u)为短时傅里叶变换的窗函数,u为时间,t为窗函数滑动的位置,f为频率。

从式(1)可以看出,STFT实际上刻画的是信号在时间-频率平面上的分布,描述了手势动作信号的瞬时频率随时间的变化关系。图3和图4分别提供了同一名实验人员的4种手势动作的时频谱和4名实验人员均作招手动作的时频谱。

图3 4种手势的时频谱

图4 4名实验人员招手的时频谱

从图3中可以看出不同手势动作的时频谱也互不相同。打响指时,中指向后的速度比大拇指向前的速度快,所以其负多普勒频移大于正多普勒频移。在弹手指时,中指开始向靠近雷达天线方向运动,而后又向远离雷达天线方向运动,所以其多普勒频移的变化为由正到负。因为抬手是一个连贯动作,所以其多普勒频移也是连续变化的。而招手时,手指弯曲和展开的速度相近,所以其负多普勒频移和正多普勒频移近似相等。从图4可以看出,不同实验人员的相同手势动作具有相似的时频谱。时频谱图中的这些特性可以用来对手势动作进行分类。

2.2 背景杂波去除

为了从手势动作的时频谱图中提取明显的特征,必须要去除其中的背景杂波。解决该问题的关键在于确定背景杂波和手势动作之间的阈值。背景杂波(无任何手势动作)的强度分布直方图如图5(a)所示。通过观察直方图,可以发现背景杂波具有类似高斯分布的特征。以招手为例,该手势动作信号的强度分布直方图如图5(b)所示。

图5 信号强度分布直方图

通过两者的对比,可以使用图5(b)中开始偏离类高斯分布的最低信号强度作为去除背景杂波的阈值,从图中可以读出招手动作的阈值为-6 dBm。

同理,也可以确定打响指、弹手指和抬手的阈值分别为-6 dBm、-5 dBm和-8 dBm,使用该方法处理之后的时频谱如图6所示。通过与图3的对比可以看出,该方法在当前的实验条件下具有很好的效果,可以有效去除背景杂波。

图6 阈值处理后的时频谱

2.3 特征提取

HOG特征是由图像中局部区域的方向梯度信息通过统计形成的,而梯度信息主要存在于目标的边缘区域[13-14]。从时频谱图中可看出手势动作的边缘区域的颜色有明显变化,即该区域梯度发生突变,因此可以提取其HOG用于分类。在时频谱图中每个像素点在水平方向和垂直方向的梯度强度分别为

Gx(x,y)=I(x+1,y)-I(x-1,y),

(2)

Gy(x,y)=I(x,y+1)-I(x,y-1)。

(3)

式中:I(x,y)为像素点(x,y)的像素值。则每个像素点的梯度强度和梯度方向分别为

(4)

(5)

式中:Gx(x,y)为像素点(x,y)在其水平方向的梯度强度,Gy(x,y)为像素点(x,y)在其垂直方向的梯度强度。

由于方向梯度直方图是在元胞(cell)中计算的,所以在得到每个像素的梯度强度值和方向后,需要将一幅图片分割成若干个元胞。每个元胞由8×8个像素组成,其含有8×8×2=128个值,其中2代表了梯度强度和方向。为了得到更好的效果,通常将梯度方向θ取绝对值,故θ的取值范围为0°~180°,即认为两个方向相反的箭头均表示同一方向。如图7所示,把每个元胞所在的平面按照180°平均划分为9个通道(bin),可以降低计算量和增加鲁棒性。接下来根据元胞内每个像素的梯度方向与其相邻的两个通道角度的距离比例,将该像素的梯度强度分配到其相邻的两个通道内,再通过统计形成每个元胞的方向梯度直方图,即该元胞的特征向量。

图7 HOG特征的方向

在每张图片的局部,将4个相邻的元胞组成一个块(block),其尺寸大小为16×16个像素,并对其进行归一化处理。把一个块内的每个元胞的特征向量首尾依次拼接起来,得到该块的特征向量。在更大的局部上,将若干个相邻的块组成一个窗(window),把一个窗内的每个块的特征向量首尾依次拼接起来,得到该窗的特征向量。最后,通过块在窗中滑动而窗在图片中滑动,就可以得到整张图片的HOG特征。

2.4 SVM分类器

经过预处理和特征提取后,还需要选择合适的分类器对手势动作进行识别,才可以获得较高的识别精度。由于本文所进行的手势识别是非线性多分类问题,所以采用传统的线性分类方法不能得到较好的识别性能。因为SVM分类器的识别性能仅与训练集数据有关,具有良好的泛化能力,且计算复杂度较低,易于实现,故选用SVM分类器进行手势识别。

SVM原始的最佳分离超平面算法只能解决线性二分类问题[15],但后来通过核函数的引入,可以实现非线性分类。其原理为利用非线性变换将原始的输入空间转化为某个维度更高的特征空间中进行线性分类,在该空间中可以学习线性支持向量机,判决函数为

(6)

式中:n为支持向量的个数{x1x2…xn};{ω0ω1…ωn}为权值;K(xi,xj)为核函数,本文选用高斯核函数为K(xi,xj)=exp (-γ||x-y||2)。

利用一对多(One vs.Rest,OvR)来实现多分类问题。OvR会依次从4个手势动作中选出一个类别作为正类,其余的类别作为负类,进而产生4个二分类分类器。在测试集判断类别阶段,若只有一个分类器判断是正类,则该分类器所对应的类别即为最终的分类结果;若同时有多个分类器判断是正类,还需要对它们的预测置信度大小进行比较,从中选择信度最大的类别标记作为最终的分类结果。

3 实测数据结果分析

3.1 本文所提算法的识别精度分析

手势动作的输入数据类型为从时频谱图中提取的HOG特征向量,其维度大小为2 304。为了测试本文所提方法的识别性能,采用不同大小的训练数据集来对识别精度进行测试。将训练数据的比例设置为10%~90%,步长为10%,所得的识别精度如图8所示。从图中可以看出,在训练数据的比例为60%之前,识别精度增长非常迅速;而训练数据的比例在60%~90%之间时,识别精度的增长变得缓慢;尤其当训练数据的比例在70%~90%之间时,识别精度几乎不变。

图8 在不同大小测试集下的识别精度

当训练数据占70%时,分类结果的混淆矩阵如表2所示。从表中可以看出,本文所提方法能准确地识别出弹手指和打响指,因为两者的时频谱差异较大,进而造成它们之间的HOG特征互不相同,故分类器识别的精度较高;而对抬手和招手的识别会发生一些混淆,因为在两者的时频谱中瞬时频率都随时间连续变化,且多普勒频移都是由负到正,进而造成它们之间的HOG特征比较相似,所以导致分类器产生了错误分类。

表2 本文所提方法的混淆矩阵

3.2 不同算法的识别精度对比

为更好地说明本文所提算法的优越性,将其与PCA+SVM[6]和DCNN[8]进行对比实验。PCA+SVM的输入数据类型为从时频谱图中提取的微多普勒特征向量,其维度大小为650,而DCNN的输入数据类型为时频谱图,其尺寸大小为147×147。

从数据集中随机选取70%的数据用于训练,余下30%的数据用于测试,得到4种手势动作的识别精度如表3所示。从表中看出,本文所提方法在所有手势动作中都获得了最高的识别精度,这说明该方法优于基于PCA+SVM的方法和基于DCNN的方法。利用PCA进行特征提取,会使时频谱中的部分有效信息丢失,进而导致分类效果最差。采用DCNN的分类结果虽然要好于PCA+SVM,但仍没有本文所提方法的识别精度高,且算法的计算复杂度还会大幅增加。

表3 不同方法的识别精度

3.3 不同算法的消耗时间对比

本文所提方法采用的硬件平台是Intel®CoreTMi5-3210M CPU @2.50 GHz,8 GB的内存,Microsoft Windows 10系统;软件采用Visual Studio Code,运行环境为Python3.7.4。由于手势识别的模型可以提前训练完成,即训练时间可以不用考虑,所以表4中仅列出了测试时间。从表中可以看出,DCNN的测试时间最少,PCA+SVM的测试时间最多。考虑到手势识别在应用中是一个实时动态的过程,所以测试时间不宜过长。本文所提方法在未优化的前提下测试时间为0.23 s,基本可以满足实时性的要求。未来还可以在图形处理单元(Graphics Processing Unit,GPU)平台上对程序进行优化,进一步缩短测试时间,达到实时处理的要求。

表4 不同方法的消耗时间

4 结束语

本文提出了一种基于连续波雷达的手势识别方法,提取手势动作时频谱中的HOG特征,通过SVM进行分类识别。基于实测数据的实验结果表明,本文所提方法的识别精度高达95%以上,优于基于PCA+SVM的方法和基于DCNN的方法。在下一阶段的工作中,将增加对其他种类手势动作的分类研究,使该方法具有更广阔的应用前景。

猜你喜欢

元胞手势分类器
挑战!神秘手势
V字手势的由来
基于元胞自动机下的交通事故路段仿真
基于元胞自动机下的交通事故路段仿真
胜利的手势
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
基于元胞数据的多维数据传递机制
基于AIS的航道移动瓶颈元胞自动机模型
基于LLE降维和BP_Adaboost分类器的GIS局部放电模式识别