基于视觉的手势识别算法综述

时间: 2024-04-17 09:10:38 |   作者: 光电sensor

工作地点:首页 > 爱游戏最新官网 > 光电sensor

  本系列文章旨在科普基于视觉的手势识别算法设计与实现。本文为该系列第一篇,主要介绍手势识别算法的发展流程,列举一些常见的手势识别算法(包括基于机器学习和基于深度学习两种)。在后续文章中,将会对其中的几种办法来进行详细描述。

  随着计算机在社会中的普及,促进人机交互(HCI,Human–Computer Interaction)技术的发展将对计算机的使用产生积极影响。因此,人们逐渐重视研究用于跨域人机障碍的新技术。研究的最终目标是将人机交互变得如同人与人交互一样自然。长期以来,手势一直被认为是一种能够给大家提供更自然、更有创意和更直观的与我们的计算机进行通信的交互技术。为此,在人机交互中加入手势是一个重要的研究领域。手势识别这一术语指的是跟踪人类手势、识别其表示并将其转化为语义上有意义的命令的整一个完整的过程[1]。随着AI和深度学习等技术的发展,手势识别已经被大范围的应用于所有的领域,最重要的包含:(1)智能家居:通过手势控制智能家居设备的开关、调节亮度、音量等。(2)智能可穿戴设备:用于可穿戴设备如智能手环和智能手表,通过手势控制音乐播放、拍照和接听电线)车载系统:通过手势控制空调、收音机、音乐播放器等。(4)游戏控制:通过手势控制角色的移动、攻击等操作。(5)机器人:机器人交互,如送餐机器人、酒店客房服务机器人等。除此之外,手势识别技术在XR(Extended Reality)头显类智能设备交互中也具有广泛的应用和重要意义。XR技术最重要的包含虚拟现实(VR)、增强现实(AR)和混合现实(MR)。XR交互方式包括6DoF追踪定位、手势识别追踪、眼动追踪、面部识别等,其中手势识别追踪是其中发展较为成熟的技术之一,其在XR场景中的作用最重要的包含:(1)自由的手势操作。传统的XR头显设备需要用控制器或手柄做相关操作,但手势识别技术能直接识别用户的手势动作,消除了额外的硬件设备,使用户能更加自由地进行交互操作。例如,用户都能够通过手势来选择、拖动、放大或缩小虚拟物体,实现更自然而直观的操作方式。(2)增强使用者真实的体验。相较于控制器和手柄,使用手势进行触摸和操控更能收获身临其境的感觉。例如在VR游戏中,用户都能够沉浸式打拳。

  上面视频是2013年Ultraleap推出的手势识别硬件 Leap Motion ,这款依靠红外LED和灰阶Camera采集数据的设备在当时吸引了相当多的关注,也成为消费级市场上手势识别应用的最早实践。国内也有很多公司着手研发XR场景下手势交互芯片,下面的视频是每刻深思XR场景下低功耗手势交互芯片demo,能应用于AR眼睛、VR头显等设备,提供高帧率、低延迟、低功耗手势交互功能。

  手势识别的背景可以追溯到20世纪80年代,当时使用光传感器和其他简单的感应技术来获取动态手势信息。这些设备通过有线技术将计算机系统与用户连接,直接检测手和手臂的每个关节的角度和空间位置,典型设备如数据手套[2]。虽然这种办法能够提供良好的检测结果,但其额外的设备成本使得整体应用变得昂贵。

  尽管外部设备的干预提高了手势识别的准确性和稳定能力,但却掩盖了手势的自然表达。随后,随着计算机视觉和模式识别等技术的发展,手势识别开始使用图像处理和机器学习技术进行建模和分类识别。随着深度学习技术的逐渐成熟,深度学习方法开始应用于手势识别,极大地提高了手势识别的准确性和效率。

  手势识别可大致分为静态手势识别和动态手势识别两类。静态手势识别的研究对象是某一时刻的手势图像,其识别结果与图像中手部的外观特征(如位置、轮廓和纹理等)强烈相关[3]。动态手势识别的研究对象是一段连续时间内的图像序列,其识别结果与图像中手部的外观特征、以及描述手部在序列中运动轨迹的时间序列特征有关[4][5]。相比静态手势,动态手势更加多样化、表达丰富且更加实用。

  手部检测指的是从屏幕中截取手部区域,以便后续手势检测。早期的手部检测主要使用手动提取的特征来获取图像中的手部区域[6],常用的方法基于手的肤色、形状、像素值、三维模型和运动特征等。这一些方法容易受到光照变化、肤色差异、背景干扰、自然变化、手指自遮挡等影响,检测效果不理想,计算速度较慢,难以满足实际应用中的实时需求。

  随着深度学习的发展,基于深度学习的手部检测器逐渐占据主流位置。与手动特征提取相比,这种方法具有更好的泛化能力。手部检测还有许多成熟的网络架构:

  文献[9]提出了一种融合了RGB和深度通道的Faster R-CNN手部检验测试框架。在Faster R-CNN的基础上增加了深度通道,并在特征图熵中融合了两个通道的信息,利用深度信息增强了特征的鲁棒性。(论文链接:

  手部边界框算法更适用于动作幅度较小的单手手势。对于双手手势或动作幅度较大的手势,边界框的大小接近图像大小,很难消除背景干扰。文献[10]在检测手部区域的基础上,利用多人姿态估计提取了骨骼信息。(论文链接:

  基于人工特征的机器学习算法最重要的包含动态时间规整(Dynamic Time Warping,DTW)和隐马尔可夫模型(Hidden Markov Model,HMM)。

  DTW经常用于测量不同长度的两个时间序列的相似度[11]。在手势识别中,使用DTW时首先对训练集中的每个手势进行预处理,提取特征并将其规范化为一个序列模板。对于待测试的手势,进行相同的预处理操作,并将生成的序列模板与训练集中的序列模板逐一匹配,输出相似度最高的结果作为识别结果。由于DTW在训练时不使用统计模型框架,它应用于上下文中的各种知识,所以在处理大量数据和复杂手势时效果不理想。HMM模型大多数都用在处理基于时间序列或状态序列的问题。有两组数据,即观测序列和状态序列。HMM模型可以从一系列观测序列中确定状态序列。在手势识别中,手部进行的一系列动作是观测序列,手势是状态序列。在训练过程中为每个手势识别标识一个HMM模型。在测试时,遍历所有HMM模型,计算手势序列的概率值,并选择概率值最大的手势作为识别结果[12]。(论文地址:ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7966198)尽管基于人工特征的动态手势识别取得了良好的效果,但环境和视角的变化对预测结果会产生特别大的影响,研究人员很难设计适用于所有条件的手势识别样本。

  3DCNN可以同时从序列中提取空间和时间信息,由多个3D卷积层、3D池化层和激活函数组成。与2D相比,可以同时在宽度、高度和时间维度上对多个特征图做相关操作,从而能够同时从序列中捕捉空间信息。最经典的3DCNN是深度3维卷积网络(Deep 3 Dimensional Convolutional Network,C3D)。基于该模型,提出了许多可用于手势识别的网络。例如,[15]提出了基于C3D的动态手势识别网络。每个手势序列使用金字塔输入进行金字塔分割,将金字塔融合放置在全连接层和softmax层的中间。还有许多文献将C3D与经典的网络结构如RNN和LSTM进行整合,并提出了自己的网络模型。

下一条:手指和手势识别算法原理和解析