基于人体关键点的深蹲检测方法、装置、设备及介质转让专利

申请号 : CN202010377914.5

文献号 : CN111275032B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 韦洪雷梁锐刘晨张健李相俊蒲茂武甯航申浩邹琳

申请人 : 西南交通大学四川乐健梦想家科技有限公司

摘要 :

本发明公开了一种基于人体关键点的深蹲检测方法、装置、设备及介质,该方法包括按照原始帧图像的时间顺序对每一原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点,并基于待识别骨骼关键点,确定测试者的动作状态,基于动作开始时刻和动作结束时刻,获取实际动作时长,当实际动作时长小于等于预设标准动作时长,则基于待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和脖子关键点,获取测试者的动作检测结果;当动作检测结果为动作标准,则基于动作结束时刻统计深蹲个数,提高对测试者深蹲动作检测的效率和准确性,节省人工成本。

权利要求 :

1.一种基于人体关键点的深蹲检测方法,其特征在于,包括:

获取原始帧图像,基于人体姿态识别算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点;

基于所述待识别骨骼关键点,获取膝盖关键点夹角和脖子关键点在竖直方向上的位移;

基于所述膝盖关键点夹角和所述脖子关键点在竖直方向上的位移,确定所述测试者的动作状态是否为动作开始;

当所述动作状态为动作开始,则将所述膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和预设位移进行比较,确定所述测试者的动作状态是否为动作中;其中,若所述膝盖关键点夹角大于所述预设运动夹角阈值且小于等于所述预设站立夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为下降动作中;当所述动作状态为下降,若所述膝盖关键点夹角大于所述预设下蹲夹角阈值且小于等于所述预设运动夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为下蹲动作中;当所述动作状态为下蹲,若所述膝盖关键点夹角大于所述预设运动夹角阈值且小于等于所述预设站立夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为上升动作中;

当所述动作状态为动作中,则将所述膝盖关键点夹角与所述预设站立夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和所述预设位移进行比较,确定所述测试者的动作状态是否为动作结束;

当动作状态为动作结束,则将所述动作状态为动作开始时的时刻作为动作开始时刻,所述动作状态为动作结束时的时刻作为动作结束时刻,基于所述动作开始时刻和所述动作结束时刻,获取实际动作时长;

当所述实际动作时长小于等于预设标准动作时长,则基于所述待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和所述脖子关键点,获取所述测试者的动作检测结果;其中,基于所述双足关键点计算双足关键点距离,基于所述双肩关键点计算双肩关键点距离;计算所述双足关键点距离和双肩关键点距离的距离差,并将所述距离差的绝对值作为第一距离;基于所述臀部关键点和所述脖子关键点计算第二距离;当所述第一距离小于等于第一计算阈值,且所述第二距离大于等于第二计算阈值,则获取动作标准的动作检测结果;

当所述动作检测结果为动作标准,则基于所述动作结束时刻统计深蹲个数。

2.根据权利要求1所述的一种基于人体关键点的深蹲检测方法,其特征在于,所述基于所述膝盖关键点夹角和所述脖子关键点在竖直方向上的位移,确定所述测试者的动作状态是否为动作开始,包括:将所述膝盖关键点夹角与预设站立夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较;

当所述膝盖关键点夹角大于预设站立夹角阈值,且所述脖子关键点在竖直方向上的位移小于等于预设位移,则确定所述测试者的动作状态为动作开始。

3.根据权利要求1所述的一种基于人体关键点的深蹲检测方法,其特征在于,所述获取原始帧图像,基于人体姿态识别算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点,包括:获取原始帧图像,基于行人检测算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行目标追踪,获取待识别目标;

基于人脸识别算法对每一所述待识别目标进行人脸识别,获取身份信息;

基于人体姿态识别算法对每一所述待识别目标进行识别,获取每一测试者对应的待识别骨骼关键点。

4.根据权利要求3所述的一种基于人体关键点的深蹲检测方法,其特征在于,所述获取原始帧图像,基于行人检测算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行目标追踪,获取待识别目标,包括:获取原始帧图像,按照所述原始帧图像的时间顺序对每一对所述原始帧图像进行预处理,获取有效帧图像;

基于行人检测算法对每一所述有效帧图像进行目标追踪,获取待识别目标。

5.根据权利要求3所述的一种基于人体关键点的深蹲检测方法,其特征在于,所述深蹲检测方法还包括:按照时间先后顺序,将第一个所述动作开始时刻作为运动开始时刻;

基于所述运动开始时刻,统计预设运动时长内的深蹲个数,基于所述身份信息,选取对应的评分标准对所述深蹲个数进行打分,获取所述测试者的运动分数,基于所述运动分数确定所述测试者的运动是否达标。

6.一种基于人体关键点的深蹲检测装置,其特征在于,包括:

待识别骨骼关键点获取模块,用于获取原始帧图像,基于人体姿态识别算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点;

