一种基于毫米波雷达的手势识别方法及系统与流程

文档序号:16323156发布日期:2018-12-19 05:47阅读:694来源:国知局
一种基于毫米波雷达的手势识别方法及系统与流程

本发明涉及智能设备及人机交互领域,具体涉及一种基于毫米波雷达的手势识别方法及系统。

背景技术

虚拟现实及增强现实等技术可被用来建造三维模拟环境,实现多源信息融合的交互式三维动态视景和实体行为系统仿真,可以通过将计算机模拟合成的多维虚拟环境与实体环境进行有机融合,令受众以全感官的方式进行体验和交互。作为极富有挑战性的交叉技术前沿学科和研究领域,虚拟现实技术是仿真技术与计算机图形学、人机交互技术、多媒体技术、传感技术等多种技术的集合。现实世界各场景中人与人之间交互有多种多样的方法,不仅可以使用口语、书面表达等自然语言,还可以运用面部表情、手势等肢体语言进行沟通。但是人类与计算机的交互通常没有动作和表情,呆板且不自然。如果计算机系统能够识别人类的肢体语言,将在很大程度上增强人机交互的效果,将其作为虚拟现实技术中人机交互的界面方案也将使得系统操作更为流畅自然。而手是最灵活的身体部位之一,人们往往认为手语是人类的第二种语言。手势作为机器与人之间的交流语言,具有非常强的视觉冲击效果。但由于手势丰富多变,因此手势识别需要精度较高的数据采集及信号处理方案。

现有技术通过雷达波进行手势识别的技术中多以线性调频连续波雷达为主,而这种方法增加了距离测量值作为属性,同时也提高的系统的成本。因此需要一种新的手势识别技术来解决现有技术中存在的缺陷。



技术实现要素:

本发明的目的是为了解决现有的手势识别方法成本高,在识别一部分手势时易出错,且判断逻辑复杂的缺点,而提出一种基于毫米波雷达的手势识别方法及系统。

根据本发明的第一方面,提供一种基于毫米波雷达的手势识别方法,包括:

步骤一、建立训练集,过程为:在设置有第一雷达和第二雷达的环境下进行一次手势运动,根据此时第一雷达和第二雷达采集到的幅值信号提取以下属性构成一个样本:第一雷达的振幅差信息、第二雷达的振幅差信息、方向数、第一方向和第二方向;其中第一方向表示手势相对于第一雷达的运动趋势,第二方向表示手势相对于第二雷达的运动趋势;方向数表示手势运动过程中出现的运动趋势的次数;第一雷达和第二雷达的信号接收方向具有一定角度;

每一次手势运动被标记为预设的手势类别中的一种;进行多次手势运动,将得到所有样本构成训练集;

步骤二、对步骤一中提取出的每个属性进行离散化处理,为每一种属性划分区间或为每一种属性分配取值;

步骤三、分别计算训练集中每种属性的信息增益率;

步骤四、选取信息增益率最大的属性作为根节点,按照所述属性的区间或取值对所述属性划分子集,每个子集表示根节点的子节点;当子集只有一个分类时不再划分;

步骤五、对于每个根节点的子节点递归执行步骤三和步骤四,得到决策树,使用所述决策树对手势进行识别。

根据本发明的第二方面,提供一种基于毫米波雷达的手势识别系统,包括:第一雷达、第二雷达、信号处理模块和识别结果输出模块;其中第一雷达和第二雷达用于采集幅值信号,并向信号处理模块输出第一雷达i路信号、第一雷达q路信号、第二雷达i路信号、第二雷达q路信号;信号处理模块用于根据决策树识别手势类型;识别结果输出模块用于将识别出的手势类型进行输出;所述决策树是根据本发明第一方面的基于毫米波雷达的实现手势识别方法得到的。

本发明的有益效果为:1、本发明的一个实施例可以实现较高的识别精度,在一个实施例中,能够达到97%的识别率。2、本发明的一个实施例能够在任何需要进行人机交互采用手势识别进行信息传递的系统中,用途具有广泛性。3、本发明采用doppler模式只获取手势动作的速度信息,同时采用结构简单便于嵌入式处理的决策树结构,比常规分类的算法在计算效率、计算可实现性上要更为优越。

附图说明

图1为基于毫米波雷达的实现手势识别方法的一个实施例的流程图;

图2为本发明一个实施例中得到的决策树的结构图;

图3为本发明一个实施例的基于毫米波雷达的实现手势识别系统的方框原理图;

图4为本发明一个实施例的毫米雷达前端的结构示意图;

图5(a)~图5(d)均为本发明实施例的根据手势动作对应的iq路信号进行识别分析特征提取得到的信号波形图;

