昇腾社区首页
中文
注册
大规模视频手势识别

概述

大规模手势识别的主要过程包括:手势视频的处理、通过C3D模型进行特征学习和处理、特征分类和预测手势种类,其主要的流程图如下图所示。


C3D模型介绍

近年来,基于RGB-D(RGB-深度视频)视频的手势识别受到学界的广泛关注。因此,我们利用RGB和深度视频做手势识别,用C3D模型来提取特征进行学习。为了能更好地学习视频中的手势细节,我们将对输入视频进行预处理将其转成32帧图像。由于背景、着装、肤色等因素可能会扰乱识别,我们使用显著性视频使其能集中注意手势。C3D模型能够学习时空特征,我们也将RGB特征、深度特征和显著性特征融合在一起以提高性能,最终的分类由SVM实现。整体的网络结构下图所示。


C3D模型通过8个卷积层、5个池化层与2个全连接层来学习特征,通过1个softmax层来提供预测的类别。8个卷积层的卷积核个数分别是64、128、256、256、512、 512、512和512,卷积核的最佳大小是3x3x3。通过对视频的时空卷积,可以获得在不同尺度上的特征图。在1次或2次卷积操作之后,通过1次池化操作,来对特征进行降采样,以获得更具全局性的特征。在文中,第2-5层的池化层的卷积核大小是2x2x2,而第1个池化层的卷积核大小是1x2x2,以保证在网络中时域信息能够得到最大程度上的保留。在经过多次卷积和池化操作之后,特征图被抽象成一个4096维的特征向量。神经网络结构示意图如下图所示。


系统设计流程

该系统设计流程可分为模型训练阶段和模型推理阶段,如下图所示。前者主要在服务器端完成构建,而后者主要在华为Atlas 200 DK开发板上完成构建。


模型训练阶段首先构建C3D网络模型,本案例中的C3D网络模型采用深度学习框架Tensorflow定义其神经网络CNN结构,并将CTC作为其损失函数对模型进行训练。训练所得的模型为TensorFlow的pb格式模型,以满足华为MindStudio平台模型转换要求。最终对转换后的pb格式模型进行验证和评估。

模型推理阶段首先对输入的手势视频进行视频预处理,并将结果作为C3D模型的输入张量;利用华为Mind Studio平台和ATC工具将pb格式的TensorFlow C3D模型转为华为Atlas 200 DK支持的om格式模型;接下来通过C3D模型对输入的张量进行识别,最终输出手势识别结果。

效果展示


2号手势权重结果


6号手势权重结果

可以看出,序号分别为2、6号(由于0号手势存在的原因,实质为3号、7号手势)的手势输出权重值最大,这和输入的测试bin文件test_float32_actiontype3.bin 和 test_float32_actiontype7.bin两个bin文件相吻合,证明以上的流程均正确运行,包括包括bin文件的读取、om模型的转换、模型的装载和推理inference函数的调用。