APP下载

基于计算机视觉的人机交互技术研究

2022-05-26贾淑滟

绵阳师范学院学报 2022年5期
关键词:描述符手势步长

贾淑滟

(山西旅游职业学院,山西太原 030031)

0 引言

近年来,人类行为和手势识别受到研究者越来越多的关注,并在人机交互等领域发挥了重要作用.人类和机器人之间直观可靠的通信对于成功的协作至关重要.关于自然界面,人类和机器人助手之间最相关的交流渠道是语音和手势[1].由于典型的嘈杂工业环境使语言交流变得无效,手势已经成为与机器人合作的最具探索性的交流方式[2].尽管传感器技术和机器学习方法取得了重要进展,但自动手势分割和分类仍然是一个具有挑战性的问题[3].识别手势的过程中会遇到许多困难,例如噪声和缺失数据、个体间的可变性、不规则的观察条件(例如,灯光、背景和视点)和无限的词汇外运动等.此外,由于时间维度带来的更高复杂性,对用于手势识别的视频理解一直是一个不断增长的研究领域[4-6].Kinect传感器的出现是计算机视觉的一个显著进步,它被应用于各种涉及手势识别的任务,例如娱乐和人机界面.随着Kinect提供内置的骨骼数据以及高分辨率的深度和颜色图像,伴随着很多新的数据集出现,为研究人员提供了设计新方法并在大量序列上验证的机会.本文在2014年“ChaLearn Looking at People (LAP)”挑战赛数据集上进行了实验[7].

本文主要研究视频序列的标注,该方法依赖于从骨架数据中提取的一系列手工特征.本文提出了一个有效的手势定位模块,它执行帧级别的二分类.用于手势识别的方法采用了基于滑动窗口的方案.本文还结合了不同持续时间大小的窗口,以获得一个多时间尺度的方法.此外,本文提出了一种用于同时进行手势检测和分类的方法,该方法采用了具有双向长短期记忆(LSTM)单元的递归神经网络(RNN)[8].这些循环单元使长时间尺度上的时间关系学习变得高效,并且表现出了比标准单元更好的性能[9].

1 研究现状

传统的手势识别方法通常包括时空手工描述符和分类,即使是提交给2014ChaLearn LAP挑战赛的最精确的方法也提出了手工提取特征的描述符.得分最高的方法从每个视觉模态中学习特征,但是从骨架数据中构建的特征是完全手动提取的特征[4].第二名的方法完全依赖于手工制作的特征,每个手势的整体外观是由骨架数据推断出来的[5].

虽然许多人类姿势可以通过主要关节的位置和运动来区分,例如肘部和肩部等.但其他姿势不同于手的姿势及其相对于身体或面部的位置.因此,方向梯度直方图(HOG)[10]是一种手工制作的特征描述符,通常用于区分手势,在手势识别中具有显著的效果[5].近几十年来,构建一个机器学习系统往往需要仔细的工程实现和大量的领域专业知识来设计一个特征提取器.此外,特征的选择是一项困难的任务,因为它们高度依赖于问题本身.深度学习方法是一种表征学习方法,允许机器获得原始数据,并自动发现检测或分类任务所需的表征信息[11].学习到的特征已经在无数的领域中显示出有价值的结果,比用工程描述符获得的结果要好很多倍[12].

卷积神经网络[13]是深度网络的典型例子,可用于直接从数据中学习潜在和复杂的特征.使用卷积神经系统将物体识别的错误率几乎减半是深度学习的一项重大突破,促使了计算机视觉社区开始广泛采用深度学习[14].Di Wu等人使用深度网络,包括3D CNN来处理颜色和深度图像,为隐马尔可夫模型(HMM)建模释放概率[6].尽管神经网络已经大量地应用于特征构建,但它们可以从像素值端到端地训练到分类输出.Ji等人将这些网络用于机场监控视频中的人体动作识别[15].Karpathy等人还研究了在时域中扩展CNN连通性的多种方法[16].他们的慢融合模型在Sports-1M数据集上取得了最佳性能,也是一个3D卷积神经网络.