待识别骨骼关键点处理模块,用于基于所述待识别骨骼关键点,获取膝盖关键点夹角和脖子关键点在竖直方向上的位移;

动作开始判断模块,用于基于所述膝盖关键点夹角和所述脖子关键点在竖直方向上的位移,确定所述测试者的动作状态是否为动作开始;

动作中判断模块,用于当所述动作状态为动作开始,则将所述膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和预设位移进行比较,确定所述测试者的动作状态是否为动作中;

其中,若所述膝盖关键点夹角大于所述预设运动夹角阈值且小于等于所述预设站立夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为下降动作中;当所述动作状态为下降,若所述膝盖关键点夹角大于所述预设下蹲夹角阈值且小于等于所述预设运动夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为下蹲动作中;当所述动作状态为下蹲,若所述膝盖关键点夹角大于所述预设运动夹角阈值且小于等于所述预设站立夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为上升动作中;

动作结束判断模块,用于当所述动作状态为动作中,则将所述膝盖关键点夹角与所述预设站立夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和所述预设位移进行比较,确定所述测试者的动作状态是否为动作结束;

动作时长计算模块,用于当动作状态为动作结束,则将所述动作状态为动作开始时的时刻作为动作开始时刻,所述动作状态为动作结束时的时刻作为动作结束时刻,基于所述动作开始时刻和所述动作结束时刻,获取实际动作时长;

动作检测结果获取模块,用于当所述实际动作时长小于等于预设标准动作时长,则基于所述待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和所述脖子关键点,获取所述测试者的动作检测结果;其中,基于所述双足关键点计算双足关键点距离,基于所述双肩关键点计算双肩关键点距离;计算所述双足关键点距离和双肩关键点距离的距离差,并将所述距离差的绝对值作为第一距离;基于所述臀部关键点和所述脖子关键点计算第二距离;当所述第一距离小于等于第一计算阈值,且所述第二距离大于等于第二计算阈值,则获取动作标准的动作检测结果;

深蹲个数统计模块,用于当所述动作检测结果为动作标准,则基于所述动作结束时刻统计深蹲个数。

7.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至

5任一项所述基于人体关键点的深蹲检测方法。

8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5任一项所述基于人体关键点的深蹲检测方法。

说明书 :

基于人体关键点的深蹲检测方法、装置、设备及介质

技术领域

[0001] 本发明涉及健身动作检测领域,具体涉及一种基于人体关键点的深蹲检测方法、装置、设备及介质。

背景技术

[0002] 在健身练习或者力量练习中,深蹲动作是一个复合的、全身性的练习动作,它可以锻炼练习者的臀部肌肉和大腿后肌,同时也可以增强练习者的关节柔韧性和身体协调性。其中,标准的深蹲动作需要腰背保持直线,髋关节低于膝关节。目前判断测试者的深蹲动作训练是否达到训练要求,主要通过以下两方面数据得知:一、测试者的深蹲动作是否标准;
二、测试者标准的深蹲动作的个数是否在规定时间内达到训练要求。目前主要通过人工观察确定测试者的深蹲动作是否标准,并对标准的深蹲动作进行计数,人工成本高,效率低,误差大,容易出现作弊情况。

发明内容

