Research on Gesture Recognition Based on Deep Learning
This article proposes a gesture recognition system based on deep learning, which uses YOLO to capture hand information, ReXNet to capture 21 key points of the hand, and ResNet-50 to classify gestures. The experimental results show that YOLOv5 can accurately extract hand information with an accuracy of 98.5%; the accuracy of ReXNet in capturing 21 key points of the hand reached 97.2%; the accuracy of ResNet-50 gesture recognition reached 98.2%. This method can detect gesture-related information in images and has certain reference significance for gesture control.
Gesture Recognition
随着科学技术的不断发展,人工智能技术在不同领域得到广泛的应用,人们期望与电子设备的交互更加自然、直观。传统的键盘、鼠标和触摸屏虽然高效,但限制了交互的自由度,手势识别提供了无需物理接触的交互方式。
手势识别可以拓展人机交互维度,使得一些非接触式的控制成为了一种可能,在虚拟现实与增强现实等场景中,手势控制能够提供更好的体验。对于有语言功能性障碍手势识别肯定会成为他们最好的助理,代替传统的输入设备,为他们提供另一种与外界交流的方式,帮助他们更加方便地操作设备与外界进行沟通
手势识别技术的发展不仅提升了人机交互的效率和体验,也推动了相关硬件和软件产业的进步,催生了一系列创新应用和服务。随着AI和计算机视觉技术的不断成熟,手势识别的准确性和实用性将进一步增强。
张云鸽等人研究基于数据增强的机车司机手势识别,丰富机车司机的操作,辅助驾驶保证行车安全
本文使用YOLOv5 (You Only Look Once version 5)、ReXNet (Residual eXception Network)与ResNet-50 (Residual Network with 50 layers)相结合的方式实现手势的识别。其中YOLOv5用于定位手部信息的位置,ReXNet用于检测手部的关键位置、ResNet-50用于手势的分类。
深度学习在图片识别的应用领域越来越广泛,本文基于深度学习的方法进行手部特征信息提取的研究
YOLOv5是由Glenn Jocher等基于YOLO优化改进而来,模型分为四个部分,分别是输入端、主干网络、颈部网络以及预测网络组成,其模型框图如
(1) 输入端
在使用YOLOv5进行预测或训练时,可以通过调用模型的相应函数并传递适当格式化的图像数据来处理输入。这些预处理步骤通常已经集成在加载和运行模型的过程中。
图像尺寸:YOLOv5支持多种输入分辨率,但常见的预训练模型通常使用640 × 640的图像尺寸作为输入。用户可以根据需要调整输入大小,以平衡检测精度和速度。改变输入尺寸可能需要重新训练模型
或调整一些超参数以获得最佳性能。
图像格式:输入图像应为RGB格式,即红绿蓝三通道。
归一化:在送入模型之前,图像像素值通常需要归一化到[0, 1]。
批量处理:在实际应用中,为了加速推理或训练,通常会以批次的形式输入多张图像。这意味着你需要将多张图像堆叠成一个四维张量,其形状为(batch_size, channels, height, width),其中channels = 3 (对应RGB三个通道),height和width是图像的尺寸,batch_size则是批次大小。
预处理:除了归一化,可能还需要进行其他预处理步骤,如缩放或填充,以确保所有输入图像尺寸一致。YOLOv5模型通常期望固定的输入尺寸,因此需要调整输入图像以匹配该尺寸。
数据类型:确保图像数据在送入模型前转换为适合模型运算的数据类型,通常是浮点数(float32)。
(2) 主干网络
主干网络的主要由移动平均池化块、复合缩放、路径聚合网络、SPP-Block (Spatial Pyramid Pooling)、全局平均池化等模块组成。YOLOv5的主干网络设计旨在高效地提取图像特征,同时保持较低的计算复杂度,以适应实时目标检测的需要。通过选择不同的EfficientNet变体,可以在性能和资源消耗之间找到合适的平衡点。
移动平均池化块:它包含了一个倒置瓶颈结构,通过步长为1的卷积、膨胀卷积和逐点卷积来减少计算量并保持模型性能。
复合缩放:通过复合缩放来调整模型的宽度、深度和分辨率,以平衡模型的性能和计算成本。
路径聚合网络:YOLOv5在主干网络中结合了PANet的设计,以提高特征金字塔的性能。PANet通过引入上采样路径和跳跃连接,增加了不同层次特征的融合,从而提高了目标检测的准确性。
SPP-Block:在某些版本的YOLOv5中,主干网络可能还包括SPP-Block,它在特征映射上应用不同大小的池化窗口,以捕获不同尺度的信息,这对于处理不同大小的目标非常有用。
全局平均池化:主干网络的输出通常会经过全局平均池化,将高维特征映射降维,为后续的分类和定位分支提供输入。
(3) 颈部网络
YOLOv5的颈部网络是模型中负责特征融合和提升的部分,它通常位于主干网络之后,头部网络之前。颈部网络的设计目的是为了更好地提取和融合不同尺度的特征,以提升目标检测的性能。以下是YOLOv5颈部网络中可能包含的关键组件:PANet (Path Aggregation Network)、FPN (Feature Pyramid Network)。具体形式如
PANet:PANet引入了上采样路径和跳跃连接,将低层的细致信息与高层的抽象信息结合起来。这种设计有助于捕捉不同大小和尺度的目标,特别是在小目标检测中表现突出。
FPN:FPN是另一种常用特征金字塔结构,它通过将底层的高分辨率特征图与高层的低分辨率特征图结合,生成多尺度的特征金字塔。
颈部网络的作用是整合来自不同层的特征,增强模型对不同尺度和复杂背景下的目标检测能力。这些结构通常会提升模型的性能,特别是在处理多尺度目标和复杂场景时。
(4) 预测网络
YOLOv5的损失函数由分类损失、定位损失、置信度损失三部分组成,损失函数计算公式如式(1)所示,其中 表示分类损失部分, 表示定位损失部分, 表示置信度损失部分, 、 、 是损失权重,用于平衡不同类型的损失对总损失的影响。分类损失对于每个锚框(anchor),模型预测一个类别概率分布,分类损失衡量的是预测类别与真实类别之间的差异。通常使用二元交叉熵损失函数计算,对于多类别问题,可以使用多类别交叉熵损失。定位损失衡量预测边界框与真实边界框之间的差距。YOLOv5使用的是GIoU损失,这是一种改进的IoU损失,即使在框不重叠时也能提供梯度,有助于模型更好地学习目标位置。模型为每个锚框预测一个置信度分数,表示该框是否包含一个对象。置信度损失也是使用二元交叉熵损失计算的,它区分了预测框是否包含目标物体。
(1)
同时使用非极大值抑制NMS (Non-Maximum Suppression),确保手的位置不会被反复识别,一个手势只识别一次。
ReXNet是一种深度学习模型,它是ResNeXt (Residual Network with eXtreme cardinality)的变体。ResNeXt引入了“分组卷积”的概念,通过并行的路径来增强网络的表达能力,提高模型的效率和性能。而ReXNet在此基础上进一步改进,提出了“深度可分离分组卷积”,它结合了深度可分离卷积和分组卷积,旨在减少计算量的同时保持甚至提高模型的准确性。本文使用ReXNet来检测手势的21个关键位置用于进一步手势的识别。网络结构如
网络层 |
输出大小 |
输入层 |
224 × 224 × 3 |
卷积层 |
112 × 112 × 32 |
瓶颈层 |
112 × 112 × 16 |
瓶颈层 |
56 × 56 × 27 |
瓶颈层 |
56 × 56 × 38 |
瓶颈层 |
28 × 28 × 50 |
瓶颈层 |
28 × 28 × 61 |
瓶颈层 |
14 × 14 × 72 |
瓶颈层 |
14 × 14 × 84 |
瓶颈层 |
14 × 14 × 95 |
瓶颈层 |
14 × 14 × 106 |
瓶颈层 |
14 × 14 × 117 |
瓶颈层 |
14 × 14 × 128 |
瓶颈层 |
7 × 7 × 140 |
瓶颈层 |
7 × 7 × 151 |
瓶颈层 |
7 × 7 × 162 |
瓶颈层 |
7 × 7 × 174 |
瓶颈层 |
7 × 7 × 185 |
卷积层 |
7 × 7 × 1280 |
池化层 |
1 × 1 × 1280 |
全连接层 |
k |
ResNet-50的核心是残差块,它由两个或三个连续的卷积层组成,中间有一个跳跃连接。跳跃连接直接将输入信号加到块的输出上,允许信息直接流过块,解决了深度网络中的梯度消失问题。每个残差块内部采用了“瓶颈”结构,即先通过一个较窄的卷积层(通常通道数为原输入的1/4)降低特征维度,然后通过一个较大的卷积层恢复到原始维度,最后是一个1 × 1的卷积层。这种设计减少了计算量,同时保持了模型的表达能力。ResNet-50在每个卷积层后都应用了批量归一化,以加速训练过程并提高模型的稳定性。为了减小输出尺寸,ResNet-50在某些层中使用步长为2的卷积,而不是池化层,这有助于保留更多的空间信息。在最后一个卷积层之后,ResNet-50使用全局平均池化代替全连接层,减少了模型的参数数量,降低了过拟合的风险。全局平均池化后的特征向量被馈送到一个全连接层,用于输出类别概率。具体结构如
手部关键点通常指的是在手势识别、人机交互、运动捕捉等应用中,为了精确描述手部姿态和运动,所定义的一系列具有代表性的位置。上述列表详细列举了手部的主要关键点,涵盖了从手腕到每个手指尖端的关节,具体包括
手势识别软件环境如
项目 |
参数 |
操作系统 |
Windows 11 |
CPU |
i5-12500H |
内存 |
16 G |
系统类型 |
64位操作系统 |
数据集中的如
本文通过模型的训练得到模型,实验结果如
算法 |
准确率 |
召回率 |
YOLOv5 |
98.5% |
99.9% |
ReXNet |
97.2% |
98.7% |
ResNet-50 |
98.2% |
99.3% |
在基于YOLOv5、ReXNet以及ResNet-50相结合的方法实现对手势的识别,能够准确识别不同的手势信息。通过YOLOv5检测手部位置,通过ReXNet算法确定手部21个关键特征点,通过ResNet-50算法实现对手势的判定,结果显示该方法能够捕捉到图片中的手势信息,有能力实现手势控制与交互的功能。后续可以进一步优化算法,实现更多手势的识别。
*通讯作者。