图6为本发明一个实施例的复数傅里叶变换幅度图。

具体实施方式

具体实施方式一:本实施方式的基于毫米波雷达的手势识别方法,如图1所示,包括:

步骤一、建立训练集,过程为:在设置有第一雷达和第二雷达的环境下进行一次手势运动,根据此时第一雷达和第二雷达采集到的幅值信号提取以下属性构成一个样本:第一雷达的振幅差信息、第二雷达的振幅差信息、方向数、第一方向和第二方向;其中第一方向表示手势相对于第一雷达的运动趋势,第二方向表示手势相对于第二雷达的运动趋势;方向数表示手势运动过程中出现的运动趋势的次数;第一雷达和第二雷达的信号接收方向具有一定角度。每一次手势运动被标记为预设的手势类别中的一种;进行多次手势运动,将得到所有样本构成训练集。

本实施方式的目的是通过雷达测得的信号判断用户的手势,因此需要构建充足的样本来寻找不同的手势在雷达信号中表现出来的规律。步骤一中使用第一雷达和第二雷达的目的是尽可能实现立体识别,第一雷达和第二雷达可以正交设置,即获取相互正交方向的信号,也可以非正交设置。步骤一中选取第一雷达的振幅差信息、第二雷达的振幅差信息、方向数、第一方向和第二方向作为特征,第一雷达的振幅信息可以进一步包括第一雷达i路振幅差和第一雷达q路振幅差。例如可以将雷达采集到的i路作为新信号的实部和q路作为新信号的虚部,即i+jq.并把新信号进行复数傅里叶变换,得到幅度和相位。然后根据幅度的最大值和最小值之差计算振幅差。第二雷达同理。第一方向的具体含义可以是“靠近第一雷达”或“远离第一雷达”,也可以分别简记为“向前”和“向后”。同理第二方向的具体含义可以为“靠近第二雷达”或“远离第二雷达”。方向数具体含义可以是一次手势包含的方向次数,方向可以是“向前”或“向后”,例如手掌沿着第一雷达的信号接收方向进行来回摆动,这一次手势包含靠近第一雷达的3次运动和远离第一雷达的3次运动,那么方向数记为6。

可以用上述各个属性组成一个数据结构作为样本数据。

步骤二、对步骤一中提取出的每个属性进行离散化处理,为每一种属性划分区间或为每一种属性分配取值。即对于步骤一中的各个属性,将每种属性用有限个区间或值进行表示。例如对于第一雷达i路振幅差这一数据,划分为>d1和≤d1两个区间。划分的原则是根据波形图获得,例如当用户的手没有运动时,第一雷达i路振幅差也会有0.06的波动,那么就将0.06作为一个阈值,用来区分该振幅差信息是否能够准确表达运动的手部运动情况。再例如,用户的手靠近第一雷达运动时,第一雷达的幅值~时间变化图出现的波形峰值小于s1,那么就可以将s1作为判断用户手部是否是靠近第一雷达运动的一个阈值标准。总之离散化的目的是为了能通过取值或者阈值划分来从各个属性的角度来区分手势情况,区分的原则是由人工观察波形图特征来获得。由于人工观察波形图来划分阈值或取值一般不会因操作人员不同而产生不同的结果,因而这个过程是符合客观规律的。

步骤三、分别计算训练集中每种属性的信息增益率。信息增益率计算是较为常用的用于得到决策树的计算过程,步骤一和步骤二已经确定了属性以及每种属性的取值,本步骤计算每种属性的信息增益率,以确定用何种属性作为根节点。

步骤四、选取信息增益率最大的属性作为根节点,按照所述属性的区间或取值对所述属性划分子集,每个子集表示根节点的子节点;当子集只有一个分类时不再划分。

步骤五、对于每个根节点的子节点递归执行步骤三和步骤四,得到决策树,使用所述决策树对手势进行识别。

步骤四根据步骤三的计算结果确定了根节点,根据该属性的区间或取值再次划分子集,即子节点,然后步骤五将每一个子节点作为新的根节点,递归执行步骤三和步骤四,直至子集只有一个分类。最后得到决策树。

本实施方式对现有技术做出的贡献是,通过第一雷达和第二雷达的设置和属性的选取提供了一种能够通过雷达信号进行特征提取,得到决策树的过程,进而可以利用决策树进行手势识别。本实施方式选取的属性考虑到了手势在空间中运动的趋势(第一雷达和第二雷达的振幅差和方向),还考虑到了一次手势运动中可能出现的各种往复摆动的情况(方向数)。并且本实施方式具有较高的扩展性,还可以识别出更多未被广泛使用的新型手势。

