1.方案介绍
百度推出了人体关键点识别,检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶、五官、颈部、四肢主要关节部位,支持多人检测、大动作等复杂场景。支持多人体检测,检测图像中的所有人体,标记出每个人体的坐标位置;不限人体数量,适应人体轻度遮挡、截断的情况。
人体关键点识别的功能特点可以应用到体育健身,根据人体关键点信息,分析人体姿态、运动轨迹、动作角度等,辅助运动员进行体育训练,分析健身锻炼效果,提升教学效率。在这些应用中对人体姿态的判定是一个关键,通过姿态判定进而判断运动员或者体育爱好者的动作是否符合要求,对于体操,瑜伽等对姿态要求比较高的体育活动;甚至是体感游戏都有很好的帮助。
2.方案思路及实现
本攻略通过人体关键点,计算出人的 左右手臂,左右肩部,左右腿部以及左右髋部8个夹角,进而与要求标准夹角及允许的误差范围进行对比。从而实现人体姿态的判定及打分。我开发的功能在提供姿态打分的同时,提供原图基础上的渲染图及动作分析图,方便运动员进行分析。主要内容包括以下方面:
2.1平台接入
具体接入方式比较简单:
2.2 百度人体关键点功能调用:
请参照我的另外一篇文章:第四期【百度大脑新品体验】人体关键点识别
2.3 其他方面:
夹角计算:通过余弦计算。
关键点过滤:对于不同置信度的关键点以不同的颜色显示在渲染图及分析图上,0.9分以上的用绿色,0.5-0.9用黄色,0.5以下用红色。方便用户识别。
渲染图:在原图上进行渲染,显示关键点和主要连线,包括身体,四肢,头部,脸部增加一条中轴线从头顶到鼻子到颈部。
分析图:在新的图片上显示关键点和主要连线,包括身体,四肢,头部,脸部增加一条中轴线从头顶到鼻子到颈部,方便用户查看人脸方向。同时显示每个位置的夹角及是否满足要求,如果符合显示绿色,如果不符显示红色。方便运动员进行分析。
判定分数:100*通过的夹角数量/总识别出来的夹角数量
3.实现效果及测试
案例1:一个经典的体操鞍马动作:
要求四肢平直,右腿与身体平直,左腿75度左右。以下为具体的角度要求:
required_pose1={
'shoulder_left_angle':[15,10],
'shoulder_right_angle':[60,10],
'hip_left_angle':[180,10],
'hip_right_angle':[75,10],
'arm_left_angle':[180,10],
'arm_right_angle':[180,10],
'leg_left_angle':[180,10],
'leg_right_angle':[180,10]
}
上面的每组数值第一个为要求的角度,第二个为允许误差空间。
下面为渲染图,分析图和报告:
处理时长:0.71秒
person_num: 1
左肩:13.0,符合
右肩:57.5,符合
左髋:175.6,符合
右髋:71.6,符合
左臂:171.2,符合
右臂:173.1,符合
左腿:171.9,符合
右腿:178.8,符合
动作评分:100.0
案例2:多人双手张开动作:
动作模板,双手张开:
required_pose2={
'shoulder_left_angle':[90,10],
'shoulder_right_angle':[90,10],
'hip_left_angle':[170,10],
'hip_right_angle':[170,10],
'arm_left_angle':[180,10],
'arm_right_angle':[180,10],
'leg_left_angle':[180,10],
'leg_right_angle':[180,10]
}
渲染图:
分析图:
报告:
处理时长:4.00秒
person_num: 2
左肩:93.6,符合
右肩:99.5,符合
左髋:165.8,符合
右髋:171.7,符合
左臂:171.9,符合
右臂:180.0,符合
左腿:174.5,符合
右腿:175.2,符合
动作评分:100.0
左肩:116.6,不符
右肩:108.4,不符
左髋:156.8,不符
右髋:164.7,符合
左臂:175.2,符合
右臂:180.0,符合
左腿:nan,不符
右腿:175.2,符合
动作评分:50.0
案例3,瑜伽动作:
动作模板:
required_pose3={
'shoulder_left_angle':[180,10],
'shoulder_right_angle':[80,10],
'hip_left_angle':[110,10],
'hip_right_angle':[80,10],
'arm_left_angle':[45,10],
'arm_right_angle':[45,10],
'leg_left_angle':[30,10],
'leg_right_angle':[55,10]
}
渲染图:
分析图:
报告:
处理时长:0.82秒
person_num: 1
左肩:172.1,符合
右肩:79.0,符合
左髋:108.1,符合
右髋:81.9,符合
左臂:37.4,符合
右臂:36.9,符合
左腿:9.0,不符
右腿:48.2,符合
动作评分:87.5
4.关键代码
5.测试结果及与竞品的对比
整体测试下来发现,百度人体关键点识别对人体关键点有较强的识别能力,在此基础上构建的人体姿态判定打分功能的效果很好,速度也很快。可以广泛的应用于体育健身及娱乐互动等方面。
现在国内做人体关键点产品的除了百度还有商汤和Face++,在这里也做一个简单的对比。
FACE++:
Face++对应的功能名称是:人体骨骼关键点检测 API。效果为传入图片进行人体检测和骨骼关键点检测,定位并返回人体14个关键点(头、颈、肩、肘、手、臀、膝、脚)等部位。支持对图片中的所有人体进行骨骼检测
具体点位如下图所示:
分析效果如图:
商汤科技:
支持14 点人体关键点定位,通过 RGB 图像输入超实时给出人体头、肩、腰、腿等位置。分析效果如图所示:
通过对比可以发现,功能方面,Face++和商汤科技都是检测14个点,百度是21个点。百度多的点主要是在面部,这对于判定人脸的朝向和面部表情有很大帮助(大家可以对比一下渲染图,百度可以渲染出脸部朝向,其他的两个不行)这一点对于一些应用场景是很有用的。性价比方面,百度现在有50000次/天免费调用量,这对于测试和小型应用都足够了。对于商业应用的的价格也很低,所以百度性价比的优势也很大。
6.优化建议
就像手部有关键点识别和手势识别一样,建议百度直接建立一个人体姿态识别的新功能,直接返回人体的姿态识别的结果。可以在夹角的基础上增加更多的内容。对于有这方面需要的用户,用的也更方便。
作者:才能我浪费99
免责声明:本网站内容主要来自原创、合作伙伴供稿和第三方自媒体作者投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。任何单位或个人认为本网站中的网页或链接内容可能涉嫌侵犯其知识产权或存在不实内容时,应及时向本网站提出书面权利通知或不实情况说明,并提供身份证明、权属证明及详细侵权或不实情况证明。本网站在收到上述法律文件后,将会依法尽快联系相关文章源头核实,沟通删除相关内容或断开相关链接。