[0003] 本发明所要解决的技术问题是人工确定测试者的深蹲动作是否标准,并统计标准的深蹲动作的个数,成本高,效率低,误差大,容易出现作弊情况。因此,提供一种基于人体关键点的深蹲检测方法、装置、设备及介质,以降低人工成本,提高判断效率和判断准确性。
[0004] 本发明通过下述技术方案实现:
[0005] 一种基于人体关键点的深蹲检测方法,包括:
[0006] 获取原始帧图像,基于人体姿态识别算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点;
[0007] 基于所述待识别骨骼关键点,获取膝盖关键点夹角和脖子关键点在竖直方向上的位移;
[0008] 基于所述膝盖关键点夹角和所述脖子关键点在竖直方向上的位移,确定所述测试者的动作状态是否为动作开始;
[0009] 当所述动作状态为动作开始,则将所述膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和预设位移进行比较,确定所述测试者的动作状态是否为动作中;
[0010] 当所述动作状态为运动中,则将所述膝盖关键点夹角与所述预设站立夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和所述预设位移进行比较,确定所述测试者的动作状态是否为动作结束;
[0011] 当动作状态为动作结束,则将所述动作状态为动作开始时的时刻作为动作开始时刻,所述动作状态为动作结束时的时刻作为动作结束时刻,基于所述动作开始时刻和所述动作结束时刻,获取实际动作时长;
[0012] 当所述实际动作时长小于等于预设标准动作时长,则基于所述待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和所述脖子关键点,获取所述测试者的动作检测结果;
[0013] 当所述动作检测结果为动作标准,则基于所述动作结束时刻统计深蹲个数。
[0014] 进一步地,所述基于所述膝盖关键点夹角和所述脖子关键点在竖直方向上的位移,确定所述测试者的动作状态是否为动作开始,包括:
[0015] 将所述膝盖关键点夹角与预设站立夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较;
[0016] 当所述膝盖关键点夹角大于预设站立夹角阈值,且所述脖子关键点在竖直方向上的位移小于等于预设位移,则确定所述测试者的动作状态为动作开始。
[0017] 进一步地,所述将所述膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和预设位移进行比较,确定所述测试者的动作状态是否为动作中,包括:
[0018] 若所述膝盖关键点夹角大于所述预设运动夹角阈值且小于等于所述预设站立夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为下降动作中;
[0019] 当所述动作状态为下降,若所述膝盖关键点夹角大于所述预设下蹲夹角阈值且小于等于所述预设运动夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为下蹲动作中;
[0020] 当所述动作状态为下蹲,若所述膝盖关键点夹角大于所述预设运动夹角阈值且小于等于所述预设站立夹角阈值,所述脖子关键点在竖直方向上的位移大于所述预设位移,则确定所述测试者在对应的原始帧图像中的动作状态为上升动作中。
[0021] 进一步地,所述基于所述待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和所述脖子关键点,获取所述测试者的动作检测结果,包括:
[0022] 基于所述双足关键点计算双足关键点距离,基于所述双肩关键点计算双肩关键点距离;
[0023] 计算所述双足关键点距离和双肩关键点距离的距离差,并将所述距离差的绝对值作为第一距离;
[0024] 基于所述臀部关键点和所述脖子关键点计算第二距离;
[0025] 当所述第一距离小于等于第一计算阈值,且所述第二距离大于等于第二计算阈值,则获取动作标准的动作检测结果。
[0026] 进一步地,所述获取原始帧图像,基于人体姿态识别算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点,包括:
[0027] 获取原始帧图像,基于行人检测算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行目标追踪,获取待识别目标;
[0028] 基于人脸识别算法对每一所述待识别目标进行人脸识别,获取身份信息;
[0029] 基于人体姿态识别算法对每一所述待识别目标进行识别,获取每一测试者对应的待识别骨骼关键点。
[0030] 进一步地,所述获取原始帧图像,基于行人检测算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行目标追踪,获取待识别目标,包括:
[0031] 获取原始帧图像,按照所述原始帧图像的时间顺序对每一对所述原始帧图像进行预处理,获取有效帧图像;
[0032] 基于行人检测算法对每一所述有效帧图像进行目标追踪,获取待识别目标。
[0033] 进一步地,所述深蹲检测方法还包括:
[0034] 按照时间先后顺序,将第一个所述动作开始时刻作为运动开始时刻;
[0035] 基于所述运动开始时刻,统计预设运动时长内的深蹲个数,基于所述身份信息,选取对应的评分标准对所述深蹲个数进行打分,获取所述测试者的运动分数,基于所述运动分数确定所述测试者的运动是否达标。
[0036] 一种基于人体关键点的深蹲检测装置,包括:
[0037] 待识别骨骼关键点获取模块,用于获取原始帧图像,基于人体姿态识别算法,按照所述原始帧图像的时间顺序对每一所述原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点;
[0038] 待识别骨骼关键点处理模块,用于基于所述待识别骨骼关键点,获取膝盖关键点夹角和脖子关键点在竖直方向上的位移;
[0039] 动作开始判断模块,用于基于所述膝盖关键点夹角和所述脖子关键点在竖直方向上的位移,确定所述测试者的动作状态是否为动作开始;
[0040] 动作中判断模块,用于当所述动作状态为动作开始,则将所述膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和预设位移进行比较,确定所述测试者的动作状态是否为动作中;
[0041] 动作结束判断模块,用于当所述动作状态为运动中,则将所述膝盖关键点夹角与所述预设站立夹角阈值进行比较,并将所述脖子关键点在竖直方向上的位移和所述预设位移进行比较,确定所述测试者的动作状态是否为动作结束;
[0042] 动作时长计算模块,用于当动作状态为动作结束,则将所述动作状态为动作开始时的时刻作为动作开始时刻,所述动作状态为动作结束时的时刻作为动作结束时刻,基于所述动作开始时刻和所述动作结束时刻,获取实际动作时长;
[0043] 动作检测结果获取模块,用于当所述实际动作时长小于等于预设标准动作时长,则基于所述待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和所述脖子关键点,获取所述测试者的动作检测结果;
[0044] 深蹲个数统计模块,用于当所述动作检测结果为动作标准,则基于所述动作结束时刻统计深蹲个数。
[0045] 一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于人体关键点的深蹲检测方法。
[0046] 一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于人体关键点的深蹲检测方法。
[0047] 本发明基于人体关键点的深蹲检测方法、装置、设备及介质,通过人体姿态识别算法对每一原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点,并基于所述待识别骨骼关键点,确定测试者在做一个深蹲动作的动作状态,然后根据测试者的动作状态确定测试者的实际动作时长,当实际动作时长小于等于预设标准动作时长,则根据待识别骨骼关键点中的双足关键点、双肩关键点、臀部关键点和脖子关键点确定测试者的深蹲动作是否标准,当测试者的深蹲动作标准时,则统计测试者深蹲动作的个数,以完成对测试者深蹲动作的检测,提高检测效率和准确性,节省人工成本。