相比于现有技术中已有的基于深度图像识别的手势识别,本实施方式在使用过程中仅需通过决策树进行手势判断即可,相比于实时的深度图像检测速度更快,耗能更低,对处理器的要求更低。并且得到决策树的过程也比深度图像训练过程更为快速,需要更少的计算资源。例如已有的深度图像检测会涉及到对手部的定位、抽取特征点、计算旋转矩阵、轨迹跟踪技术等,整体运算量非常大,用于存储图像信息所需要的存储空间也非常大。而本实施方式的数据结构简单,仅需雷达i路和q路信号等存储量较小的信息进行简单运算即可达到手势识别的目的。并且在缺乏光照的环境下,本实施方式也可以完成识别任务。

具体实施方式二:本实施方式与具体实施方式一不同的是:预设的手势类别包括“无动作”,“摆手”,“推”,“举”和“拉”。上述手势均是朝着第一雷达阵面的方向进行的。

其它步骤及参数与具体实施方式一相同。

具体实施方式三:本实施方式与具体实施方式一或二不同的是:步骤一中,第一雷达的振幅信息包括第一个雷达i路振幅差和第一个雷达q路振幅差;第二雷达的振幅信息包括第二雷达i路振幅差。

本实施方式选取的振幅信息是依照具体实施方式二的手势确定的,按照具体实施方式二选取的手势类型,不需要获取第二个雷达的q路振幅差。如果具体实施方式二中选取的手势类型发生变化,则需要获取的振幅信息也会发生变化。

其它步骤及参数与具体实施方式一或二相同。

具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:步骤二的具体过程为:对第一雷达i路振幅差进行离散化处理,将其分为>d1和≤d1两个区间;对第一雷达q路振幅差进行离散化处理,将其分为>d2和≤d2两个区间;对第二雷达i路振幅差进行离散化处理,将其分为≤d3、(d3,d4)和≥d4三个区间;对于方向数进行离散化处理,将方向数属性分为>d5和≤d5两个区间;对第一方向进行离散化处理,当手势为“向前”时第一方向属性的值为1,当手势为“向后”时第一方向属性的值为2,当手势为“无方向”时第一方向属性的值为0;当方向数的属性值为≤d5区间时,第一方向和第二方向的属性的值均为0。

本实施方式仅示出一种划分区间和确定取值的方式,这种区间和取值的确定是由人工根据波形图确定的,例如阈值d1能够将第一雷达i路振幅分为波形图呈现明显相似性的两类,那么就以d1作为阈值进行区间划分。

其它步骤及参数与具体实施方式一至三之一相同。

具体实施方式五:本实施方式与具体实施方式一至四之一不同的是:步骤二中,d1的值为0.06,d2的值为0.06,d3的值为0.08,d4的值为0.3,d5的值为6。

本实施方式是对具体实施方式四中阈值的具体确定,仅是一种能够使发明效果达到较为优选的效果的一种示例。在不同的环境中可以根据实际情况改变阈值。

其它步骤及参数与具体实施方式一至四之一相同。

具体实施方式六:本实施方式与具体实施方式一至五之一不同的是:步骤三包括:

计算训练集的信息熵;计算训练集中每种属性的各个区间或属性值的信息熵;根据每种属性的各个区间或属性值的信息熵计算该属性的信息熵;将训练集的信息熵与每种属性的信息熵分别做差得到该属性的信息增益;将每种属性的信息增益与该属性的信息熵做商得到该属性的信息增益率。

本实施方式是较为常见的计算信息增益率的过程,此处不做详述。

其它步骤及参数与具体实施方式一至五之一相同。

具体实施方式七:本实施方式与具体实施方式一至六之一不同的是:计算训练集的信息熵的公式为:

其中e(x)为信息熵,x为训练集,n为训练集的类别数目,这n个类别把训练集划分为n个训练子集;训练集的第i类表示为ci;x表示训练集中样本的个数,xi表示第i个训练子集的样本个数;训练集的类别数目n对应于步骤一中手势类别的数量;

计算训练集中属性a的各个区间或属性值的信息熵的公式为:

其中xj为训练集x中属于属性a的训练子集;m为属性a可能取值的数量;属性a为第一雷达i路振幅差、第一雷达q路振幅差、第二雷达i路振幅差、方向数、第一方向其中的一种;

为训练子集xj中样本属于ci类的概率;xij为训练子集xj中样本属于ci类的数目;

根据属性a的各个区间或属性值的信息熵计算该属性的信息熵的公式为:

将训练集的信息熵与属性a的信息熵分别做差得到属性a的信息增益gain(x/a)的公式为:

gain(x/a)=e(x)-e(a)

