动态姿势识别方法、装置、设备及存储介质
文献发布时间:2023-06-19 16:08:01
技术领域
本申请涉及图像处理技术领域,尤其涉及一种动态姿势识别方法、装置、设备及存储介质。
背景技术
人体姿势识别一直以来是计算机视觉领域的重要关注点,已在各领域得到广泛应用。在对有关身体部位的姿势进行识别的相关技术中,利用姿势模型对单帧静态图像中的人体姿势进行特征提取,然后利用分类器对其进行分类。但是,该种方式对于动态姿势的识别率较低。
发明内容
有鉴于此,本申请提供一种动态姿势识别方法、装置、设备及存储介质。
具体地,本申请是通过如下技术方案实现的:
第一方面,本申请实施例提供了一种动态姿势识别方法,包括:
确定待识别的目标视频帧;
获取包含所述目标视频帧及其前N帧视频帧中人体的关节角度的关节序列;以及,根据所述目标视频帧及其前N帧视频帧的拍摄时序,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息;N为大于0的整数;
利用融合有所述排列顺序信息的关节序列进行动态姿势识别,确定所述目标视频帧中的人体姿势。
第二方面,本申请实施例提供了一种动态姿势识别装置,包括:
视频帧确定模块,用于确定待识别的目标视频帧;
关节信息获取模块,用于获取包含所述目标视频帧及其前N帧视频帧中人体的关节角度的关节序列;以及,根据所述目标视频帧及其前N帧视频帧的拍摄时序,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息;N为大于0的整数;
动态姿势识别模块,用于利用融合有所述排列顺序信息的关节序列进行动态姿势识别,确定所述目标视频帧中的人体姿势。
第三方面,本申请实施例提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的可执行指令,所述处理器执行所述可执行指令时实现第一方面所述方法中的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现第一方面所述方法的步骤。
本实施例提供了一种动态姿势识别方法,在确定待识别的目标视频帧后,能够基于所述目标视频帧中人体的关节角度及其前N帧视频帧中人体的关节角度获取关节序列,以及根据所述目标视频帧及其前N帧视频帧的拍摄时序,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息,最后利用融合有所述排列顺序信息的关节序列进行动态姿势识别。本实施例利用多帧视频帧进行动态姿势识别,融合有所述排列顺序信息的关节序列不仅保存了多个视频帧的时序信息,也考虑到了动态姿势之间的相关性,进而在识别过程中能够准确感知动态姿势的持续变化,提高动态姿势的识别准确率。
附图说明
图1是本申请一示例性实施例示出的一种直播架构的示意图。
图2A是本申请一示例性实施例示出的交互界面的示意图。
图2B是本申请一示例性实施例示出的添加特效的直播视频帧的示意图。
图3是本申请一示例性实施例示出的一种动态姿势识别方法的示意图。
图4是本申请一示例性实施例示出的一种姿势分类器的结构示意图。
图5是本申请一示例性实施例示出的有关动态姿势输出的流程示意图。
图6是本申请一示例性实施例示出的一种动态姿势识别装置的结构示意图。
图7是本申请一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
在对有关身体部位的姿势进行识别的相关技术中,利用姿势模型对单帧静态图像中的人体姿势进行特征提取,然后利用分类器对其进行分类。发明人发现,由于人体的各个关节本身具有的复杂多变性、多自由度等特性,基于单帧静态图像无法感知到动态姿势的持续变化,对于动态姿势的识别率较低。
基于相关技术中的问题,本申请实施例提供了一种动态姿势识别方法,在确定待识别的目标视频帧后,能够基于所述目标视频帧中人体的关节角度及其前N帧视频帧中人体的关节角度获取关节序列,以及根据所述目标视频帧及其前N帧视频帧的拍摄时序,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息,最后利用融合有所述排列顺序信息的关节序列进行动态姿势识别。本实施例利用多帧视频帧进行动态姿势识别,融合有所述排列顺序信息的关节序列不仅保存了多个视频帧的时序信息,也考虑到了动态姿势之间的相关性,进而在识别过程中能够准确感知动态姿势的持续变化,提高动态姿势的识别准确率。
在一些实施例中,本申请实施例提供的动态姿势识别方法可以由电子设备来执行,所述电子设备包括但不限于计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理或者服务器等具有数据处理能力的设备。示例性的,所述电子设备包括有存储器和处理器,所述存储器上存储有所述显示方法的可执行指令,以便处理器在执行所述可执行指令时能够实现所述动态姿势识别方法。示例性的,所述显示方法可以封装成一计算机程序产品,并集成在所述电子设备中。
在一示例性的应用场景中,所述动态姿势识别方法可以应用于直播场景中,比如可以在直播过程中基于主播的动态姿势为直播视频实时添加特效。为了更好地理解本申请所公开的动态姿势识别方法在直播场景中的应用,这里先对直播网络结构进行示例性说明,如图1所示,图1是本申请根据一示例性实施例示出的一种直播网络架构示意图。该直播网络架构可以包括服务端10及多个终端20。其中,服务端10可以称为后台服务器、组件服务器等,用于提供网络直播的后台服务。服务端10可以包括服务器、服务器集群或者云平台,也可以是执行服务的程序。终端20可以是具有网络直播功能的智能终端,例如,智能终端可以是智能手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、多媒体播放器、可穿戴设备等等。
在直播网络结构中,终端20可以分为主播终端21和观众终端22。主播终端21内安装有主播客户端,观众终端22中安装有观众客户端。主播客户端和观众客户端可以是同一种视频直播应用程序,即视频直播应用程序既具有直播模式,又具有观众模式,例如“虎牙直播”;主播客户端和观众客户端也可以是不同种视频直播应用程序。针对主播客户端和观众客户端为同一种视频直播应用程序的情况,当视频直播应用程序进入主播模式时,可以将视频直播应用程序称为主播客户端(以下简称为“主播端”);当视频直播应用程序进入观众模式时,可以将视频直播应用程序称为观众客户端(以下简称“观众端”)。安装有观众客户端的观众终端可以观看主播客户端上传的直播视频。主播终端和观众终端可以通过有线网络、无线网络或数据传输线等方式与服务端连接。
在直播网络架构中,观众可以通过观众终端21上的观众客户端登录直播网络架构的服务端,主播可以通过主播终端22上的主播客户端登录直播网络架构的服务端,且观众和主播进入同一直播频道。主播客户端向服务端上传在线直播内容,由服务端将该在线直播内容发送给登录进入该在线直播频道的观众客户端,供观众客户端的观众观看。观众客户端的观众不仅可以观看主播客户端上传的直播内容,还可以通过服务端与该直播频道的主播或其他观众进行交互。
为了使直播视频的显示效果更加丰富,进一步提升主播和观众之间的互动性,在直播过程中,直播用户可以对直播视频添加特效。如图2A所示,比如可以在直播界面中设置有特效添加控件,主播端可以响应于主播用户对特效添加控件的触发操作,显示特效添加界面,所述特效添加界面中显示有多个特效以及各个特效所对应的动态姿势。比如“瓶子”特效对应的动态姿势为“手部抓取”姿势、“爱心”特效对应的动态姿势为“比心”姿势、“眩晕”特效对应的动态姿势为“旋转身体”姿势。主播用户可以根据实际需要指定待添加的特效,并在确定无误之后,可以触发“确定”控件,进而主播端可以根据主播用户在特效添加界面中指定的特效获取特效生成指令。
主播端响应于所述特效生成指令,将实时获取的直播视频帧确定为待识别的目标视频帧,执行本申请实施例提供的动态姿势识别方法,确定目标视频帧中的人体姿势,若所述目标视频帧中的人体姿势与所述特效生成指令中指定的动态姿势相同,在所述直播视频帧中添加所述特效生成指令指定的特效。比如请参阅图2B,在确定用户做了“比心”动态姿势之后,可以在该直播视频帧中添加“爱心”特效。另外,主播用户在不想添加特效的情况下也可以触发“取消”控件,主播端可以返回直播界面。
当然,也可以由服务端来执行所述动态姿势识别方法,比如主播端将生成的特效生成指令和直播视频帧发送给服务端,由服务端响应于所述特效生成指令,执行本申请实施例提供的动态姿势识别方法,从而获取添加了特效的视频帧,并将其发送给主播端和观众端,以便在主播端和观众端中分别显示添加了特效的视频帧。其中,由主播端来执行本申请实施例提供的动态姿势识别方法,减少了将相关信息发送给服务端的传输时延,可以满足主播用户对于添加了特效的视频帧的实时性显示要求。
接下来对本申请实施例提供的显示方法进行说明:请参阅图3,图3为本申请实施例提供的一种动态姿势识别方法的流程示意图,所述方法可以由电子设备来执行。所述方法包括:
在步骤S101中,确定待识别的目标视频帧。
在步骤S102中,获取包含所述目标视频帧及其前N帧视频帧中人体的关节角度的关节序列;以及,根据所述目标视频帧及其前N帧视频帧的拍摄时序,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息;N为大于0的整数。
在步骤S103中,利用融合有所述排列顺序信息的关节序列进行动态姿势识别,确定所述目标视频帧中的人体姿势。
可以理解的是,本实施例提及的动态姿势包含与人体至少一个部位相关的姿势。示例性的,所述动态姿势包括但不限于手部动态姿势(比如揉捏、抓取或者投掷等动作)、脚部动态姿势(比如蹦跳、踢、抬脚、走或者跑等动作)、头部动态姿势(比如摇头、转头等动作)、躯体动态姿势(比如弯腰、翻身或者旋转等动作)或者结合身体的至少两个部位所作出的动态姿势(比如旋转倒立、指定舞蹈动作等等)。
对于步骤S101,在动态姿势识别过程中,电子设备首先确定待识别的目标视频帧。比如在直播场景中,所述目标视频帧可以是实时获取的直播视频帧,电子设备可以对每个时刻实时获取的直播视频帧进行动态姿势识别。又比如在对已拍摄完成的视频中,电子设备可以按照拍摄时序,从指定帧(比如第10帧)开始,依次对每帧进行动态姿势识别,则所述目标视频帧即为第10帧及其之后的视频帧。
在一些实施例中,在确定待识别的目标视频帧之后,电子设备可以对目标设备进行人体关键点检测,获取人体二维关键点数据。所述人体二维关键点数据包括有人体各个关节对应的关键点、以及人体各个关节对应的关键点在所述目标视频帧中的位置信息(如二维坐标信息)。示例性的,人体各个关节对应的关键点包括但不限于骨盆、左臀、右臀、脊柱、左膝、右膝、左脚踝、右脚踝、左脚、右脚、颈部、左锁骨、右锁骨、头部、左肩、右肩、左肘、右肘、左手腕、右手腕、左手、右手、左手指关节以及右手指关节等等。当然,上述关键点的数量以及部位仅为示例说明,还可以包含其他部位,本实施例对此不做任何限制。
示例性的,在根据动态姿势添加特效的场景中,可以根据用户选择的目标特效所对应的动态姿势对目标视频帧中人体的指定部位进行关键点检测,对于目标视频帧中人体与目标特效无关的部位,则不进行检测,从而有利于减少检测工作量,提高检测效率。示例性的,比如在上述的直播场景中,如果主播用户选择了特效“瓶子”,“瓶子”特效对应的动态姿势为“手部抓取”姿势,则可以仅对目标视频帧中的手部进行关键点检测,获取手部二维关键点数据,比如手部二维关键点数据包括手指各个关节的关键点及其在目标视频帧中的位置信息(如二维坐标)。如果主播用户选择了特效“爱心”,“爱心”特效对应的动态姿势为“比心”姿势,“比心”姿势一般与身体上半部分的肢体动作相关,则可以仅对目标视频帧中人体的上半部分进行关键点检测,减少了检测工作量。如果主播用户选择了特效“眩晕”,“眩晕”特效对应的动态姿势为“旋转身体”姿势,一般需要整个身体的参与,则需要对目标视频帧中的人体的各个部分均进行关键点检测。
在一些实施例中,在获取人体二维关键点数据之后,电子设备将所述人体二维关键点数据输入预先建立的关节角度预测模型中,通过所述关节角度预测模型对所述人体二维关键点数据进行关节角度预测,获得所述目标视频帧中人体的关节角度。其中,所述关节角度为关节的旋转角度。所述人体二维关键点数据包括有一个或多个二维关键点的信息,则预测得到的所述目标视频帧中人体的关节角度也包括有各个二维关键点对应的关节角度,即一个二维关键点的信息可预测得到一关节角度,如基于左手的二维关键点信息可预测得到左手旋转角度。
考虑到通过人体二维关键点数据预测关节角度存在二义性问题,即一个二维关键点数据可对应两组三维关节角度。比如手的正反面,虽然深度不同,但投影到二维平面的关键点可能是相同的。因此,本申请实施例通过在训练所述关节角度预测模型的过程中引入实际采集的数据来解决二义性问题。所述关节角度预测模型基于若干携带有角度标签的二维关键点样本数据训练得到;其中,至少部分二维关键点样本数据可以通过以下方式得到:获取惯性动作捕捉系统在用户做指定动态姿势时采集到的三维关键点数据及其对应的关节角度;所述三维关键点数据包括有人体各个关节对应的三维关键点、以及人体各个关节对应的三维关键点在世界坐标系中的位置信息(如三维坐标信息);然后根据预先确定的惯性动作捕捉系统与相机之间的位置关系,将所述三维关键点数据投影到相机平面,得到二维关键点数据;进而基于二维关键点数据和所述三维关键点数据对应的关节角度获得携带有角度标签的二维关键点样本数据。本实施例中,通过采集真实的三维关键点数据及其对应的关节角度得到携带有角度标签的二维关键点样本数据,不同的三维关键点数据可以投影得到不同的二维关键点数据,实现了二维关键点数据与关节角度的一一对应关系,基于这样的样本数据进行模型训练,有利于提高模型训练的准确性,避免或者减少二义性问题。
其中,所述惯性动作捕捉系统能够穿戴于用户身上,与用户的各个关节接触,能够捕捉用户在做某个姿势时关节的位移数据和旋转数据,进而采集到与用户关节相关的三维关键点数据及其对应的关节角度;可以理解的是,本实施例对于所述惯性动作捕捉系统的具体类型以及用户所做的动态姿势不做任何限制,可依据实际应用场景进行具体选择,比如惯性动作捕捉系统可以是Xsens的MVN动作捕捉系统;所述动态姿势包括但不限于身体的至少一个部位所做的姿势,比如手部动态姿势、脚部动态姿势、头部动态姿势或者全身多个关节共同参与的动态姿势等。
示例性的,所述惯性动作捕捉系统与相机之间的位置关系可以通过以下方式得到:在用户穿戴惯性动作捕捉系统做指定动态姿势的过程中,获取所述相机拍摄用户得到的图像;以及获取所述图像中的二维关键点标注数据,所述二维关键点标注数据包括有人体各个关节对应的二维关键点及其在图像中的二维坐标,该标注数据可以由用户人为标注;然后利用惯性动作捕捉系统采集到的三维关键点数据、所述二维关键点标注数据和相机内参,确定惯性动作捕捉系统与相机之间的位置关系(也即相机外参)。
在关节角度预测模型的训练过程中,在获取若干携带有角度标签的二维关键点样本数据之后,电子设备可以将所述二维关键点样本数据输入预设模型中,获取预设模型输出的预测关节角度,根据预测关节角度与角度标签之间的差异调整预设模型的参数,获取训练好的关节角度预测模型;进而在实际应用过程中,在获取目标视频帧的人体二维关键点数据之后,可以使用训练好的关节角度预测模型进行关节角度预测,获得所述目标视频帧中人体的关节角度。示例性的,所述关节角度预测模型的模型结构可以是循环神经网络(RNN)、长短期记忆神经网络(LSTM,Long Short-Term Memory)或者全连接神经网络(MLP)等,本实施例对此不做任何限制。
在一些实施例中,对于步骤S102,在获得目标视频帧中人体的关节角度之后,可以基于目标视频帧中人体的关节角度、以及所述目标视频帧前N帧视频帧中人体的关节角度,获取关节序列。其中,所述目标视频帧前N帧视频帧中人体的关节角度的获取方式与所述目标视频帧相同,此处不再赘述。N为大于1的整数,N越大则动态姿势识别效果越好,但处理延迟也会越高,因此可以根据实际应用场景确定N的取值。示例性的,比如在直播场景中,可以根据电子设备的运行资源和直播场景的实时性要求确定N的取值,运行资源与N呈正相关关系,实时性要求与N呈负相关关系,运行资源越大,则N的取值可以越大,实时性要求越高,则N的取值越小,实现在提高识别准确性和降低处理延迟两者之间取得平衡。
所述关节序列包括有N+1帧视频帧的关节角度,假设每帧视频帧的关节角度为v,则可以得到一个长度为N+1的关节序列[v
为了提高动态姿势的识别准确度,所述电子设备还根据所述目标视频帧及其前N帧视频帧的拍摄时序,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息,然后将排列顺序信息与所述关节序列中各个视频帧的关节角度融合,获得带有时序信息的关节序列。在一个例子中,假设排列顺序信息为顺序编号,基于所述目标视频帧及其前3帧视频帧的拍摄时序确定顺序编号,拍摄时序越靠后,则顺序编号越大,反之亦然;则可以确定所述关节序列中所述目标视频帧的关节角度对应的顺序编号为4,目标视频帧的前第1帧视频帧的关节角度对应的顺序编号为3,目标视频帧的前第2帧视频帧的关节角度对应的顺序编号为2,目标视频帧的前第3帧视频帧的关节角度对应的顺序编号为1。
进而在步骤S103中,电子设备可以利用融合有所述排列顺序信息的关节序列进行动态姿势识别,确定所述目标视频帧中的人体姿势。其中,融合有所述排列顺序信息的关节序列不仅保存了多个视频帧的时序信息,也考虑到了动态姿势之间的相关性,进而在识别过程中能够准确感知动态姿势的持续变化,提高动态姿势的识别准确率。
在一些可能的实施方式中,在获取关节序列,以及关节序列中各个视频帧的关节角度对应的排列顺序信息之后,可以将所述关节序列中各个视频帧的关节角度及其对应的排列顺序信息进行拼接,然后将拼接后的序列输入预先建立的姿势分类器中,通过所述姿势分类器对所述拼接后的序列进行动态姿势识别,获得所述目标视频帧中人体的姿势。本实施例将关节角度及其排列顺序信息进行拼接,可以获得带有时序信息的序列,从而提高动态姿势的识别准确度。
其中,所述姿势分类器基于若干携带有姿势标签的样本训练得到,所述样本为融合有排列顺序信息的关节序列。发明人发现,在排列顺序信息和关节序列中的关节角度的尺度(或者说值域)不同的情况,姿势分类器的训练过程中会更多地去关注取值更大的数据,忽视了另一部的数据,从而导致训练准确率不高的情况。为了提高姿势分类器的训练准确率,本申请实施例保持关节角度的值域和排列顺序信息的值域相同,使得姿态分类器在训练过程中能够同等关注两部分的数据,提高姿势分类器的分类准确度。
因此,在对目标视频帧进行动态姿势识别的过程中,在获取关节序列中各个视频帧的关节角度对应的排列顺序信息时,所述电子设备可以根据所述目标视频帧及其前N帧视频帧的拍摄时序、和所述关节角度的值域,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息;其中,所述排列顺序信息的值域与所述关节角度的值域相同,从而有利于提高姿势分类器的预测准确性。
示例性的,假设关节角度用弧度制表示出来,弧度的取值范围为0~π,则各个视频帧的关节角度对应的排列顺序信息的取值范围也是0~π。示例性的,假设关节角度用角度制表示出来,角度的取值范围为0~360°,则各个视频帧的关节角度对应的排列顺序信息的取值范围也是0~360°。而排列顺序信息具体取值可依据该视频帧对应的拍摄时序确定,比如所述排列顺序信息与拍摄时序成正相关关系,拍摄时序越靠后,则排列顺序信息的取值越大,拍摄时序越靠前,则排列顺序信息的取值越小。
在一个例子中,比如前述的关节序列[v
在一些实施例中,所述姿势分类基于若干携带有姿势标签的样本训练得到,所述样本为融合有排列顺序信息的关节序列,所述关节序列为使用M帧视频帧进行人体关节点检测及关节角度预测得到,M为大于1的整数,所述M帧视频帧对应有姿势标签。
示例性的,所述姿势分类器的训练样本可以基于如下方式得到:获取多个对应有姿势标签的视频;对于所述视频中的各个视频帧,对所述视频帧进行人体关键点检测,获取人体二维关键点数据,将所述人体二维关键点数据输入预先建立的关节角度预测模型中,通过所述关节角度预测模型对所述人体二维关键点数据进行关节角度预测,获得视频帧中人体的关节角度;将所述视频切割为长度为M帧的多个视频帧序列,相邻的视频帧序列中包含的视频帧可以完全不同,或者相邻的视频帧序列中包含有部分相同的视频帧,所述视频对应的姿势标签即为视频帧序列对应的姿势标签;获取各个视频帧序列对应的关节序列,以及根据该视频帧序列中各个视频帧的拍摄时序以及所述关节角度的值域,确定关节序列中各个视频帧的关节角度对应的排列顺序信息;进而将所述关节序列中各个视频帧的关节角度及其排列顺序信息进行拼接,得到融合有所述排列顺序信息的关节序列,加上各个视频帧序列对应的姿势标签,即可得到携带有姿势标签的样本。
其中,至少一个对应有姿势标签的视频可以通过以下方式得到:在上述用户穿戴惯性动作捕捉系统做某个姿势时,由相机对用户进行拍摄,从而获得对应有姿势标签的视频。
在获取若干携带有姿势标签的样本之后,电子设备可以将所述样本输入预设模型中,获取预设模型输出的预测姿势,根据预测姿势与姿势标签之间的差异调整预设模型的参数,得到训练好的姿势分类器;进而在实际应用过程中,在获取融合有所述排列顺序信息的关节序列之后,可以使用训练好的姿势分类器进行动态姿势识别,获得所述目标视频帧中人体的姿势(即姿势分类器输出的动态姿势识别结果)。示例性的,所述姿势分类器的模型结构可以是循环神经网络(RNN)或者长短期记忆神经网络(LSTM,Long Short-TermMemory)等,本实施例对此不做任何限制。
在一些示例性的实施例中,为了满足某些场景(如直播场景)下的实时性需求,本实施例提供一种轻量化的姿势分类器。如图4所示,所述姿势分类器包括有第一神经网络层11、第二神经网络层12和姿势预测网络13;所述第一神经网络层11用于从所述融合有排列顺序信息的关节序列中提取低维度特征,低维度特征为可以从融合有排列顺序信息的关节序列中直接提取的数据,比如携带有排列顺序信息的关节角度;所述第二神经网络层12用于从所述低维度特征中提取高维度特征,高维度特征为需要进一步处理得到的数据,比如分析得到携带有排列顺序信息的关节角度之间的差异、相关性或者运动趋势等等;所述姿势参数预测网络13用于根据所述高维度特征识别动态姿势,获取动态姿势识别结果。该姿势分类器的结构简单,相较于使用循环神经网络(RNN)的计算量更少,整个处理过程延迟较低,从而能够满足某些场景如直播场景下的实时性需求。
示例性的,所述第一神经网络层11和所述第二神经网络层12可以是全连接层或者卷积层。所述形状参数预测网络13包括至少一层全连接层和/或卷积层,所述姿态参数预测网络14包括至少一层全连接层和/或卷积层。
在一些实施例中,在确定所述目标视频帧中的人体姿势之后,电子设备可以直接输出所述目标视频帧中的人体姿势。比如在直播场景中,电子设备可以基于输出的所述目标视频帧中的人体姿势为目标视频帧添加特效。
在另一些实施例中,发明人在实践过程中发现,姿态分类器输出的动态姿势识别结果可能会存在突变情况,即前后几帧结果均不一致。但因为动态姿势是一个连续变化的过程中,通常不会每帧都变化,即不存在前后几帧的动态手势识别结果均不一致的情况。造成突变情况的原因可能包括但不限于:(1)比如在直播场景中,由于相机采集限制,存在连续丢帧情况;(2)在人体关键点检测阶段出现检测错误的情况,比如将左手识别为右手;(3)姿态分类器识别错误。上述原因的出现均会导致最终结果出现抖动、突变情况。
为了避免或者减少突变情况,电子设备在基于姿态分类器确定所述目标视频帧中的人体姿势之后,先不输出所述目标视频帧中的人体姿势,而是将所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势进行比对,若所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势相同,则直接输出所述目标视频帧中的人体姿势;若所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势不同,则输出所述目标视频帧的前一视频帧的输出结果。即是说,在相同的情况下,目标视频帧的输出结果为姿态分类器得出的动态姿势识别结果;在不同的情况下,目标视频帧的输出结果为前一视频帧的输出结果,从而能够有效避免或者减少突变情况。
考虑到一种特殊情况为如果某一帧的输出结果是错误的,而之后几帧基于姿态分类器得出的动态姿势识别结果均与前一帧的输出结果不同,则有可能导致连续错误的情况。比如第一帧的输出结果是错误的,第二帧的动态姿势识别结果与第一帧的输出结果不同,则第二帧的输出结果为第一帧的输出结果,第三帧的动态姿势识别结果与第二帧的输出结果不同,则第三帧的输出结果为第二帧的输出结果(实际上也即第一帧的输出结果),依次类推,如果后续的视频帧的动态姿势识别结果也与前一帧的输出结果不同,将导致视频帧的输出结果连续错误的情况。
针对于上述问题,请参阅图5,本申请实施例提供了一种后处理流程。
在步骤S201中,获取姿态分类器确定的所述目标视频帧中的人体姿势。
在步骤S202中,判断所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势是否相同。如果相同,执行步骤S203;如果不同,执行步骤S204。
在步骤S203中,清空缓冲区,并输出所述目标视频帧中的人体姿势。
在步骤S204中,将所述目标帧存入缓冲区。
在步骤S205中,判断所述缓冲区是否已满且所述缓冲区中的所有视频帧中人体的姿势相同。若是,执行步骤S203;若否,执行步骤S206。
在步骤S206中,输出所述目标视频帧的前一视频帧的输出结果。
在本实施例中,在所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势不同的情况下,可以将所述目标帧存入缓冲区,并进一步判断所述缓冲区是否已满且所述缓冲区中的所有视频帧中人体的姿势相同,如果相同,则有可能是出现之前某一帧出错的情况,则可以直接输出所述目标视频帧中的人体姿势,从而有效避免或减少视频帧的输出结果连续出错的情况。
示例性的,缓冲区的最大存储数量为3帧,比如第一帧的输出结果是错误的,第二帧的动态姿势识别结果与第一帧的输出结果不同,第二帧存入缓冲区,第二帧的输出结果为第一帧的输出结果,此时缓冲区未满;第三帧的动态姿势识别结果与第二帧的输出结果不同,第三帧存入缓冲区,第三帧的输出结果为第二帧的输出结果(实际上也即第一帧的输出结果),此时缓冲区未满;第四帧的动态姿势识别结果与第三帧的输出结果不同,第四帧存入缓冲区,此时缓冲区已满,且第二、三、四帧的动态姿势识别结果相同,则第四帧的输出结果为第四帧的动态姿势识别结果,从而有效避免或减少视频帧的输出结果连续出错的情况。
示例性的,所述缓冲区的最大缓存数量与所述关节序列对应的视频帧数量呈正相关关系。所述关节序列对应的视频帧数量越多,则所述缓冲区的最大缓存数量越大,反之亦然。在一个例子中,比如上述在确定所述目标视频帧中的人体姿势过程中,关节序列对应的视频帧数量为N+1,在满足上述正相关关系的情况下,可以设置所述缓冲区最大缓存数量小于或等于N+1。
其中,不难理解,上述各实施例中的描述的方案在不存在冲突的情况,可以进行组合,本公开实施例中不一一例举。
相应的,请参阅图6,本申请实施例还提供了一种动态姿势识别装置,包括:
视频帧确定模块31,用于确定待识别的目标视频帧。
关节信息获取模块32,用于获取包含所述目标视频帧及其前N帧视频帧中人体的关节角度的关节序列;以及,根据所述目标视频帧及其前N帧视频帧的拍摄时序,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息;N为大于0的整数。
动态姿势识别模块33,用于利用融合有所述排列顺序信息的关节序列进行动态姿势识别,确定所述目标视频帧中的人体姿势。
在一些实施例中,所述动态姿势识别模块33具体用于:将所述关节序列中各个视频帧的关节角度及其排列顺序信息进行拼接;将拼接后的序列输入预先建立的姿势分类器中,通过所述姿势分类器对所述拼接后的序列进行动态姿势识别,获得所述目标视频帧中的人体姿势。
在一些实施例中,所述关节信息获取模块32具体用于:根据所述目标视频帧及其前N帧视频帧的拍摄时序、和所述关节角度的值域,确定所述关节序列中各个视频帧的关节角度对应的排列顺序信息;其中,所述排列顺序信息的值域与所述关节角度的值域相同。
在一些实施例中,所述姿势分类器基于若干携带有姿势标签的样本训练得到,所述样本为融合有所述排列顺序信息的关节序列;所述关节序列为使用M帧视频帧进行人体关节点检测及关节角度预测得到,M为大于1的整数,所述M帧视频帧对应有姿势标签。
在一些实施例中,还包括输出模块,所述输出模块用于:若所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势相同,输出所述目标视频帧中的人体姿势;若所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势不同,输出所述目标视频帧的前一视频帧的输出结果。
在一些实施例中,所述输出模块还用于:若所述目标视频帧中的人体姿势与所述目标视频帧的前一视频帧输出的人体姿势不同,将所述目标视频帧存入缓冲区;若所述缓冲区满且所述缓冲区中的所有视频帧中的人体姿势相同,清空所述缓冲区并输出所述目标视频帧中的人体姿势;否则,输出所述目标视频帧的前一视频帧的输出结果;若所述目标视频帧中人体的姿势与所述目标视频帧的前一视频帧中人体的姿势不同,清空所述缓冲区。
在一些实施例中,所述缓冲区最大缓存数量与所述关节序列对应的视频帧数量呈正相关关系。
在一些实施例中,还包括关节角度预测模块,用于对所述目标视频帧进行人体关键点检测,获取人体二维关键点数据;将所述人体二维关键点数据输入预先建立的关节角度预测模型中,通过所述关节角度预测模型对所述人体二维关键点数据进行关节角度预测,获得所述目标视频帧中人体的关节角度。
在一些实施例中,所述关节角度预测模型基于若干携带有角度标签的二维关键点样本数据训练得到;所述装置还包括样本获取模块,所述样本获取模块用于:获取惯性动作捕捉系统在用户做指定动态姿势时采集到的三维关键点数据及其对应的关节角度;根据预先确定的惯性动作捕捉系统与相机之间的位置关系,将所述三维关键点数据投影到相机平面,得到二维关键点数据;基于二维关键点数据和所述三维关键点数据对应的关节角度获得携带有角度标签的二维关键点样本数据。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应地,请参阅图7,本申请实施例还提供了一种电子设备400,包括:存储器402、处理器401及存储在存储器402上并可在处理器401上运行的可执行指令,所述处理器401执行所述可执行指令时实现上述所述方法中的步骤。
所述处理器401执行所述存储器402中包括的可执行指令,所述处理器401可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器402存储动态姿势识别方法的可执行指令,所述存储器402可以包括至少一种类型的存储介质,存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等等。而且,设备可以与通过网络连接执行存储器的存储功能的网络存储装置协作。存储器402可以是设备400的内部存储单元,例如设备400的硬盘或内存。存储器402也可以是设备400的外部存储设备,例如设备400上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器402还可以既包括设备400的内部存储单元也包括外部存储设备。存储器402用于存储可执行指令以及设备所需的其他程序和数据。存储器402还可以用于暂时地存储已经输出或者将要输出的数据。
这里描述的各种实施方式可以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器中并且由控制器执行。
电子设备400可以是桌上型计算机、笔记本、掌上电脑、服务器、云服务器及手机等计算设备。设备可包括,但不仅限于,处理器401、存储器402。本领域技术人员可以理解,图7仅仅是电子设备400的示例,并不构成对电子设备400的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如设备还可以包括输入输出设备、网络接入设备、总线等。
上述设备中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
一种非临时性计算机可读存储介质,当存储介质中的指令由终端的处理器执行时,使得终端能够执行上述方法。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
- 动态姿势识别方法、装置、设备及存储介质
- 姿势识别方法、装置、终端设备及存储介质