收藏 分销(赏)

基于Kinect和CNN-LSTM的动态数字手势识别.pdf

上传人:自信****多点 文档编号:2050258 上传时间:2024-05-14 格式:PDF 页数:3 大小:1.28MB
下载 相关 举报
基于Kinect和CNN-LSTM的动态数字手势识别.pdf_第1页
第1页 / 共3页
基于Kinect和CNN-LSTM的动态数字手势识别.pdf_第2页
第2页 / 共3页
亲,该文档总共3页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、数据传输中国宽带 2023 年 5 月-74-近年来手势交互已在智能家居、虚拟现实、医疗健康等领域得到了广泛的应用和关注1。相比于传统硬件设备,比如键盘、鼠标和触屏等,用户用手势交互时无须穿戴设备,使得交互更加自然、流畅、方便2-3。手势交互时,对手势的正确识别是很重要的。传统的手势识别方法,比如支持向量机(SVM)、决策树等,依赖于手工设计的特征和分类器,这些方法需要专家的知识储备和大量的试错。基于深度学习的方法可以自动提取特征并进行分类,避开了传统方法的苛刻要求。动态手势是用一段时间内的静态手势的集合来表述某一特定意义,其具有时空特性4。动态手势时序性和空间不确定性易造成识别困难5。动态手

2、势具有多样性和复杂性,能够表达丰富的语义,因此,动态手势识别是近年来的研究热点。陶丽君6等人引入隐马尔可夫模型(HMM)来改进动态手势轨迹的提取和分类,达到有很高的识别率。胡宗承7等人提出一种结合深度信息和三维手部骨架信息的多模态融合的动态手势识别算法 TF-MG,利用MobilenetV2 和 DeepGRU 提取对应特征再进行特征融合实现 14 种和 28 种手势的高精度分类。赵康8等人在(2+1)D 卷积结构的基础上提出了一种 3D深度可分离卷积的轻量型结构,融合注意力机制专注于对运动特征的提取,在计算成本和内存占用减少时取得了较好的识别精度和较高的识别速度。周旭峰9等人提出两类组合循环

3、神经网络(RNN)网络架构处理相应多流信号,可以有效区分基于 EMG信号的不同动作。手势的识别速度和精准度仍然是研究和应用的关键。因此,提出一种基于 Kinect 和 CNN-LSTM 的手势识别方法。首先利用 Kinect 深度传感器采集包括手指运动轨迹信息的手部姿态数据,自建书写数字 0 9 的手势数据库;然后将手指运动轨迹信息作为输入送到 3 层卷积、池化等 CNN 网络层中进行特征提取;为了更好地捕捉手势的动态变化和时序信息,再将提取的特征序列输入 LSTM 网络中;为了避免过拟合,拟采用数据增强和 dropout 技术;最后将特征序列输入分类器中实现手势的分类识别。一、数据采集Kin

4、ect 传感器包含一个彩色摄像头和两个 3D深度图像传感器,利用 TOF(Time of Flying)技术获取景深数据,生成深度图像,采集的图像信息是距离,可得到物体的三维坐标,因而对环境要求低,不受光照、阴影、物体遮挡等影响,鲁棒性好。数据采集实验通过 Kinect V2 采集 12 个人(包括 7 男 5 女)的(0 9)10 个阿拉伯数字的书写手势,每人每个数字重复书写 10 次,共采集 1200个数字书写手势。每个人均用右手隔空书写各种手势,Kinect 以每秒 30 帧的采样率捕捉人体每一帧的 25 个关节点的以传感器为坐标的三维坐标(x,y,z)。具体数据采集过程如下:1.将 K

5、inect V2 传感器放置实验人员的正前方2m 的位置,以确保 Kinect V2 能够完整地捕捉到人体手部动作的信息。2.使 用 Kinect 配 套 的 开 发 工 具 包,获 取Kinect 传感器的数据流。实验人员右手隔空书写数字。第一次握拳为启动信号,在 2s 计时后开始隔空书写数字,书写完后第二次握拳为结束信号。数据存储在2s计时后开始。系统第二次检测到右手握拳状态则停止存储数据,存储时舍弃末尾的 15 帧数据。3.通过编程,对数据流进行处理和分析,提取人体 25 个骨骼点的三维坐标信息。4.将提取的数据保存为 CSV 格式,作为后续实验的输入数据。数据采集完后,选择右手手指指尖

