基于神经网络空时特征提取的动态手势识别

2021-06-29 06:36林智伟朱文章
计算机与现代化 2021年6期
关键词:手势卷积动态

林智伟,朱文章,陈 浩

(厦门理工学院光电与通信工程学院,福建 厦门 361024)

0 引 言

人机交互是近年来广泛研究的热点之一,基于手势识别的交互方式也越来越受到关注[1]。经过不断的发展,基于视觉的手势识别具有多种方法。传统的有基于数据手套的方法,在实际应用中佩戴繁琐,携带不便,且硬件成本高,人机交互的局限性较大。基于模板匹配方法[2]可以提取视频数据集的特征信息,再与已经定义的模板进行匹配后识别,存在的缺点是难以客观地提取行为特征。Parcheta等人[3]用隐马尔可夫模型进行了手势识别的研究,在自采集的91个手语词汇的数据集上的识别率为84.6%。Mohanty等人[4]基于单目摄像头来做动态手势识别的研究,提出了基于卷积神经网络来做手势识别的方法,但该方法适合于二维静态手势动作。Molchanov等人[5]使用R3DCNN对视频中的动态手势进行检测和分类。Wu等人[6]通过3D卷积神经网络实现动态手势识别,并在2014ChaLearn的手势数据集上进行验证取得了不错的效果。

基于视觉的算法在智能视频监控、智能人机交互、虚拟现实[7]等领域应用广泛。研究基于视觉的动态手势交互方法具有重要的实际应用价值,提高了使用的智能化水平[8]。虽然基于2D卷积神经网络在图像上取得较好的特征提取和分类的效果,但是对于视频中的动态手势动作的长序列图像的处理还存在不足。基于3D卷积神经网络虽然能够处理序列问题,但是计算复杂度高。鉴于2D卷积神经网络有提取特征的能力和长短期记忆网络能够处理时序问题,本文提出将2种网络进行融合改进训练,将卷积神经网络提取的特征作为长短期记忆网络的输入,并进一步编码形成序列关联信息[9],对空时域的信息进行有效融合,以投票的方式获得所属动态手势类别。由于在实际应用当中对于手势算法的鲁棒性和实时性要求较高,因此基于视觉的手势识别充满挑战性[10]。

1 深度网络架构

对于动态手势识别问题,本文使用的主要是基于彩色图的动态手势识别,即为对彩色序列图像数据进行特征的提取,提出了将2D卷积神经网络和长短期记忆网络相互融合的深度网络架构[11]。将动态手势数据集的视频通过相关的算法处理为帧数相同的连续序列图像输入到网络模型,并使用在线数据增强算法进行预处理。2D卷积神经网络的权值共享、局部感知和池化降采样的特点[12]可以对序列数据进行特征提取和降维,同时模型采用BP反向传播算法进行逐层修正,使用交叉熵函数不断进行训练提高网络的精度和模型的预测能力。随后,将卷积神经网络提取的特征经过长短期记忆网络解析前后帧时序关联,最终输入到Softmax分类器,以向量的形式表示动态手势类别,计算并划分出到某个类别的概率进而与预定义类别进行匹配。动态手势视频序列识别网络结构如图1所示。

图1 动态手势识别网络结构

1.1 空间特征提取

本文采用二维卷积神经网络提取动态手势的空间特征。分别采用了4层卷积和残差深层卷积网络类型来做几组对比验证。其中为了避免随着网络深度的增加,网络产生梯度消失或梯度弥散的问题,采用了不同深度残差网络[13]结构作为2D卷积神经网络提取空间特征。设计的空间特征的提取器均是由卷积层和最大池化层组成,大量使用了3×3卷积核以及在通道数的前后使用1×1卷积核来进行降维。网络的序列图像输入的大小为224×224×3的彩色序列图。

卷积过程如下:

1)卷积神经网络通过卷积层对关键特征进行提取。

(1)

2)池化层用于降维,减少参数量。

(2)

3)全连接层上的神经元与上一层的神经元进行全连接,进行维度变换,将高维的特征变为低维。

(3)

卷积操作后图像大小变化:

(4)

池化过程图像大小变化:

(5)