附图说明

[0048] 此处所说明的附图用来提供对本发明实施例的进一步理解,构成本申请的一部分,并不构成对本发明实施例的限定。在附图中:
[0049] 图1为本发明基于人体关键点的深蹲检测方法的流程图。
[0050] 图2为图1中步骤S30的一具体流程图。
[0051] 图3为图1中步骤S40的一具体流程图。
[0052] 图4为图1中步骤S70的一具体流程图。
[0053] 图5为图1中步骤S10的一具体流程图。
[0054] 图6为图5中步骤S11的一具体流程图。
[0055] 图7为本发明基于人体关键点的深蹲检测方法的另一流程图。
[0056] 图8是本发明基于人体关键点的深蹲检测装置的结构示意图。
[0057] 图9是本发明计算机设备的一示意图。

具体实施方式

[0058] 为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
[0059] 实施例1
[0060] 本发明提供一种基于人体关键点的深蹲检测方法,该方法可应用于不同电子设备中,该电子设备包括但不限于各种个人计算机、笔记本电脑、智能手机和平板电脑。
[0061] 如图1所示,本发明提供一种基于人体关键点的深蹲检测方法,包括如下步骤:
[0062] S10:获取原始帧图像,基于人体姿态识别算法,按照原始帧图像的时间顺序对每一原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点。
[0063] 其中,原始帧图像指服务器获取摄像机发送的拍摄有测试者做深蹲动作的单帧图像。
[0064] 具体地,服务器在获取原始帧图像后,会按照原始帧图像的时间顺序对每一原始帧图像进行识别,从每一原始帧图像中获取待识别骨骼关键点。其中,待识别骨骼关键点指通过人体姿态识别算法对原始帧图像中的人体进行识别后得到的表示人体框架的点。
[0065] 本实施例中以待识别骨骼关键点为15个进行说明,分别是1右肩、2右肘、3右腕、4左肩、5左肘、6左腕、7右髋、8右膝、9右踝、10左髋、11左膝、12左踝、13头顶、14脖子和15臀部,通常用线段将上述15个待识别骨骼关键点连接形成人体框架。
[0066] 本实施例中的人体姿态识别算法指图像中人体骨骼关键点的算法,本实施例中的人体姿态识别算法包括但不限于OpenPose和AlphaPose。
[0067] S20:基于待识别骨骼关键点,获取膝盖关键点夹角和脖子关键点在竖直方向上的位移。
[0068] 其中,膝盖关键点夹角v指以左髋、左膝和左踝对应的待识别骨骼关键点形成的夹角,或者右髋、右膝和右踝对应的待识别骨骼关键点形成的夹角。
[0069] 具体地,服务器在获取原始帧图像后,以原始帧图像的左上角为坐标原点建立直角坐标系,通过该直角坐标系,服务器按照预设帧数(如5帧)选取对应数量的原始帧图像,并从每一原始帧图像中获取脖子关键点的横坐标和纵坐标,以第一帧原始帧图像中的脖子关键点为基准点,计算其他的原始帧图像中的脖子关键点相对于基准点的移动位移,若移动位移小于设置的移动判断值,则认为测试者没有开始做深蹲动作。其中,移动位移指原始帧图像中的脖子关键点相较于基准点移动的距离。移动判断值指判断测试者的脖子关键点移动是否是开始做深蹲动作的移动的值。
[0070] 进一步地,本实施例中脖子关键点在竖直方向上的位移是指脖子关键点相对于基准点移动的位移。
[0071] S30:基于膝盖关键点夹角和脖子关键点在竖直方向上的位移,确定测试者的动作状态是否为动作开始。
[0072] 具体地,服务器在从每一帧原始帧图像中获取道膝盖关键点夹角v和脖子关键点在竖直方向上的位移d后,将每一帧原始帧图像中的膝盖关键点夹角v与预设站立夹角阈值α比较,脖子关键点在竖直方向上的位移d与预设位移D比较,当膝盖关键点夹角v大于预设站立夹角阈值α,且脖子关键点在竖直方向上的位移d小于等于预设位移D,则表示该帧原始帧图像为测试者开始进行下蹲动作,该测试者的动作状态为动作开始。其中,预设站立夹角阈值指预先设置的用于判断测试者处于站立阶段的夹角大小。预设位移指预先设置的用于判断测试者处于站立状态的从脖子关键点到臀部关键点的距离。
[0073] S40:当动作状态为动作开始,则将膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较,确定测试者的动作状态是否为动作中。
[0074] 其中,预设运动夹角阈值β指预先设置的用于判断测试者处于运动阶段的夹角大小。预设下蹲夹角阈值γ指预先设置的用于判断测试者处于站立阶段的夹角大小。
[0075] 具体地,在确定某一帧原始帧图像表示的动作状态为动作开始后,则继续检测后续获取的原始帧图像,当检测到某一原始帧图像中的膝盖关键点夹角v大于预设运动夹角阈值β且小于等于预设站立夹角阈值α,并且该测试者的脖子关键点在竖直方向上的位移d大于预设位移D,则表示测试者正在做下降动作且该下降动作是标准的;在确定测试者在做下降动作时,服务器继续检测后续获取的原始帧图像,当检测到某一原始帧图像中的膝盖关键点夹角v大于预设下蹲夹角阈值γ且小于等于预设运动夹角阈值β,并且该测试者的脖子关键点在竖直方向上的位移d大于预设位移D,则表示测试者正在做下蹲动作,且该下蹲动作是标准的;在确定测试者在做下蹲动作时,服务器继续检测后续获取的原始帧图像,当检测到某一原始帧图像中的膝盖关键点夹角v大于预设运动夹角阈值β且小于等于预设站立夹角阈值α,并且该测试者的脖子关键点在竖直方向上的位移d大于预设位移D,则确定测试者正在做上升动作,且该上升动作是标准的。根据上述过程可确定测试者在动作中这一过程的每一项操作都是标准的。
[0076] S50:当动作状态为运动中,则将膝盖关键点夹角与预设站立夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较,确定测试者的动作状态是否为动作结束。
[0077] 具体地,服务器在确定某一帧原始帧图像表示的动作状态为动作中后,继续检测后续获取的原始帧图像,当检测到某一原始帧图像中的膝盖关键点夹角v大于预设站立夹角阈值α,并且该测试者的脖子关键点在竖直方向上的位移d小于等于预设位移D,则表示测试者的动作结束这一过程也是标准的,当测试者的动作结束这一过程标准,则表示测试者完成了一个深蹲动作,该测试者的动作状态为动作结束。
[0078] S60:当动作状态为动作结束,则将动作状态为动作开始时的时刻作为动作开始时刻,动作状态为动作结束时的时刻作为动作结束时刻,基于动作开始时刻和动作结束时刻,获取实际动作时长。
[0079] 具体地,通过 计算实际动作时长,其中, 指动作开始时刻, 指动作结束时刻, 指实际动作时长。本实施例中的实际动作时长指测试者做一个下蹲动作实际需要的时长。
[0080] S70:当实际动作时长小于等于预设标准动作时长,则基于待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和脖子关键点,获取测试者的动作检测结果。
[0081] 其中,预设标准动作时长 指预先设置的理论上做完一个标准的深蹲动作所需要的时间。
[0082] 具体地,当 ,则表示测试者在规定的设标准动作时长内完成了一个深蹲动作,是合格的。服务器会基于待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和脖子关键点,然后根据双足关键点计算双足关键点之间的距离,根据双肩关键点计算双肩关键点之间的距离,根据臀部关键点和脖子关键点计算臀部关键点和脖子关键点之间的距离,并计算双足关键点之间的距离和双肩关键点之间的距离的距离差,最后通过判断该距离差和臀部关键点和脖子关键点之间的距离是否达到预设条件,判断测试者的动作检测结果。
[0083] 进一步地,当 ,则表示测试者在规定的设标准动作时长内没有完成了一个深蹲动作,可能是测试者体力不支或者突然有别的事情打断了,则检测结束,若测试者需要继续检测,可重新启动该检测方法。
[0084] S80:当动作检测结果为动作标准,则基于动作结束时刻统计深蹲个数。
[0085] 步骤S10-步骤S80,通过人体姿态识别算法,识别每一帧原始帧图像中所有测试者的待识别骨骼关键点,并获取膝盖关键点夹角和脖子关键点在竖直方向上的位移,通过判断膝盖关键点夹角和脖子关键点在竖直方向上的位移是否满足动作开始条件、动作中条件和动作结束条件,确定测试者在动作中这一动作状态下是否标准,当测试者载动作中这一动作状态下是标准的,然后判断动作结束这一动作状态是否标准,若该动作结束的动作状态是标准的,则表示测试者完成了一个深蹲动作,至此,实现了对多个测试者的深蹲过程实行同时检测无需人工干预,提高了检测效率。当深蹲过程检测标准后,还需要检测测试者是否在规定时间内完成一个深蹲动作,若测试者在规定时间内完成一个深蹲动作,则表示测试者在规定时间内完成了一个深蹲动作,为了检测测试者的整个深蹲是否标准,还需要检测测试者的双足关键点之间的距离和双肩关键点之间的距离的距离差,及臀部关键点和脖子关键点之间的距离是否满足标准深蹲的要求,以确定测试者的是否是标准的深蹲,完成对测试者的深蹲动作是否标准的检测,有效提高了检测准确性,并基于动作结束时刻统计动作标准的深蹲动作的个数,以实现自动统计测试者的深蹲个数,降低人工成本。
[0086] 如图2所示,进一步地,步骤S30,基于膝盖关键点夹角和脖子关键点在竖直方向上的位移,确定测试者的动作状态是否为动作开始,具体包括如下步骤:
[0087] S31:将膝盖关键点夹角与预设站立夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较。
[0088] S32:当膝盖关键点夹角大于预设站立夹角阈值,且脖子关键点在竖直方向上的位移小于等于预设位移,则确定测试者的动作状态为动作开始。
[0089] 如图3所示,进一步地,步骤S40,将膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较,确定测试者的动作状态是否为动作中,具体包括如下步骤:
[0090] S41:若膝盖关键点夹角大于预设运动夹角阈值且小于等于预设站立夹角阈值,脖子关键点在竖直方向上的位移大于预设位移,则确定测试者在对应的原始帧图像中的动作状态为下降动作中。
[0091] S42:当动作状态为下降,若膝盖关键点夹角大于预设下蹲夹角阈值且小于等于预设运动夹角阈值,脖子关键点在竖直方向上的位移大于预设位移,则确定测试者在对应的原始帧图像中的动作状态为下蹲动作中。
[0092] 进一步地,若膝盖关键点夹角小于等于预设下蹲夹角阈值,则认为测试者下蹲过于向下,是一个不规范的下蹲动作。
[0093] S43:当动作状态为下蹲,若膝盖关键点夹角大于预设运动夹角阈值且小于等于预设站立夹角阈值,脖子关键点在竖直方向上的位移大于预设位移,则确定测试者在对应的原始帧图像中的动作状态为上升动作中。
[0094] 步骤S41-步骤S42,通过判断膝盖关键点夹角和脖子关键点在竖直方向上的位移是否满足设置的动作中的要求,以确定测试者在运动中这一动作状态是否标准,提高检测准确率。
[0095] 如图4所示,进一步地,步骤S70中,基于待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和脖子关键点,获取测试者的动作检测结果,具体包括如下步骤:
[0096] S71:基于双足关键点计算双足关键点距离,基于双肩关键点计算双肩关键点距离。
[0097] S72:计算双足关键点距离和双肩关键点距离的距离差,并将距离差的绝对值作为第一距离。
[0098] S73:基于臀部关键点和脖子关键点计算第二距离。
[0099] S74:当第一距离小于等于第一计算阈值,且第二距离大于等于第二计算阈值,则获取动作标准的动作检测结果。
[0100] 其中,第一计算阈值指设置的用于判断双足关键点距离和双肩关键点距离的距离差是否满足要求的值。第二计算阈值指设置的用于判断臀部关键点和脖子关键点的距离是否满足要求的值。
[0101] 如图5所示,进一步地,步骤S10,获取原始帧图像,基于人体姿态识别算法,按照原始帧图像的时间顺序对每一原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点,具体包括如下步骤:
[0102] S11:获取原始帧图像,基于行人检测算法,按照原始帧图像的时间顺序对每一原始帧图像进行目标追踪,获取待识别目标。
[0103] 本实施例中的行人检测算法指对原始帧图像中的行人进行检测追踪的算法,包括行人检测和行人跟踪两种算法。
[0104] 其中,待识别目标指原始帧图像各测试者做深蹲动作的图像数据。
[0105] S12:基于人脸识别算法对每一待识别目标进行人脸识别,获取身份信息。
[0106] 本实施例中的人脸识别算法包括但不限于人脸识别开源库Dlib、libfacedetection,或商业开放人脸识别库SDK,Face++人脸识别库、百度AI人脸识别库。
[0107] 其中,待身份信息指根据人脸识别算法对每一待识别目标进行人脸识别得到的可以表示测试者身份数据,包括但不限于年龄和性别。
[0108] S13:基于人体姿态识别算法对每一待识别目标进行识别,获取每一测试者对应的待识别骨骼关键点。
[0109] 如图6所示,进一步地,步骤S11,获取原始帧图像,基于行人检测算法,按照原始帧图像的时间顺序对每一原始帧图像进行目标追踪,获取待识别目标,具体包括如下步骤:
[0110] S111:获取原始帧图像,按照原始帧图像的时间顺序对每一对原始帧图像进行预处理,获取有效帧图像。
[0111] 其中,有效帧图像指对原始帧图像进行图像处理后得到的图像。
[0112] S112:基于行人检测算法对每一有效帧图像进行目标追踪,获取待识别目标。
[0113] 如图7所示,进一步地,本方法还包括如下步骤:
[0114] S91:按照时间先后顺序,将第一个动作开始时刻作为运动开始时刻。
[0115] 由于原始帧图像中会存在测试者做深蹲动作前的一些图像(如调整状态、按规定站定等),为了提高后续判断的准确性,因此,将第一个动作开始时刻作为运动开始时刻。其中,运动开始时刻指测试者开始做深蹲运动的时刻。
[0116] S92:基于所述运动开始时刻,统计预设运动时长内的深蹲个数,基于身份信息,选区对应的评分标准对深蹲个数进行打分,获取测试者的运动分数,基于运动分数确定测试者的运动是否达标。
[0117] 其中,预设运动时长指预先设定好的可以达到深蹲训练效果的运动时长。
[0118] 由于不同年龄和不同性别的测试者的身体素质不同,在规定的预设运动时间内所能做的动作标准的深蹲个数也不同,因此,本实施例对不同年龄和性别的测试者做了多少个动作标准的深蹲动作设置了不同的评分标准。如运动训练时间为15分钟,年龄在20-30之间的男性做35个以下对应60分,35个-40个(包含端点值)对应80分,40个以上对应95分,年龄在30-35之间的男性平板支撑动作的时长为30个以下对应60分,30个-35个(包含端点值)对应80分,35个以上对应95分,年龄在20-30之间的女性做30个以下对应60分,30个-35个(包含端点值)对应80分,35个以上对应95分,年龄在30-35之间的女性平板支撑动作的时长为25个以下对应60分,25个-30个(包含端点值)对应80分,35个以上对应95分,80分及以上为达标,80分以下为不达标。
[0119] 本发明提供的基于人体关键点的深蹲检测方法,通过对原始帧图像进行预处理,获取有效帧图像,以减少后续图像处理的数据,提高后续图像处理的效率。通过行人检测算法和人脸识别算法先对每一有效帧图像进行目标追踪,然后对追踪到的目标进行人脸识别,以实现对有效帧图像中的每一个测试者进行准确识别,为后续准确识别每一测试者深蹲过程提供可靠的数据来源。通过人体姿态识别算法,识别每一帧原始帧图像中所有测试者的待识别骨骼关键点,并获取膝盖关键点夹角和脖子关键点在竖直方向上的位移,通过判断膝盖关键点夹角和脖子关键点在竖直方向上的位移是否满足动作开始条件、动作中条件和动作结束条件,确定测试者在动作中这一动作状态下是否标准,当测试者载动作中这一动作状态下是标准的,然后判断动作结束这一动作状态是否标准,若该动作结束的动作状态是标准的,则表示测试者完成了一个深蹲动作,至此,实现了对多个测试者的深蹲过程实行同时检测无需人工干预,提高了检测效率。当深蹲过程检测标准后,还需要检测测试者是否在规定时间内完成一个深蹲动作,若测试者在规定时间内完成一个深蹲动作,则表示测试者在规定时间内完成了一个深蹲动作,为了检测测试者的整个深蹲是否标准,还需要检测测试者的双足关键点之间的距离和双肩关键点之间的距离的距离差,及臀部关键点和脖子关键点之间的距离是否满足标准深蹲的要求,以确定测试者的是否是标准的深蹲,完成对测试者的深蹲动作是否标准的检测,有效提高了检测准确性,为了确定测试者的运动是否达标,还需要对测试者的运动时长打分,以实现自动统计判断深蹲运动是否达标,无需人工判断。
[0120] 实施例2
[0121] 如图8所示,本实施例与实施例1的区别在于,一种基于人体关键点的深蹲检测装置,包括:
[0122] 待识别骨骼关键点获取模块10,用于获取原始帧图像,基于人体姿态识别算法,按照原始帧图像的时间顺序对每一原始帧图像进行识别,获取每一测试者对应的待识别骨骼关键点。
[0123] 待识别骨骼关键点处理模块20,用于基于待识别骨骼关键点,获取膝盖关键点夹角和脖子关键点在竖直方向上的位移。
[0124] 动作开始判断模块30,用于基于膝盖关键点夹角和脖子关键点在竖直方向上的位移,确定测试者的动作状态是否为动作开始。
[0125] 动作中判断模块40,用于当动作状态为动作开始,则将膝盖关键点夹角分别与预设站立夹角阈值、预设运动夹角阈值和预设下蹲夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较,确定测试者的动作状态是否为动作中。
[0126] 动作结束判断模块50,用于当动作状态为运动中,则将膝盖关键点夹角与预设站立夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较,确定测试者的动作状态是否为动作结束。
[0127] 动作时长计算模块60,用于当动作状态为动作结束,则将动作状态为动作开始时的时刻作为动作开始时刻,动作状态为动作结束时的时刻作为动作结束时刻,基于动作开始时刻和动作结束时刻,获取实际动作时长。
[0128] 动作检测结果获取模块70,用于当实际动作时长小于等于预设标准动作时长,则基于待识别骨骼关键点选取双足关键点、双肩关键点、臀部关键点和脖子关键点,获取测试者的动作检测结果。
[0129] 深蹲个数统计模块80,用于当动作检测结果为动作标准,则基于动作结束时刻统计深蹲个数。
[0130] 进一步地,动作开始判断模块30包括动作开始参数比较单元和动作开始结果获取单元。
[0131] 动作开始参数比较单元,用于将膝盖关键点夹角与预设站立夹角阈值进行比较,并将脖子关键点在竖直方向上的位移和预设位移进行比较。
[0132] 动作开始结果获取单元,用于当膝盖关键点夹角大于预设站立夹角阈值,且脖子关键点在竖直方向上的位移小于等于预设位移,则确定测试者的动作状态为动作开始。
[0133] 进一步地,动作中判断模块40包括下降动作状态判断单元、下蹲动作状态判断单元和上升动作状态判断单元。
[0134] 下降动作状态判断单元,用于若膝盖关键点夹角大于预设运动夹角阈值且小于等于预设站立夹角阈值,脖子关键点在竖直方向上的位移大于预设位移,则确定测试者在对应的原始帧图像中的动作状态为下降动作中。
[0135] 下蹲动作状态判断单元,用于当动作状态为下降,若膝盖关键点夹角大于预设下蹲夹角阈值且小于等于预设运动夹角阈值,脖子关键点在竖直方向上的位移大于预设位移,则确定测试者在对应的原始帧图像中的动作状态为下蹲动作中。
[0136] 上升动作状态判断单元,用于当动作状态为下蹲,若膝盖关键点夹角大于预设运动夹角阈值且小于等于预设站立夹角阈值,脖子关键点在竖直方向上的位移大于预设位移,则确定测试者在对应的原始帧图像中的动作状态为上升动作中。
[0137] 进一步地,动作检测结果获取模块70包括关键点参数获取单元、第一距离计算单元、第二距离计算单元和动作检测结果获取单元。
[0138] 关键点参数获取单元,用于基于双足关键点计算双足关键点距离,基于双肩关键点计算双肩关键点距离。
[0139] 第一距离计算单元,用于计算双足关键点距离和双肩关键点距离的距离差,并将距离差的绝对值作为第一距离。
[0140] 第二距离计算单元,用于基于臀部关键点和脖子关键点计算第二距离。
[0141] 动作检测结果获取单元,用于当第一距离小于等于第一计算阈值,且第二距离大于等于第二计算阈值,则获取动作标准的动作检测结果。
[0142] 进一步地,待识别骨骼关键点获取模块10包括待识别目标获取单元、身份信息获取单元和待识别骨骼关键点获取单元。
[0143] 待识别目标获取单元,用于获取原始帧图像,基于行人检测算法,按照原始帧图像的时间顺序对每一原始帧图像进行目标追踪,获取待识别目标。
[0144] 身份信息获取单元,用于基于人脸识别算法对每一待识别目标进行人脸识别,获取身份信息。
[0145] 待识别骨骼关键点获取单元,用于基于人体姿态识别算法对每一待识别目标进行识别,获取每一测试者对应的待识别骨骼关键点。
[0146] 进一步地,待识别目标获取单元包括原始帧图像处理单元和目标追踪单元[0147] 原始帧图像处理单元,用于获取原始帧图像,按照原始帧图像的时间顺序对每一对原始帧图像进行预处理,获取有效帧图像。
[0148] 目标追踪单元,用于基于行人检测算法对每一有效帧图像进行目标追踪,获取待识别目标。
[0149] 进一步地,基于人体关键点的深蹲检测装置还包括运动时刻获取模块、运动时长计算模块和运动达标判断模块。
[0150] 运动时刻获取模块,用于按照时间先后顺序,将第一个动作开始时刻作为运动开始时刻。
[0151] 运动达标判断模块,用于基于运动开始时刻,统计预设运动时长内的深蹲个数,基于身份信息,选取对应的评分标准对深蹲个数进行打分,获取测试者的运动分数,基于运动分数确定测试者的运动是否达标。
[0152] 关于基于人体关键点的深蹲检测的具体限定可以参见上文中对于基于人体关键点的深蹲检测方法的限定,在此不再赘述。上述基于人体关键点的深蹲检测中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
[0153] 实施例3
[0154] 本实施例提供一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括计算机可读存储介质、内存储器。该计算机可读存储介质存储有操作系统、计算机程序和数据库。该内存储器为计算机可读存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储基于人体关键点的深蹲检测的方法中涉及到的数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于人体关键点的深蹲检测方法。
[0155] 本实施例提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中基于人体关键点的深蹲检测的方法的步骤,例如图1所示的步骤S10-S80,或者图2至图7中所示的步骤,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现上述实施例中基于人体关键点的深蹲检测的装置的各模块/单元的功能,例如图8所示模块10至模块80的功能。为避免重复,这里不再赘述。
[0156] 实施例4
[0157] 本实施例提供一计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中信息推送方法的步骤,例如图1所示的步骤S10-S80,或者图2至图7中所示的步骤,为避免重复,这里不再赘述。或者,处理器执行计算机程序时实现信息推送装置这一实施例中的各模块/单元的功能,例如图8所示的模块10至模块80的功能。为避免重复,这里不再赘述。
[0158] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0159] 所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
[0160] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。