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

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

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=0

    score=0

    if ((beginkey in d)&(endkey in d)&(middlekey in d)):

        total=1

        angle=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,优化建议

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容

  • 1.功能描述: 检测图像中的人体并返回人体矩形框位置,精准定位21个核心关键点,包含头顶、五官、颈部、四肢主要关节...
    才能我浪费阅读 1,114评论 0 0
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 662评论 0 0
  • 今年的 “福慧红包” 加入了 静思语 ,据说共有75款,每一款都是不同的 静思语 ~ 地点:慈济 上海长风联络处 ...
    观察君Observer阅读 877评论 0 1
  • 反馈 我写的,所分享的东西都是我看到,听到,以及胡思乱想想到的东西;我只是把触动我的内容转述出来。我所说的一切都是...
    haominzeng阅读 865评论 0 0
  • 马上就要找工作了,想想时间过的真快。一年又三十六天之前我来到这里学习,若问我学到了什么,我想学到更多的应该不是技术...
    蝶花恋阅读 93评论 0 0