将属性a的信息增益与属性a的信息熵做商得到属性a的信息增益率gainratio(x)的公式为:

其它步骤及参数与具体实施方式一至六之一相同。

具体实施方式八:本实施方式与具体实施方式一至七之一不同的是:步骤五中得到的决策树的结构为:

如图2所示,以第一方向作为根节点,当第一方向的取值为1时,判断第二雷达的i路振幅差是否小于d3,若是则判别为手势“摆”,若否则判别手势为“推”。

当第一方向的取值为0时,判断第一雷达的i路振幅差是否小于等于d1,若是,则判别手势为“无动作”,若否则再判断第二雷达i路振幅差是否小于d4,若是,则判别手势为“摆”,若否,则判别手势为“举”。

当第一方向的取值为2时,判断第一雷达的i路振幅差是否小于d5,若是,则判别手势为“摆”,若否,则判别手势为“拉”。

本实施方式是根据一个实施例的步骤一至四得出的决策树,可以看出,根据得出的决策树可以快速对手势进行判断。由于“方向数”、“第二方向”的信息增益率为0,因而在决策树中没有作为节点出现。

其它步骤及参数与具体实施方式一至七之一相同。

具体实施方式九:本实施方式提供一种基于毫米波雷达的手势识别系统,如图3所示,包括第一雷达、第二雷达、信号处理模块和识别结果输出模块;其中第一雷达和第二雷达用于采集幅值信号,并向信号处理模块输出第一雷达i路信号、第一雷达q路信号、第二雷达i路信号、第二雷达q路信号;信号处理模块用于根据决策树识别手势类型;识别结果输出模块用于将识别出的手势类型进行输出;所述决策树是根据具体实施方式一至八中任意一种实施方式的基于毫米波雷达的实现手势识别方法得到的。

<实施例>

本实施例对应于具体实施方式九,本实施例使用相互正交的第一雷达和第二雷达进行信号检测,第一雷达和第二雷达均为毫米雷达波。毫米雷达前端的结构如图4所示,毫米波雷达由收发阵列天线,压控振荡器,混频器和移相器及功放和低噪放组成,由回波信号与发射信号混频得到的iq路信号被传输至采样模块,采样模块对iq信号进行采样放大传输至信号处理模块,信号处理模块通过对信号进行处理实现对于人手手势的识别,并将判断结果输出至受控目标设备,实现人手手势的命令识别执行流程。

雷达前端使用基于毫米波雷达的通用雷达系统,如雷达前端部分结构图所示,接收到的包含有手势信息的信号被分为iq两路信号,传输至信号处理系统进行采样分析处理。

图5为根据手势动作对应的iq路信号进行识别分析特征提取得到的信号波形图,根据波形图中的波形所对应的特征进行特征树的构建实现对于目标手势的判断。一个具体的决策树的例子如图2所示。

建立决策树的过程如下:

1、确定时间~幅度图的x轴和y轴阈值的确定

将毫米波雷达采集到的i路作为新信号的实部和q路作为新信号的虚部,即i+jq.并把新信号进行复数傅里叶变换,得到幅度和相位。

从如图6所示的复数傅里叶变换幅度图可以看出,幅度图中存在一个数值特别大的值,这个值是需要剔除的值,因此此时需要找的并不是整个幅度的最大值,而是除去第一个元素的整个振幅的最大值,可以通过“获取子数组”来把幅度值特别大的元素除去。即使没有手势运动,幅度图也会有毛刺,所以要在y轴设定一个阀值,幅度值的最大值大于这个阀值才判断有手势运动,否则判断为无手势运动。

2、手势运动方向的判定

如果检测到有手势运动,则找到幅度最大值对应的位置,如果幅度最大值出现在幅度图像的前半部分,则运动方向为“向后”,如果幅度最大值出现在幅度图像的前半部分,则运动方向为“向前”。我们还可以得到一个方向数特征,方向数是手势过程中判断出方向的次数。

3、手势信号振幅差

在本实施例中,需要计算出雷达信号的振幅差,可以用一个“获取数组最大最小值”来得到振幅的最大值和最小值,然后把它们相减,即可得到信号的振幅差。

4、数据预处理

利用500组手势作为训练集,合并成“手势识别数据库”。“手势识别数据库”的数据结构包括以下属性:第一个雷达i路振幅差,第一个雷达q路振幅差,第二个雷达i路振幅差,方向数,方向1(即第一方向),方向2(即第二方向)。