Pigou等人表明时间池化不足以进行手势识别,在该任务中,时间信息比一般的视频分类任务更具区分性[9].他们在双向递归(RNN与LSTM细胞)后进一步地使用了时空卷积,并在2014年挑战中取得了最先进的结果.将卷积神经系统独有的特征提取能力与LSTM网络的时序动态建模相结合的概念,也为使用多模态可穿戴传感器进行人类动作识别提供了最先进的结果[17].

2 手势分割

2.1 姿态描述符

该方法的核心是基于手工特征的姿态描述符,如图1所示,它利用Kinect传感器采集11个人体关节对应的骨骼数据.该姿态描述符包括当前帧周围短时间窗口的空间信息和时间细节,例如速度和加速度.

本文的手势检测方法最初遵循Zanfir等人提出的流程[18].因此,本文通过计算一个归一化的姿态向量,以及所有11个关节的速度和加速度.图1将上身关节显示为树形结构,其中臀部中心关节是根节点.它的原始坐标从所有其他位置向量中减去,以减少身体空间位置的影响.每对关节之间距离的标准化也用于平衡用户身体比例的差异.然后,使用标准偏差等于1的5×1高斯滤波器沿时间维度平滑每个坐标.最后,每个关节的速度和加速度是对应的平滑位置的一阶和二阶导数.

本文通过收集特征角度和成对距离来获得更精确的描述符[4].如图2所示,如果添加两个虚拟的骨骼:右手/左手-臀部中心,倾斜角则由解剖学上连接的所有三个关节形成.方位角提供与身体相关联的坐标系中姿态外观的信息,并且它们被计算为倾斜角所使用的相同的三个关节.弯曲角度是在垂直于躯干的矢量和每个关节的标准化位置之间测量的.每对关节之间的55个距离作为最后一个特征添加到描述符.结合所有经过归一化(均值零和单位方差)后的特征,本文得到每帧的183维姿态描述符.

图1 人体关节示意图Fig.1 Schematic diagram of human joints图2 由相连关节形成的角度示意图Fig.2 Schematic diagram of angle formed by connecting joints

2.2 有监督的分割

不同的手势在其初始或最终阶段可能非常相似,并且按帧分类通常会产生噪音甚至是错误的结果.本文引入这个模块是为了防止这些负面影响.分类器区分静止时刻和活动时期,它可以识别每个手势的起点和终点.这个阶段是基于手工描述符实现的.标记有一个手势类的所有训练帧被用作正样本参与训练,并且在这种手势之前和之后的一组帧被用作负样本.

图3 分割模块的网络结构示意图Fig.3 Network structure diagram of segmentation module

如图3所示,为本文采用的网络结构.由于模型是用姿态描述符训练的,它的输入层有183个单元.此外,网络包括2个隐藏层,分别包含100个单元,且第一个应用ReLU作为激活函数,第二个应用双曲正切激活函数.输出层只有一个神经元,使用Sigmoid进行激活.当处理活动周期时,该层输出1,否则输出0.该网络通过比例共轭梯度法进行优化.

对于每个样本,神经网络输出的分数个数与样本的帧数一样多.本文发现预测结果通常不够稳定,因此,本文进一步采用最小二乘法和二次多项式通过局部回归来平滑它们.之后,本文使用一个阈值来确定分数高于0.4的所有帧都属于一个运动周期.此外,本文只考虑持续至少12帧的活动周期.

3 手势分类

帧级别的分类是研究人员应对静态手势的一个合理策略,因为单帧的数据非常特殊.然而,本文的工作重心是动态手势,针对这个目的,本文设计了三个合适的模型.方法A和方法B是基于滑动窗口的方法,滑动窗口可以连接来自不同时刻的空间信息.这些模型只关注上一节模型所划分的动作周期.方法C是用LSTM单元测试RNN的深度模型.