6、的三维时空轨迹点 dt=(x(t),y(t),z(t)作为 CNN 网络的输入。查看每个数字的书写时长,最长约为3S,因而将每一个样本的数据规整为100*3的格式,若数据长度不够则添加相应长度的 0 矩阵。二、CNN-LSTM 网络模型CNN(Convolutional Neural Network)是 一种前馈神经网络,以卷积核为滤波器对输入数据进行不同方向、不同大小的滤波操作。通过这样基于 Kinect 和 CNN-LSTM 的动态数字手势识别 刘凤琳苏博【摘要】手势交互的自然便捷使得其在人机交互、虚拟现实等领域得到广泛的应用和关注。本文提出一种基于 CNN-LSTM的手部姿态识别方法。首

7、先利用 Kinect 深度传感器获取包括手指运动轨迹信息的手部姿态,然后将手指运动轨迹信息输入 3 卷积中,CNN 网络通过卷积池化等操作进行特征提取,接着将特征序列输入 LSTM 层中以便更好地捕捉手势的动态变化和时序信息,再将特征输入分类器softmax 中进行 0 9 数字书写手势的分类。实验结果显示,五折和十折交叉验证时的数字书写手势(0 9)的识别率分别为 99.3%和 98.7%。【关键词】Kinect;CNN;LSTM;动态手势数据传输中国宽带 2023 年 5 月-75-基于 Kinect 和 CNN-LSTM 的动态数字手势识别 刘凤琳苏博的方式,CNN 网络通过卷积操作来捕

8、捉复杂和抽象的特征信息,并通过池化方法减少参数数量和计算量。即 CNN 网络通过多层卷积和池化实现特征提取,并通过反向传播算法更新参数,通过 Batch Normalization 层防止内部协变量偏移以加速网络收敛,然后通过全连接层实现对输入数据的分类和识别。卷积层的操作可以表示为式(1)。(1)其中,conv 为卷积函数,n 为卷积核数目,Xi为第i层卷积的输入,B1为偏值,f定义为激活函数。将 卷 积 层 的 输 出 特 征 送 入 批 量 归 一 化(BatchNormalization)网络层,通过计算样本均值、方差、样本数据标准化处理、平移缩放处理,进行去均值归一化,以额外学习参数

9、为代价部分解决协变漂移(covariate shift)现象,避免深度网络梯度消失,以加速深度神经网络的收敛速度。批量归一化的转换式如式(2)(5)所示。(2)(3)(4)(5)其 中,m 为 每 个 batch 的 大 小。x 为 Batch Normalization 层的输入。为一个很小的正数,它是为了防止方差为零引起的数值计算不稳定而引入的。为 Batch Normalization 层的输出。对批量归一化网络层的输出特征进行池化操作,以减小特征大小。池化通过设定池化窗口大小和步长来降低特征的大小,在不改变特征图的通道数和特征位置的前提下,达到减少计算量和参数数量的目的,降低过拟合风险

10、,从而提高模型的鲁棒性和泛化能力。将池化后的提取特征送到 LSTM(Long Short-Term Memory)网络层进行处理。LSTM 是 RNN 的变体,通过引入三个门控(新信息的输入控制 input gate、旧信息的遗忘控制 forget gate、输出信息的选择控制 output gate)来控制信息的流动。信息的流动由这三个门控通过sigmoid函数进行控制。因此,LSTM 层可以选择性记忆和遗忘信息,预防梯度消失和爆炸。最后,在全连接层将前一层所有神经元与当前层的所有神经元通过权重矩阵相连,即进行权值变换和激活,则可获得分类结果。全连接层的计算量大,为防止过拟合,一般会在第一层

11、全连接层后面加一层dropout层,随机地将一部分神经元的输出置零。全连接层的分类可以用式(6)表示。(6)式中,D 是完全连接层的输入特性;W 是相应的权重;B2 是偏差值。损失函数是用来衡量模型预测结果与真实结果之间的差异的函数。模型训练通过最小化损失函数来调整模型参数。与其他损失函数相比,交叉熵损失函数具有更快的收敛速度和更好的数值稳定性。交叉熵的值越小,实际输出与期望输出的距离越短,即实际输出越接近于期望输出,分类越正确。分类器对样本进行所属类别的预测,得到一个概率矩阵P,那么,交叉熵可以用式(7)来计算。(7)其中,Y 为样本类别,n 为样本数,k 为分类数,P 为样本概率。设计采用

12、 3 层卷积的 14 层的 CNN 网络,每层 网 络 层 依 次 为 Conv1D,BatchNormalization,MaxPool1D,Conv1D,BatchNormalization,MaxPool1D,Conv1D,BatchNormalization,MaxPool1D,LSTM,Flatten,Dense,Dropout,Dense。Conv1D 是一维卷积神经网络层,神经网络中采用 3 个卷积核大小为 3*3 的 Conv1D 卷积层。卷积核个数设为 2n,n 分别取 5、6、7,即卷积核个数分别为 32、64、128。每个卷积层后面都附加一个 BatchNormaliza

13、tion 层对每个 batch 进行去均值归一化,从而使神经网络的收敛加速。每个BatchNormalization 层后面都附加一个最大池化层,最大池化是留下池化窗口中的最大值,设计中选择大小为 2*2,步长为 2 池化窗口。全连接层的输入为一维矢量,因而增加 Flatten 层将中间层的输出展平。为加大网络中权重的调整力度,采用两个全连接层。为防止模型过度拟合,Dropout 层的dropout 参数设置为 0.4。神经网络中其他的激活函数都采用 ReLu,除了最后一个全连接层中的激活函数采用 Softmax。Softmax 激活函数将向量转换为概率分布,输出分类标签,从而实现动态手势的分

14、类。三、实验及结果实验使用的计算机配置为Intel(R)Core(TM)i9-10885H CPU、32.0 GB 安装内存、2.40 GHz 主频和 Windows10 操作系统。实验数据来自 Kinect V2摄像头,图像的分辨率设置为 640 p480 p,利用微软 M-crosoft Visual Studio 2019 作为开发平台,并结合微软官方 Kinect for Windows SDK 开发工具包。主要识别模型由 python 语言编写,使用的开发软件为 Spyder3.8,进行数字书写手势识别实验。文中要识别数字 0 9 共 10 种数字书写手势。节 1 中规整后的信号特征

15、送入节 2 中的 CNN 网络进行手势识别,实验采用五折和十折交叉验证法进行验证。实验中的动量(momentum)在所有情况下都设置为 0.9。学习率使用指数下降,epoch 在100 200 之间,每个 epoch 按照 0.1lr 计算。初始学习率设置为 lr=0.01。除第一层卷积层外,其余所有层设置 dropout=0.4 防止过拟合。实验的 batch size 设置为 64,所有实验中正则化参数 都设置为 0.01。在模型训练过程中,采用交叉熵作 1.将 Kinect V2 传感器放置实验人员的正前方 2m 的位置,以确保 Kinect V2 能够完整地捕捉到人体手部动作的信息。2

16、.使用 Kinect 配套的开发工具包,获取 Kinect 传感器的数据流。实验人员右手隔空书写数字。第一次握拳为启动信号,在 2s 计时后开始隔空书写数字,书写完后第二次握拳为结束信号。数据存储在 2s 计时后开始。系统第二次检测到右手握拳状态则停止存储数据,存储时舍弃末尾的 15 帧数据。3.通过编程,对数据流进行处理和分析,提取人体 25 个骨骼点的三维坐标信息。4.将提取的数据保存为 CSV 格式,作为后续实验的输入数据。数据采集完后,选择右手手指指尖的三维时空轨迹点 dt=(x(t),y(t),z(t)作为 CNN 网络的输入。查看每个数字的书写时长,最长约为 3S,因而将每一个样本

17、的数据规整为 100*3 的格式,若数据长度不够则添加相应长度的 0 矩阵。二、CNN-LSTM 网络模型 CNN(Convolutional Neural Network)是一种前馈神经网络,以卷积核为滤波器对输入数据进行不同方向、不同大小的滤波操作。通过这样的方式,CNN 网络通过卷积操作来捕捉复杂和抽象的特征信息,并通过池化方法减少参数数量和计算量。即 CNN 网络通过多层卷积和池化实现特征提取,并通过反向传播算法更新参数,通过 BatchNormalization 层防止内部协变量偏移以加速网络收敛,然后通过全连接层实现对输入数据的分类和识别。卷积层的操作可以表示为式(1)。),(11

18、BCXconvfFniiii (1)其中,conv 为卷积函数,n 为卷积核数目,Xi 为第 i 层卷积的输入,B1 为偏值,f 定义为激活函数。将卷积层的输出特征送入批量归一化(BatchNormalization)网络层,通过计算样本均值、方差、样本数据标准化处理、平移缩放处理,进行去均值归一化,以额外学习参数为代价部分解决协变漂移(covariate shift)现象,避免深度网络梯度消失,以加速深度神经网络的收敛速度。批量归一化的转换式如式(2)(5)所示。imixm11 (2)miixm122)(1 (3)2uxxii (4)iixy (5)其中,m 为每个 batch 的大小。x

19、为 BatchNormalization 层的输入。为一个很小的正数,它是为了防止方差为零引起的数值计算不稳定而引入的。iy为 BatchNormalization 层的输出。对批量归一化网络层的输出特征进行池化操作,以减小特征大小。池化通过设定池化窗口大小和步长来降低特征的大小,在不改变特征图的通道数和特征位置的前提下,达到减少 1.将 Kinect V2 传感器放置实验人员的正前方 2m 的位置,以确保 Kinect V2 能够完整地捕捉到人体手部动作的信息。2.使用 Kinect 配套的开发工具包,获取 Kinect 传感器的数据流。实验人员右手隔空书写数字。第一次握拳为启动信号,在 2

20、s 计时后开始隔空书写数字,书写完后第二次握拳为结束信号。数据存储在 2s 计时后开始。系统第二次检测到右手握拳状态则停止存储数据,存储时舍弃末尾的 15 帧数据。3.通过编程,对数据流进行处理和分析,提取人体 25 个骨骼点的三维坐标信息。4.将提取的数据保存为 CSV 格式,作为后续实验的输入数据。数据采集完后,选择右手手指指尖的三维时空轨迹点 dt=(x(t),y(t),z(t)作为 CNN 网络的输入。查看每个数字的书写时长,最长约为 3S,因而将每一个样本的数据规整为 100*3 的格式,若数据长度不够则添加相应长度的 0 矩阵。二、CNN-LSTM 网络模型 CNN(Convolu

21、tional Neural Network)是一种前馈神经网络,以卷积核为滤波器对输入数据进行不同方向、不同大小的滤波操作。通过这样的方式,CNN 网络通过卷积操作来捕捉复杂和抽象的特征信息,并通过池化方法减少参数数量和计算量。即 CNN 网络通过多层卷积和池化实现特征提取,并通过反向传播算法更新参数,通过 BatchNormalization 层防止内部协变量偏移以加速网络收敛,然后通过全连接层实现对输入数据的分类和识别。卷积层的操作可以表示为式(1)。),(11BCXconvfFniiii (1)其中,conv 为卷积函数,n 为卷积核数目,Xi 为第 i 层卷积的输入,B1 为偏值,f

22、定义为激活函数。将卷积层的输出特征送入批量归一化(BatchNormalization)网络层,通过计算样本均值、方差、样本数据标准化处理、平移缩放处理,进行去均值归一化,以额外学习参数为代价部分解决协变漂移(covariate shift)现象,避免深度网络梯度消失,以加速深度神经网络的收敛速度。批量归一化的转换式如式(2)(5)所示。imixm11 (2)miixm122)(1 (3)2uxxii (4)iixy (5)其中,m 为每个 batch 的大小。x 为 BatchNormalization 层的输入。为一个很小的正数,它是为了防止方差为零引起的数值计算不稳定而引入的。iy为 B

23、atchNormalization 层的输出。对批量归一化网络层的输出特征进行池化操作,以减小特征大小。池化通过设定池化窗口大小和步长来降低特征的大小,在不改变特征图的通道数和特征位置的前提下,达到减少 1.将 Kinect V2 传感器放置实验人员的正前方 2m 的位置,以确保 Kinect V2 能够完整地捕捉到人体手部动作的信息。2.使用 Kinect 配套的开发工具包,获取 Kinect 传感器的数据流。实验人员右手隔空书写数字。第一次握拳为启动信号,在 2s 计时后开始隔空书写数字,书写完后第二次握拳为结束信号。数据存储在 2s 计时后开始。系统第二次检测到右手握拳状态则停止存储数据

24、,存储时舍弃末尾的 15 帧数据。3.通过编程,对数据流进行处理和分析,提取人体 25 个骨骼点的三维坐标信息。4.将提取的数据保存为 CSV 格式,作为后续实验的输入数据。数据采集完后,选择右手手指指尖的三维时空轨迹点 dt=(x(t),y(t),z(t)作为 CNN 网络的输入。查看每个数字的书写时长,最长约为 3S,因而将每一个样本的数据规整为 100*3 的格式,若数据长度不够则添加相应长度的 0 矩阵。二、CNN-LSTM 网络模型 CNN(Convolutional Neural Network)是一种前馈神经网络,以卷积核为滤波器对输入数据进行不同方向、不同大小的滤波操作。通过这

25、样的方式,CNN 网络通过卷积操作来捕捉复杂和抽象的特征信息,并通过池化方法减少参数数量和计算量。即 CNN 网络通过多层卷积和池化实现特征提取,并通过反向传播算法更新参数,通过 BatchNormalization 层防止内部协变量偏移以加速网络收敛,然后通过全连接层实现对输入数据的分类和识别。卷积层的操作可以表示为式(1)。),(11BCXconvfFniiii (1)其中,conv 为卷积函数,n 为卷积核数目,Xi 为第 i 层卷积的输入,B1 为偏值,f 定义为激活函数。将卷积层的输出特征送入批量归一化(BatchNormalization)网络层,通过计算样本均值、方差、样本数据标

26、准化处理、平移缩放处理,进行去均值归一化,以额外学习参数为代价部分解决协变漂移(covariate shift)现象,避免深度网络梯度消失,以加速深度神经网络的收敛速度。批量归一化的转换式如式(2)(5)所示。imixm11 (2)miixm122)(1 (3)2uxxii (4)iixy (5)其中,m 为每个 batch 的大小。x 为 BatchNormalization 层的输入。为一个很小的正数,它是为了防止方差为零引起的数值计算不稳定而引入的。iy为 BatchNormalization 层的输出。对批量归一化网络层的输出特征进行池化操作,以减小特征大小。池化通过设定池化窗口大小和

27、步长来降低特征的大小,在不改变特征图的通道数和特征位置的前提下,达到减少 1.将 Kinect V2 传感器放置实验人员的正前方 2m 的位置,以确保 Kinect V2 能够完整地捕捉到人体手部动作的信息。2.使用 Kinect 配套的开发工具包,获取 Kinect 传感器的数据流。实验人员右手隔空书写数字。第一次握拳为启动信号,在 2s 计时后开始隔空书写数字,书写完后第二次握拳为结束信号。数据存储在 2s 计时后开始。系统第二次检测到右手握拳状态则停止存储数据,存储时舍弃末尾的 15 帧数据。3.通过编程,对数据流进行处理和分析,提取人体 25 个骨骼点的三维坐标信息。4.将提取的数据保

28、存为 CSV 格式,作为后续实验的输入数据。数据采集完后,选择右手手指指尖的三维时空轨迹点 dt=(x(t),y(t),z(t)作为 CNN 网络的输入。查看每个数字的书写时长,最长约为 3S,因而将每一个样本的数据规整为 100*3 的格式,若数据长度不够则添加相应长度的 0 矩阵。二、CNN-LSTM 网络模型 CNN(Convolutional Neural Network)是一种前馈神经网络,以卷积核为滤波器对输入数据进行不同方向、不同大小的滤波操作。通过这样的方式,CNN 网络通过卷积操作来捕捉复杂和抽象的特征信息,并通过池化方法减少参数数量和计算量。即 CNN 网络通过多层卷积和池

29、化实现特征提取,并通过反向传播算法更新参数,通过 BatchNormalization 层防止内部协变量偏移以加速网络收敛,然后通过全连接层实现对输入数据的分类和识别。卷积层的操作可以表示为式(1)。),(11BCXconvfFniiii (1)其中,conv 为卷积函数,n 为卷积核数目,Xi 为第 i 层卷积的输入,B1 为偏值,f 定义为激活函数。将卷积层的输出特征送入批量归一化(BatchNormalization)网络层,通过计算样本均值、方差、样本数据标准化处理、平移缩放处理,进行去均值归一化,以额外学习参数为代价部分解决协变漂移(covariate shift)现象,避免深度网络

30、梯度消失,以加速深度神经网络的收敛速度。批量归一化的转换式如式(2)(5)所示。imixm11 (2)miixm122)(1 (3)2uxxii (4)iixy (5)其中,m 为每个 batch 的大小。x 为 BatchNormalization 层的输入。为一个很小的正数,它是为了防止方差为零引起的数值计算不稳定而引入的。iy为 BatchNormalization 层的输出。对批量归一化网络层的输出特征进行池化操作,以减小特征大小。池化通过设定池化窗口大小和步长来降低特征的大小,在不改变特征图的通道数和特征位置的前提下,达到减少 1.将 Kinect V2 传感器放置实验人员的正前方

31、2m 的位置,以确保 Kinect V2 能够完整地捕捉到人体手部动作的信息。2.使用 Kinect 配套的开发工具包,获取 Kinect 传感器的数据流。实验人员右手隔空书写数字。第一次握拳为启动信号,在 2s 计时后开始隔空书写数字,书写完后第二次握拳为结束信号。数据存储在 2s 计时后开始。系统第二次检测到右手握拳状态则停止存储数据,存储时舍弃末尾的 15 帧数据。3.通过编程,对数据流进行处理和分析,提取人体 25 个骨骼点的三维坐标信息。4.将提取的数据保存为 CSV 格式,作为后续实验的输入数据。数据采集完后,选择右手手指指尖的三维时空轨迹点 dt=(x(t),y(t),z(t)作

32、为 CNN 网络的输入。查看每个数字的书写时长,最长约为 3S,因而将每一个样本的数据规整为 100*3 的格式,若数据长度不够则添加相应长度的 0 矩阵。二、CNN-LSTM 网络模型 CNN(Convolutional Neural Network)是一种前馈神经网络,以卷积核为滤波器对输入数据进行不同方向、不同大小的滤波操作。通过这样的方式,CNN 网络通过卷积操作来捕捉复杂和抽象的特征信息,并通过池化方法减少参数数量和计算量。即 CNN 网络通过多层卷积和池化实现特征提取,并通过反向传播算法更新参数,通过 BatchNormalization 层防止内部协变量偏移以加速网络收敛,然后通

33、过全连接层实现对输入数据的分类和识别。卷积层的操作可以表示为式(1)。),(11BCXconvfFniiii (1)其中,conv 为卷积函数,n 为卷积核数目,Xi 为第 i 层卷积的输入,B1 为偏值,f 定义为激活函数。将卷积层的输出特征送入批量归一化(BatchNormalization)网络层,通过计算样本均值、方差、样本数据标准化处理、平移缩放处理,进行去均值归一化,以额外学习参数为代价部分解决协变漂移(covariate shift)现象,避免深度网络梯度消失,以加速深度神经网络的收敛速度。批量归一化的转换式如式(2)(5)所示。imixm11 (2)miixm122)(1 (3

34、)2uxxii (4)iixy (5)其中,m 为每个 batch 的大小。x 为 BatchNormalization 层的输入。为一个很小的正数,它是为了防止方差为零引起的数值计算不稳定而引入的。iy为 BatchNormalization 层的输出。对批量归一化网络层的输出特征进行池化操作,以减小特征大小。池化通过设定池化窗口大小和步长来降低特征的大小,在不改变特征图的通道数和特征位置的前提下,达到减少 计算量和参数数量的目的,降低过拟合风险,从而提高模型的鲁棒性和泛化能力。将池化后的提取特征送到 LSTM(Long Short-Term Memory)网络层进行处理。LSTM 是RNN

35、 的变体,通过引入三个门控(新信息的输入控制 input gate、旧信息的遗忘控制 forget gate、输出信息的选择控制 output gate)来控制信息的流动。信息的流动由这三个门控通过 sigmoid 函数进行控制。因此,LSTM 层可以选择性记忆和遗忘信息,预防梯度消失和爆炸。最后,在全连接层将前一层所有神经元与当前层的所有神经元通过权重矩阵相连,即进行权值变换和激活,则可获得分类结果。全连接层的计算量大,为防止过拟合,一般会在第一层全连接层后面加一层 dropout 层,随机地将一部分神经元的输出置零。全连接层的分类可以用式(6)表示。)(2BWDfFo (6)式中,D 是完

36、全连接层的输入特性;W 是相应的权重;B2 是偏差值。损失函数是用来衡量模型预测结果与真实结果之间的差异的函数。模型训练通过最小化损失函数来调整模型参数。与其他损失函数相比,交叉熵损失函数具有更快的收敛速度和更好的数值稳定性。交叉熵的值越小,实际输出与期望输出的距离越短,即实际输出越接近于期望输出,分类越正确。分类器对样本进行所属类别的预测,得到一个概率矩阵 P,那么,交叉熵可以用式(7)来计算。1010)log()(1 )|Pr(log),(nikkikikPyNPYPYLog (7)其中,Y 为样本类别,n 为样本数,k 为分类数,P 为样本概率。设计采用3层卷积的14层的CNN网络,每层

37、网络层依次为Conv1D,BatchNormalization,MaxPool1D,Conv1D,BatchNormalization,MaxPool1D,Conv1D,BatchNormalization,MaxPool1D,LSTM,Flatten,Dense,Dropout,Dense。Conv1D 是一维卷积神经网络层,神经网络中采用 3 个卷积核大小为 3*3 的 Conv1D 卷积层。卷积核个数设为 2n,n 分别取 5、6、7,即卷积核个数分别为 32、64、128。每个卷积层后面都附加一个 BatchNormalization 层对每个 batch 进行去均值归一化,从而使神经

38、网络的收敛加速。每个 BatchNormalization层后面都附加一个最大池化层,最大池化是留下池化窗口中的最大值,设计中选择大小为2*2,步长为 2 池化窗口。全连接层的输入为一维矢量,因而增加 Flatten 层将中间层的输出展平。为加大网络中权重的调整力度,采用两个全连接层。为防止模型过度拟合,Dropout层的 dropout 参数设置为 0.4。神经网络中其他的激活函数都采用 ReLu,除了最后一个全连接层中的激活函数采用 Softmax。Softmax 激活函数将向量转换为概率分布,输出分类标签,从而实现动态手势的分类。三、实验及结果 实验使用的计算机配置为 Intel(R)C

39、ore(TM)i9-10885H CPU、32.0 GB 安装内存、2.40 GHz 主频和 Windows10 操作系统。实验数据来自 Kinect V2 摄像头,图像的分辨率设置为 640 p480 p,利用微软 M-crosoft Visual Studio 2019 作为开发平台,并结合微软官方 Kinect for Windows SDK 开发工具包。主要识别模型由 python 语言编写,使用的开发软件为 Spyder3.8,进行数字书写手势识别实验。文中要识别数字 09 共 10 种数字书写手势。节 1 中规整后的信号特征送入节 2 中的 CNN 网络进行手势识别,实验采用五折和

40、十折交叉验证法进行验证。实验中的动量(momentum)在所有情况下都设置为 0.9。学习率使用指 计算量和参数数量的目的,降低过拟合风险,从而提高模型的鲁棒性和泛化能力。将池化后的提取特征送到 LSTM(Long Short-Term Memory)网络层进行处理。LSTM 是RNN 的变体,通过引入三个门控(新信息的输入控制 input gate、旧信息的遗忘控制 forget gate、输出信息的选择控制 output gate)来控制信息的流动。信息的流动由这三个门控通过 sigmoid 函数进行控制。因此,LSTM 层可以选择性记忆和遗忘信息,预防梯度消失和爆炸。最后,在全连接层将前

41、一层所有神经元与当前层的所有神经元通过权重矩阵相连,即进行权值变换和激活,则可获得分类结果。全连接层的计算量大,为防止过拟合,一般会在第一层全连接层后面加一层 dropout 层,随机地将一部分神经元的输出置零。全连接层的分类可以用式(6)表示。)(2BWDfFo (6)式中,D 是完全连接层的输入特性;W 是相应的权重;B2 是偏差值。损失函数是用来衡量模型预测结果与真实结果之间的差异的函数。模型训练通过最小化损失函数来调整模型参数。与其他损失函数相比,交叉熵损失函数具有更快的收敛速度和更好的数值稳定性。交叉熵的值越小,实际输出与期望输出的距离越短,即实际输出越接近于期望输出,分类越正确。分

42、类器对样本进行所属类别的预测,得到一个概率矩阵 P,那么,交叉熵可以用式(7)来计算。1010)log()(1 )|Pr(log),(nikkikikPyNPYPYLog (7)其中,Y 为样本类别,n 为样本数,k 为分类数,P 为样本概率。设计采用3层卷积的14层的CNN网络,每层网络层依次为Conv1D,BatchNormalization,MaxPool1D,Conv1D,BatchNormalization,MaxPool1D,Conv1D,BatchNormalization,MaxPool1D,LSTM,Flatten,Dense,Dropout,Dense。Conv1D 是一维

43、卷积神经网络层,神经网络中采用 3 个卷积核大小为 3*3 的 Conv1D 卷积层。卷积核个数设为 2n,n 分别取 5、6、7,即卷积核个数分别为 32、64、128。每个卷积层后面都附加一个 BatchNormalization 层对每个 batch 进行去均值归一化,从而使神经网络的收敛加速。每个 BatchNormalization层后面都附加一个最大池化层,最大池化是留下池化窗口中的最大值,设计中选择大小为2*2,步长为 2 池化窗口。全连接层的输入为一维矢量,因而增加 Flatten 层将中间层的输出展平。为加大网络中权重的调整力度,采用两个全连接层。为防止模型过度拟合,Drop

44、out层的 dropout 参数设置为 0.4。神经网络中其他的激活函数都采用 ReLu,除了最后一个全连接层中的激活函数采用 Softmax。Softmax 激活函数将向量转换为概率分布,输出分类标签,从而实现动态手势的分类。三、实验及结果 实验使用的计算机配置为 Intel(R)Core(TM)i9-10885H CPU、32.0 GB 安装内存、2.40 GHz 主频和 Windows10 操作系统。实验数据来自 Kinect V2 摄像头,图像的分辨率设置为 640 p480 p,利用微软 M-crosoft Visual Studio 2019 作为开发平台,并结合微软官方 Kine

45、ct for Windows SDK 开发工具包。主要识别模型由 python 语言编写,使用的开发软件为 Spyder3.8,进行数字书写手势识别实验。文中要识别数字 09 共 10 种数字书写手势。节 1 中规整后的信号特征送入节 2 中的 CNN 网络进行手势识别,实验采用五折和十折交叉验证法进行验证。实验中的动量(momentum)在所有情况下都设置为 0.9。学习率使用指数据传输中国宽带 2023 年 5 月-76-为损失函数,采用随机梯度下降法进行优化,当迭代次数设置为 batch=300 时,结果是稳定的。ROC 曲线绘制分类器的真阳性率(TPR)和假阳性率(FPR)之间的关系,

46、是分类器性能评价指标。ROC曲线下的面积(AUC)越大,分类器的性能就越好,即完美分类器的 AUC 值为 1。设计的深度学习网络,除了数字书写手势 0 的 AUC=0.98,其余类别的 AUC 均接近于 1。这表明,所设计的 3 卷积 CNN 网络对数字书写手势 0 9 的识别接近完美分类。表 1 为五折交叉验证下阿拉伯数字 0 9 的每一次验证时的识别率,平均识别率为 99.7%。通过五折交叉验证的识别混淆矩阵可以看到,识别错误中,最多的是将 0 误识别成 6,共误识别 3 个;其次是将 1 误识别成 7、将 4 误识别成 0、将 6 误识别成 0、将 8 误识别成 6,这四种误识别各 1

47、个。表 2 为十折交叉验证下阿拉伯数字 0 9 的每一次验证时的识别率,平均识别率为 98.7%。通过十折交叉验证的识别混淆矩阵可以看到,识别错误中,最多的是将 0 误识别成 6,共误识别 8 个;其次是将 6 误识别成 0、8 误识别成 5,这两种误识别各 2 个;将 0 误识别成 4、0 误识别成 8、4 误识别成 9、9 误识别成 4,这四种误识别各 1 个。这些误识别的数字,其书写顺序都有相似的地方,如果书写不够规范,即使人眼也难以区别,因而这种误识别较难避免。将本文的识别结果与最近的魏秋月(2020 年)10、李国友(2019 年)11、冯广宇(2020 年)研究成果进行对比,本文所

48、提的方法的识别率较高,详见表 3。表 1 五折交叉验证下阿拉伯数字 0 9 的识别率(%)第几折12345平均识别率100.099.2100.098.399.299.3表 2 十折交叉验证下阿拉伯数字 0 9 的识别率第几折123456识别率197.597.598.398.399.2第几折78910平均识别率99.298.3100.098.398.7表 3不同方法识别率方法识别率(%)文献 10 方法98.7文献 11 方法98.3文献 12 方法94.0本文方法98.7四、结论提出一种基于手部姿态的 CNN-LSTM 动态手势识别方法,旨在提高手势识别的准确率和实时性。首先,利用 Kinec

49、t 深度传感器获取手部姿态信息,包括手指的运动轨迹。这些信息可以通过 Kinect SDK提供的 API 获取,并且具有较高的精度和实时性。然后,将手指运动轨迹信息输入 3 层卷积 CNN 网络中。利用卷积层提取局部特征,经由池化层降低特征维度,通过全连接层将特征映射到手势分类空间。采用 ReLU 作为激活函数,采用 dropout 技术防止过拟合。采用交叉熵作为损失函数,采用随机梯度下降法进行优化。最后,将提取的特征输入分类器softmax 中将特征映射到不同的手势类别,实现手势的准确分类。实验结果表明,提出的方法具有较高的准确率和实时性。在自建的手势数据集上进行测试,可以达到平均 98.7

50、%以上的准确率,且单个样本的识别响应速度在 10ms 以内。这表明所提出的方法可以在实际应用中取得良好的效果。参考文献:1 陈立,李颖窻,刘志远,等虚拟现实交互游戏中的手势识别 J科技创新与应用,2019(20):22242ShinJ,KimCM.Non-touchcharacterinputsystembasedonhandtappinggesturesusingKinectsensor.IEEEAccess,5:1049610505,2017.018,35(2):365369.3 李国友,孟岩,等.基于 Kinect 的动态手势识别算法改进与实现 J.高技术通讯,2019,29(9):84

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 论文指导/设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服