式中,Woutput为卷积输出图像大小,Winput为输入图像大小,Wfilter为卷积核大小,p为padding填充,s为步长。卷积神经网络通过前向传播的过程可得到相应的预测输出值,再通过反向传播[14]进行参数的更新和误差的修正。

1.2 时间特征提取

动态手势用连续的序列图像表示,而实现分类则是从序列到所定义的标签上的映射。RNN[15]能够处理短时间维度上的问题,但是对于长时间维度上的问题就不能够处理,所以本文引用了长短期记忆网络[16](LSTM)与二维卷积神经网络来共同建模处理动态手势动作的空时关系。本文使用了3层长短期记忆网络,数据向量维度是300,隐藏元维度为256。长短期记忆网络的输入是二维卷积神经网络提取的空间特征,输出时则是空时特征,通过最后时刻输出的特征信息来做分类,包含同一时刻的动态手势动作的序列状态信息。长短期记忆网络的组成结构和单元结构如图2和图3所示。

图2 长短期记忆网络结构示意图

图3 长短期记忆单元结构

长短期记忆网络计算结构为:

1)遗忘门(forget gate),以一定的概率控制是否遗忘上一层的细胞状态。

f(t)=σ(wfh(t-1)+ufx(t)+bf)

(6)

2)输入门(input gate),负责处理当前位置的输入。

i(t)=σ(wih(t-1)+uix(t)+bi)

(7)

a(t)=tanh(wah(t-1)+uax(t)+ba)

(8)

3)细胞状态(cell):C(t)。

C(t)=C(t-1)×f(t)+i(t)×a(t)

(9)

4)输出门(output gate)。

O(t)=σ(woh(t-1)+uox(t)+bo)

(10)

h(t)=O(t)×tanh(C(t))

(11)

式中,σ为非线性激活函数Sigmoid;w、u为各个门计算权重矩阵,b为偏置;x(t)表示t时间点的输入值;h(t)为t时间点的输出值;h(t-1)表示为上一个时间点神经元计算的结果;a(t)为新生成的候选数值,增加到神经元状态中;f(t),i(t),C(t),O(t)分别代表遗忘门、输入门、单元细胞向量、输出门,均和隐藏向量的大小相同。序列信息通过长短期记忆网络传递后,在空时域上进行有效融合,最后通过全连接层进行分类。

2 模型的优化和调整

在网络模型结构搭建好之后,用相关的数据集进行训练,验证所选样本在模型性能上的表现。使用梯度下降法来微调网络的参数[17],调试并选择出合适的超参数策略来决定测试的网络模型。

2.1 参数优化

通常使用损失函数来评估模型拟合程度的好坏,损失函数极小化表示拟合程度好,参数也达到最佳状态。在线性问题中,用均方误差来衡量,通常为样本输出值与假设函数预测值的差取平方。均方误差损失函数为:

(12)

其中,C为代价函数值,x表示样本,n为样本总数,y为实际值,a为预测输出值。

优化损失函数说明了需要让损失函数收敛到一定的值,这样模型才是最优的。在非线性问题中,使用交叉熵损失函数,交叉熵在分类问题中常常与Softmax结合,Softmax将输出的结果进行处理,使其多个分类的预测值和为1,将原始输出层变成一个概率分布,再通过交叉熵来计算损失。

Softmax分类层输出计算公式为:

(13)

其中,xi为第i个神经元输出,xk为神经元最后输出值,P为输出层的手势的概率,θ为模型参数。

交叉熵函数计算公式为:

(14)

其中,x表示样本,m表示样本的总数,y为实际值,a为预测输出值。

同时使用Adam优化器[18],能够替代传统随机梯度下降过程的一阶优化算法,基于训练数据迭代地更新神经网络权重。利用梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率,每一次迭代学习率都有个确定范围,使得参数比较平稳。

1)计算梯度的一阶矩,对一阶矩进行矫正,具体计算公式[18]为:

(15)

2)计算梯度的二阶矩对二阶矩进行矫正,具体的计算公式[18]为:

(16)

2.2 正则化

在网络模型的训练过程中为了解决网络的过拟合问题,加上正则化项,自动削弱不重要的特征,提取出重要的变量特征,减少特征变量的数量级,提升模型的泛化能力。

C=C0+λ‖θ‖2

(17)

