发明内容
针对上述缺陷,本发明所要解决的技术问题在于提供一种智能识别仰卧起坐动作姿态完成状况的***和方法,以解决现有技术识别结果不够准确、前期需要大量的样本数据训练模型,工作量较大的问题。
为此,本发明提供了一种智能识别仰卧起坐动作姿态完成状况的方法,包括以下步骤:
将完成一次仰卧起坐的标准动作姿态划分为身体上升阶段和身体下降阶段两个阶段;
设定肩关节、腰关节和膝关节形成的夹角为关键角;
比较测试视频中前、后相邻的两帧图像中的关键角,并对前、后相邻的两帧图像中的关键角的比较结果进行标识,将所述标识串联组成结果列表;
使用滑动窗口遍历所述结果列表,并将滑动窗口内的所有标识替换为数量最多的标识,所述滑动窗口至少包括五帧;
根据结果列表中所述标识的改变,识别获得仰卧起坐的身体上升阶段和身体下降阶段;
根据识别获得的仰卧起坐的身体上升阶段和身体下降阶段的交替,识别出仰卧起坐的动作姿态。
在上述方法中,优选地,所述标识采用数字0或1表示。
在上述方法中,优选地,通过检测关键角是否小于第一阈值,判断身体上升动作是否完成,并在身体上升动作完成时生成第一完成标记;
通过检测关键角是否大于第二阈值,判断的身体下降动作是否完成,并在身体下降动作完成时生成第二完成标记;
根据第一完成标记和第二完成标记进行计数;
所述第一阈值为仰卧起坐身体最高点姿态时肩关节、腰关节和膝关节形成的夹角;所述第二阈值为仰卧起坐起始姿态时肩关节、腰关节和膝关节形成的夹角。
在上述方法中,优选地,经过一次连续的第一完成标记和第二完成标记,则正确计数加1,否则,错误计数加1。
在上述方法中,优选地,通过检测腿部膝盖弯曲、手肘是否触及膝部以及手部是否离开肩膀,判断上升动作是否正确。
在上述方法中,优选地,当测试者的仰卧起坐动作姿态变化为起始阶段时,记录测试视频的时间戳,并将所述时间戳关联到每一个计数,所述计数生成下拉列表,通过点击所述下拉列表中的计数,跳转到时间戳所指引的测试视频进行回放。
本发明还提供了一种智能识别仰卧起坐动作姿态完成状况的***,包括用于获取测试视频的影像获取装置,以及动作姿态识别装置,所述动作姿态识别装置包括:
标识模块,用于比较所述测试视频中前后相邻的两帧图像中的关键角,并对两帧图像中的关键角的比较结果进行标识,将所述标识串联组成结果列表;其中,所述关键角为肩关节、腰关节和膝关节形成的夹角;
升降阶段识别模块,用于根据所述结果列表中的所述标识的改变,识别获得仰卧起坐的身体下降阶段或身体上升阶段;其中,预先将完成一次仰卧起坐的动作姿态划分为身体下降阶段和身体上升阶段两个阶段;
校正模块,用于利用滑动窗口遍历所述结果列表,并将滑动窗口内的所有标识替换为数量最多的标识,所述滑动窗口至少包括五帧;
动作姿态识别模块,用于根据识别获得的身体下降阶段或身体上升阶段的交替,识别出仰卧起坐的动作姿态。
在上述***中,优选地,还包括计数模块,
通过检测关键角是否小于第一阈值,判断仰卧起坐的上升动作是否完成,并在上升动作完成时生成第一完成标记;
通过检测关键角是否大于第二阈值,判断仰卧起坐的下降动作是否完成,并在下降动作正确时生成第二完成标记;
根据第一完成标记和第二完成标记进行计数。
在上述***中,优选地,还包括时间戳关联模块,当测试者的仰卧起坐动作姿态变化为起始阶段时,记录测试视频的时间戳,并将所述时间戳关联到每一个计数,所述计数生成下拉列表,通过点击所述下拉列表中的计数,跳转到时间戳所指引的测试视频进行回放。
由上述技术方案可知,本发明提供的智能识别仰卧起坐动作姿态完成状况的***和方法,解决了现有技术的识别结果不够准确的问题。与现有技术相比,本发明具有以下有益效果:
通过比较视频中前、后两帧图像的关键角识别身体下降阶段和身体上升阶段,近而识别出仰卧起坐动作姿态的完成状况,无须训练识别模型,利用视频图像可以直接识别,简化了算法,部署快速方便。
另外,本发明使用滑动窗口遍历所述结果列表,并将滑动窗口内的所有标识替换为数量最多的标识,减少了数据振荡的影响,识别结果更准确。
具体实施方式
下面将结合本发明实施例附图,对本发明实施例的技术方案进行清楚、完整地描述,显然,以下所描述的实施例,仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动的前提下,所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实现原理是:
设定与仰卧起坐动作姿态对应的身体相关部位所形成的关键角;
比较测试视频中前、后相邻两帧图像中的关键角,并对关键角的比较结果进行标识;
将所述标识串联组成结果列表,并根据所述结果列表中标识的改变,获得动作姿态的完成状况。
本发明提供的方案,通过比较视频中前、后两帧图像的关键角识别身体下降阶段和身体上升阶段,近而识别出动作姿态的完成状况,无须训练识别模型,利用视频图像可以直接识别,简化了算法,部署快速方便。
为了对本发明的技术方案和实现方式做出更清楚地解释和说明,以下介绍实现本发明技术方案的几个优选的具体实施例。
需要说明的是,本文中“内、外”、“前、后”及“左、右”等方位词是以产品使用状态为基准对象进行的表述,显然,相应方位词的使用对本方案的保护范围并非构成限制。
一个完整标准的仰卧起坐动作姿态包括:起始姿态,身体上升阶段,最高点,身体下降阶段和返回起始姿态。
起始姿态:上体后仰至肩胛骨触及地垫,屈膝成90度左右,脚部平放在地垫,双手交叠置于胸前并放在两个肩膀上,或者将两手置于脑后。
身体上升阶段:收紧腹肌,慢慢把头抬起,然后将上身抬起,整个过程两个脚掌必须始终紧贴地面,眼睛注视膝盖收缩腹肌,直到上身与大腿成90度,或者手肘碰到或超过膝盖为止。
身体下降阶段:到达最高点后,保持一定时间,而后慢慢将上身后躺,直到身体仰卧于地垫上,重新回到起始姿态。
仰卧起坐动作要领包括:上体后仰至肩胛骨触及地板、上体前屈、下颌收紧、上体前屈至两肘同时触及膝部或大腿部位、双臂始终保持交叉抱于胸前、双手扶肩。
常见错误:仰卧时两肩背部未触及垫子,屈体时双肘未触及膝部,双手没有抱头,双手离肩,膝关节没有屈曲成90度、借用肘部撑垫或臀部起落的力量完成起坐等,出现此类错误姿态时,不进行计数。
出现躺在垫上休息的情况,结束考核。
具体实施例1
请参见图1,图1为本发明提供的一种智能识别仰卧起坐动作姿态完成状况的方法的流程图,该方法包括以下步骤:
步骤110,将完成一次仰卧起坐的标准动作姿态划分为身体上升阶段和身体下降阶段两个阶段。
如图2所示,从上至下依次为:起始姿态、身体上升阶段、最高点、身体下降阶段和返回起始姿态。
由此可见,自起始姿态到返回起始姿态,仰卧起坐动作经过了一个身体上升阶段和一个身体下降阶段,本发明方案,正是基于对身体上升阶段和身体下降阶段的识别,近而识别出仰卧起坐的动作姿态。
步骤120,设定肩关节、腰关节和膝关节形成的夹角为关键角。
如图3所示,肩关节、腰关节和膝关节形成的关键角为图3中的角A。
关键角的识别是基于现有技术中人体骨骼识别技术(人体姿态估计算法)实现的,例如:华为HMS ML kit人体骨骼识别技术,tensorflow的OpenPose等,本发明方案可采用上述等人体骨骼识别技术实现动作姿态识别算法。
步骤130,捕获正在进行的仰卧起坐的测试视频,或者导入并播放已经存在的仰卧起坐的测试视频。从仰卧起坐的起始姿态开始,实时比较测试视频中前、后相邻的两帧图像中的关键角的大小,对关键角的比较结果进行标识,并将标识串联组成结果列表。
为了计算方便,可以采用数字0或1对关键角的比较结果进行标识。
如果相邻的两帧图像,后一帧图像中的关键角小于前一帧图像中的关键角,则将比较结果标记为1,表示处于身体上升阶段;反之,如果后一帧图像中的关键角大于前一帧图像中的关键角,则将比较结果标记为0,表示处于身体下降阶段。
如图4所示,第t+1帧中的关键角At+1小于第t帧中的关键角At,即At+1<At,则将比较结果标识为1,表示处于身体上升阶段;如果At+1>At,则将比较结果标识为0,表示处于身体下降阶段。
由此,假设当前人员做出的仰卧起坐的动作姿态标准,且检测环境非常好,数据完全准确,则一次仰卧起坐的动作姿态会经历一个身体上升阶段和一个身体下降阶段,标识后会形成一个结果列表【11111111110000000000】。
步骤140,根据结果列表中标识的改变,识别获得仰卧起坐的身体上升阶段和身体下降阶段。
例如上述结果列表【11111111110000000000】中,前10位均为1,后10位均为0,第10位到第11位由1改变为0,因此,第10位之前的动作是身体上升阶段,第11位之后的动作是身体下降阶段,根据结果列表的位数,可对应到测试视频中的某一帧画面。
步骤150,根据识别获得的仰卧起坐的身体上升阶段和身体下降阶段的交替,识别出仰卧起坐的动作姿态。
由于测试视频是一个连续的过程,因此,结果列表也会是连续的,例如【1111111111000000000011111111110000000000……】,这样,根据标识身体上升阶段和身体下降阶段的交替,就可以识别出整个测试视频中仰卧起坐的动作姿态,并据此进行计数。
例如上述连续的结果列表会计数为2,表示完成了两次仰卧起坐动作。
由于在识别测试视频的过程中,可能因为视频抖动、环境光线变化等因素的影响,造成一定的意外,致使数据产生意外振荡,例如产生的结果列表为【10101111110010010000】,为此,本发明方案还提出了消除意外振荡数据的方法,具体方法为:
使用较小数量帧的滑动窗口,遍历结果列表,并将滑动窗口内的所有标识,统一替换为数量最多的标识,滑动窗口的大小可以基于摄像头的帧率等情况而设定,通常至少定义五帧,滑动窗口的步长为滑动窗口的一半取整数,例如,滑动窗口大小为五帧,则步长为3帧。
如图5所示,例如上述结果列表中,通过滑动窗口,在第一个滑动窗口中,有三个1,两个0,因此,将其中的两个0替换为1,从而上述结果列表转化为【11111111110000000000】,然后通过这个转化后和结果列表进行身体上升、身体下降阶段的识别划分。
本发明方案中,在动作的最高点和最低点会分别设置最高夹角阈值和最低夹角阈值,分别记为第一阈值和第二阈值,根据关键角与最高夹角阈值或最低夹角阈值的比较,来判断身体下降和身体上升阶段是否正确完成。
例如:在身体上升阶段,如果关键角小于等于最高夹角阈值,则表明上升动作完成;否则,表明上升动作未完成,如果上升动作未完成,然后又进入身体下降阶段,则表明本次仰卧起坐动作姿态是错误的,不予正确计数,错误计数加1。
在身体下降阶段,如果关键角大于等于最低夹角阈值,则表明下降动作完成;否则,表明下降动作未完成,如果下降动作未完成,然后又进入了身体上升阶段,则表明本次仰卧起坐动作姿态是错误的,不予正确计数,错误计数加1。
经过一次连续的身体上升阶段+身体下降阶段,作为一次计数的周期,经过一次连续的上升动作完成和下降动作完成,才会正确计数加1。
第一阈值和第二阈值通常设定为50度和120度,当然,本发明方案中,第一阈值和第二阈值也是可以手动修改的,以适应不同的个体。
现有技术识别对于仰卧起坐动作姿态识别准确性较差的主要因素在于测试者个体差异的影响,本发明方案,为了最大限度地提高仰卧起坐动作姿态识别的准确率,对于第一阈值和第二阈值这两个重要的参数能够进行自动调整。具体方法为:
预先利用人体身高、大臂、小臂、躯干以及大腿、小腿的长度和比例模型模拟,计算出对应的最合理的第一阈值和第二阈值;可以通过作图的方式模拟获得,也可以通过大数据建模获得。
现场根据人体姿态估计算法获得的测试者骨骼识别数据,以及影像获取装置与测试者的距离,计算得到测试者的身高;
再根据人体姿态估计算法获得的测试者大臂、小臂、躯干以及大腿、小腿的长度和比例,自动匹配到最合理的第一阈值和第二阈值。
由此,可以使得身体上升和身体下降动作的完成状态判断结果更加准确,从而使得本发明方案中动作姿态识别的准确性远远高于现有技术。
本发明提供的方案,还可以检测常见错误,结合骨骼关键点连接和身体运动阶段进行判断,例如,在身体上升阶段,通过检测腿部膝盖弯曲夹角,手肘是否触及膝部、手部是否离开肩膀等等,判断动作姿态是否标准,对于不标准的动作姿态,不予正确计数,而是进行错误计数加1。
以上这些检测都是通过识别相应的夹角,以及相应的骨骼点连线重合而获得的,其算法较前面的更简单,在此不再赘述。
本发明方法中,当测试者的仰卧起坐动作姿态变化为起始阶段时,记录测试视频的时间戳(当前视频时间轴上的时刻),并将所述时间戳关联到每一个计数,所述计数生成下拉列表,通过点击所述下拉列表中的计数,跳转到时间戳所指引的测试视频进行回放。
具体实施例2
本发明具体实施例2提供了一种智能识别仰卧起坐动作姿态完成状况的***,如图6所示,该***包括用于获取测试视频的影像获取装置10以及动作姿态识别装置20、显示装置30和提示装置40。
其中,动作姿态识别装置20内设有上述智能识别仰卧起坐动作姿态完成状况的算法。具体地,动作姿态识别装置20包括:
标识模块21,用于比较测试视频中前后相邻的两帧图像中的关键角,并对两帧图像中的关键角的比较结果进行标识。标识后将标识串联组成结果列表;其中,关键角为肩膀、手肘和手腕形成的夹角。
升降阶段识别模块22,用于根据结果列表中的标识的改变,识别获得仰卧起坐的身体下降阶段或身体上升阶段;其中,预先将完成一次仰卧起坐的动作姿态划分为身体下降阶段和身体上升阶段两个阶段。
动作姿态识别模块23,用于根据识别获得的身体下降阶段或身体上升阶段的交替,识别出仰卧起坐的动作姿态。
在此基础上,动作姿态识别装置还包括校正模块24,用于利用滑动窗口遍历结果列表,并将滑动窗口内的所有标识替换为数量最多的标识,滑动窗口至少包括五帧。
在此基础上,动作姿态识别装置还包括计数模块25。
计数模块25通过检测关键角是否小于第一阈值,判断仰卧起坐的上升动作是否完成,并在上升动作完成时生成上升完成标记;通过检测关键角是否大于第二阈值,判断仰卧起坐的下降动作是否完成,并在下降动作完成时生成下降完成标记;根据上升完成标记和下降完成标记进行计数。
在此基础上,还包括时间戳关联模块,当测试者的仰卧起坐动作姿态变化为起始阶段时,记录测试视频的时间戳(当前视频时间轴上的时刻),并将时间戳关联到每一个计数,计数生成下拉列表,通过点击下拉列表中的计数,跳转到时间戳所指引的测试视频进行回放。
在***部署过程中,为了使检测结果更准确,排除环境因素的影响,本发明还设有AR(Augmented Reality)辅助线,如图7所示,AR辅助线包括:
位置辅助线31,用于确定测试者移动至为测试者推荐的测试或者训练的位置,该位置辅助线为一条线,在显示装置上标注运动毯、瑜伽毯、训练垫、运动垫子、防滑运动垫子等需要摆放的位置,使运动垫的侧边与该位置辅助线重合,从而提高识别的准确率。
测试区域辅助线32,为矩形框,用于设置测试区域,只在测试区域进行推理判断骨骼关键点,减少计算运算量,同时骨骼关键点连接形成关键角也可以显示,该辅助信息可以进行对比帮助纠正运动姿态。
综合以上具体实施例的描述,本发明提供的智能识别仰卧起坐动作姿态完成状况的***和方法,与现有技术相比,具有如下优点:
首先,通过比较视频中前、后两帧图像的关键角识别身体上升阶段和身体下降阶段,近而识别出仰卧起坐动作姿态的完成状况,无须训练识别模型,利用视频图像可以直接识别,简化了算法,部署快速方便。
第二、采用数字1和0对关键角的比较结果进行标识,与现有技术直接比较夹角值大小相比,简化了后续数据处理算法,提高了数据处理效率。
第三、基于1和0的标识,通过滑动窗口算法,消除意外振荡数据,提高了识别的准确性。
第四、通过设置AR辅助线,一方面提高了识别的准确性,另一方面也可避免其他人员意外进入视频中而增加计算量,提高了效率。
第五、整个***便捷性强,而且可以在不接入互联网的情况下运行,部署快捷、方便。
最后,还需要说明的是,在本文中使用的术语"包括"、"包含"或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句"包括一个…"限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明并不局限于上述最佳实施方式,任何人应该得知在本发明的启示下做出的结构变化,凡是与本发明具有相同或相近的技术方案,均落入本发明的保护范围之内。