对于“第一个雷达i路振幅差”属性进行离散化处理,转换为振幅差区间,即“第一个雷达i路振幅差”分为>0.06和<=0.06两个区间。对于“第一个雷达q路振幅差”属性进行离散化处理,转换为振幅差区间,即“第一个雷达q路振幅差”分为>0.06和<=0.06两个区间。对于“第二个雷达i路振幅差”属性进行离散化处理,转换为振幅差区间,即“第二个雷达i路振幅差”分为<=0.08,(0.08,0.3)和>=0.3三个区间。对于“方向数”属性进行离散化处理,转换为方向数区间,即“方向数”分为>6和<=6两个区间。对于“方向1”属性进行数据概化,“向前”转化为数字“1”,“向后”转化为数字“2”,“无方向”转化为数字“0”。对于“方向数”小于7的元组,其“方向1”和“方向2”均置为0。

其中上述阈值的区分是从训练集的波形得到。

得到上述阈值后,依次计算每个属性的信息增益率来确定树的结构。

训练集x,样本的个数为x,训练集的类别集合是c,一共有n个类{c1,c2,...,cn-1,cn},这n个类别把训练集划分为n个训练子集x={x1,x2,...,xn-1,xn},训练子集xi中样本的个数是xi。训练集的信息熵为:

其中信息熵表示的是训练集x的信息含量,它也称为平均不确定性。

设训练集x中的某一个属性是a,a里有m个不同的值{a1,a2,...,am-1,am}。根据属性a的不同值把训练集分成m个训练子集:x={x1,x2,...,xm-1,xm},xij表示xj(j=1,2,...,m)中属于ci(i=1,2,...,n)类的数目,pij是训练子集xj中样本属于ci的概率:

子集xj的信息熵是:

依据属性a划分后的训练集合的信息熵是:

信息增益:

gain(x/a)=e(x)-e(a)(5)

信息增益率的定义为:

构造决策树的方法如下:

①计算每一个测试属性的信息增益率

②把信息增益率最高的测试属性作为决策树的根节点,按照它的取值把测试集划分为若干个子集,若这个子集只有一个分类就不再划分。

③递归地对每一个划分的数据集合进行以上两个步骤。

5、第一个测试属性的选择

(测试属表示对样本集处理得到的特征)

(1)依据公式(1),计算训练集的信息熵。

在训练集中,共有500个样本,“无动作”,“摆手”,“推”,“举”,“拉”各有100个样本。为计算每个属性的信息增益率,首先未按某个属性划分前训练集的信息熵:

(2)依据公式(3),计算每个属性的信息熵。

首先计算“第一个雷达i路振幅差”属性,该属性有两个属性值,计算由这个属性划分出来的每个子集的信息熵。对于“第一个雷达i路振幅差”<0.06,类“无手势”有100个样本,类“摆手”有0个样本,类“推”有0个样本,类“举”有0个样本,类“拉”有0个样本。表示为(100,0,0,0,0)。对于“第一个雷达i路振幅差”>=0.06,类“无手势”有0个样本,类“摆手”有100个样本,类“推”有100个样本,类“举”有100个样本,类“拉”有100个样本。表示为(0,100,100,100,100)。利用公式,计算得到“第一个雷达i路振幅差”属性各个子集的信息熵:

再计算“第一个雷达q路振幅差”属性,该属性有两个属性值,计算由这个属性划分出来的每个子集的信息熵。对于“第一个雷达q路振幅差”<0.06,类“无手势”有100个样本,类“摆手”有0个样本,类“推”有0个样本,类“拉”有0个样本,类“举”有0个样本。表示为(100,0,0,0,0)。对于“第一个雷达q路振幅差”>=0.06,类“无手势”有0个样本,类“摆手”有100个样本,类“推”有100个样本,类“举”有100个样本,类“拉”有100个样本。表示为(0,100,100,100,100)。利用公式,计算得到“第一个雷达q路振幅差”属性各个子集的信息熵:

再计算“第二个雷达i路振幅差”属性,该属性有三个属性值,计算由这个属性划分出来的每个子集的信息熵。对于“第二个雷达i路振幅差”<=0.08,类“无手势”有100个样本,类“摆手”有100个样本,类“推”有0个样本,类“拉”有0个样本,类“举”有0个样本。表示为(100,100,0,0,0)。对于“第二个雷达q路振幅差”在(0.08,0.3)区间,类“无手势”有0个样本,类“摆手”有0个样本,类“推”有24个样本,类“拉”有7个样本,类“举”有0个样本。表示为(0,0,24,7,0)。对于“第二个雷达i路振幅差”>=0.3,类“无手势”有0个样本,类“摆手”有0个样本,类“推”有76个样本,类“拉”有93个样本,类“举”有100个样本。表示为(0,0,76,93,100)。利用公式,计算得到“第二个雷达i路振幅差”属性各个子集的信息熵:

再计算“方向数”属性,该属性有两个属性值,计算由这个属性划分出来的每个子集的信息熵。对于“方向数”<7,类“无手势”有100个样本,类“摆手”有95个样本,类“推”有0个样本,类“拉”有0个样本,类“举”有100个样本。表示为(100,95,0,0,100)。对于“方向数”>=7,类“无手势”有0个样本,类“摆手”有5个样本,类“推”有100个样本,类“拉”有100个样本,类“举”有0个样本。表示为(0,5,100,100,0)。利用公式,计算得到“方向数”属性各个子集的信息熵:

再计算“方向1”属性,该属性有三个属性值,计算由这个属性划分出来的每个子集的信息熵。对于“方向1”=0,类“无手势”有100个样本,类“摆手”有95个样本,类“推”有0个样本,类“拉”有0个样本,类“举”有100个样本。表示为(100,95,0,0,100).对于“方向1”=1,类“无手势”有0个样本,类“摆手”有2个样本,类“推”有100个样本,类“举”有0个样本,类“拉”有0个样本。表示为(0,2,100,0,0)。对于“方向1”=2,类“无手势”有0个样本,类“摆手”有0个样本,类“推”有0个样本,类“举”有0个样本,,类“拉”有100个样本。表示为(0,3,0,0,100)。利用公式,计算得到“方向1”属性各个子集的信息熵:

最后计算“方向2”属性,该属性有三个属性值,计算由这个属性划分出来的每个子集的信息熵。对于“方向2”=0,类“无手势”有100个样本,类“摆手”有95个样本,类“推”有0个样本,类“拉”有0个样本,类“举”有100个样本,表示为(95,100,0,0,100)。对于“方向2”=1,类“无手势”有0个样本,类“摆手”有2个样本,类“推”有0个样本,类“举”有0个样本,类“拉”有100个样本,表示为(0,2,0,0,100)。对于“方向2”=2,类“无手势”有0个样本,类“摆手”有3个样本,类“推”有100个样本,类“举”有0个样本,类“拉”有0个样本。表示为(0,3,100,0,0)。利用公式,计算得到“方向2”属性各个子集的信息熵:

(3)依据公式(4),计算依据每个属性划分后训练集的信息熵。

(4)依据公式(5),计算每个属性的信息增益

gain(雷达1的i路振幅差)=i(100,100,100,100,100)-e(雷达1的i路振幅差)=2.3219-1.6=0.7219gain(雷达1的q路振幅差)=i(100,100,100,100,100)-e(雷达1的q路振幅差)=2.3219-1.6=0.7219gain(雷达2的i路振幅差)=i(100,100,100,100)-e(雷达2的i路振幅差)=2.3219-1.2955=1.0264gain(方向数)=i(100,100,100,100,100)-e(方向数)=2.3219-1.4027=0.9192

gain(方向1)=i(100,100,100,100,100)-e(方向1)=2.3219-1.0024=1.3195

gain(方向2)=i(100,100,100,100,100)-e(方向2)=2-1.0024=1.3195

(5)依据公式(6),计算每个属性的信息增益率

(6)选取信息增益率最大的测试属性作为根节点。

从上述计算结果可知,“方向1”,“方向2”属性具有最高的信息增益率,这里选择“方向数1”为根节点,,因为它有3个属性值,所以这个节点三个分支。可以得到“方向1”=1时手势为“推”或“摆手”。“方向1”=2手势为“拉”或“摆手”,“方向1”=0时手势为“无动作”,“摆手”,“举”。

6、第二个测试属性的选择:

接着计算“方向1”=1分支的划分。“方向1”=1时,“推”有100个样本,“摆手”有2个样本,分别计算“雷达1的i路振幅差”,“雷达1的q路振幅差”,“雷达2的i路振幅差”,“方向数”,“方向2”五个测试属性的信息增益率。

在“第一个雷达i路振幅差”属性中,对于“第一个雷达i路振幅差”<0.06,类“推”有0个样本,类“摆手”有0个样本表示为(0,0)。对于“第一个雷达i路振幅差”>=0.06,类“推”有100个样本,类“摆手”有2个样本,表示为(100,2)。根据公式计算得:

gain(雷达1的i路振幅差)=i(100,2)-e(雷达1的i路振幅差)=0.1392-0.1392=0

在“第一个雷达q路振幅差”属性中,对于“第一个雷达q路振幅差”<0.06,类“推手势”有0个样本,类“摆手”有0个样本表示为(0,0)。对于“第一个雷达q路振幅差”>=0.06,类“无手势”有100个样本,类“摆手”有0个样本,表示为(100,2)。根据公式计算得:

gain(雷达1的q路振幅差)=i(100,2)-e(雷达1的q路振幅差)=0.1392-0.1392=0