3.1 方法A

窗口的应用导致动态姿态,它是在给定时间步长采样并连接以产生时空向量的描述符序列.本文的方法A用3个姿态描述符来构建动态的姿态,即所选帧之间的步长等于4.因此,这个窗口正好包含9帧.每次应用后窗口的步长等于2.此外,本文希望从每个活动周期收集至少5个动态姿态,从而确保分类器有足够的数据来输出鲁棒的预测.当周期的维度不足以满足该条件时,使用三次插值法将数据调整到最小长度.

图4 分类模块的网络结构示意图Fig.4 Network structure diagram of classification module

如图4所示,为将根据以上描述符建立的动态姿态作为前馈网络的输入时所对应的网络结构.每个动态姿态包括3个姿态描述符,因此,输入层有549个单元.该网络包括两个隐藏层,第一层由300个单元组成,第二层仅由100个单元组成.两层都应用双曲正切作为激活函数.输出层有20个单位,是类别数,使用Softmax作为激活函数.该网络也是由共轭梯度法训练的.

分类过程的最终细节可能因活动周期的长短而有所不同.根据对手势平均长度的研究,本文假设一个少于55帧的运动周期只包含一个手势.在这种情况下,本文在整个片段上滑动窗口,网络单独评估动态姿态.对于每个动态姿势,如果最大得分高于一个阈值,本文记录对应的类.最后,如果最常见的类别在记录的类别中获得绝大多数,本文则将动作周期分类为该类别.否则,该段将保持未标记状态.当周期长度较大时,假设它包括多个手势,目标是检测其中的每一个手势.同理,如果获胜类的分数大于一个阈值,则记录那个类.每当在至少3个连续窗口中识别到相同的手势时,则假设该手势被有效地执行.然后,被分类为同一类别的连续窗口所包含的所有帧都被标记为该类别.

3.2 方法B

太宽的动态姿势会导致嘈杂的预测,尤其是在手势的初始和最终阶段.另一方面,短的动态姿势是没有区别的,因为一些姿势类有相似的外观.搜索不同的超参数组合可以改善某些预测,但会恶化其他预测.因此,本文引入了一种较为鲁棒的方法,该方法应用了3个滑动窗口,这与方法A使用的方法非常相似,但是通过对具有不同时间步长的描述符进行采样来创建动态姿态.这种关联产生了一个适应多种时间尺度的模型.

根据上面的描述,这种方法使用3个滑动窗口.第一个负责收集姿态描述符,所选帧之间的步长等于4,第二个使用步长3,最后一个应用步长2.监控每个滑动窗口的所有其他超参数与上面定义的那些保持一致.该模型包括3个神经网络的训练,每个神经网络的结构与图3中描述的相同.

当窗口在每个活动周期滑动时,可以得到3组分数.它们与优化权重相结合.然后,分类过程遵循上面定义的准则.

3.3 方法C

本文实现的第三种方法采用的是基于具有双向LSTM单元的RNN,该过程与上面所述的有所不同,因为本文丢弃了来自分割部分的所有信息.在每个训练样本上滑动一个10帧长的窗口,从窗口内的所有帧中收集数据.因此,对于每一次迭代,都得到一个矩阵,它的维数是帧数乘以特征数.如果窗口内的所有帧都属于静态的,迭代之间的步长等于5帧.否则,步长只有2帧.

这里应用的深层网络包括了3个具有双向LSTM单元的隐藏层、2个随机丢失层和1个具有完全连接单元的密集层.第一和第二隐藏层各有1 024个单元,使用Leaky-ReLU激活功能,后面是随机丢失层,其丢失输入元素的概率为60%.第三个LSTM层有512个单元.全连接层由21个单位组成,即类别数(包括静止类),使用Softmax作为激活函数.该网络使用随机梯度下降动量(SGDM)优化.学习率初始化为0.01,在每组10个迭代周期后,学习率下降0.85倍,直到最多150个迭代周期.此外,本文还使用批大小为128的数据样本来加速收敛并防止模型过拟合.

