基于毫米波雷达的手势分割与识别算法
技术领域
:本发明涉及手势分割识别算法
技术领域
,具体的说是一种分类识别性能较好,且对测试对象数据具有更好的泛化能力的基于毫米波雷达的手势分割与识别算法。背景技术
:基于手势识别的人机交互在自然性和方便性上具有很大的优势,使得手势识别拥有着越来越多的应用场景,如智能家居系统、手语实时教学系统、手势操控游戏系统等。伴随着人机交互技术的飞速发展,手势识别技术已成为国内外学者的研究热点。现有的手势识别的方法,从信号类型角度主要有基于可见光,深度等视觉图像,基于可穿戴式设备的运动传感器,压力传感器等力学传感器信号,基于Wi-Fi等非宽带无线通信信号和基于雷达信号四大类。其中视觉图像方法受光照条件,背景环境以及部分遮挡影响明显,且存在泄露用户隐私风险;可穿戴设备使用不便,适用场景有限;非宽带无线通信信号方法分辨率低,背景干扰较大。FMCW毫米波雷达传感器具有体积小,成本低,距离和速度分辨力高,不受光照变化等因素的影响,抗干扰性强等优点,使得基于毫米波雷达的手势识别技术成为近年来的研究热点。
从识别算法角度,主要有人工提取特征和常规机器学习分类方法以及深度学习方法。人工选择提取的特征主观性较强,不能完全满足实际手势识别系统的要求。深度学习方法近年来在手势识别上应用越来越广泛,与传统人工特征提取加分类器的方式相比,深度学习方式将自动特征提取和分类联合为一体形成了端到端学习架构,避免了人工经验特征提取的主观性,因此在识别率上也取得质的提升。Jun Seuk Suh使用长期短期记忆递归神经网络作为有监督的机器学习技术,在距离24GH毫米波雷达发射天线中心0.4m和±30°内,可以识别出七种手势,精度达到91%以上。B.Dekker等人利用24GHz FMCW雷达的微多普勒频谱图和深度卷积神经网络(CNN)进行手势识别取得较好的分类效果。王勇等人基于FMCW雷达系统和卷积神经网络(CNN)进行手势识别,利用距离、多普勒和角度参数进行图像拼接,构建出手势动作的多维参数数据集,解决了单维参数描述手势信息量低的问题,相对于单维参数数据集提高了手势识别的准确率。
然而,以上手势识别算法的研究主要侧重于对孤立动作数据进行离线的分类识别,这一类手势识别在计算机视觉领域已经研究多年,给出一段只包含一个动作的手势数据,要求给数据分类,可以看作是输入为时间较短且有唯一确定标签的数据,输出为动作标签的多分类问题。这种方法是通过避免手势动作的时序定位来降低识别算法的研究难度,使得后续的算法研究得以进展。在现实应用中更容易遇到的情况是尚未在时域分割的动作流数据,可能既有连续做手势动作的时间状态,也有无手势动作即空闲的时间状态,我们无法预知用户何时做手势,手势何时结束,因此实时手势识别必须解决在手势动作流数据中手势检测问题,即需要同时对行为动作进行时域定位和类型判定。该类手势识别更为复杂,连续动作流数据中通常包含多种动作类别,系统需自动的识别出动作的起始和结束以及动作类别。除此之外,传统的基于雷达的手势识别方法主要侧重于构建二维图像格式的手势数据进行分类识别,该格式的手势数据包含手势的关键信息较少。
发明内容
:本发明针对以上问题,提出了一种实时手势分割方法,首先对实时动作流数据进行滑窗分批处理,然后根据分批后实时数据的手势标签输出概率分布完成实时数据的时间状态区间划定;除此之外,还构建了较二维图像格式手势数据更丰富的三维视频格式的手势数据,并搭建了基于三维卷积的神经网络模型对三维视频格式手势数据进行分类识别。
本发明通过以下措施达到:
一种基于毫米波雷达的手势分割与识别算法,包括模型搭建与训练阶段以及模型应用阶段,其特征在于,所述模型搭建与训练阶段包括以下步骤:
步骤1:采集手势动作的雷达回波数据,其中单一手势动作每个采集周期中,动作均重复多次,同时采集连续手势动作,其中至少包含两种手势,并记录手势改变的时刻;
步骤2:将雷达发射信号ST(t)和接收信号SR(t)输入到混频器,得到的混频信号 SM(t)通过低通滤波器滤除高频部分,得到中频信号频率SIF(t),其中,77GHz 毫米波雷达发射信号ST(t)具体表示式为:
其中,AT表示发射信号的幅值,fc是载波的中心频率,T是锯齿波信号脉宽, fT(τ)表示在T时间内发射信号的频率;
雷达接收信号SR(t)具体表示式为:
其中,AT为接收信号幅值,Δt为时延,fR(t)为T时间内接收信号频率;
通过混频器得到混频信号SM(t),其表示式为:SM(t)=ST(t)SR(t),混频信号SM(t)通过低通滤波器,得到中频信号SIF(t),其表示式为:
步骤3:对中频信号逐帧进行二维傅里叶变换,然后进行高通滤波,得到时间- 距离-速度三维图谱;
步骤4:将单一手势动作集按时间轴滑动窗口对视频数据集进行片段切分,切分的样本前后有部分重叠的序列帧,重叠的帧数由滑动窗口算法的窗长和步长决定,不同步长和窗口长度直接影响手势分割和识别的效果,得到一系列样本后,随机划分为训练集Strain和验证集Sval;
步骤5:建立三维卷积神经网络模型,将训练集Strain作为三维卷积神经网络的输入数据,训练三维卷积神经网络,并用验证集Sval测试其性能,具体包括:
步骤5-1:搭建三维卷积神经网络模型,其中包含4层3D卷积层,卷积核个数分别为4、8、32、64,激活函数采用ReLU,4层BN层,3层最大3D池化层,通过flatten层展平,再通过3层全连接层,神经元个数分别为256、32、3,前两层激活函数采用tanh,输出层激活函数采用softmax得到输出;
步骤5-2:选取训练总轮数,每轮训练前随机打乱训练集Strain.
步骤5-3:输入训练集Strain对模型进行训练epoch=30,以10个样本作为一个batch,损失函数是交叉熵;训练时采用Adam算法作为模型梯度的优化算法,Adam 算法采用自适应动态调整的学习率,能够根据不同的参数选择不同的学习率,还能够对学习率形成一个动态约束,避免较大的梯度波动,记录训练集的损失函数值和准确率,每个epoch结束后利用验证集Sval进行验证,记录验证集的损失函数值和准确率。
将训练集Strain作为三维卷积神经网络的输入数据,训练三维卷积神经网络,并用验证集Sval测试其性能。
所述模型应用阶段包括:
步骤6:对于连续手势集,逐帧滑动窗口提取样本并投入步骤5中训练好的三维卷积神经网络模型中进行识别,初步识别结果通过分割算法进行精确定位和手势分割,最终获得完整手势信息。
本发明步骤4具体包括以下步骤:
步骤4-1:估算动作周期,多次试验确定最佳的窗长L和步长lsp,窗长应小于最快动作一个周期的帧数;
步骤4-2:以步长lsp滑动窗口,截取样本,并添加标签;
步骤4-3:按照80%、20%的比例将样本划分为训练集Strain和验证集Sval。
本发明步骤6中具体包括以下步骤:
步骤6-1:按照在时间轴上步长lsp和窗长L,其中lsp<=L划分连续手势三维图谱,并投入步骤5中获得的模型中进行识别,将识别结果记录为数组并可视化;
步骤6-2:将最大识别概率低于0.8的窗标记为过渡窗;
步骤6-3:将连续识别为同一动作的片段记录为动作;
步骤6-4:将输出标签的概率矩阵曲线的两两相交,随着时间的增加,某一种手势标签的输出概率下降,另一种手势标签的输出概率上升,两标签输出概率曲线的交叉点作为分割的边界点,并确定为动作起止点或者是分界点,完成手势分割;步骤6-5:将找到的分割边界与分工分割记录的分割边界进行对比,性能分析。
本发明具体采用以下步骤:
步骤1:设计上下挥手、左右挥手和前推后拉三种手势动作,将每一种动作记为不同类别,单一手势动作每个采集周期中,动作均重复多次,同时,采集连续手势动作,其中至少包含两种手势,并记录手势改变的时刻,包括以下步骤:
步骤1-1:设计上下挥手、左右挥手和前推后拉这三个手势动作作为要采集的动作,为每个动作添加标签;
步骤1-2:对数据采集所用的77GHz毫米波雷达进行参数配置,根据手势识别的实际应用场景,设置合适的雷达波形参数;可以采用TI公司的IWR1642雷达,波形是线性调频连续波,采样频率为2000kHz,帧周期为45ms,每次采集150 帧数据,每帧内有128个chirp信号,每个chirp信号有64个采样点,天线采用单发单收方式,采集环境为较为空旷的走廊;
步骤1-3:采集单一手势动作,每个采集周期中,动作连续重复进行;
步骤1-4:采集混合手势动作,每个采集周期中至少包含两种手势,并记录手势改变的时刻;
步骤2:将雷达发射信号ST(t)和接收信号SR(t)输入到混频器,得到的混频信号 SM(t)通过低通滤波器滤除高频部分,得到中频信号频率SIF(t);
步骤3:对中频信号逐帧进行二维傅里叶变换,然后进行高通滤波,得到时间- 距离-多普勒三维图谱,包括以下步骤:
步骤3-1:由雷达参数,128个扫频信号构成一帧;
步骤3-2:对每帧信号进行二维傅里叶变换,得到距离-多普勒图;
步骤3-3:选取高通滤波器,对每一帧信号进行高通滤波,去除静目标杂波干扰;
步骤3-4:按帧顺序排列距离-多普勒图,得到时间-距离-多普勒三维图谱;
步骤4:将单一手势动作集按时间轴滑动窗口对雷达视频进行片段切分,得到一系列样本,并划分为训练集Strain和验证集Sval,包括以下步骤:
步骤4-1:估算动作周期,确定窗长L,窗长小于最快动作一个周期的帧数,保证样本中记录动作的视频片段信息,窗长不宜太大,容易导致后续测试的连续手势的分割边界不明确,也不宜太小,太小,视频片段信息太少,不足以代表一种手势运动状态的特性;
步骤4-2:假设采集到的连续手势的总的帧数为N,在时间维度上以一定步长lsp滑动窗口,从单一手势信号集中截取样本,并添加标签,每个三维图谱获取个样本;
步骤4-3:将所有样本按照80%、20%的比例划分为训练集Strain和验证集Sval;
步骤5:将训练集Strain作为三维卷积神经网络的输入数据,训练三维卷积神经网络,并用验证集Sval测试其性能,包括以下步骤:
步骤5-1:建立三维卷积神经网络模型,其包含4层3D卷积层,卷积核个数分别为4、8、32、64,激活函数采用ReLU;4层BN层,3层最大3D池化层,通过flatten层展平,再通过3层全连接层,神经元个数分别为256、32、3,前两层激活函数采用tanh,输出层激活函数采用softmax得到输出;
步骤5-2:选取训练总轮数,每轮训练前随机打乱训练集Strain;
步骤5-3:输入训练集Strain对模型进行训练epoch=30,以10个样本作为一个batch,损失函数是交叉熵;训练时采用Adam算法作为模型梯度的优化算法,Adam 算法采用自适应动态调整的学习率,能够根据不同的参数选择不同的学习率,还能够对学习率形成一个动态约束,避免较大的梯度波动;记录训练集的损失函数值和准确率;每个epoch结束后利用验证集Sval进行验证,记录验证集的损失函数值和准确率;
步骤6:对于连续手势集,逐帧滑动窗口提取样本并投入训练好的网络进行识别,初步识别结果通过分割算法进行精确定位和手势分割,最终获得完整手势信息,包括以下步骤:
步骤6-1:按照在时间轴上窗长L,步长lsp划分连续手势三维图谱,投入网络进行识别测试,将三种标签的识别概率记录下来并进行可视化;
步骤6-2:将最大识别概率低于设定的阈值的窗标记为过渡窗,其余窗依据其最大识别概率打上相应标签;
步骤6-3:将连续识别结果为同一动作的片段记录为动作;
步骤6-4:确定动作起止点,完成手势分割。
本发明相比于传统的手势识别技术,本发明采用了滑窗算法和三维卷积神经网络,能够处理连续手势信号,对不同手势进行识别和分割,充分利用时间信息,解决了传统手势识别技术只能识别单手势的问题。
附图说明
:附图1是本发明的流程示意图。
附图2是本发明实施例中手势数据集对应的五种手势。
附图3是本发明实施例中RTM和DTM图。
附图4是本发明实施例中RDTM图。
附图5是本发明实施例中实际动作流数据滑窗分批示意图。
附图6是本发明实施例中三维卷积神经网络模型示意图。
附图7是本发明实施例中实时手势数据的5种手势标签输出概率分布曲线图。
附图8是本发明实施例实时手势识别系统。
具体实施方式
:
下面结合附图和实施例对本发明作进一步的说明。
本发明以非接触式游戏应用中实际控制俄罗斯方块游戏为需求,分类识别上下挥手,前推后拉,手掌旋转,水平面画圆,左右挥手这5种手势动作,如附图 2所示,给出了手势数据集对应的5种手势。
实验采用TI公司的AWR1642开发板进行数据采集,其雷达发射的是线性调频连续波,也称chirp信号。毫米波雷达芯片输出的中频信号采样数据通过 DCA1000高速数据采集卡获取,并通过网口由以太网传输到台式机上。根据游戏应用需要,确定雷达的性能指标要求如表2-1所示。
表2-1雷达性能指标
假设雷达连续发射M个Chirp信号,每个Chirp的中频信号的采样点数为N,并按行进行存储,得到的M×N矩阵,对矩阵进行沿着chirp采样点的方向进行傅里叶变换,可以得到目标的距离频谱信息,简称距离FFT;接着沿着慢时间域即chirp索引的方向进行傅里叶变换,可以得到速度信息,简称速度FFT,经过两次FFT后,最终得到距离-多普勒频谱图(Range-Doppler-Map,RDM),称作2D-FFT。由于人距离雷达较近,人的手掌,手臂,头部等部位均有较强的雷达回波,人体本身对于雷达而言,属于分布式目标。人的头部,腹部等回波信号不是我们关注的,属于杂波干扰,真正有分类意义的信号是做手势的手掌,手肘以及手臂的回波,这两类信号频谱最大的不同是运动速度的不同,所以在进行速度维FFT前在慢时间域加入高通滤波器进行滤波,抑制静止和速度接近为零的物体的回波干扰。
动态手势信息更多集中在手和手臂的运动上,时间信息起关键作用,雷达数据经过预处理后得到的RDM,只反映了某个短时间内雷达观测到的目标的信息,缺乏时间信息,不能直接作为表征手势的数据。
本发明基于手运动过程的RDM构建具有时间信息的二维图像格式的手势数据,具体方法是每一帧数据的RDM的所有多普勒单元的幅度按照所在的距离门单元对应累加一起得到当前帧时刻各个距离门的能量分布值,并且按照时间进行帧排列得到距离-时间图(Range-Time-Map,RTM),RTM反映了各个距离门单元能量随时间变化的情况。同样的,将每一帧的RDM所有距离门单元的幅度按照所在的多普勒单元对应累加并按照时间顺序进行帧排列得到多普勒-时间图 (Doppler-Time-Map,DTM)。如图3所示,是时长为2秒的DTM和RTM。
RTM和DTM都是二维的雷达图像,分别记录了手的距离及速度随着时间变化的规律,都具有一定的手势表征意义,但它们割裂了手势目标的距离和速度之间的内在特征联系。本发明从特征联合的角度出发,构建了一种三维视频图像数据,将雷达回波数据的距离和速度特征紧密联系在一起,具体方法是将每一帧的RDM 按照时间顺序排列组成距离-多普勒-时间图(Range-Doppler-Time-Map,RDTM) 如图4所示,RDTM是一种雷达视频格式的手势数据,它将每个时刻目标的距离和速度特征联合了起来,还完整保留了时间维度的特征信息。
卷积网络模型训练的输入,一般要求固定尺寸的网格数据,传统方法是进行人工裁剪和填充再输入模型,但对于实时的手势识别,持续产生的手势动作流数据,并不能直接输入所搭建的网络进行训练。所以本发明采用滑动窗口算法进行分批处理,分批的步骤是先估算手势动作周期,通过多次实验确定合适的窗长L 和滑动步长lsp,使不同手势差异性最大的同时实时性最好,不同特征频谱最佳窗长L不同。如图5所示,是实际动作流数据的滑窗分批处理示意图。动作流数据经过分批处理后得到的可能是全部包含动作,部分包含空闲状态部分包含动作以及全部是空闲状态的时间数据片段,按照时间顺序进行由小到大的数字编号,各个编号的时间数据片段需要人工进行分析判断和标签标注。
基于深度学习方式的手势识别方法,大批量有特定标签的数据样本的获取非常重要。训练样本集的作用是提供网络模型学习资料以及模板库,本发明训练样本集的获取方法与传统不同,本发明用于获取训练样本的是单种手势动作周期重复的不包含空闲状态的动作流数据,这样的数据经过滑窗分批处理后即可打上特定的手势标签,不涉及手势动作的分割,该训练样本的获取方法既可减少数据采集的工作量也可减少大批量数据标签标注的工作量。假设单次采集的手势动作周期重复的不包含空闲状态的动作流数据的总帧数为N,在时间维度上以窗长L 和步长lsp分批处理,那么可获得的样本个数n为:
滑窗截取的相邻样本之间重叠的时间数据帧数m为:
m=L-lsp (2-2)
本发明一共采集了15名志愿者的手势数据,其中10名实验对象作为训练对象,另外5名实验对象作为测试对象。本发明分类识别5种手势动作,每种类型数据集有4000个训练样本,共20000个训练样本。录制5名测试对象的实际动作流数据并做好实验摄像头视频的同步录制,方便后续进行人工标注标签。
对于手势分割,现有的分割方法多为人工分割,即在采集手势数据时只采集一个手势动作的数据,之后人工判断手势动作的关键时间区域,这种方法只适合于离线处理。也有少部分研究者根据速度阈值进行预分割,但这种分割方法相对粗糙,分割效果一般,且只适合分割有明显的空闲状态的手势数据,对于连续做不同手势动作的无空闲状态的数据分割效果较差。
本发明采用了一种先识别后确定手势的起始和结束数据帧方法,实际应用时将传感器的实时动作流数据先通过滑动窗口算法进行数据实时分批,并将分批后的时间数据片段按照时间顺序进行由小到大的数字编号,然后输入提前训练好的模型进行分类判断得到各个时间数据片段的各种手势标签的概率值,将输出的各种手势标签概率值按照编号顺序依次进行绘制得到手势标签的概率分布。如图7 所示,为本发明测试对象的实时数据分批处理后进行识别得到的概率分布结果,其中:a为动作1状态时间段,b为空闲状态时间段,c为连续做不同动作状态时间段;将识别概率值大于特定阈值的时间数据片段标记为动作状态时间段,小于特定阈值的标记为空闲状态时间段,阈值门限直线与曲线的交点,认为是手势动作转换的分界点,根据分界点的样本编号和滑动窗口分帧算法的窗长和步长两个参数可以反推手势动作的起始数据帧和结束数据帧,进而得到不同手势动作状态区间以及空闲状态区间,完成手势动作的算法分割,根据手势分割结果输出手势数据的预测标签。
手势分割的评价指标,目前并无统一的标准。本发明以手动分割标记的标签与通过算法分割的模型的输出标签之间的一致性程度被用作相对分割标准。假设手动标记的标签个数为S,算法分割得到的标签个数为Nb,其中与标签一致的模型输出为Nb其中分割准确率ξ为:
从公式(2-3)可以知道,本发明的相对分割精度实际上就是测试数据集的分类准确率。
卷积网络(Convolutional Neural Networks—CNN)的特征检测识别在人脸识别,图片分类等取得了巨大的成功,因为一张人脸图片或者是别的图片已经包含了全部重要信息,而在动态手势识别的分类任务上,更重要的是时序信息,CNN 本身并非用于时间信息的模型,RTM和DTM在某种意义上是将时间信息进行图像化表示,所以本发明利用VGG-16这种CNN网络模型对RTM和DTM进行迁移学习。传统的CNN网络无法处理本发明的RDTM数据集,所以本发明设计了一种基于三维卷积的模型(Convolutional 3_dimensional NeuralNetworks,C3DN),专门处理RDTM 的数据集;C3DN模型结构组成如图6所示,该模型包含5层3D卷积层,4层BN层和 4层最大3D池化层,激活函数采用Relu函数,最后连接softmax层,用于输出分类结果和相似度分布数组。
实验与结果分析如下:
RDTM分批处理后输入本发明搭建的网络进行特征学习和模型训练,采用 adma优化器,自适应学习率,迭代30个Epochs,每次迭代的批样本数(batch size) 为10,采用GPU加速训练,在训练过程中进行测试集的验证。为了分析动作流数据分批处理中滑动窗口算法的窗长度对手势识别性能的影响,以RDTM格式的手势数据为例,分别输入窗长为6帧,9帧、12帧、15帧、18、21帧、24帧以及30帧的数据样本进行模型训练和测试,计算整体平均分类准确率得到表3-1,从表中可以看出少于12帧的数据集由于样本数据不能完整包含手势分类的主要关键信息,分类效果较差。而18帧以上的数据集分类准确率并没有明显的提升,在带来更大的内存开销的同时也影响实时性。当分帧的窗长大于21帧时,测试对象数据集的准确率迅速下降,因为手势持续时间是1秒左右,帧数是20帧左右,窗长过大,导致连续手势数据流的手势分割不准进而影响手势标签的准确输出。因此本发明选择12帧时间长度的RDTM来表征本发明的三种手势。同理可得RTM和DTM这两种频谱的最佳窗长和步长,如表3-3所示。
表3-1不同时间窗长度测试数据集分类准确率对比
表3-2不同滑动时间步长测试数据集分类准确率对比
表3-3不同格式手势数据的最佳窗长和步长对比
将分批处理后的RDTM输入C3DN网络模型进行分类识别,记录模型测试结果。本发明记录测试对象A和B的测试样本的概率混淆矩阵如表3-4和3-5所示,从表3-4和3-5中可以看出不同手势动作的易混淆程度是不同的,手掌旋转与其他两个动作几乎不存在混淆的现象,因为这个动作与其他四个动作的雷达图像差异性很大;不同对象之间也存在比较明显的差异性。所以应该尽可能增加不同对象的训练样本,缩小对象的差异性;同时手势识别的准确率不能以某个对象的准确率为标准,也不能以某种手势的分类准确率为标准,在评价算法的性能时,应该以某几种具体的手势动作以及多个实验对象的平均分类准确率作为相对性能评价指标。由于篇幅有些限,另外三名测试对象不再一一列出,只给出其平均分类准确率。5名测试对象的测试集平均分类准确率分别为88.275%,91.800%,94.625%,89.375%,91.125%。
表3-4测试对象A手势数据的概率混淆矩阵
表-5测试对象B手势数据的概率混淆矩阵
为了比较不同分类识别方法的性能,分别将RDTM,DTM,RTM以及RTM与 DTM拼接作为表征手势的数据,并输入对应的网络模型训练与测试得到测试结果如表3-6所示。从表中可以看出,本发明提出的手势数据RDTM与C3DN网络的方法分类准确率均比其他方法高。
表3-6不同手势识别方法测试数据集准确率对比
本发明提出了一种基于FMCW毫米波雷达的端到端的实时手势识别方法,创新性进行了手势分割。针对雷达视频设计了基于3DCNN网络单元的C3DN网络模型,利用距离-多普勒-时间频谱这种三维数据表征手势并构建相应数据集进行训练和测试,并分别对5名测试对象的数据集进行分类识别。分类结果显示,相比二维图像型的手势数据与普通CNN网络模型的分类方法,本发明提出的代表手势的 RDTM三维数据与自己搭建C3DN网络取得最优的分类表现。说明本发明提出的手势识别方法不仅具有更好的手势表征能力,而且具有较好的测试对象泛化能力。