《基于VGG-Nets算法手势识别设计与实现》由会员分享,可在线阅读,更多相关《基于VGG-Nets算法手势识别设计与实现(10页珍藏版)》请在金锄头文库上搜索。
1、 基于VGG-Nets算法手势识别设计与实现 刘欣易,孔家伟,陈果然,孟祥佳(山东青年政治学院 信息工程学院,山东 济南 250103)0 引言目前,手语是聋哑人与其他人交流的一种主要方式,而大多数正常人并不能准确理解手语所表达的意思,使得正常人与聋哑人之间的交流存在一定的障碍。如果有手语识别系统的辅助,可以拉近聋哑人与正常人之间的距离1-4。手语识别系统不仅可以让正常人走进聋哑人的生活,同时也可以使这些特殊群体更自然、和谐、舒适地融入社会生活。随着深度学习的迅速发展,在图像、语音等数据的处理和识别以及文本理解等各个方面都获得了很大的突破。目前已有基于数据手套的手语识别方法,但该方法成本较高、
2、推广难度较大。随着人工智能技术的发展,计算机视觉技术快速崛起,计算机视觉背景下的手语识别逐渐成为国内外手语识别研究的主流趋势5。与此同时,人机交互技术兴起,并在手语识别领域得到广泛应用。利用该技术可以更加及时、准确、方便地学习和表达手语,有效地提高聋哑群体的学习兴趣和效率,促进特殊群体与正常人的交流。经过多年的研究和探索,国内外研究人员在该领域已取得了令人欣喜的成果,但现阶段的手语识别方法在正确率和算法鲁棒性方面有待改进。为此,本文基于深度学习、计算机视觉等技术,构造了正常人与聋哑人之间的无障碍交流平台。1 本系统的整体介绍近年来,随着深度学习的快速发展,人工智能的可用性和高效率优势得到极大程
3、度的发挥,其强大的特征学习能力使得人工智能的发展迎来了一波新的热潮;同时将深度学习应用于手语识别技术的研究将成为一个重要的方向。手语识别技术的研究,有助于增进聋哑人与社会的沟通交流,使他们能够更好地融入社会,同时对人机交互的发展也能够起到推动作用6。本文对基于深度学习的手语识别系统的设计与实现过程做了完整性的论述;结合TensorFlow 框架和VGG-16 神经网络算法,验证了本手语识别系统的可行性;文中还对系统核心模块的实现以及系统的可视化展示等功能进行了详细的介绍。本次手语识别系统的设计与实现在功能上是可以满足要求的,但也存在一定的不足。目前的手语图像样本数量还不够庞大,不同的背景差异、
4、不同人对同一手语动作表示的差别、不同的采集方向、不同的光照亮度等因素会导致特征提取差异,进而对手语识别的准确率造成一定的影响。2 系统设计2.1 模块划分及功能介绍系统主要包含5 大模块,如图1所示。下面介绍各个模块所实现的功能。图1 手语识别系统模块2.1.1 手语图像采集模块通过PC 端内置摄像头,拍照抓取用户在镜头前做出的相应手语手势,或者将用户上传的需要识别的手语手势图像送入系统后台,以供训练和识别使用。图像采集流程如图2所示。图2 手语图像采集流程2.1.2 手语图像预处理模块对采集到的手语图像进行相应的预处理,如手语图像分割、图像维度的重构等操作,提高模型训练和手语识别的效果。预处
5、理流程如图3所示。图3 手语图像预处理流程2.1.3 手语模型训练模块将ASL 手势图像数据集7和部分自己制作的数据集作为训练数据,采用TensorFlow 框架进行处理,使用VGG-16神经网络结构,构建训练模型。将训练数据中20%的数据作为测试集,测试图像的预期效果,完成对24 个英文字母的静态手语图像以及“安静”等手势的识别。由于26 个英文字母中J 和Z 的手语是动态表示的,故暂不做考虑。训练模块处理流程如图4所示。图4 手语模型训练流程2.1.4 手语识别模块打开摄像头抓取手语图像,或者通过上传图像的方式将手语图像传至后台,对获取到的手语图像进行预处理;然后选取该手语图像,加载训练好
6、的模型进行手语识别;最后将识别结果返回。手语识别流程如图5所示。图5 手语识别流程2.1.5 软件界面展示模块软件界面包含手语采集窗口、结果展示窗口、时间控件以及各种按钮(打开摄像头、关闭摄像头、抓取图像、识别手语、朗读结果、上传图像)。将识别出的手语结果以文本的方式展示到前端软件界面的相应位置,并提供朗读按钮,还可以根据需求将识别结果以语音形式表达出来。2.2 VGG-16 卷积计算VGG-Net 中进行数据强化的方法是多尺度目标检测。该方法是先将图像等比例地进行尺度变化,然后随意剪切成标准的输入图像大小,以此增多数据来有效地应对模型训练过程中发生过拟合的现象。VGG-16 共有6 个块结构
7、,每个块结构之间用池化层作为分界且其中的通道数一致。该网络结构中的卷积层和池化层用来完成提取特征,全连接层完成分类任务8。VGG-16详细结构如图6所示。图6 VGG16 详细结构整个网络有2242243 的input(输入)层和5 个vgg-block(卷积)块以及5 个max pooling(最大化池化)层逐个相连,然后进入FC(全连接)层,直到最后1 000 路softmax(分类)输出。block 和block 之间通过maxpool 的stride(步长)为2,使pool size(池化单元尺寸)=2 进行减半池化,卷积块内部要保证卷积层间形状相同,卷积核大小统一设置为33。综上,基
8、于深度学习的分类网络就是通过对输入网络的图像进行多次卷积,然后将降维之后的特征图平铺成一维向量,最后通过全连接网络分类器得到一个类别向量。2.3 神经网络函数介绍2.3.1 ReLU 激活函数线性整流函数可以有效解决神经网络当中的梯度消失问题,从而有效稳定模型的拟合状态。f(x)=max(0,x)ReLU 函数的API 如下:tf.nn.relu(features,name=None)参数如下:(1)features:类型为浮点型、双精度浮点型、整型或无符号整型的张量,卷积后加上偏置的结果;(2)name:操作的名称;(3)返回:一个与功能具有相同类型的张量。2.3.2 Conv2d 卷积函数
9、Conv2d 卷积函数是完成卷积操作的重要函数。卷积的API 如下:tf.nn.conv2d(input,filter,strides,padding,use_cudnn_on_gpu=None,name=None)参数如下:(1)input:32/64 位浮点型变量,指输入的图像张量的shape 为图像批次,高,宽,通道数;(2)filter:类似卷积神经网络中的卷积核,shape 为高,宽,通道数,卷积核数量的四维张量,类型要求、通道数都与input 一致;(3)strides:图像每个维度卷积的步长,长度最长为4;(4)padding:填充算法类型的值,决定卷积的方法,参数VALID 匹
10、配图像里面的像素,而参数SAME 是在图像的外面加0,从而只需要图像中的一个像素就可以与卷积核做卷积操作;(5)use_cudnn_on_gpu:布尔型变量,用来控制是否使用深度学习GPU 加速库来加速计算;(5)name:操作的名称;(6)结果:返回与输入具有相同类型的一个张量。2.3.3 max pool 最大池化计算函数max pool 函数的功能是实现最大值池化,选取池化窗口中的最大值传递给下一层,使特征更加明显9。最大值池化公式如下:max pool 函数的API 如下:tf.nn.max_pool(value,ksize,strides,padding,name=None)参数如下
11、:(1)value:卷积层下面的池化层输入,通常取批次,高,宽,通道数;(2)ksize:池化窗口取1,高,宽,1的4 维向量,由于此处不在批次和通道数这两个维度上做池化操作,所以均置为1;(3)strides:各个维度上池化窗口滚动的步长,通常取为1,步长,步长,1;(4)padding:与卷积函数参数说明一致;(5)name:操作的名称;(6)结果:返回一个Tensor,最大池化输出张量,类型不变。2.3.4 Dropout 随机失活函数Dropout随机失活函数10在模型学习的时候随机把输出层与输入层之间的某些权重参数归零,以此减少各结点之间的依赖性,降低模型复杂度进而降低结构风险。Dr
12、opout 的API 如下:tf.nn.dropout(x,keep_prob,noise_shape=None,seed=None)参数如下:(1)x:浮点型张量;(2)seed:创建随机种子;(3)noise_shape:整型张量,说明任意产生的保持或替换的形状;(4)keep_prob:浮点型,保存每个元素的概率;(5)结果:返回一个Tensor,与x 具有相同shape。2.3.5 softmax 归一化指数函数softmax 归一化指数函数是sigmoid 函数在多分类问题中的引申,将结果表示成概率,这样多个标量就可以反映成一个概率分布。其中:exp(xk)是指利用指数函数把输出映射
13、为0 +,使得预测的结果大于等于0;是指把结果相加,然后做归一化处理。2.3.6 交叉熵损失函数交叉熵损失函数为损失函数加L2正则化项(系数为0.0 005)。其中:y为one-hot 类别;f(x)为关于输入x和分类器f猜测的one-hot 向量;为准备学习的参数;L2为正则化项损失。2.4 数据集介绍手语识别是一个有监督的分类任务,对于训练数据,需要提供手语图片与其对应的标签。本系统使用自制的手语数据集和在互联网上收集到的部分公开的美国手语数据集进行神经网络模型的训练和测试。本项目采用American Sign Language 数据集和LaRED 数据集10。American Sign
14、Language 数据集中共有5 组手语图像,每组有24 种手势,分别对应AZ 中除J 和Z 的24 个英文字母(由于J 和Z 两个手势是动态的,本系统暂不考虑),共计约6 000 张。数据集预览如图7所示,该数据集中每张手语图像的大小平均在20 KB 左右,每组图像都是由不同的人在不同的环境下拍摄得到的。图7 American Sign Language 数据集LaRED 数据集是使用Intel 新开发的短程深度相机拍摄的深度手势图像数据集。该数据集包含3 个不同方向的27个手势,共构成81 个类,数据集中共有10 位志愿者的手势,每个手势约包含300 张图片。如图8所示为24 个字母对应的
15、手语手势。图8 字母对应手语手势2.5 系统测试对于本次的测试数据,系统的平均识别准确率可以达到94.80%,其中识别准确率最高的手语为A。由于QUIET 的训练数据集较少,故识别准确率较低。总体来说,系统的识别准确率可以达到预期设想,能够满足需求。3 结语本文基于深度学习、计算机视觉等技术,对手语识别技术进行研究和探索,构造了正常人与聋哑人之间的无障碍交流平台,为后续进一步探索指明了方向。后续的改进方向如下:(1)样本数据集的扩充:目前手语数据集的数据量还有待扩充,数据模型的适用性及准确性对数据集的质量和数量有着很强的依赖性,巨量的训练数据能够大幅度地提高模型的识别精度和识别范围,用于更多的情景之中。(2)实现动静结合的手语识别:动态的手语拥有更强的复杂度和随机性,可以更好地完成语义的表达转换,动静结合的手语识别也能够更好地应用于生活的方方面面,是非常值得研究的方向。(3)系统优化:对系统的代码、所使用的算法等进行优化,提高神经网络对数据特征选择提取的学习能力,实现复杂场景下的手语识别,提高系统对新数据的识别效率,改善系统识别的实时性、准确性与稳定性。 -全文完-