最后,从测试样本中收集数据序列,每次迭代后的步长等于窗口的长度,这消除了序列之间的重叠.预测也是不稳定的,它们需要平滑,就像对手势分割所做的那样.最后,本文只考虑当手势被有效地执行至少15个连续的帧时,赋予其相同的分类标签.

4 实验

4.1 ChaLearn Looking at People挑战赛2014

2014年,ChaLearn提出了一个多模态手势识别竞赛.该数据集包括近14 000个手势,涵盖了从意大利手语词汇中提取的20个类别.它还包含多个词汇之外的动作.这个数据集提供了三维视频,以及骨骼关节数据.此外,数据集被分为训练集、验证集和测试集.尽管验证和测试集的真值已经发布,但它仅用于每个模型的评估.

本文沿用了竞赛主办方提出的评估程序,使用Jaccard指数来量化模型的性能.因此,对于序列s中的第n个手势,Jaccard指标被定义为:

(1)

其中,As,n是序列s中手势n的真实标注,Bs.n是同一序列中此手势的预测结果.As,n和Bs.n分别是一个二维向量,其中执行给定手势的帧被设置为1.整体性能计算为所有类别和所有序列的平均Jaccard指数.

4.2 手势分割

本文测试了分割模型的几种网络结构,即具有不同数量的隐藏层和这些层中不同单元数量的网络.实验结果表明,具有两个隐藏层的网络比具有单个隐藏层的网络表现稍好.此外,实验结果还发现使用ReLU作为第一个隐藏层的激活函数和双曲正切函数作为第二个隐藏层的激活函数时,可以获得最佳性能.第2.2节中叙述了详细的策略,它在对每一帧的分类上取得了96.8%的准确率.如图5所示,这是可视化的一个分割结果的例子.其中,柱状区域是真实的标注,虚线是平滑后的分数,实线代表最终分割结果.

当用户以清晰的时间间隔执行手势时,分割模型可以良好运行.然而,一些受试者执行连续的手势,而另一些受试者在整个样本持续期间采用动态的姿势.在这些情况下,分割是具有挑战性的,模型只能检测一个大的活动周期.这就是为什么本文在第3.1节中针对更长的活动周期描述了不同的分类过程.

如前所述,数据集包括多个词汇外的手势.然而,分割模型可以检测到用户的任何显著移动,即使是对于那些未知的手势类别,如图6的末尾部分所示.因此,未标记的手势是分类模型的任务,分类模型必须足够精确以预测那些序列不属于词汇.

图5 手势分割结果示意图Fig.5 Schematic diagram of gesture segmentation results图6 未知手势类别的分割结果示意图Fig.6 Schematic diagram of segmentation results of unknown gesture categories

4.3 手势分类和机器人控制

如表1所示,将所提方法与2014年挑战赛前3名的提交方法进行了比较.所有结果都是仅使用骨架数据获得的.

图7 根据方法C得到的预测结果 计算的混淆矩阵示意图Fig.7 Schematic diagram of confusion matrix calculated according to the prediction results obtained by method C

本文手势分类方法A从单个窗口构建动态姿势,获得了0.692 8的Jaccard指数.在方法B中,多个时间尺度的引入带来了分数的提高,分数增加到0.704 7.实验结果可以发现,不同窗口的组合能够适应不同用户的表现差异.此外,方法B中采用了获得单个得分向量的权重,结果表明,动态姿势的辨别能力取决于所选帧之间的步长,并且对于更宽的窗口,该权重最大.方法C总结的深度学习法达到了0.746 7的Jaccard指数.如图7所示,该混淆矩阵直观显示了方法C的性能.另一方面,手势类别通常引起多种手势混淆.从实验结果可以观察到#14和#15类相互混淆.如图8所示.导致这种错误标注的原因(容易混淆的相似之处).此时,骨架数据不足以区分它们.在左边,用户正在执行手势#14,在右边是手势#15.最后,右边的列表示假阴性,假阴性是标有某种手势类别的帧,但被归类为静止类别,即有些手势没有被检测到.另一方面,最后一行表示假阳性,假阳性是属于静止类的帧,但是预测出了手势类别.这一结果的主要原因是有些词汇外的手势类别误导了模型.

