本申请涉及人机交互领域,并且更具体地,涉及一种手势识别方法、电子设备和计算机可读存储介质。
背景技术:
:计算机视觉是各个应用领域,如制造业、检验、文档分析、医疗诊断,和军事等领域中各种智能/自主系统中不可分割的一部分,它是一门关于如何运用照相机/摄像机和计算机来获取我们所需的,被拍摄对象的数据与信息的学问。形象地说,就是给计算机安装上眼睛(照相机/摄像机)和大脑(算法)用来代替人眼对目标进行识别、跟踪和测量等,从而使计算机能够感知环境。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中“感知”的科学。总的来说,计算机视觉就是用各种成像系统代替视觉器官获取输入信息,再由计算机来代替大脑对这些输入信息完成处理和解释。计算机视觉的最终研究目标就是使计算机能像人那样通过视觉观察和理解世界,具有自主适应环境的能力。在计算机视觉领域中,手势识别是一种非常重要的人机交互方式。由于手势可以通过非接触式的方法表达丰富的信息,使得手势识别在人机交互、智能手机、智能电视、智能穿戴、增强现实(augmentedreality,ar)和虚拟现实(virtualreality,vr)等产品中有广泛的应用。尤其是基于视觉信息的手势识别方法,不需要在手上佩戴额外传感器以增加标记,具有很强的便利性,在人机交互等方面有很广泛的应用前景。但是,由于外界干扰的普遍存在和用户的操作习惯,使得手势识别过程中出现误检的情况较多,导致手势交互的体验较差。为了减少手势识别过程中的外界干扰,现有方案提出了一种分级结构对视频流进行处理。该方案主要是在手势识别过程中主要采用一个手势检测器和一个手势分类器来进行手势实现,其中,手势检测器采用一个轻量级的神经网络来检测是否有手势发生,当手势检测器检测到有手势发生时,手势分类器再对手势的类型进行识别,得到手势识别结果。上述方案主要依靠手势分类检测器来来识别手势动作和非手势动作,但是在利用手势分类器对手势进行分类时,对于用户做出的一些类似的手势动作无法很好的进行区分,导致出现手势的误检。技术实现要素:本申请提供一种手势识别方法、电子设备、计算机可读存储介质和芯片,以提高手势识别的效果。第一方面,提供了一种手势识别方法,该方法包括:获取第一图像流;根据第一图像流确定用户是否做出了预备动作;在用户做出了预备动作的情况下,获取第二图像流,并根据第二图像流进行手势识别,以确定用户的手势动作;响应于用户的手势动作,以实现与用户的手势交互。其中,第一图像流包括用户的连续多帧手部图像,第二图像流也包括用户的连续多帧手部图像。应理解,上述第二图像流中的用户的连续多帧手部图像与第一图像流中的用户的连续多帧手部图像不同,第二图像流中的用户的连续多帧手部图像的获取时间要晚于上述第一图像流中的用户的连续多帧手部图像。具体地,先根据第一图像中的用户的连续多帧手部图像确定用户做出了预备动作的情况下再获取第二图像流中的用户的连续多帧手部图像。上述预备动作可以是用户在做出手势动作之前的准备动作。进一步的,上述预备动作可以是用户在做出手势动作之前的习惯准备动作或者自然准备动作。具体地,上述预备动作可以是用户在做出手势动作(这些手势动作可以是能够与电子设备进行手势交互的一些特定动作,例如,抓屏,上挥,下挥等)之前的习惯准备动作或自然准备动作,而非刻意做出的动作。上述预备动作具体可以是任意手势姿态下的悬停或者停顿。例如,上述预备动作可以是手部处于伸展姿态(手部伸展开后可以与电子设备的屏幕平行或者垂直)下的悬停或者停顿,也可以是手部攥成拳头姿态下的悬停或者停顿,也可以是手部半攥紧姿态下的悬停或者停顿。上述预备动作还可以是手部的四指(除了食指之外的四指)蜷缩而食指伸出,并且食指在小范围点击或者晃动的动作。本申请中,由于在正式进行手势识别之间进行了预备动作的判断,并且只有在用户做出了预备动作的情况下才进行手势识别,能够准确识别手势动作的起始状态,尽可能的避免手势识别的误响应,提高手势识别的准确率,增强用户的手势交互体验。上述手势动作可以是隔空手势动作,具体地,当上述方法由电子设备执行时,用户在做出手势动作时与电子设备并不存在物理上的接触。上述第一图像流也可以称为第一视频流,上述第二图像流也可以称为第二视频流。结合第一方面,在第一方面的某些实现方式中,根据第二图像流进行手势识别,以确定用户的手势动作,包括:对第二图像流进行手势识别,确定出先后发生的第一候选手势动作和第二候选手势动作,并在第一候选手势动作是用户在做出第二候选手势动作之前做出的手势动作的情况下,将第二候选手势动作确定为用户的手势动作。可选地,上述第一候选手势动作是用户在做出第二候选手势动作之前习惯性做出的手势动作。本申请中,在根据图像流识别得到连续发生的两个候选手势动作时,可以前一个候选手势动作是否为用户做出后一个候选手势动作之前做出的手势动作来综合确定用户真正做出的手势动作,能够在一定程度上避免手势动作的误识别,提高手势动作识别的准确率。结合第一方面,在第一方面的某些实现方式中,第二候选手势动作是抓屏动作,第一候选手势动作是前推、后推、向上挥和向下挥中的任意一种。结合第一方面,在第一方面的某些实现方式中,根据第二图像流进行手势识别,以确定用户的手势动作,包括:根据第二图像流中的连续多帧手部图像中的前n(n为正整数)帧图像中的任意一帧手部图像确定用户的手部姿态类型;根据第二图像流中的连读多帧手部图像流确定用户的第三候选手势动作;根据预设的匹配规则确定用户的手部姿态类型与第三候选手势动作是否匹配;在用户的手部姿态类型与第三候选手势动作匹配的情况下,将第三候选手势动作确定为用户的手势动作。本申请中,通过第二图像流确定出用户的手部姿态类型和用户的第三候选手势动作,并根据用户的手部姿态类型与用户的第三候选手势动作是否匹配来确定用户的第三候选手势动作是否为用户的手势动作,能够在一定程度上避免手势误识别,提高手势识别的准确率。结合第一方面,在第一方面的某些实现方式中,根据预设的规则确定用户的手部姿态类型与用户的候选手势动作是否匹配,包括:在用户的手部姿态类型为水平放置,第三候选手势动作是上下翻页的情况下,确定用户的手部姿态类型与第三候选手势动作匹配;在用户的手部姿态类型为垂直放置,第三候选手势动作是左右翻页的情况下,确定用户的手部姿态类型与用户的第三候选手势动作匹配。用户的手部姿态类型为水平放置可以是指用户的手部所在的平面与水平面平行,也可以是指用户的手部所在的平面与水平面的夹角在预设范围内。这里的角度的预设范围可以根据经验来设置,例如,用户的手部姿态类型为水平放置可以是指用户的手部所在的平面与水平面之间的夹角为0度到30度。另外,用户的手部姿态类型为垂直放置可以是指用户的手部所在的平面与水平面垂直,也可以是指用户的手部所在的平面与水平面的夹角在预设范围内。这里的角度的预设范围也可以根据经验设置,例如,用户的手部姿态类型为垂直放置可以是指用户的手部所在的平面与水平面之间的夹角为60度到90度。上述预设的规则可以是预先确定好的匹配规则,该预设的规则中包含用户的多种手部姿态类型,以及该多种手部姿态类型匹配的手势动作,也就是说,该预设的规则中包含多个成对的匹配信息,每对匹配信息包括手部姿态类型以及与手部姿态类型相匹配的手势动作。结合第一方面,在第一方面的某些实现方式中,上述预备动作是任意手势姿态下的悬停。结合第一方面,在第一方面的某些实现方式中,根据第一图像流确定用户是否做出了预备动作,包括:对第一图像流进行检测,得到第一图像流的多帧图像中的每帧图像的手部框,每帧图像的手部框为每帧图像中包围用户的手部的包围框;在多帧图像的手部框的之间的重合度高于预设阈值的情况下,确定用户做出了预备动作。结合第一方面,在第一方面的某些实现方式中,上述方法还包括:提示用户在做出手势动作之前做出预备动作。本申请中,通过提示用户在做出手势动作之前做出预备动作,能够防止用户在进行手势识别时忘记做出预备动作,可以在一定程度上提高手势识别的效果,提高用户的交互体验。可选地,上述方法还包括:呈现预备动作提示信息,该预备动作提示信息用于提示用户在做出手势动作之前做出预备动作。上述预备动作提示信息既可以是文字形式的提示信息,也可以是语音形式的提示信息,也可以是画面信息,或者也可以是三者中的至少两种的形式相结合的信息。例如,预备动作提示信息可以包括相应的文字提示和语音提示。当上述预备动作提示信息包括图文信息时可以通过屏幕呈现,当该预备动作包括语音信息时可以通过扬声器来呈现,而当上述预备动作提示信息既包括图文信息又包括语音信息时可以通过屏幕和扬声器来共同呈现。通过预备动作提示信息能够更好地对用户进行提示,使得用户在做出手势动作之前先做出预备动作,可以在一定程度上提高手势识别的效果,提升用户体验。结合第一方面,在第一方面的某些实现方式中,上述方法还包括:获取用户的预备动作选择信息,预备动作选择信息用于指示预备动作;根据预备动作选择信息确定上述预备动作。在本申请中,通过用户的预备动作选择信息来确定预备动作,与采用统一的预备动作的方式相比,能够根据用户的操作习惯为用户选择合适的预备动作,可以提高用户体验。第二方面,提供了一种电子设备,该电子设备包括用于执行上述第一方面的任意一种实现方式的方法的模块。第三方面,提供了一种电子设备,该电子设备包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的程序,当所述存储器存储的程序被执行时,所述处理器用于执行第一方面中的任意一种实现方式中的方法。第四方面,提供一种计算机可读介质,该计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行第一方面中的任意一种实现方式中的方法。第五方面,提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面中的任意一种实现方式中的方法。第六方面,提供一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,执行上述第一方面中的任意一种实现方式中的方法。可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行第一方面中的任意一种实现方式中的方法。附图说明图1是本申请实施例的手势交互系统的示意图;图2是本申请实施例提供的系统架构的结构示意图;图3是利用本申请实施例提供的卷积神经网络模型进行手势识别的示意图;图4是本申请实施例提供的一种芯片硬件结构示意图;图5是本申请实施例提供的一种系统架构的示意图;图6是本申请实施例的手势识别方法的流程图;图7是用户和电子设备进行手势交互的示意图;图8是预备动作判断过程的示意图;图9是确定预备动作是否发生的过程的示意图;图10是预备动作的识别过程的示意图;图11是根据第二图像流进行手势识别的过程的示意图;图12是根据第二图像流进行手势识别的过程的示意图;图13是根据第二图像流进行手势识别的过程的示意图;图14是根据第二图像流进行手势识别的过程的示意图;图15是本申请实施例的电子设备的示意性框图;图16是本申请实施例的电子设备的示意性框图;图17是本申请实施例的电子设备的示意性框图;图18是本申请实施例的电子设备的硬件结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。图1是本申请实施例的手势交互系统的示意图。如图1如示,一个典型的手势交互系统包括传感器、动态手势识别单元和手势动作响应单元。其中,传感器具体可以是摄像头(例如,彩色摄像头、灰度摄像头和深度摄像头等),通过传感器可以获取包含手部图像流的图像信息(具体可以是包含手部图像流的连续帧图像信息);接下来,动态手势识别单元可以对包含手部图像流的图像信息进行处理,将其中的手部动作识别成预定义好的手势类别;最后,手势动作系统对动态手势识别系统识别得到的手势类别进行响应(例如,进行拍照,播放音乐等),从而实现手势的交互。另外,图1所示的手势交互系统可以是动态手势交互系统。一般而言,动态手势识别系统只会对用户的单个动作进行响应,而不会对连续的多个动作进行响应,以免不同的动作响应之间产生混淆。本申请的方案可以应用在电子设备的手势交互和车载系统的手势交互场景中。其中,电子设备具体可以包括智能手机、个人数字助理(personaldigitalassistant,pda)以及平板电脑等等。下面对两种较为常用的应用场景进行简单的介绍。应用场景1:智能手机手势交互在智能手机的手势交互场景中,通过手势识别,可以实现简单、自然、便捷的操作智能手机,甚至通过手势交互可以代替触摸屏。具体地,智能手机可以使用摄像头或者其它外围摄像头作为图像传感器来获取包含手部图像流的图像信息,然后再通过运算单元对包含手部图像流的图像信息处理,得到手势识别信息,然后将手势识别信息上报给操作系统进行响。通过手势识别,可以实现上下翻页、音视频播放、音量控制、阅读浏览等功能,大大提高了智能手机的科技感与交互的便利性。应用场景2:车载系统手势交互手势识别的另外一个重要应用场景是车载系统中的手势交互。在车载系统中,通过手势交互,只需做特定手势,就可以实现车上的音乐播放、音量调节等功能,可以提升车载系统的交互体验。具体地,在车载系统中,可以利用图像传感器进行数据采集得到包含手部图像流的图像信息,然后采用运算单元对包含手部图像流的图像信息进行手势识别,最后在车载系统及应用中对检测到的手势进行响应,从而达到手势交互的目的。在本申请方案中,可以利用神经网络(模型)进行手势识别。为了更好地理解本申请方案,下面先对神经网络的相关术语和概念进行介绍。(1)神经网络神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以如公式(1)所示:其中,s=1、2、……n,n为大于1的自然数,ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activationfunctions),该激活函数用于对神经网络中的特征进行非线性变换,从而将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。(2)深度神经网络深度神经网络(deepneuralnetwork,dnn),也称多层神经网络,可以理解为具有多层隐含层的神经网络。按照不同层的位置对dnn进行划分,dnn内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i 1层的任意一个神经元相连。虽然dnn看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:其中,是输入向量,是输出向量,是偏移向量,w是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量经过如此简单的操作得到输出向量由于dnn层数多,系数w和偏移向量的数量也比较多。这些参数在dnn中的定义如下所述:以系数w为例,假设在一个三层的dnn中,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为上标3代表系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。综上,第l-1层的第k个神经元到第l层的第j个神经元的系数定义为需要注意的是,输入层是没有w参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。训练深度神经网络的也就是学习权重矩阵的过程,其最终目的是得到训练好的深度神经网络的所有层的权重矩阵(由很多层的向量w形成的权重矩阵)。(3)卷积神经网络卷积神经网络(convolutionalneuronnetwork,cnn)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器,该特征抽取器可以看作是滤波器。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。(4)残差网络残差网络是在2015年提出的一种深度卷积网络,相比于传统的卷积神经网络,残差网络更容易优化,并且能够通过增加相当的深度来提高准确率。残差网络的核心是解决了增加深度带来的副作用(退化问题),这样能够通过单纯地增加网络深度,来提高网络性能。残差网络一般会包含很多结构相同的子模块,通常会采用残差网络(residualnetwork,resnet)连接一个数字表示子模块重复的次数,比如resnet50表示残差网络中有50个子模块。(6)分类器很多神经网络结构最后都有一个分类器,用于对图像中的物体进行分类。分类器一般由全连接层(fullyconnectedlayer)和softmax函数(可以称为归一化指数函数)组成,能够根据输入而输出不同类别的概率。(7)损失函数在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(lossfunction)或目标函数(objectivefunction),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。(8)反向传播算法神经网络可以采用误差反向传播(backpropagation,bp)算法在训练过程中修正初始的神经网络模型中参数的数值,使得神经网络模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的神经网络模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的神经网络模型的参数,例如权重矩阵。以上对神经网络的一些基本内容做了简单介绍,下面针对图像数据处理时可能用到的一些特定神经网络进行介绍。下面结合图2对本申请实施例的系统架构进行详细的介绍。图2是本申请实施例的系统架构的示意图。如图2所示,系统架构100包括执行设备110、训练设备120、数据库130、客户设备140、数据存储系统150、以及数据采集系统160。另外,执行设备110包括计算模块111、i/o接口112、预处理模块113和预处理模块114。其中,计算模块111中可以包括目标模型/规则101,预处理模块113和预处理模块114是可选的。数据采集设备160用于采集训练数据,在获取到训练数据之后,可以根据训练数据对目标模型/规则101进行训练,接下来,就可以利用训练得到的目标模型/规则101来执行本申请实施例的手势识别方法的相关过程。其中,上述目标模型/规则101可以包括多个神经网络子模型,每个神经网络子模型用于执行相应的识别过程。具体地,上述目标模型/规则101可以由第一神经网络子模型、第二神经网络子模型和第三神经网络子模型组成,下面对这三个神经网络子模型的功能进行描述。第一神经网络子模型:用于对图像流进行检测,以确定图像流中的每帧图像的手部框;第二神经网络子模型:用于对图像流进行手势识别,以确定用户的手势动作;第三神经网络子模型:用于对一帧图像进行识别,以确定用户的手部姿态类型。上述三个神经网络子模型可以是分别通过单独训练得到的。其中,第一神经网络子模型可以通过第一类训练数据训练得到,该第一类训练数据包括多帧手部图像以及多帧手部图像的标签数据,其中,该多帧手部图像的标签数据包括每帧手部图像中的手部所在的包围框。第二神经网络子模型可以通过第二类训练数据训练得到的,该第二类训练数据包括多个图像流以及多个图像流的标签数据,其中,该多个图像流中的每个图像流均由多帧连续的手部图像组成,该多个图像流的标签数据包括每个图像流对应的手势动作。第三神经网络子模型可以通过第三类训练数据训练得到的,该第三类训练数据包括多帧手部图像以及多帧图像的标签数据,其中,多帧图像的标签数据包括每帧图像对应的手势姿态。根据训练设备120训练得到的目标模型/规则101可以应用于不同的系统或设备中,如应用于图2所示的执行设备110,所述执行设备110可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmentedreality,ar)/虚拟现实(virtualreality,vr),车载终端等,还可以是服务器或者云端等。在图2中,执行设备110配置输入/输出(input/output,i/o)接口112,用于与外部设备进行数据交互,用户可以通过客户设备140向i/o接口112输入数据,所述输入数据在本申请实施例中可以包括:客户设备输入的待处理图像。这里的客户设备140具体可以是终端设备。预处理模块113和预处理模块114用于根据i/o接口112接收到的输入数据(如待处理图像)进行预处理,在本申请实施例中,可以没有预处理模块113和预处理模块114或者只有的一个预处理模块。当不存在预处理模块113和预处理模块114时,可以直接采用计算模块111对输入数据进行处理。在执行设备110对输入数据进行预处理,或者在执行设备110的计算模块111执行计算等相关的处理过程中,执行设备110可以调用数据存储系统150中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统150中。值得注意的是,图2仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储系统150相对执行设备110是外部存储器,在其它情况下,也可以将数据存储系统150置于执行设备110中。如图2所示,根据训练设备120训练得到目标模型/规则101,可以是本申请实施例中的神经网络,具体的,本申请实施例提供的神经网络可以是cnn以及深度卷积神经网络(deepconvolutionalneuralnetworks,dcnn)等等。由于cnn是一种非常常见的神经网络,下面结合图3重点对cnn的结构进行详细的介绍。如上文的基础概念介绍所述,卷积神经网络是一种带有卷积结构的深度神经网络,是一种深度学习(deeplearning)架构,深度学习架构是指通过机器学习的算法,在不同的抽象层级上进行多个层次的学习。作为一种深度学习架构,cnn是一种前馈(feed-forward)人工神经网络,该前馈人工神经网络中的各个神经元可以对输入其中的图像做出响应。如图3所示,卷积神经网络(cnn)200可以包括输入层210,卷积层/池化层220(其中池化层为可选的),以及全连接层(fullyconnectedlayer)230。下面对这些层的相关内容做详细介绍。卷积层/池化层220:如图3所示卷积层/池化层220可以包括如示例221-226层,举例来说:在一种实现中,221层为卷积层,222层为池化层,223层为卷积层,224层为池化层,225为卷积层,226为池化层;在另一种实现方式中,221、222为卷积层,223为池化层,224、225为卷积层,226为池化层。即卷积层的输出可以作为随后的池化层的输入,也可以作为另一个卷积层的输入以继续进行卷积操作。下面将以卷积层221为例,介绍一层卷积层的内部工作原理。卷积层221可以包括很多个卷积算子,卷积算子也称为核,其在图像处理中的作用相当于一个从输入图像矩阵中提取特定信息的过滤器,卷积算子本质上可以是一个权重矩阵,这个权重矩阵通常被预先定义,在对图像进行卷积操作的过程中,权重矩阵通常在输入图像上沿着水平方向一个像素接着一个像素(或两个像素接着两个像素……这取决于步长stride的取值)的进行处理,从而完成从图像中提取特定特征的工作。该权重矩阵的大小应该与图像的大小相关,需要注意的是,权重矩阵的纵深维度(depthdimension)和输入图像的纵深维度是相同的,在进行卷积运算的过程中,权重矩阵会延伸到输入图像的整个深度。因此,和一个单一的权重矩阵进行卷积会产生一个单一纵深维度的卷积化输出,但是大多数情况下不使用单一权重矩阵,而是应用多个尺寸(行×列)相同的权重矩阵,即多个同型矩阵。每个权重矩阵的输出被堆叠起来形成卷积图像的纵深维度,这里的维度可以理解为由上面所述的“多个”来决定。不同的权重矩阵可以用来提取图像中不同的特征,例如一个权重矩阵用来提取图像边缘信息,另一个权重矩阵用来提取图像的特定颜色,又一个权重矩阵用来对图像中不需要的噪点进行模糊化等。该多个权重矩阵尺寸(行×列)相同,经过该多个尺寸相同的权重矩阵提取后的卷积特征图的尺寸也相同,再将提取到的多个尺寸相同的卷积特征图合并形成卷积运算的输出。这些权重矩阵中的权重值在实际应用中需要经过大量的训练得到,通过训练得到的权重值形成的各个权重矩阵可以用来从输入图像中提取信息,从而使得卷积神经网络200进行正确的预测。当卷积神经网络200有多个卷积层的时候,初始的卷积层(例如221)往往提取较多的一般特征,该一般特征也可以称之为低级别的特征;随着卷积神经网络200深度的加深,越往后的卷积层(例如226)提取到的特征越来越复杂,比如高级别的语义之类的特征,语义越高的特征越适用于待解决的问题。池化层:由于常常需要减少训练参数的数量,因此卷积层之后常常需要周期性的引入池化层,在如图3中220所示例的221-226各层,可以是一层卷积层后面跟一层池化层,也可以是多层卷积层后面接一层或多层池化层。在图像处理过程中,池化层的唯一目的就是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以用于对输入图像进行采样得到较小尺寸的图像。平均池化算子可以在特定范围内对图像中的像素值进行计算产生平均值作为平均池化的结果。最大池化算子可以在特定范围内取该范围内值最大的像素作为最大池化的结果。另外,就像卷积层中用权重矩阵的大小应该与图像尺寸相关一样,池化层中的运算符也应该与图像的大小相关。通过池化层处理后输出的图像尺寸可以小于输入池化层的图像的尺寸,池化层输出的图像中每个像素点表示输入池化层的图像的对应子区域的平均值或最大值。全连接层230:在经过卷积层/池化层220的处理后,卷积神经网络200还不足以输出所需要的输出信息。因为如前所述,卷积层/池化层220只会提取特征,并减少输入图像带来的参数。然而为了生成最终的输出信息(所需要的类信息或其他相关信息),卷积神经网络200需要利用全连接层230来生成一个或者一组所需要的类的数量的输出。因此,在全连接层230中可以包括多层隐含层(如图3所示的231、232至23n)以及输出层240,该多层隐含层中所包含的参数可以根据具体的任务类型的相关训练数据进行预先训练得到,例如该任务类型可以包括图像识别,图像分类,图像超分辨率重建等等。在全连接层230中的多层隐含层之后,也就是整个卷积神经网络200的最后层为输出层240,该输出层240具有类似分类交叉熵的损失函数,具体用于计算预测误差,一旦整个卷积神经网络200的前向传播(如图3由210至240方向的传播为前向传播)完成,反向传播(如图3由240至210方向的传播为反向传播)就会开始更新前面提到的各层的权重值以及偏差,以减少卷积神经网络200的损失,及卷积神经网络200通过输出层输出的结果和理想结果之间的误差。需要说明的是,如图3所示的卷积神经网络200仅作为一种卷积神经网络的示例,在具体的应用中,卷积神经网络还可以以其他网络模型的形式存在。应理解,可以采用图3所示的卷积神经网络(cnn)200执行本申请实施例的手势识别方法,如图3所示,手部图像流经过输入层210、卷积层/池化层220和全连接层230的处理之后可以得到手势识别结果。图4为本申请实施例提供的一种芯片硬件结构,该芯片包括神经网络处理器50。该芯片可以被设置在如图2所示的执行设备110中,用以完成计算模块111的计算工作。该芯片也可以被设置在如图2所示的训练设备120中,用以完成训练设备120的训练工作并输出目标模型/规则101。如图3所示的卷积神经网络中各层的算法均可在如图4所示的芯片中得以实现。神经网络处理器(neural-networkprocessingunit,npu)50作为协处理器挂载到主中央处理器(centralprocessingunit,cpu)(hostcpu)上,由主cpu分配任务。npu的核心部分为运算电路503,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。在一些实现中,运算电路503内部包括多个处理单元(processengine,pe)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。举例来说,假设有输入矩阵a,权重矩阵b,输出矩阵c。运算电路503从权重存储器502中取矩阵b相应的数据,并缓存在运算电路503中每一个pe上。运算电路503从输入存储器501中取矩阵a数据与矩阵b进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)508中。向量计算单元507可以对运算电路503的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元507可以用于神经网络中非卷积/非fc层的网络计算,如池化(pooling),批归一化(batchnormalization),局部响应归一化(localresponsenormalization)等。在一些实现中,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于在神经网络中的后续层中的使用。统一存储器506用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器505(directmemoryaccesscontroller,dmac)将外部存储器中的输入数据搬运到输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。总线接口单元(businterfaceunit,biu)510,用于通过总线实现主cpu、dmac和取指存储器509之间进行交互。与控制器504连接的取指存储器(instructionfetchbuffer)509,用于存储控制器504使用的指令;控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。一般地,统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为片上(on-chip)存储器,外部存储器为该npu外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(doubledataratesynchronousdynamicrandomaccessmemory,简称ddrsdram)、高带宽存储器(highbandwidthmemory,hbm)或其他可读可写的存储器。另外,在本申请中,图3所示的卷积神经网络中各层的运算可以由运算电路503或向量计算单元507执行。如图5所示,本申请实施例提供了一种系统架构300。该系统架构包括本地设备301、本地设备302以及执行设备210和数据存储系统250,其中,本地设备301和本地设备302通过通信网络与执行设备210连接。执行设备210可以由一个或多个服务器实现。可选的,执行设备210可以与其它计算设备配合使用,例如:数据存储器、路由器、负载均衡器等设备。执行设备210可以布置在一个物理站点上,或者分布在多个物理站点上。执行设备210可以使用数据存储系统250中的数据,或者调用数据存储系统250中的程序代码来实现本申请实施例的手势识别方法。用户可以操作各自的用户设备(例如本地设备301和本地设备302)与执行设备210进行交互。每个本地设备可以表示任何计算设备,例如个人计算机、计算机工作站、智能手机、平板电脑、智能摄像头、智能汽车或其他类型蜂窝电话、媒体消费设备、可穿戴设备、机顶盒、游戏机等。每个用户的本地设备可以通过任何通信机制/通信标准的通信网络与执行设备210进行交互,通信网络可以是广域网、局域网、点对点连接等方式,或它们的任意组合。在一种实现方式中,本地设备301、本地设备302从执行设备210获取到目标神经网络的相关参数,将目标神经网络部署在本地设备301、本地设备302上,利用该目标神经网络进行手势识别。在另一种实现中,执行设备210上可以直接部署目标神经网络,执行设备210通过从本地设备301和本地设备302获取待处理图像(本地设备301和本地设备302可以将图待处理图像上传给执行设备210),并根据目标神经网络对待处理图像进行手势识别,并将手势识别得到的高质量图像发送给本地设备301和本地设备302。上述执行设备210也可以称为云端设备,此时执行设备210一般部署在云端。下面结合附图对本申请实施例的手势识别方法进行详细的描述。图6是本申请实施例的手势识别方法的流程图。图6所示的手势识别方法的执行主体可以是电子设备。该电子设备可以是能够获取手势图像信息的设备,该电子设备具体可以是包括智能手机、pda以及平板电脑等等。图6所示的手势识别方法包括步骤1001至1006,下面分别对这些步骤进行详细的描述。1001、获取第一图像流。上述第一图像流包括用户的连续多帧手部图像,上述第一图像流也可以成为第一视频流。在上述步骤1001中,可以通过电子设备的传感器来获取第一图像流。电子设备的传感器具体可以是摄像头(例如,彩色摄像头、灰度摄像头和深度摄像头等)。当用户的手部位于电子设备的传感器前方时,可以通过电子设备的传感器来获取包含用户手部图像的第一图像流。例如,如图7所示,当用户的手部位于电子设备的屏幕前方时,可以通过电子设备屏幕前方的摄像头来获取包含用户手部图像的第一图像流。可选地,在上述步骤1001之前,图6所示的方法还包括:提示所述用户在做出手势动作之前做出预备动作。通过提示用户在做出手势动作之前做出预备动作,能够防止用户在进行手势识别时遗忘预备动作,能够在一定程度上提高用户的交互体验。上述提示方式有多种,例如,可以在电子设备的显示屏上提示用户在做出手势动作之前做出预备动作,另外,也可以通过电子设备发出的语音信息来提示用户在做出手势动作之前做出预备动作。可选地,图6所示的方法还包括:呈现预备动作提示信息,该预备动作提示信息用于提示用户在做出手势动作之前做出预备动作。上述预备动作提示信息既可以是文字形式的提示信息,也可以是语音形式的提示信息,也可以是画面信息,或者也可以是三者中的至少两种的形式相结合的信息。例如,预备动作提示信息可以包括相应的文字提示和语音提示。当上述预备动作提示信息包括图文信息时可以通过屏幕呈现,当该预备动作包括语音信息时可以通过扬声器来呈现,而当上述预备动作提示信息既包括图文信息又包括语音信息时可以通过屏幕和扬声器来共同呈现。本申请中,通过预备动作提示信息能够更好地对用户进行提示,使得用户在做出手势动作之前先做出预备动作,可以在一定程度上提高手势识别的效果,提升用户体验。可选地,在上述步骤1001之前,图6所示的方法还包括:获取用户的预备动作选择信息;根据预备动作选择信息确定所述预备动作。上述预备动作选择信息用于指示步骤1001中的预备动作。在本申请中,通过用户的预备动作选择信息来确定预备动作,与采用统一的预备动作的方式相比,能够根据用户的操作习惯为用户选择合适的预备动作,可以提高用户体验。1002、根据第一图像流确定用户是否做出了预备动作。其中,上述预备动作可以是用户在做出手势动作之前的准备动作。进一步的,上述预备动作可以是用户在做出手势动作之前的习惯准备动作或者自然准备动作。具体地,上述预备动作可以是用户在做出手势动作(这些特定的手势动作可以是能够与电子设备进行手势交互的一些特定动作,例如,抓屏,上挥,下挥等)之前的习惯准备动作或自然准备动作,而非刻意做出的动作。上述预备动作具体可以是任意手势姿态下的悬停或者停顿。例如,上述预备动作可以是手部处于伸开姿态下的悬停或者停顿,也可以是手部攥成拳头姿态下的悬停或者停顿,也可以是手部半攥紧姿态下的悬停或者停顿。上述预备动作还可以是手部的四指(除了食指之外的四指)蜷缩而食指伸出,并且食指在小范围点击或者晃动的状态。当预备动作是任意手势姿态下的悬停或者停顿时,可以采用图8所示的过程来确定用户是否做出了预备动作。如图8所示,在获取到了多帧连续手部图像之后,可以对该多帧连续手部图像进行手部区域检测,然后再对每一帧手部图像进行手部框的提取,接下来,再根据多帧连续手部图像的手部框进行预备动作识别,并输出预备动作识别结果。其中,每帧图像中的手部框可以是每帧图像中包围所述用户的手部的包围框,可以通过神经网络模型来获取每帧图像的手部框。图8仅示出了确定用户是否做出预备动作的大致过程,下面结合图9对确定用户是否做出预备动作进行详细说明。如图9所示,上述步骤1002具体包括步骤1002a至1002e,下面对这些步骤进行详细的描述。1002a、对第一图像流进行检测,得到第一图像流的多帧图像中的每帧图像的手部框。例如,第一图像流包含5帧图像,在步骤1002a中要对这5帧图像分别进行检测,得到每帧图像的手部框。1002b、确定多帧图像的手部框之间的重合度。1002c、确定多帧图像的手部框之间的重合度是否大于预设阈值。在上述步骤1002c中,当确定多帧图像的手部框之间的重合度大于预设阈值时,执行步骤1002d,确定用户做出了预备动作;当确定多帧图像的手部框之间的重合度小于或者等于预设阈值时,执行步骤1002e,确定用户没有做出预备动作。上述步骤1002d中确定多帧图像的手部框之间的重合度是否大于预设阈值具体可以是以下两种方式中的任意一种:(1)确定第一帧图像的手部框与最后一帧图像的手部框之间的重合度是否大于预设阈值;(2)确定第i帧图像的手部框和第j帧图像的手部框之间的重合度是否大于预设阈值。其中,在上述方式(2)中,上述第i帧图像和第j帧图像的是上述多帧图像中图像框之间的重合度最小的两帧图像。仍以第一图像流包含5帧图像为例,对于上述方式(1),需要确定第1帧图像的手部框与第5帧图像的手部框之间的重合度是否大于预设阈值;对于上述方式(2),假设在5帧图像中,第1帧图像的手部框和第4帧图像的手部框之间的重合度最小,那么,要确定第1帧图像的手部框和第4帧图像的手部框之间的重合度是否大于预设阈值。1002d、确定用户做出了预备动作。1002e、确定用户没有做出预备动作。在图9所示的过程中,当多帧图像的手部框之间的重合度大于预设阈值时确定用户做出了预备动作,而在多帧图像的手部框之间的重合度小于或者等于预设阈值时确定用户没有做出预备动作。可选地,在本申请中,也可以是在多帧图像的手部框之间的重合度大于或者等于预设阈值时确定用户做出了预备动作,而在多帧图像的手部框之间的重合度小于预设阈值时确定用户没有做出预备动作。当通过图9所示的过程确定用户做出了预备动作的情况下继续执行步骤1003至1005,进行手势动作的识别;而当通过图9所示的过程确定用户没有做出预备动作的情况下直接执行步骤1006,从而停止手势识别。下面结合图10对预备动作的识别结果进行说明。如图10所示,在前4帧图像中,手部框的位置变化较大(手部框之间的重合度大于预设阈值),确定用户没有做出预备动作(也就是未识别出预备动作)。而在后4帧图像中,手部框的位置变化较小(手部框之间的重合度小于或者等于预设阈值),确定用户做出了预备动作(也就是识别出了预备动作)。1003、获取第二图像流。上述第二图像流包括用户的连续多帧手部图像。应理解,上述获取第二图像流的时间要晚于第一图像流的获取时间,上述第二图像流中包括的多帧手部图像与第一图像流中包括的多帧手部图像不同,第二图像流中包括的多帧手部图像对应的时间要晚于第一图像流中的多帧手部图像对应的时间。1004、根据第二图像流进行手势识别,以确定所述用户的手势动作。本申请实施例中的手势动作可以是隔空手势动作,也就是说用户在做出的手势动作时用户的手部与电子设备并不存在物理接触。1005、响应于所述用户的手势动作,以实现与所述用户的手势交互。在确定了用户的手势动作之间,根据不同手势动作对应的操作可以实现与用户的手势交互。例如,当电子设备获取到用户的手势动作为抓屏时可以对当前显示的图片进行缩放,当电子设备获取到用户的手势动作为上下翻页时可以对当前显示的网页进行翻页。本申请中,由于在正式进行手势识别之间进行了预备动作的判断,并且只有在用户做出了预备动作的情况下才进行手势识别,能够准确识别手势动作的起始状态,尽可能的避免手势识别的误响应,提高手势识别的准确率,增强用户的手势交互体验。在上述步骤1004中,在根据第二图像流进行手势识别是可以按照现有的手势识别方案来确定用户的手势动作。具体地,可以采用神经网络模型对第二图像流进行手势识别处理,进而得到用户的手势动作。此外,由于不同的手势动作之间可能由于比较相似,或者,用户在一个手势动作中会习惯性的做出其他一些手势动作,在这种情况下很可能会导致手势动作的误识别。例如,用户在做抓屏动作时会习惯性的先做出手掌前推动作,而当手掌前推动作是预先定义好的手势动作时就可能只将手掌前推动作识别为用户的手势动作,从而导致手势动作的误识别。为了尽可能的避免手势动作的误识别,在上述步骤1004确定用户的手势动作时可以采用图11所示的过程进行手势动作进行识别,下面结合图11对步骤1004中的手势识别过程进行详细的描述。图11是根据第二图像流进行手势识别的示意性流程图。图11所示的过程包括步骤1004a至1004c,下面对步骤1004a至1004c进行详细说明。1004a、对第二图像流进行手势识别,确定出先后发生的第一候选手势动作和第二候选手势动作。上述步骤1004a中,第一候选手势动作发生在第二候选手势动作之前,另外,第一手势动作和第二手势动作之间的时间间隔小于预设时间间隔(例如,该预设时间间隔可以是是0.3秒或者0-1秒内的其他数值)。1004b、当第一候选手势动作是用户做出第二候选手势动作之前做出的手势动作时,将第二候选手势动作确定为用户的手势动作。具体地,在步骤1004b中,可以在第一候选手势动作是用户做出第二候选手势动作之前习惯性做出的手势动作时,将第二候选手势动作确定为用户的手势动作。当第一候选手势动作是用户做出第二候选手势动作之前习惯性做出的手势动作,并且根据第二图像流进行手势识别,确定出了先后发生的第一候选手势动作和第二候选手势动作时,用户很可能是要做出第二候选手势动作,但是由于用户的习惯,导致用户在做出第二手势动作之前会习惯性的做出第一候选手势,因此,在这种情况下可以将第二候选手势动作确定为用户的手势动作。能够在一定程度上避免手势动作的误识别。1004c、当第一候选手势动作不是用户做出第二候选手势动作之前习惯性做出的手势动作时,将第一候选手势动作和第二候选手势动作确定为用户的手势动作。具体地,在步骤1004c中,可以在第一候选手势动作不是用户做出第二候选手势动作之前习惯性做出的手势动作时,将第一候选手势动作和第二候选手势动作确定为用户的手势动作。当第一候选手势不是用户做出第二候选手势动作之前习惯性做出的手势动作时,第一候选手势动作和第二候选手势动作很可能是两个单独的(独立的)手势动作,在这种情况下可以将第一候选手势动作和第二候选手势动作均确定为用户的手势动作。一般来说,用户的手势动作比较复杂,用户在做出一个手势动作时可能会由于个人的习惯原因而习惯性的做出其他的手势动作,这就有可能导致手势动作的误识别,而在本申请中,在识别得到两个连续发生的候选手势动作之后,能够根据两个候选手势动作之间的关联关系(前一个候选手势动作是否为用户做出后一个候选手势动作之前习惯性做出的动作)来综合确定哪个候选手势动作是用户真正做出的手势动作。本申请中,在根据图像流识别得到连续发生的两个候选手势动作时,可以前一个候选手势动作是否为用户做出后一个候选手势动作之前习惯性做出的手势动作来综合确定用户真正做出的手势动作,能够在一定程度上避免手势动作的误识别,提高手势动作识别的准确率。具体地,在根据图像流识别得到连续发生的两个候选手势动作时,可以第一候选手势动作是否为用户做出后一个候选手势动作的习惯性做出的手势动作,从第一候选手势动作和第二候选手势动作中确定出用户的手势动作,能够提高手势动作识别的准确率。可选地,上述第二候选手势动作是抓屏动作,上述第一候选手势动作是前推、后推、向上挥和向下挥中的任意一种。一般来说,用户在做出抓屏动作之前会习惯性的做出前推、后推、向上挥和向下挥中的任意一种动作。因此,在根据第二图像流进行手势识别到两个连续的手势动作,并且当前一个手势动作为前推、后推、向上挥和向下挥中的任意一种,后一个手势动作为抓屏动作时,可以将抓屏动作确定为用户的手势动作。能够避免前推、后推、向上挥和向下挥这些动作对用户的抓屏动作造成的影响,避免手势动作的误识别。可选地,上述第二候选手势动作是左右晃动或者上下晃动,上述第一候选手势动作是前推、后推、向上挥和向下挥中的任意一种。例如,用户在做出左右晃动之前,一般会习惯性的向前推(也有可能是后推、向上挥和向下挥)。因此,在根据第二图像流进行手势识别到两个连续的手势动作,并且第一个手势动作为前推,第二个手势动作为左右晃动时,可以将左右晃动确定为用户的手势动作。这样能够避免前推动作对用户的左右晃动动作的干扰,避免手势动作的误识别。下面结合图12对根据图像流识别得到连续的两个候选手势动作确定用户的真正的手势动作的结果的过程进行说明。如图12所示,根据前5帧图像识别出用户做出了手掌前推的手势动作,而根据后续的3帧图像识别出用户做出了抓屏的动作,也就是根据图像流识别出了用户连续做出的手掌前推和抓屏的手势动作。而用户在做出抓屏动作之前会习惯性的做出手掌前推,因此,可以确定用户真正的手势动作为抓屏,也就是说实际的动作识别结果为抓屏。在上述步骤1004中根据第二图像流进行手势识别时,还可以根据第二图像流获取是动态手势信息和静态手势信息,然后根据动态手势信息和静态手势信息来综合确定用户的手势动作。其中,上述动态手势信息可以是对第二图像流进行手势识别而得到的候选手势动作,上述静态手势信息可以对第二图像流中的前几帧图像中的一帧图像进行手势姿态识别得到的用户的手部姿态类型。具体地,可以采用图13所示的过程来进行手势识别。如图13所示,在获取到了第二图像流中的多帧连续手部图像之后,可以从该多帧连续手部图像中提取出第一帧手部图像,然后对第一帧手部图像进行手部区域检测和手部区域识别,以确定手部姿态识别结果。同时还可以直接对多帧连续手部图像进行动态手势识别,得到动态手势识别结果,然后再根据手部姿态识别结果和动态手势识别结果来综合确定用户的手势动作。图14是根据第二图像流进行手势识别的流程图。图14所示的过程包括步骤1004w至1004z,下面对这些步骤进行详细的介绍。1004w、根据第二图像流中的连续多帧手部图像中的前n帧图像中的任意一帧手部图像确定用户的手部姿态类型。其中,n为正整数。一般来说,n的取值可以是1,3,5等等。在上述步骤1004w中,也可以直接根据第二图像流中的连续多帧手部图像的第一帧手部图像来确定用户的手部姿态类型。1004x、根据第二图像流中的连读多帧手部图像流确定用户的第三候选手势动作。1004y、确定用户的手部姿态类型与第三候选手势动作是否匹配。具体地,在步骤1004y中可以根据预设的匹配规则来确定用户的手部姿态类型与第三候选手势动作是否匹配。上述匹配规则可以是指用户的手部姿态类型要与用户的手势动作相匹配,该匹配规则可以是预先设置好的。在步骤1004y中,当用户的手部姿态类型为水平放置,第三候选手势动作是上下翻页时,可以确定用户的手部姿态类型与第三候选手势动作匹配;而当用户的手部姿态类型为垂直放置,第三候选手势动作是左右翻页时,可以确定用户的手部姿态类型与用户的第三候选手势动作匹配。1004z、在用户的手部姿态类型与第三候选手势动作匹配的情况下,将第三候选手势动作确定为用户的手势动作。应理解,当用户的手部姿态类型与第三候选手势动作不匹配时,可以继续获取图像流继续进行手势识别。本申请中,通过确定用户的手部姿态与用户的手势动作是否匹配,能够将与用户的手部姿态匹配的手势动作确定为用户的手势动作,能够在一定程度上避免手势误识别,提高手势识别的准确率。为了说明本申请方案进行手势识别的效果,下面采用了一个数据集对本申请实施例的手势识别方法的手势识别效果进行测试,该数据集包含了约292段短视频,每一个短视频包含一个动态手势。手势类型包括上挥、下挥、手掌前推、抓屏四个动作。在利用该数据集对本申请实施例的手势识别方法进行测试时,事先对用户做了说明,用户在做手势动作之前可以短暂停一下,但是没有进行强制要求用户做手势之前必须短暂停顿一下,也没有在测试之后将用户在做手势动作之前没做短暂停顿的情况筛选掉,这样在采集数据集的时候,保持了人们做手势动作的自然性。在测试过程中,我们采用了相同的手部区域检测模型(主要用于识别用户的手部区域达到手部图像)和动态手势识别模型(主要是根据获得的图像流确定出用户的手势动作)对测试视频进行识别。为了评估本申请实施例的手势识别方法的手势识别效果,在第一个测试流程中没有采用本申请实施例中提出的预备动作判断模块(主要用于判断用户是否做出了预备动作)、手势信息融合模块(可以用于执行图14所示的手势识别过程)以及手势误识别判断模块(可以用于执行图11所示的手势识别过程),第一个测试流程的测试结果如表1所示。表1测试集召回率准确率00.7270.87510.50.89820.7270.29930.5540.878而在第二个测试流程中采用了预备动作判断模块、手势信息融合模块和以及手势误识别判断模块这些模块进行测试,第二个测试流程的测试效果如表2所示。表2测试集召回率准确率00.8830.87210.7920.96620.8640.84430.7850.927由表1和表2可知,表2中的召回率和准确率要普遍高于表1中的召回率和准确率。为了更直观的比较第一个测试流程和第二个测试流程的召回率和准确率的差异,这里对表1和表2的测试结果进行了平均处理,得到的结果如表3所示。表3测试流程召回率准确率第一个测试流程0.6270.738第二个测试流程0.8310.902由表3可知,第二个测试流程的召回率和准确率要远高于第一个测试流程的召回率和准确率,也就是说,采用本申请实施例的手势识别方法进行手势识别具有很好的手势识别效果。上文结合附图对本申请实施例的手势识别方法进行了详细的描述,下面对本申请实施例的电子设备进行描述,应理解,本申请实施例的电子设备能够执行本申请的手势识别方法的各个步骤,下面在介绍本申请实施例的电子设备时适当省略重复的描述。图15是本申请实施例的电子设备的示意性框图。图15所示的电子设备5000包括:获取单元5001,处理单元5002和响应单元5003。其中,获取单元5001可以用于执行图6所示的方法中的步骤1001和步骤1003,处理单元5002可以用于执行图6所示的方法中的步骤1002,步骤1004和步骤1006,响应单元5003可以用于执行图6所示的方法中的步骤1005。本申请中,由于电子设备在正式进行手势识别之间进行了预备动作的判断,并且只有在用户做出了预备动作的情况下电子设备才进行手势识别,因此,电子设备能够准确识别手势动作的起始状态,尽可能的避免手势识别的误响应,提高手势识别的准确率,增强用户的手势交互体验。本申请中,在利用电子设备进行手势识别时,电子设备还可以提示用户在做出手势动作之前做出预备动作。因此,电子设备中还可以包含提示单元。如图16所示,电子设备5000还可以包含提示单元5004,该提示单元5004用于提示用户在做出手势动作之前做出预备动作。本申请中,通过提示单元5004提示用户在做出手势动作之前做出预备动作,能够防止用户在进行手势识别时忘记预先做出预备动作,可以在一定程度上提高手势识别的效果,能够提高用户的交互体验。图17是本申请实施例的电子设备的结构示意图。图17所示的电子设备6000包括存储器6001、处理器6002、通信接口6003以及总线6004。其中,存储器6001、处理器6002、通信接口6003通过总线6004实现彼此之间的通信连接。应理解,上述电子设备5000中的获取单元可以相当于电子设备6000中的摄像头(图17中未示出摄像头),处理单元5002和响应单元5003相当于电子设备6000中的处理器6002。下面对电子设备6000中的各个模块和单元进行详细的介绍。存储器6001可以是只读存储器(readonlymemory,rom),静态存储设备,动态存储设备或者随机存取存储器(randomaccessmemory,ram)。存储器6001可以存储程序,当存储器6001中存储的程序被处理器6002执行时,处理器6002用于执行本申请实施例的手势识别方法的各个步骤。具体地,处理器6002可用于执行图6所示的方法中的步骤1001至步骤1005。另外,处理器6002还可以执行图9、图11和图14所示的过程。当处理器6002执行步骤1001至步骤1005时,处理器6002可以通过通信接口6003从电子设备6000的摄像头(图17中未示出摄像头)获取第一图像流,基于该第一图像流进行预备动作的判断,并在用户做出了预备动作的情况下,再通过电子设备6000的摄像头获取第二图像流,并根据第二图像流进行手势识别。处理器6002可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),图形处理器(graphicsprocessingunit,gpu)或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的手势识别方法。处理器6002还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的手势识别方法的各个步骤可以通过处理器6002中的硬件的集成逻辑电路或者软件形式的指令完成。上述处理器6002还可以是通用处理器、数字信号处理器(digitalsignalprocessing,dsp)、专用集成电路(asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器6001,处理器6002读取存储器6001中的信息,结合其硬件完成电子设备中包括的单元所需执行的功能,或者执行本申请方法实施例的手势识别方法。通信接口6003使用例如但不限于收发器一类的收发装置,来实现装置6000与其他设备或通信网络之间的通信。例如,可以通过通信接口6003获取待处理图像。总线6004可包括在装置6000各个部件(例如,存储器6001、处理器6002、通信接口6003)之间传送信息的通路。图18是本申请实施例的电子设备的硬件结构示意图。图18所示的电子设备7000可以执行本申请实施例的手势识别方法。具体而言,图18所示的电子设备可以执行图6所示的手势识别方法的各个步骤。具体地,电子设备7000可以通过摄像头7060获取第一图像流(摄像头7060可以执行上述步骤1001),接下来可以再通过处理器对第一图像流进行处理,进而确定用户是否做出了预备动作(该过程对应于步骤1002),如果用户没有做出预备动作则停止手势识别(该过程对应于步骤1006),如果用户做出了预备动作则可以再通过摄像头7060获取第二图像流(该过程对应于步骤1003),然后再利用第二图像流进行手势识别(该过程对应于步骤1004),并在确定用户的手势动作之后响应于用户的手势动作,从而实现与用户的手势交互(该过程对应于步骤1005)。此外,电子设备7000中的处理器还可以执行图9所示的过程中的步骤1002a至1002e,从而确定出用户是否做出了预备动作。电子设备7000中的处理器还可以执行图11所示的过程1004a至1004c,从而实现根据第二图像流进行手势识别。电子设备7000中的处理器还可以执行图14所示的过程1004w至1004z,从而实现根据第二图像流进行手势识别。下面对图18所示的电子设备7000的具体结构进行详细的介绍。图18所示的电子设备包括通信模块7010、传感器7020、用户输入模块7030、输出模块7040、处理器7050、摄像头7060、存储器7070以及电源7080。下面分别对这些模块进行详细的介绍。通信模块7010可以包括至少一个能使该电子设备7000与其他设备(例如,云端设备)之间进行通信的模块。例如,通信模块7010可以包括有线网络接口、广播接收模块、移动通信模块、无线因特网模块、局域通信模块和位置(或定位)信息模块等其中的一个或多个。传感器7020可以感知用户的一些操作,传感器7020可以包括距离传感器,触摸传感器等等。传感器7020可以感知用户触摸屏幕或者靠近屏幕等操作。用户输入模块7030,用于接收输入的数字信息、字符信息或接触式触摸操作/非接触式手势,以及接收与系统的用户设置以及功能控制有关的信号输入等。用户输入模块7030包括触控面板和/或其他输入设备。输出模块7040包括显示面板,用于显示由用户输入的信息、提供给用户的信息或系统的各种菜单界面等。可选的,可以采用液晶显示器(liquidcrystaldisplay,lcd)或有机发光二极管(organiclight-emittingdiode,oled)等形式来配置显示面板。在其他一些实施例中,触控面板可覆盖显示面板上,形成触摸显示屏。另外,输出模块7040还可以包括音频输出模块、告警器以及触觉模块等。在本申请中,输出模块7040可以用于提示用户在做出手势动作之前做出预备动作。具体地,该输出模块7040可以通过呈现预备动作提示信息的方式来提示用户在做出手势动作之前做出预备动作。当上述预备动作提示信息包括图文信息时可以通过输出模块7040中的显示面板来呈现预备动作提示信息,当该预备动作包括语音信息时可以通过输出模块7040中的音频输出模块来呈现预备动作提示信息,而当上述预备动作提示信息既包括图文信息又包括语音信息时可以通过输出模块7040中的显示面板和音频输出模块来共同呈现预备动作提示信息。摄像头7060,用于拍摄图像,摄像头7060拍摄的图像流可以送入到处理器中进行预备动作的判断,在预备动作发生的情况下,摄像头7060可以将继续获取图像流送入到处理器中进行手势识别。电源7080可以在处理器7050的控制下接收外部电力和内部电力,并且提供整个电子设备各个模块运行时需要的电力。处理器7050可以包括一个或多个处理器。例如,处理器7050可以包括一个或多个中央处理器,或者包括一个中央处理器和一个图形处理器,或者包括一个应用处理器和一个协处理器(例如微控制单元或神经网络处理器)。当处理器7050包括多个处理器时,这多个处理器可以集成在同一块芯片上,也可以各自为独立的芯片。一个处理器可以包括一个或多个物理核,其中物理核为最小的处理模块。存储器7070可以用于存储计算机程序,该计算机程序包括操作系统程序7071和应用程序7072等。典型的操作系统如微软公司的windows,苹果公司的macos等用于台式机或笔记本的系统,又如谷歌公司开发的基于的安卓系统等用于移动终端的系统。当本申请实施例的手势识别方法通过软件的方式实现时,可以认为是通过应用程序7071来具体实现的。存储器7070可以是以下类型中的一种或多种:闪速(flash)存储器、硬盘类型存储器、微型多媒体卡型存储器、卡式存储器、随机存取存储器(randomaccessmemory,ram)、静态随机存取存储器(staticram,sram)、只读存储器(readonlymemory,rom)、电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、可编程只读存储器(programmablerom,prom)、磁存储器、磁盘或光盘。在其他一些实施例中,存储器7070也可以是因特网上的网络存储设备,系统可以对在因特网上的存储器7070执行更新或读取等操作。处理器7050用于读取存储器7070中的计算机程序,然后执行计算机程序定义的方法,例如处理器7050读取操作系统程序7072从而在该系统运行操作系统以及实现操作系统的各种功能,或读取一种或多种应用程序7071,从而在该系统上运行应用。例如,上述存储器7070可以存储一种计算机程序(该计算机程序是本申请实施例的手势识别方法对应的程序),当处理器7050执行该极端及程序时,处理器7050能够执行本申请实施例的手势识别方法。存储器7070还存储有除计算机程序之外的其他数据7073。应理解,上述电子设备5000中的获取单元可以相当于电子设备7000中的摄像头7060,处理单元5002和响应单元5003相当于电子设备7000中的处理器7050。此外,图18中各个模块的连接关系仅为一种示例,图18中的各个模块还可以是其他的连接关系,例如,电子设备中所有模块通过总线连接。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本
技术领域:
的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。当前第1页1 2 3 
技术特征:1.一种手势识别方法,其特征在于,包括:
获取第一图像流,所述第一图像流包括用户的连续多帧手部图像;
根据所述第一图像流确定所述用户是否做出了预备动作,其中,所述预备动作是所述用户在做出手势动作之前的准备动作;
在所述用户做出了所述预备动作的情况下,获取第二图像流,所述第二图像流包括所述用户的连续多帧手部图像;
根据所述第二图像流进行手势识别,以确定所述用户的手势动作;
响应于所述用户的手势动作,以实现与所述用户的手势交互。
2.如权利要求1所述的方法,其特征在于,所述根据所述第二图像流进行手势识别,以确定所述用户的手势动作,包括:
对所述第二图像流进行手势识别,确定出先后发生的第一候选手势动作和第二候选手势动作,其中,所述第一候选手势动作是所述用户在做出所述第二候选手势动作之前做出的手势动作;
将所述第二候选手势动作确定为所述用户的手势动作。
3.如权利要求2所述的方法,其特征在于,所述第二候选手势动作是抓屏动作,所述第一候选手势动作是前推、后推、向上挥和向下挥中的任意一种。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述根据所述第二图像流进行手势识别,以确定所述用户的手势动作,包括:
根据所述第二图像流中的连续多帧手部图像中的前n帧图像中的任意一帧手部图像确定所述用户的手部姿态类型,n为正整数;
根据所述第二图像流中的连读多帧手部图像流确定所述用户的第三候选手势动作;
根据预设的匹配规则确定所述用户的手部姿态类型与所述第三候选手势动作是否匹配;
在所述用户的手部姿态类型与所述第三候选手势动作匹配的情况下,将所述第三候选手势动作确定为所述用户的手势动作。
5.如权利要求4所述的方法,其特征在于,所述根据预设的规则确定所述用户的手部姿态类型与所述用户的候选手势动作是否匹配,包括:
在所述用户的手部姿态类型为水平放置,所述第三候选手势动作是上下翻页的情况下,确定所述用户的手部姿态类型与所述第三候选手势动作匹配;
在所述用户的手部姿态类型为垂直放置,所述第三候选手势动作是左右翻页的情况下,确定所述用户的手部姿态类型与所述用户的第三候选手势动作匹配。
6.如权利要求1-5中任一项所述的方法,其特征在于,所述预备动作是任意手势姿态下的悬停。
7.如权利要求6所述的方法,其特征在于,所述根据所述第一图像流确定所述用户是否做出了预备动作,包括:
对所述第一图像流进行检测,得到所述第一图像流的多帧图像中的每帧图像的手部框,所述每帧图像的手部框为所述每帧图像中包围所述用户的手部的包围框;
在所述多帧图像的手部框的之间的重合度高于预设阈值的情况下,确定所述用户做出了所述预备动作。
8.如权利要求1-7中任一项所述的方法,其特征在于,所述方法还包括:
提示所述用户在做出手势动作之前做出预备动作。
9.一种电子设备,其特征在于,包括:
获取模块,用于获取第一图像流,所述第一图像流包括用户的连续多帧手部图像;
处理模块,用于根据所述第一图像流确定所述用户是否做出了预备动作,其中,所述预备动作是所述用户在做出手势动作之前的准备动作;
所述获取模块还用于在所述用户做出了所述预备动作的情况下,获取第二图像流,所述第二图像流包括所述用户的连续多帧手部图像;
所述处理模块还用于根据所述第二图像流进行手势识别,以确定所述用户的手势动作;
响应模块,用于响应于所述用户的手势动作,以实现与所述用户的手势交互。
10.如权利要求9所述的电子设备,其特征在于,所述处理模块用于:
对所述第二图像流进行手势识别,确定出先后发生的第一候选手势动作和第二候选手势动作,其中,所述第一候选手势动作是所述用户在做出所述第二候选手势动作之前做出的手势动作;
将所述第二候选手势动作确定为所述用户的手势动作。
11.如权利要求10所述的电子设备,其特征在于,所述第二候选手势动作是抓屏动作,所述第一候选手势动作是前推、后推、向上挥和向下挥中的任意一种。
12.如权利要求9-11中任一项所述的电子设备,其特征在于,所述处理模块用于:
根据所述第二图像流中的连续多帧手部图像中的前n帧图像中的任意一帧手部图像确定所述用户的手部姿态类型,n为正整数;
根据所述第二图像流中的连读多帧手部图像流确定所述用户的第三候选手势动作;
根据预设的匹配规则确定所述用户的手部姿态类型与所述第三候选手势动作是否匹配;
在所述用户的手部姿态类型与所述第三候选手势动作匹配的情况下,将所述第三候选手势动作确定为所述用户的手势动作。
13.如权利要求12所述的电子设备,其特征在于,所述处理模块用于:
在所述用户的手部姿态类型为水平放置,所述第三候选手势动作是上下翻页的情况下,确定所述用户的手部姿态类型与所述第三候选手势动作匹配;
在所述用户的手部姿态类型为垂直放置,所述第三候选手势动作是左右翻页的情况下,确定所述用户的手部姿态类型与所述用户的第三候选手势动作匹配。
14.如权利要求9-13中任一项所述的电子设备,其特征在于,所述预备动作是任意手势姿态下的悬停。
15.如权利要求14所述的电子设备,其特征在于,所述处理模块用于:
对所述第一图像流进行检测,得到所述第一图像流的多帧图像中的每帧图像的手部框,所述每帧图像的手部框为所述每帧图像中包围所述用户的手部的包围框;
在所述多帧图像的手部框的之间的重合度高于预设阈值的情况下,确定所述用户做出了所述预备动作。
16.如权利要求9-15中任一项所述的电子设备,其特征在于,所述电子设备还包括:
提示模块,用于提示所述用户在做出手势动作之前做出预备动作。
17.一种计算机可读存储介质,其特征在于,所述计算机可读介质存储用于设备执行的程序代码,该程序代码包括用于执行如权利要求1-8中任一项所述的方法。
18.一种芯片,其特征在于,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以执行如权利要求1-8中任一项所述的方法。
技术总结本申请提供了手势识别方法、电子设备、计算机可读存储介质和芯片,涉及人工智能领域,具体涉及计算机视觉领域中的一种人机交互技术。该手势识别方法包括:获取图像流,并根据图像流中的连续多帧手部图像确定用户是否做出了预备动作;在用户做出了预备动作的情况下,继续获取图像流,并根据该继续获取到的图像流中的连续多帧手部图像来确定用户的手势动作,接下来,再响应于该手势动作,以实现与用户的手势交互。本申请由于在进行手势识别之前进行了预备动作的判断,因此,能够降低手势识别过程中出现的误识别,提高手势识别的效果。
技术研发人员:吴小飞;黄飞;许松岑;颜友亮
受保护的技术使用者:华为技术有限公司
技术研发日:2019.09.11
技术公布日:2021.03.12