在“第二个雷达i路振幅差”属性中,对于“第二个雷达i路振幅差”<=0.08,类“拉”有0个样本,类“摆手”有3个样本表示为(0,3)。对于“第二个雷达i路振幅差”在区间(0.08,0.3),类“拉”有7个样本,类“摆手”有个0样本表示为(7,0)。对于“第二个雷达i路振幅差”>=0.3,类“拉”有93个样本,类“摆手”有0个样本,表示为(93,0)。根据公式计算得:

gain(雷达2的i路振幅差)=i(100,3)-e(雷达2的i路振幅差)=0.19-0=0.19

因为“第二个雷达i路振幅差”的信息增益率为无穷大,所以选择其为分裂属性,当“第二个雷达i路振幅差”<0.08时,为“摆手”。当“第二个雷达i路振幅差”>=0.08时为“拉”。

7、第三个测试属性的选择:

接着计算“方向1”=2分支的划分。“方向1”=2时,“拉”有100个样本,“摆手”有3个样本,分别计算“雷达1的i路振幅差”,“雷达1的q路振幅差”,“雷达2的i路振幅差”,“方向数”,“方向2”五个测试属性的信息增益率。

在“第一个雷达i路振幅差”属性中,对于“第一个雷达i路振幅差”<0.06,类“拉”手势有0个样本,类“摆手”有0个样本表示为(0,0)。对于“第一个雷达i路振幅差”>=0.06,类“拉”有100个样本,类“摆手”有3个样本,表示为(100,3)。根据公式计算得:

gain(雷达1的i路振幅差)=i(100,3)-e(雷达1的i路振幅差)=0.19-0.19=0

在“第一个雷达q路振幅差”属性中,对于“第一个雷达q路振幅差”<0.06,类“推手势”有0个样本,类“摆手”有0个样本表示为(0,0)。对于“第一个雷达q路振幅差”>=0.06,类“无手势”有100个样本,类“摆手”有0个样本,表示为(100,3)。根据公式计算得:

gain(雷达1的q路振幅差)=i(100,3)-e(雷达1的q路振幅差)=0.19-0.19=0

在“第二个雷达i路振幅差”属性中,对于“第二个雷达i路振幅差”<=0.08,类“推”有0个样本,类“摆手”有2个样本表示为(0,2)。对于“第二个雷达i路振幅差”在区间(0.08,0.3),类“推”有24个样本,类“摆手”有个0样本表示为(24,0)。对于“第二个雷达i路振幅差”>=0.3,类“推”有76个样本,类“摆手”有0个样本,表示为(76,0)。根据公式计算得:

gain(雷达2的i路振幅差)=i(100,2)-e(雷达2的i路振幅差)=0.1392-0=0.1392

因为“第二个雷达i路振幅差”的信息增益率为无穷大,所以选择其为分裂属性,当“第二个雷达i路振幅差”<0.08时,为“摆手”。当“第二个雷达i路振幅差”>=0.08时为“推”。

8、第四个测试属性的选择:

接着再计算“方向1”=0分支的划分。“方向1”=0时,“无动作”有100个样本,“摆手”有95个样本,“举”有100个样本,分别计算“雷达1的i路振幅差”,“雷达1的q路振幅差”,“雷达2的i路振幅差”,“方向数”,“方向2”五个测试属性的信息增益率。

在“第一个雷达i路振幅差”属性中,对于“第一个雷达i路振幅差”<0.06,类“无手势”有100个样本,类“摆手”有0个样本,类“举”有0个样本。表示为(100,0,0)。对于“第一个雷达i路振幅差”>=0.06,类“无手势”有0个样本,类“摆手”有95个样本,类“举”有100个样本,表示为(0,95,100)。根据公式计算得:

gain(雷达1的i路振幅差)=i(100,100,95)-e(雷达1的i路振幅差)=1.5845-0.6607=0.9238

在“第一个雷达q路振幅差”属性中,对于“第一个雷达q路振幅差”<0.06,类“无手势”有100个样本,类“摆手”有0个样本,类“举”有0个样本。表示为(100,0,0)。对于“第一个雷达q路振幅差”>=0.06,类“无手势”有0个样本,类“摆手”有95个样本,类“举”有100个样本,表示为(0,95,100)。根据公式计算得:

gain(雷达1的q路振幅差)=i(100,100,95)-e(雷达1的q路振幅差)=1.5845-0.6607=0.9238