图8 导致错误标注的可视化例子(手势#14和#15)Fig.8 Visualization example leading to incorrect annotation (hand gesture #14 and #15)

图9 方法C在测试集上的预测结果与真实标签的对比Fig.9 Comparison between the predicted results of method C and the ground-truth on the test set

如图9所示,为样本#703的真实标签和预测结果的对比.本文选择这个样本的原因主要是为了与Di Wu等人[6]的结果进行直接的比较.如图7的顶部图像所示,该视频包括10个标记的手势.正如在本文前面提到的,可以清楚地辨别由明确的时间间隔分隔的手势,但是也存在不同手势的连续实例.本文方法克服了这个问题,并正确地预测出所有的标签,以及准确地定位每个手势的起点和终点.另一方面,该方法标记出了一个超出词汇范围的手势.甚至这种行为也代表了一个很好的结论,因为在这个视频中,用户至少执行了4个词汇外手势.实验结果表明,本文模型对这个样本的预测比Di Wu等人[6]提出的要好得多.尽管有这个精确的预测,这个样本只达到了0.867 2的Jaccard指数,这也侧面反映了这个指数的累赘性质.

本文提出了一个用于工业机器人协同的人机交互界面,目标是开发一个真实的交互过程来完成一项有用的任务.在这里,本文的首要任务是捕捉和移动一个工具,它包括以下5个动作:1)机器人向工具周围的移动;2)夹持器的闭合;3)工具的翻译;4)夹具的打开;5)并返回到默认位置.为此,本文训练了一个模型,之前使用的数据集中只包含了20个手势中的5个.如图10所示,为这个任务的可视化描述.因为只需要几个直观的、容易学习的手势.这种与协作机器人的联系代表了一种突破,因为还没有研究人员发布过这种类型的应用.本文使用KUKA Sunrise工具箱(KST),这是一个MATLAB工具箱,来操作KUKA Sunrise系统控制器[20].

图10 人机交互的不同阶段示意图Fig.10 Schematic diagram of different stages of human-computer interaction

5 结语

本文提出了一个手势检测模型,它基于一系列手工特征的描述符.它可以区分静止和活动区间,准确率为96.8%.该方法报告了3种基于相同描述符的不同手势分类方法.本文的方法C应用具有双向LSTM单元的RNN来同时执行手势的检测和分类.这一策略实现了0.746 7的Jaccard指数.最后,本文构建了一个轻量版本的方法C,只包含了数据集内20个手势中的5个,本文将其用作机器人的命令.

计算机视觉社区的一个重要部分是将其努力与深度学习方法相结合.因此,未来的一个工作方向将是用自动学习的特征取代手工特征,本文正是应用卷积神经网络来自动完成这项任务.此外,本文还试图将输入通道扩展到RGB-D图像,使每个手势的表示更加鲁棒.

猜你喜欢

描述符手势步长
基于结构信息的异源遥感图像局部特征描述符研究
基于Armijo搜索步长的BFGS与DFP拟牛顿法的比较研究
挑战!神秘手势
V字手势的由来
Linux单线程并发服务器探索
胜利的手势
利用CNN的无人机遥感影像特征描述符学习
基于逐维改进的自适应步长布谷鸟搜索算法
一种新型光伏系统MPPT变步长滞环比较P&O法
一种新颖的光伏自适应变步长最大功率点跟踪算法