【使用攻略】【人体关键点识别】

1.方案介绍
百度推出了人体关键点识别,检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶、五官、颈部、四肢主要关节部位,支持多人检测、大动作等复杂场景。支持多人体检测,检测图像中的所有人体,标记出每个人体的坐标位置;不限人体数量,适应人体轻度遮挡、截断的情况。

人体关键点识别的功能特点可以应用到体育健身,根据人体关键点信息,分析人体姿态、运动轨迹、动作角度等,辅助运动员进行体育训练,分析健身锻炼效果,提升教学效率。在这些应用中对人体姿态的判定是一个关键,通过姿态判定进而判断运动员或者体育爱好者的动作是否符合要求,对于体操,瑜伽等对姿态要求比较高的体育活动;甚至是体感游戏都有很好的帮助。

2.方案思路及实现
本攻略通过人体关键点,计算出人的 左右手臂,左右肩部,左右腿部以及左右髋部8个夹角,进而与要求标准夹角及允许的误差范围进行对比。从而实现人体姿态的判定及打分。我开发的功能在提供姿态打分的同时,提供原图基础上的渲染图及动作分析图,方便运动员进行分析。主要内容包括以下方面:

2.1平台接入
具体接入方式比较简单,可以参考我的另一个帖子,这里就不重复了:
http://ai.baidu.com/forum/topic/show/943327

2.2 百度人体关键点功能调用:
请参照我的另外一篇文章:第四期【百度大脑新品体验】人体关键点识别
https://ai.baidu.com/forum/topic/show/954123

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 关键代码

import numpy as np
#求角度
def GetCrossAngle(l1p1,l1p2,l2p1,l2p2):arr_0 = np.array([(l1p2['x'] - l1p1['x']), (l1p2['y'] - l1p1['y'])])arr_1 = np.array([(l2p2['x'] - l2p1['x']), (l2p2['y'] - l2p1['y'])])cos_value = (float(arr_0.dot(arr_1)) / (np.sqrt(arr_0.dot(arr_0)) * np.sqrt(arr_1.dot(arr_1))))   result = 180-(np.arccos(cos_value) * (180/np.pi))result = round(result,1)return result#判断角度是否符合要求
def angle_if(d,beginkey,middlekey,endkey,draw,color,setFont,text='',required=None):total=0score=0if ((beginkey in d)&(endkey in d)&(middlekey in d)):total=1angle=GetCrossAngle(d[beginkey],d[middlekey],d[middlekey],d[endkey])result=text+str(angle)if required:#print(str(required[0]))if abs(angle-required[0])

5,测试结果及与竞品的对比

整体测试下来发现,百度人体关键点识别对人体关键点有较强的识别能力,在此基础上构建的人体姿态判定打分功能的效果很好,速度也很快。可以广泛的应用于体育健身及娱乐互动等方面。

现在国内做人体关键点产品的除了百度还有商汤和Face++,在这里也做一个简单的对比。

FACE++

Face++对应的功能名称是:人体骨骼关键点检测 API。效果为传入图片进行人体检测和骨骼关键点检测,定位并返回人体14个关键点(头、颈、肩、肘、手、臀、膝、脚)等部位。支持对图片中的所有人体进行骨骼检测

具体点位如下图所示:

分析效果如图:

商汤科技:

支持14 点人体关键点定位,通过 RGB 图像输入超实时给出人体头、肩、腰、腿等位置。分析效果如图所示:

通过对比可以发现,功能方面,Face++和商汤科技都是检测14个点,百度是21个点。百度多的点主要是在面部,这对于判定人脸的朝向和面部表情有很大帮助(大家可以对比一下渲染图,百度可以渲染出脸部朝向,其他的两个不行)这一点对于一些应用场景是很有用的。性价比方面,百度现在有50000次/天免费调用量,这对于测试和小型应用都足够了。对于商业应用的的价格也很低,所以百度性价比的优势也很大。

6,优化建议

就像手部有关键点识别和手势识别一样,建议百度直接建立一个人体姿态识别的新功能,直接返回人体的姿态识别的结果。可以在夹角的基础上增加更多的内容。对于有这方面需要的用户,用的也更方便。