在“第二个雷达i路振幅差”属性中,对于“第二个雷达i路振幅差”<=0.08,类“无手势”有100个样本,类“摆手”有95个样本,类“举”有0个样本。表示为(100,95,0)。对于“第二个雷达i路振幅差”在区间(0.08,0.3),类“无手势”有0个样本,类“摆手”有0个样本,类“举”有0个样本,表示为(0,0,0)。对于“第二个雷达i路振幅差”>=0.3,类“无手势”有0个样本,类“摆手”有0个样本,类“举”有100个样本,表示为(0,0,100)。根据公式计算得:

gain(雷达2的i路振幅差)=i(100,100,95)-e(雷达2的i路振幅差)=1.5845-0.6607=0.9238

在“方向数”属性中,对于“方向数”<7,类“无手势”有100个样本,类“摆手”有95个样本,类“举”有100个样本。表示为(100,95,100)。对于“方向数”>=7,类“无手势”有0个样本,类“摆手”有0个样本,类“举”有0个样本,表示为(0,0,0)。根据公式计算得:

gain(方向数)=i(100,95,100)-e(方向数)=1.5845-1.5845=0

在“方向2”属性中,对于“方向2”=0,类“无手势”有100个样本,类“摆手”有95个样本,类“举”有100个样本。表示为(100,95,100)。对于“方向2”=1,类“无手势”有0个样本,类“摆手”有0个样本,类“举”有0个样本,表示为(0,0,0)。对于“方向2”=2,类“无手势”有0个样本,类“摆手”有0个样本,类“举”有0个样本,表示为(0,0,0)。根据公式计算得:

gain(方向2)=i(100,95,100)-e(方向1)=1.5845-1.5845=0

从上述计算结果可知,“雷达1的i路振幅差”,“雷达1的q路振幅差”,“雷达2的i路振幅差”属性都具有最高的信息增益,这里选择其中一个作为分裂点,这里选择”雷达1的i路振幅差”。当“雷达1的i路振幅差”<0.06时,手势都为“无手势”,当“雷达1的i路振幅差”>=0.06为“摆手”,“举”。

9、第五个测试属性的选择:

接着再计算“雷达1的i路振幅差”>=0.06分支的划分“雷达1的i路振幅差”>=0.06,“摆手”有95个样本,“举”有100个样本,分别计算“雷达1的q路振幅差”,“雷达2的i路振幅差”两个属性的信息增益率。

在“雷达1的q路振幅差”属性中,对于“雷达1的q路振幅差”<0.06,类“摆手”有0个样本,类“举”有0个样本。表示为(0.0)。对于“雷达1的q路振幅差”>=0.06,类“摆手”有95个样本,类“举”有100个样本。表示为(95,100).根据公式计算得:

gain(雷达1的q路振幅差)=i(95,100)-e(雷达1的q路振幅差)=0.9995-0.9995=0

在“第二个雷达i路振幅差”属性中,对于“第二个雷达i路振幅差”<0.08,类“摆手”有95个样本,类“举”有0个样本。表示为(95,0)。对于“第二个雷达i路振幅差”在区间(0.08,0.3),类“摆手”有0个样本,类“举”有0个样本,表示为(0,0)。对于“第二个雷达i路振幅差”>0.3,类“摆手”有0个样本,类“举”有100个样本。表示为(0,100)根据公式计算得:

gain(雷达2的i路振幅差)=i(95,100)-e(雷达2的i路振幅差)=0.9995-0=0.9995

从上述计算结果可知,“雷达2的i路振幅差”具有最高的信息增益,这里选择其为分裂点,可得当“雷达2的i路振幅差”<0.3时为“摆手”,当“雷达2的i路振幅差”>=0.3时为“举”。

根据上述构建过程得到的结果即为图2所示的决策树。

进一步可得决策树分类规则为:

当“方向1”=1且“第二个雷达i路振幅差”>=0.08,为“推”。

当“方向1”=2且“第二个雷达i路振幅差”>=0.08,为“拉”。

当“方向1”=1且“第二个雷达i路振幅差”<0.08,为“摆手”。

当“方向1”=2且“第二个雷达i路振幅差”<0.08,为“摆手”。

当“方向1”=0,且“雷达1的i路振幅差<0.06”为“无动作”。

当“方向1”=0,且“雷达1的i路振幅差>=0.06”且“雷达2的i路振幅差>=0.3”为“举”。

当“方向1”=0,且“雷达1的i路振幅差>=0.06”且“雷达2的i路振幅差<0.3”为“摆手”。

<实施例效果>

实验邀请一名男生,一名女生进行实验,每个动作做各50次。形成一个具有250个样本的男生测试集和一个具有250个样本的女生测试集,运用生成的决策树对男生测试集和女生测试集进行测试,其结果的正确率如表1所示:

可以结果看出,对于上述5个动作的准确率都在90%以上。

本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1