人体关键点检测方法和装置、电子设备、计算机存储介质与流程

文档序号:17373972发布日期:2019-04-12 23:05阅读:126来源:国知局
本发明涉及计算机视觉领域,尤其涉及一种人体关键点检测方法和神经网络训练方法、装置、电子设备、计算机存储介质,可以应用于智能视频分析或安防监控。
背景技术
::人体关键点检测技术是人体视频数据自动处理、人体行为分析和人机交互的基础,可以为视频结构化提供重要的技术支撑;人体关键点检测的主要原理是:从人体上检测出各个人体关键点(可以是关节或者五官位置),从而通过这些关键点的位置信息来描述人体的姿态。在相关技术中,如何提高人体关键点检测的准确率,是亟待解决的问题和重要的研究方向。技术实现要素:本发明实施例期望提供一种人体关键点检测和神经网络训练的技术方案。本发明实施例提供了一种人体关键点检测方法,所述方法包括:获取待处理图像;利用预先训练的神经网络检测所述待处理图像中的人体关键点,其中,根据每个人体关键点及其相邻关键点的损失得到所述预先训练的神经网络的损失函数,并根据所述损失函数训练神经网络,得到所述预先训练的神经网络,所述人体关键点的相邻关键点由各人体关键点之间的连接关系确定。可选地,所述方法还包括:根据各人体关键点之间的连接关系的先验知识,预先定义各人体关键点之间的连接关系。可选地,所述根据每个人体关键点及其相邻关键点的损失得到所述预先训练的神经网络的损失函数,包括:根据所有人体关键点的平均损失得到所述损失函数,其中,所述关键点的损失由所述关键点及其相邻关键点的损失得到。可选地,所述关键点的损失由所述关键点及其相邻关键点的损失得到,包括:将所述关键点的损失及其相邻关键点的损失叠加,得到所述关键点的损失。可选地,所述损失函数包括:对数损失函数或均方差损失函数。本发明实施例还提供了一种神经网络训练方法,所述方法还包括:获取包含人体的样本图像;根据所述样本图像中每个人体关键点及其相邻关键点的损失获取损失函数,并根据所述损失函数训练用于人体关键点检测的神经网络,其中,每个人体关键点的相邻关键点根据各人体关键点之间的连接关系确定。可选地,所述方法还包括:根据各人体关键点之间的连接关系的先验知识,预先定义各人体关键点之间的连接关系。可选地,所述根据所述样本图像中每个人体关键点及其相邻关键点的损失获取损失函数,包括:根据所述样本图像中所有人体关键点的平均损失得到所述损失函数,其中,所述关键点的损失由所述关键点及其相邻关键点的损失得到。可选地,所述关键点的损失由所述关键点及其相邻关键点的损失得到,包括:将所述关键点的损失及其相邻关键点的损失叠加,得到所述关键点的损失。可选地,所述损失函数包括:对数损失函数或均方差损失函数。本发明实施例还提供了一种人体关键点检测装置,所述装置包括:第一获取模块和处理模块;其中,第一获取模块,用于获取待处理图像;处理模块,用于利用预先训练的神经网络检测所述待处理图像中的人体关键点,其中,根据每个人体关键点及其相邻关键点的损失得到所述预先训练的神经网络的损失函数,并根据所述损失函数训练神经网络,得到所述预先训练的神经网络,所述人体关键点的相邻关键点由各人体关键点之间的连接关系确定。可选地,所述处理模块,还用于根据各人体关键点之间的连接关系的先验知识,预先定义各人体关键点之间的连接关系。可选地,所述处理模块,具体用于根据所有人体关键点的平均损失得到所述损失函数,其中,所述关键点的损失由所述关键点及其相邻关键点的损失得到。可选地,所述处理模块,具体用于将所述关键点的损失及其相邻关键点的损失叠加,得到所述关键点的损失。可选地,所述损失函数包括:对数损失函数或均方差损失函数。本发明实施例还提供了一种神经网络训练装置,所述装置包括:第二获取模块和训练模块,其中,第二获取模块,用于获取包含人体的样本图像;训练模块,用于根据所述样本图像中每个人体关键点及其相邻关键点的损失获取损失函数,并根据所述损失函数训练用于人体关键点检测的神经网络,其中,每个人体关键点的相邻关键点根据各人体关键点之间的连接关系确定。可选地,所述训练模块,还用于根据各人体关键点之间的连接关系的先验知识,预先定义各人体关键点之间的连接关系。可选地,所述训练模块,具体用于根据所述样本图像中所有人体关键点的平均损失得到所述损失函数,其中,所述关键点的损失由所述关键点及其相邻关键点的损失得到。可选地,所述训练模块,具体用于将所述关键点的损失及其相邻关键点的损失叠加,得到所述关键点的损失。可选地,所述损失函数包括:对数损失函数或均方差损失函数。本发明实施例还提供了一种电子设备,该电子设备包括处理器和用于存储能够在处理器上运行的计算机程序的存储器;其中,所述处理器用于运行所述计算机程序时,实现上述任意一种人体关键点检测方法。本发明实施例还提供了一种计算机存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任意一种人体关键点检测方法。基于本发明实施例的提出的人体关键点检测和神经网络训练方法、装置、电子设备、计算机存储介质中,首先,获取待处理图像;然后,利用预先训练的神经网络检测所述待处理图像中的人体关键点,其中,根据每个人体关键点及其相邻关键点的损失得到所述预先训练的神经网络的损失函数,并根据所述损失函数训练神经网络,得到所述预先训练的神经网络,所述人体关键点的相邻关键点由各人体关键点之间的连接关系确定。如此,本发明实施例是在考虑人体关键点之间的连接关系的基础上,预先训练得出神经网络,因而,在利用预先训练的神经网络检测人体关键点时,可以提高人体关键点检测的准确率。附图说明图1为本发明实施例的人体关键点检测方法的流程图;图2为本发明实施例包含人体的样本图像的一个示意图;图3为本发明实施例中预定义的各人体关键点之间的连接关系示意图;图4为本发明实施例的神经网络的训练方法的流程图;图5为本发明实施例的人体关键点检测装置的组成结构示意图;图6为本发明实施例的一种电子设备的结构示意图;图7为本发明实施例的神经网络训练装置的组成结构示意图。具体实施方式以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。需要说明的是,在本发明实施例中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的方法或者装置不仅包括所明确记载的要素,而且还包括没有明确列出的其他要素,或者是还包括为实施方法或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括该要素的方法或者装置中还存在另外的相关要素(例如方法中的步骤或者装置中的单元,例如的单元可以是部分电路、部分处理器、部分程序或软件等等)。例如,本发明实施例提供的人体关键点检测方法包含了一系列的步骤,但是本发明实施例提供的人体关键点检测方法不限于所记载的步骤,同样地,本发明实施例提供的人体关键点检测装置包括了一系列单元,但是本发明实施例提供的装置不限于包括所明确记载的单元,还可以包括为获取相关信息、或基于信息进行处理时所需要设置的单元。另外,本发明实施例中所记载的“第一”、“第二”、“第三”和“第四”仅用于区分不同的对象,不代表顺序或者优先级的差异,可以理解,在不冲突的情况下,“第一”、“第二”、“第三”和“第四”所代表的对象可以互换。本发明实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统﹑大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。本发明实施例提出了一种人体关键点检测方法,图1为本发明实施例的人体关键点检测方法的流程图,如图1所示,该流程可以包括:步骤101:获取待处理图像。示例性地,可以从本地存储区域或网络获取待处理图像,待处理图像的格式可以是联合图像专家小组(jointphotographicexpertsgroup,jpeg)、位图(bitmap,bmp)、便携式网络图形(portablenetworkgraphics,png)或其他格式;需要说明的是,这里仅仅是对待处理图像的格式和来源进行了举例说明,本发明实施例并不对待处理图像的格式和来源进行限定。步骤102:利用预先训练的神经网络检测所述待处理图像中的人体关键点,其中,根据每个人体关键点及其相邻关键点的损失得到所述预先训练的神经网络的损失函数,并根据所述损失函数训练神经网络,得到所述预先训练的神经网络,所述人体关键点的相邻关键点由各人体关键点之间的连接关系确定。这里,人体关键点可以是关节或者五官位置,示例性地,人体上可以检测出的关键点包括:左右眼睛、鼻子、左右耳朵、左右肩膀、左右手肘、左右手腕、左右胯部、左右膝盖、左右脚踝等。参照图2,用数字1至17标示的圆点分别为17个人体关键点,图2的数字为人体关键点的序号,具体地说,数字1至17与人体关键点的对应关系为:1:鼻子,2:左眼睛,3:右眼睛,4:左耳朵,5:右耳朵,6:左肩,7:右肩,8:左肘部,9右肘部,10:左手腕,11:右手腕,12:左腰部,13:右腰部,14:左膝盖,15:右膝盖,16:左脚踝,17:右脚踝。可以理解的是,人体关键点之间是相互连接的,因而,可以根据关键点之间有连接关系的先验知识,预先定义各人体关键点之间的连接关系。图3为本发明实施例中预定义的各人体关键点之间的连接关系示意图,图3中,用数字1至17标示的圆点分别为17个人体关键点,图3的数字为人体关键点的序号;参照图2和图3,预定义的各人体关键点之间的连接关系可以描述为:鼻子与左、右眼睛俩俩相连,左、右耳朵相连,手肘与肩膀、手腕分别相连,膝盖与腰部、脚踝分别相连。对于本步骤的实现方式,示例性地,可以根据预定义的各人体关键点之间的连接关系,得出上述待处理图像中每个人体关键点的相邻关键点;根据所有人体关键点的平均损失得到上述损失函数,其中,每个人体关键点的损失由该人体关键点及其相邻关键点的损失得到。这里,人体关键点的损失表示每个人体关键点的预测位置与实际位置的差异程度。具体实施时,可以将任意一个关键点的损失及其相邻关键点的损失叠加,得到对应人体关键点的损失。可选地,上述损失函数包括:对数损失函数(binarycrossentropy)或均方差损失函数(meansquareerror)。根据上述预定义的各人体关键点之间的连接关系,各人体关键点之间的相邻关系包括:鼻子、左眼睛和右眼睛两两相邻,左耳朵和右耳朵相邻,左手肘与左肩膀相邻,左手肘与左手腕相邻,右手肘与右肩膀相邻,右手肘与右手腕相邻,左膝盖与左腰部相邻,左膝盖与左脚踝相邻,右膝盖与右腰部相邻,右左膝盖与右脚踝相邻;根据上述相邻关系,可以得出每个人体关键点的相邻关键点。本发明实施例中,并不对神经网络的类型进行限定,示例性地,上述神经网络为卷积神经网络。实际应用中,步骤101至步骤102可以利用电子设备中的处理器实现,上述处理器可以为特定用途集成电路(applicationspecificintegratedcircuit,asic)、数字信号处理器(digitalsignalprocessor,dsp)、数字信号处理装置(digitalsignalprocessingdevice,dspd)、可编程逻辑装置(programmablelogicdevice,pld)、现场可编程门阵列(fieldprogrammablegatearray,fpga)、中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器中的至少一种。可以看出,本发明实施例是在考虑人体关键点之间的连接关系的基础上,预先训练得出神经网络,因而,在利用预先训练的神经网络检测人体关键点时,可以提高人体关键点检测的准确率。下面对本发明实施例涉及的神经网络的训练方法进行说明。图4为本发明实施例的神经网络的训练方法的流程图,如图4所示,该流程可以包括:步骤401:获取包含人体的样本图像。示例性地,可以从本地存储区域或网络获取包含人体的样本图像,包含人体的样本图像的格式可以是jpeg、bmp、png或其他格式;需要说明的是,这里仅仅是对包含人体的样本图像的格式和来源进行了举例说明,本发明实施例并不对包含人体的样本图像的格式和来源进行限定。图2为本发明实施例包含人体的样本图像的一个示意图。步骤402:根据所述样本图像中每个人体关键点及其相邻关键点的损失获取损失函数,并根据所述损失函数训练用于人体关键点检测的神经网络,其中,每个人体关键点的相邻关键点根据各人体关键点之间的连接关系确定。在实际实施时,在训练用于人体关键点检测的神经网络前,可以将所述包含人体的样本图像输入到用于人体关键点检测的神经网络中。可选地,还可以先调整包含人体的样本图像的大小后,然后将调整大小后的样本图像输入到上述神经网络中。例如,调整大小后的样本图像的大小为256*192(高度*宽度)。在神经网络训练过程中,将上述包含人体的样本图像输入到用于人体关键点检测的神经网络后,可以利用神经网络提取上述包含人体的样本图像的图片特征并预测各人体关键点的位置。在相关技术中,在用于检测人体关键点的神经网络中使用的损失函数的得出依据仅仅是:每个人体关键点的损失(即每个人体关键点的预测位置与实际位置的差异程度),也就是说,在设计神经网络中使用的损失函数时,没有考虑人体关键点之间固有的连接关系;而在本发明实施例中,可以根据所述样本图像中每个人体关键点的相邻关键点的损失,获取用于训练上述神经网络的损失函数;由于每个人体关键点的相邻关键点是根据人体关键点之间的连接关系得出的,因而,获取上述损失函数的依据包括人体关键点之间的连接关系,进而,本发明实施例是在考虑人体关键点之间的连接关系的基础上,得出了上述神经网络中使用的损失函数。这里,上述损失函数可以记为结构感知损失函数(structure-awarelossfunction)。实际应用中,可以根据上述样本图像中所有人体关键点的平均损失得到所述损失函数,其中,每个人体关键点的损失由该人体关键点及其相邻关键点的损失得到。具体实施时,可以将任意一个关键点的损失及其相邻关键点的损失叠加,得到对应人体关键点的损失。可选地,上述损失函数可以包括对数损失函数或者均方差损失函数。本发明实施例中,结构感知损失函数可以通过以下公式进行表示:其中,lsa表示结构感知损失函数,n表示人体关键点的个数,在这里为17;sn表示与第n个人体关键点相邻的关键点的集合,gn表示第n个人体关键点的真实位置,pn表示第n个人体关键点的预测位置,函数f是常用的损失函数,比如对数损失函数或者均方差损失函数。本发明实施例可以利用结构感知损失函数计算预测人体关键点的损失,根据上述记载的内容,可以看出,在计算一个人体关键点的损失时,把与它相邻的关键点的损失考虑进来,使用这个关键点和与这个关键点相邻的关键点的损失和作为这个点的损失来更新神经网络。针对图2和图3所示的17个人体关键点,结构感知损失函数的一个具体计算过程为:在计算鼻子的初始损失值后,需要计算左眼睛、右眼睛的损失值,将这三个点的损失值相加作为鼻子最终的损失值;同样的,在计算左眼睛的初始损失值,需要加上鼻子、右眼睛的损失值,作为左眼睛最终的损失值;在计算右眼睛的初始损失值后,需要加上鼻子、左眼睛的损失值,作为右眼睛最终的损失值;在计算左耳朵的初始损失值后,需要加上右耳朵的损失值作为左耳朵最终的损失值;在计算右耳朵的初始损失值后,需要加上左耳朵的损失值作为右耳朵最终的损失值;在计算左肩膀的初始损失值后,需要加上左手肘的损失值作为左肩膀最终的损失值;在计算右肩膀的初始损失值后,需要加上右手肘的损失值作为右肩膀最终的损失值;在计算左手肘的初始损失值后,需要加上左肩膀和左手腕的损失值作为左手肘最终的损失值;在计算右手肘的初始损失值后,需要加上右肩膀和右手腕的损失值作为右手肘最终的损失值;在计算左手腕的初始损失值后,需要加上左手肘的损失值作为左手腕最终的损失值;在计算右手腕的初始损失值后,需要加上右手肘的损失值作为右手腕最终的损失值;在计算左腰部的初始损失值后,需要加上左膝盖的损失值作为左腰部最终的损失值;在计算右腰部的初始损失值后,需要加上右膝盖的损失值作为右腰部最终的损失值;在计算左膝盖的初始损失值后,需要加上左腰部和左脚踝的损失值作为左膝盖最终的损失值;在计算右膝盖的初始损失值后,需要加上右腰部和右脚踝的损失值作为右膝盖最终的损失值;在计算左脚踝的初始损失值后,需要加上左膝盖的损失值作为左脚踝最终的损失值;在计算右脚踝的初始损失值后,需要加上右膝盖的损失值作为右脚踝最终的损失值;最后将所有人体关键点最终的损失值相加求和,除以所有人体关键点的个数(例如为17),得到人体关键点最终损失值的平均值;这里,得到的人体关键点最终损失值的平均值即为结构感知损失函数(即用于训练上述神经网络的损失函数)的值。可选地,可以利用结构感知损失函数更新上述神经网络的权值。实际应用中,步骤401至步骤403可以利用电子设备中的处理器实现,上述处理器可以为asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种。可以看出,本发明实施例中,首先根据人体关键点之间的连接关系,得出结构感知损失函数,然后,可以根据结构感知损失函数训练神经网络;由于本发明实施例是在在考虑人体关键点之间的连接关系的基础上,得出了上述结构感知损失函数,因而,在利用训练得出的神经网络检测人体关键点时,可以提高人体关键点检测的准确率,使本发明实施例的人体关键点检测方法更加有效;进一步地,利用本发明实施例的人体关键点检测方案,可以准确地从人体上检测出事先定义的关键点位置,可以用来分析人体的姿态以及人体正在进行的动作。在前述实施例提出的人体关键点检测方法的基础上,本发明实施例提出了一种人体关键点检测装置。图5为本发明实施例的人体关键点检测装置的组成结构示意图,如图5所示,所述装置包括:第一获取模块501和处理模块502;其中,第一获取模块501,用于获取待处理图像;处理模块502,用于利用预先训练的神经网络检测所述待处理图像中的人体关键点,其中,根据每个人体关键点及其相邻关键点的损失得到所述预先训练的神经网络的损失函数,并根据所述损失函数训练神经网络,得到所述预先训练的神经网络,所述人体关键点的相邻关键点由各人体关键点之间的连接关系确定。可选地,所述处理模块502,还用于根据各人体关键点之间的连接关系的先验知识,预先定义各人体关键点之间的连接关系。可选地,所述处理模块502,具体用于根据所有人体关键点的平均损失得到所述损失函数,其中,所述关键点的损失由所述关键点及其相邻关键点的损失得到。可选地,所述处理模块502,具体用于将所述关键点的损失及其相邻关键点的损失叠加,得到所述关键点的损失。可选地,所述损失函数包括:对数损失函数或均方差损失函数。实际应用中,第一获取模块501和处理模块502可以利用电子设备中的处理器实现,上述处理器可以为asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种。另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。具体来讲,本实施例中的一种人体关键点检测方法对应的计算机程序指令可以被存储在光盘,硬盘,u盘等存储介质上,当存储介质中的与一种人体关键点检测方法对应的计算机程序指令被一电子设备读取或被执行时,实现前述实施例的任意一种人体关键点检测方法。基于前述实施例相同的技术构思,参见图6,其示出了本发明实施例提供的一种电子设备60,可以包括:存储器61和处理器62;其中,所述存储器61,用于存储计算机程序和数据;所述处理器62,用于执行所述存储器中存储的计算机程序,以实现前述实施例的任意一种人体关键点检测方法。在实际应用中,上述存储器61可以是易失性存储器(volatilememory),例如ram;或者非易失性存储器(non-volatilememory),例如rom,快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);或者上述种类的存储器的组合,并向处理器62提供指令和数据。上述处理器62可以为asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。图7为本发明实施例的神经网络训练装置的组成结构示意图,如图7所示,所述装置包括:第二获取模块701和训练模块702,其中,第二获取模块701,用于获取包含人体的样本图像;训练模块702,用于根据所述样本图像中每个人体关键点及其相邻关键点的损失获取损失函数,并根据所述损失函数训练用于人体关键点检测的神经网络,其中,每个人体关键点的相邻关键点根据各人体关键点之间的连接关系确定。可选地,所述训练模块702,还用于根据各人体关键点之间的连接关系的先验知识,预先定义各人体关键点之间的连接关系。可选地,所述训练模块702,具体用于根据所述样本图像中所有人体关键点的平均损失得到所述损失函数,其中,所述关键点的损失由所述关键点及其相邻关键点的损失得到。可选地,所述训练模块702,具体用于将所述关键点的损失及其相邻关键点的损失叠加,得到所述关键点的损失。可选地,所述损失函数包括:对数损失函数或均方差损失函数。实际应用中,第二获取模块701、确定模块702和训练模块703可以利用电子设备中的处理器实现,上述处理器可以为asic、dsp、dspd、pld、fpga、cpu、控制器、微控制器、微处理器中的至少一种。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1