其中,C0是原损失函数,λ‖θ‖2是L2正则化项,λ是正则化系数,控制约束正则化对损失函数所起的作用大小。

3 实验结果与分析

3.1 实验平台

本文的训练和测试均在操作系统为Ubuntu14.04,显卡是泰坦X,显存大小为12 GB的GPU服务器上进行模型的搭建,使用Pytorch开源框架实现。模型的权重参数采用残差网络的预训练权重模型。

3.2 实验数据选择与预处理

在构建模型过程中,先进行初始化参数设置,动态手势类别设定为对应分类类别,图像长宽调整为IMG_W=224,IMG_H=224,以适应残差网络的结构。BATCH_SIZE为训练的批次数,采用合适的BATCH_SIZE可减小迭代的次数,加快训练速度,减少震荡,加快收敛,本文设定为15。学习率设置为0.0001,控制模型的训练进度,并使用Relu函数进行激活。

本文的自采集数据是基于OpenCV2,使用普通的2D摄像头拍摄采集的。将采集的动态手势视频处理成图像序列时分辨率大小为640×480。通过内置函数将其分辨率大小调整为224×224。为了保证训练出的动态手势模型的通用性,数据集由5名志愿者参与采集,采集7种不同的动态手势动作,每个人每个动作采集20个,依据在场景中采集的距离和位置的不同进行变换。每类样本为100个,数量相当,同时由不同的人采集,也保证动态手势数据集的多样性。

同时为了验证动态手势识别的有效性,实验选择了2016年发布的公开动态手势数据集IsoGD[19],是由中国科学院自动化所Wan等人在CGD2011数据集[20]的基础上整理发布的,适合深度学习模型训练使用。自采集的手势类别的具体形式如表1所示。

表1 自采集7种手势动作类别

为了增加动态手势识别网络的泛化能力,实验中对动态手势样本进行了在线数据增强,应用加100个随机噪点、小幅度旋转、小幅度平移和亮度调整的4种图像增强算法。在增强的过程中也保持了不同类别的数量均衡。自采集视频序列动作及几种增强变化如图4和图5所示。

开始 动作主体 结束

随机添加100噪点

小幅度旋转

小幅度平移

亮度调整

以图5的4种序列图像增强方式组成的在线数据增强算法的具体流程如图6所示。

图6 在线增强算法具体流程图

由图6流程图可以看出,动态手势视频通过分帧为序列形式,每个序列组成每个相应的动作。共有4种实时序列数据增强方式的选择,通过算法设置随机生成0和1,每种增强算法都会对应0或1,0表示不使用该增强算法,1表示使用该增强算法,然后对序列数据进行在线实时增强。例如,输入原始数据50个样本,通过线下4种增强方式会一次性产生200个样本载入到网络中训练。使用在线实时增强变化,产生新的50个样本替代原始数据载入网络训练,每训练完一次就会重新增强产生新的50个样本数据替代,多次训练增强变化增加样本多样性。

增强的数据将原序列数据覆盖替换,网络单次训练的数据量保持不变,但每次的训练数据会有增强变化。同时也要通过增加训练的次数来不断训练提高网络模型的泛化能力。总的来说,在线数据增强减少了线下增强序列数据的存储空间的使用。

3.3 实验结果与对比

为了保障模型的精度,本文做了几组对比实验:

1)对用于实验的数据不做任何处理,按照7:3划分为训练集和测试集并dataloader到网络中进行训练。在自采集的手势数据集上进行训练对比,通过不同深度卷积神经网络与长短期记忆网络相互结合的模型验证对于动态手势识别的效果影响。

2)使用在线数据增强的方式对数据进行预处理,同样按照训练集和测试集的划分载入到网络中进行训练,对比使用在线数据增强算法前后对于动态手势识别效果的影响。

3)将训练好的模型Resnet152和LSTM网络模型相结合,并且应用改进的在线数据增强算法,用公开的手势数据集IsoGD来验证其有效性并同现有的方法进行比较。

基于自采集的动态手势数据集的融合模型通过在线数据增强算法改进后的实验效果曲线如图7所示。

图7 基于自采集数据集融合模型在线数据增强效果曲线