百度AI攻略:实现人体姿态判定打分相关推荐

  1. 百度AI攻略:人体关键点识别

    第四期[百度大脑新品体验]人体关键点识别 1.功能描述: 检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶.五官.颈部.四肢主要关节部位,支持多人检测.大动作等复杂场景 2.平 ...

  2. 百度AI攻略:驾驶行为识别

    1.功能描述: 针对车载场景,识别驾驶员使用手机.抽烟.不系安全带.双手离开方向盘等动作姿态,分析预警危险驾驶行为,提升行车安全性 2.平台接入 具体接入方式比较简单,可以参考我的另一个帖子,这里就不 ...

  3. access百度翻译 get_百度AI攻略:智能上色

    1.功能描述: 想必大家家里都有很多黑白的老照片,里面有着满满的回忆.百度智能识别黑白图像内容并填充色彩,使黑白图像变得鲜活,让老照片重新焕发活力.说干就干,攻略和代码奉上. 2.平台接入 黑白图像上 ...

  4. 百度AI攻略:手写文字识别

    1.功能描述: 支持对图片中的手写中文.手写数字进行检测和识别,针对不规则的手写字体进行专项优化,识别准确率可达90%以上 2.平台接入 具体接入方式比较简单,可以参考我的另一个帖子,这里就不重复了: ...

  5. 百度AI攻略:行驶证识别

    1.功能描述: 对机动车行驶证主页及副页所有21个字段进行结构化识别,包括号牌号码.车辆类型.所有人.品牌型号.车辆识别代码.发动机号码.核定载人数.质量.检验记录等.可应用于网约车或货车司机身份审查 ...

  6. 百度AI攻略:银行卡识别

    1.功能描述: 支持对主流银行卡的卡号.有效期.发卡行.卡片类型4个关键字段进行结构化识别,识别准确率超过99% 2.平台接入 具体接入方式比较简单,可以参考我的另一个帖子,这里就不重复了: http ...

  7. 百度AI攻略:黑白图像上色

    1.功能描述: 想必大家家里都有很多黑白的老照片,里面有着满满的回忆.百度智能识别黑白图像内容并填充色彩,使黑白图像变得鲜活,让老照片重新焕发活力.说干就干,攻略和代码奉上. 2.平台接入 黑白图像上 ...

  8. 百度AI攻略:植物识别

    1.功能描述: 该请求用于识别一张图片,即对于输入的一张图片(可正常解码,且长宽比较合适),输出植物识别结果.近期植物识别进行了能力升级--模型升级,Top1准确率绝对值提升11.76%,精度保持业界 ...

  9. 百度AI攻略:识别火车票的多种方法

    1. 简介 百度OCR提供多种场景下精准的图像文字识别技术服务,让您的应用看图识字,提升输入效率,优化用户体验.现在百度OCR的全系列39款产品,开放使用!希望大家能一起来测试,使用.本篇评测介绍了通 ...

最新文章

  1. python语言入门m-Python学习基础篇 -1
  2. 分子生物学-共价键基础
  3. 关于.cpp文件包含另一个.cpp文件出错的原因以及解决办法
  4. file association没有 *.class文件_springboot如何MultipartFile文件跨服务
  5. left join缺失右括号_LeetCode刷题实战31:最长有效括号
  6. 2021年衡阳仁爱中学高考成绩查询,南岳衡阳蒸湘仁爱中学简介
  7. 山东科技大学计算机基础知识,山东科技大学_计算机操作系统试题
  8. OpenCV 文字绘制——cv::putText详解
  9. 随机生成一注双色球号码
  10. TCP RTT测量妙计
  11. 前端小demo:星星闪烁
  12. amazon alexa simple demo code for libcurl
  13. iOS WKWebView 那些坑
  14. 【字节跳动】2019后端笔试题
  15. BeyondCompare4使用脚本,每月一次
  16. windows无法连接到打印机
  17. linux命令:cp和scp
  18. Anaconda使用感悟
  19. linux下的source命令(.命令)解释及应用
  20. 人体姿态骨架估计算法研究

热门文章

  1. java基础之final关键字_繁星漫天_新浪博客
  2. Android .9图片制作
  3. 在ubuntu 18上进行NPB和mpiP的整合
  4. 计算机网络哪个学校好厦门,厦门较好的的计算机学校有哪几间
  5. 计算机考研院校所,计算机考研院校全国七大地区考研名校推荐
  6. 小米电视4a刷鸿蒙,小米电视4A精简系统教程
  7. 面试官:你了解 QPS、TPS、RT、吞吐量 这些高并发性能指标吗?
  8. 做自动化用哪种开发语言,一起【探讨】,谈谈你的想法?
  9. IC芯片制造过程简介
  10. 一文带你了解200G DAC高速线缆