Page 82 - 《软件学报》2021年第10期
P. 82
3054 Journal of Software 软件学报 Vol.32, No.10, October 2021
势字典”的手势.在使用之前,应用程序的用户必须了解这些手势,预定义手势可以触发对应的预定义的行动.指
定的手势过多,可能会增加用户的认知负荷:使用规定手势的应用要求用户学习和使用手势,但是这些手势可能
是用户不愿意选择使用的.自由形式的手势通常不会触发特定的统一预定义动作.在交互上下文中,它们通常被
复制到接口所用于的系统中,并且通常用于形成样条或曲面,或在虚拟空间中移动对象.这意味着它们不传达手
势的象征意义或隐喻,自由形式手势的应用范围比较局限.
在本文中,手势主要指动态手势,包含单手或双手交互动作,对于包含手指动作的交互动作也属于手势.
1.3 手势获取涉及的技术
手势获取技术主要分为两类:基于视觉的技术 [11] ,主要靠摄像机进行手势识别与跟踪;基于可穿戴设备的技
术,要求对用户佩戴的手套、戒指、手镯、带加速计的腕带等设备输出的数据进行识别.这两类方法的主要区
别在于:基于视觉的技术对用户是无干扰或者少干扰的,用户不需要佩戴任何传感器,可以用裸手进行交互,更
符合用户的交互习惯;而基于可穿戴设备的技术则需要在手上安装其他传感器,对用户有一定的干扰.
1.3.1 基于视觉的技术
基于视觉的手势获取采用的设备通常可以分为 3 类:彩色相机、红外/深度相机和运动捕捉设备.基于视觉
的技术相比于基于可穿戴设备的技术,具有对用户基本无干扰和用户不容易疲劳等优点,但是这种技术通常容
易受到光线和肤色等因素的影响.Leapmotion [14] 和 Nimble VR 通过红外相机或深度相机可获取人手三维姿态,
并可实时传输给虚拟现实头盔显示器,如 Oculus Rift 等,促进在虚拟空间通过自然手势进行设计和操作.基于视
觉的交互手势姿态获取是目前动态手势识别的基础性技术之一,这类问题主要有两个思路:基于模型优化的方
法与数据驱动的方法.
基于模型优化的方法主要通过对手部各个关节弯曲角度等参数的直接捕捉与描绘,来探测并还原手势.模
型的设计从人手的解剖结构入手,通过模拟骨骼的结构来设计物理模型,模型的结构与真实的人手越相似,手势
的还原度就越高.通常所使用的人手模型分为两类.
第 1 类模型使用圆柱体来模拟手指指节,而每个关节则以圆柱体的连接点代表 [15] .这种模型结构简单,
参数直观,对于边界判断与碰撞检测均有不错的表现,但只限于对手势本身进行获取;
如果想要精确地掌握手部皮肤、肌肉在动作当中的形态变化,就需要使用第 2 类模型,即网格(mesh)结
构模型 [16] ,通过取点连线,对人手的表面进行直接描绘.
相比于圆柱体模型,网格模型的还原度更高,但参数复杂.对于网格模型的优化是将两种模型的设计思路融
合在一起,既参考人手,尤其是骨骼的解剖结构来降低参数的个数,又设立单独的参数刻画表面的形态.具体来
说,这种思路设计了个体差异参数向量与动作角度向量:前者主要负责刻画手的各个部分本身,后者主要负责确
定这些部分之间的角度关系.通过这种方法,就可以既减少参数的个数,又能保证模型的细节尽量逼真.
交互手势姿态获取的另一个思路则是基于数据驱动,传统方法包括最近邻搜索、随机决策森林、具有隐含
变量的回归森林等算法.最近邻搜索是将待识别的手势与数据库中的手势进行比对,将其识别为最接近的手势.
一旦待识别的手势是一个数据库中所不包含的新的手势,则无法返回正确的结果.随机决策森林则用于对图像
的像素进行分类,决定其所位于哪个关节点,再搭配均值漂移算法,进一步确定关节点.具有隐含变量的随机森
林则是在回归森林中,凭借关节之间的隐含关系搜索关节点的坐标.传统方法需要大规模的标注数据集来进行
训练,因此常常会使用合成数据集.由于合成数据集与真实数据的偏差,使得训练结果会受到严重影响,尤其是
在真实数据上的泛化性能.目前,深度学习方法逐渐取代了传统方法以用于手势姿态的获取.
基于深度学习的手势姿态获取基础模型主要包含卷积神经网络(CNN)和循环神经网络(RNN)等.基于
CNN 的深度学习模型的输入数据通常有深度图与彩色图像两种形式.
对于深度图的输入,CNN 首先提取其特征,然后提取关节点的热力图,并最终回归人手关节的三维位置 [17] .
一些基于深度学习的方法,比如 Deep-prior,就可以从单个深度图像中提取手势,在这种方法的基础上,又可以增
加强大的先验层、旋转、平移、缩放、在线增强等 [18] ,也就是所谓的 Deep-prior++,进一步增强了算法的性能.
此外,迭代反馈 [19] 也是一种优化的方式.这种网络模型分为若干子网络.手势估计子网络从深度图中初步预测关