由图7所示的准确率和损失函数的曲线图可以分析,在未使用在线数据增强算法时,神经网络能够正常下降收敛到一定的值然后趋于平缓,测试集的准确率能够稳定在83%左右,进行在线数据增强之后,增加了数据的多样性,曲线的拟合效果变好,准确率也有相应的提升,提升之后的准确率在87%左右。

同时又进行了几种不同卷积神经网络深度和长短期记忆网络相互结合的实验效果,并对其进行在线数据增强验证对实验结果的影响,如表2所示。

表2 不同深度融合模型和在线数据增强改进后的实验结果

从表2的实验结果可以看出,在使用普通浅层的卷积神经网络时,测试集的准确率达到63.33%。加深卷积神经网络的深度,分别采用了Resnet18、Resnet50和Resnet152的残差卷积神经网络与长短期记忆网络相互结合,可以看出随着深度的增加,测试集的准确率在Rensnet18时相对于普通浅层卷积神经网络来说有较大的提升,准确率从63.33%提升到82.48%,提升了19.15个百分点。而继续增加深度时,准确率缓慢地提升,基本维持在83%~84%,也表明网络的深度对于模型的训练效果的影响是具有一定限度的,并不是网络结构越深精确度越高,反而会增加计算量,延长训练的时间,合适的模型深度才会对训练的效果和训练的时长有较好的平衡。从在线数据增强算法的加入效果看,总体上对于网络模型的识别效果有提升,提升了2~3个百分点。

基于IsoGD数据集的融合模型通过在线数据算法改进后的实验效果如图8所示。

图8 基于IsoGD公开数据集融合模型在线数据增强效果曲线

从图8的实验效果可以看出,训练的损失函数能够正常下降收敛到一定的值附近,曲线震荡得较为厉害,但是基本上曲线的趋势是相互拟合的,损失函数的收敛和准确率的表现都正常。

本文算法在IsoGD公开数据集上做验证并与已有的方法进行对比,实验结果及与其他方法的对比结果如表3所示。

表3 基于IsoGD数据集的不同网络模型及本文模型实验结果

从表3中的实验结果可以看出,基于本文所构建的网络模型Resnet152+LSTM对于公开的动态手势数据集的识别率达到55.26%,与目前的其他方法识别准确率相近。其他方法未进行在线数据增强算法改进(表3中用—表示),通过在线数据增强算法,基于本文网络模型的识别准确率提高了2.63个百分点,达到了57.89%,优于其他算法。验证了本文所提算法及使用在线数据增强算法的改进对于动态手势识别的有效性。

4 结束语

由于传统的2D卷积神经网络对于视频序列图像信息特征提取的能力有限,不能够提取时间维度上的运动信息,因此,本文采用了2D卷积神经网络和长短期记忆网络相互结合的网络结构来对视频序列图像进行处理,并在自采集的7种不同类别的动态手势动作和IsoGD公开手势数据集上进行验证。实验结果表明,本文方法对于视频序列图像具有较好的识别能力,不仅能够提取图像的2D信息,还能提取到时间维度上的运动信息,并且通过在线数据增强,使数据更具有多样性,减少了线下增强数据存储空间的使用。同时验证了几种不同深度的网络结构结合对于识别率提升效果的影响,从实验结果可以看出,采用残差网络的不同深度与长短期记忆网络相互结合在一定程度上能够提升识别的准确率。

在结合残差网络准确率基本上达到了一定范围后,再增加网络的深度对于实际的效果来说影响微弱,而且网络深度越深,训练所耗费的时间就越久。通过在线实时数据增强减少线下数据增强产生的一次性较多样本数据的空间使用,缩短单次训练的时间,相应增加总的训练次数使数据不断增强变化,网络达到较好的泛化能力。考虑实际应用的实时性问题,在确保融合模型的识别准确率的基础上,笔者将对融合模型进行模型压缩以缩短总的训练时间和采用注意力机制增加融合模型识别稳定性等方面进行进一步探究。

猜你喜欢
手势卷积动态
国内动态
国内动态
国内动态
基于3D-Winograd的快速卷积算法设计及FPGA实现
挑战!神秘手势
动态
从滤波器理解卷积
V字手势的由来
基于傅里叶域卷积表示的目标跟踪算法
胜利的手势