人体特征点概述
全部人体姿势辨认的根底就是人体特征点辨认,人体特征点是一系列具有代表含义的人体骨架特征点,人体特征点对应着不同的人体部位,例如眼睛、鼻子、手、膀子、髋关节、膝关节、脚等。
ML Kit
可以辨认33个人体特征点,下图展现了ML Kit
可以辨认的人体特征点:
ML kit
结构的强壮之处在于,你并不需求具备机器学习方向很专业的技能,仅仅靠几行代码就可以获取到人体33个要害特征点。具体代码咱们会在后面去具体介绍。ML Kit
辨认人体特征点的要求人体的脸部有必要出现在画面中。只有当人整个身体都出现在画面中时,姿势估量的作用才是最好的。当然当人体并没有完全出现在画面中时,它相同可以辨认部分身体特征点。
相同,咱们运用Core ML
也相同可以辨认人体特征点,Core ML
可以辨认19个人体特征点,相比之下,ML Kit
可以辨认33个特征点,更为强壮,下图展现了Core ML
可以辨认的人体特征点:
人体特征点辨认的办法
- 图画中只有一个人时,特征点辨认相对简略,姿势辨认器辨认出各个身体部位特征点,然后经过在它们之间创立连接创立姿势。
- 图画中有多人是,问题会变得复杂。现在有两种主流办法去辨认特征点。一种是“自顶向下”,首先辨认出图画中的每一个人,然后再辨认出每个人的特征点;另一种是“自底向上”,首先辨认出图画中的一切人体特征点,然后再经过算法将这些人体特征点组装成一个个的人体。如下图所示:
姿势辨认的运用
当咱们获取到人体特征点后,便可以对人体进行姿势辨认,人体姿势辨认依据特征点坐标维度分为2D
姿势辨认和3D
姿势辨认。
2D
姿势辨认:
3D
姿势辨认:
人体姿势辨认有许多运用场景,来看几个典型的运用:
- 咱们在许多大片中看到的人体特效都是人体姿势辨认的运用。先来看看下面这张电影剧照:
右边是真实的人类在摄影棚里面拍照的图片,依据这个图片便可以检测出其间的人体姿势,那么图形、风格、特效增强、设备和艺术造型等就可以被加载在人体上,就形成了左面图中夸张的电影特效画面了。
-
跌倒检测 在养老院或医院,经过实时摄像头,对摄像头中的人体进行跌倒检测,发出警报,大大缩短了老人、病人的救助时刻。那么跌倒检测的原理就是提取摄像头实时画面帧,辨认出其间的人体特征点,经过一系列坐标核算算法,检测出是否跌倒。
-
体育、舞蹈动作纠正 相同,经过提取摄像头实时画面帧,辨认出其间的人体特征点。经过一系列的算法将用户姿势和标准的体育、舞蹈动作进行比照,从而给出纠正意见。
人体姿势估量还有许多运用场景:
ML Kit
人体特征点辨认要害点
- 跨渠道才能,一起支撑
Android
和iOS
渠道 - 可以辨认人体33个特征点,包含手、脚的位置
- 在给出33个特征点坐标的一起,会给出每个特征点的可信度,可信度的数值范围从
0.0
到1.0
,1.0
代表最高可信度 -
ML Kit
提供两个优化SDK
,分别是根底SDK
和精确SDK
。根底SDK
可以以30fps
和45fps
的帧率处理实时视频流,可是它辨认的特征点可信度范围更为广泛。而精确SDK
以更低的帧率处理实时视频流,它辨认的特征点的精确度更高。 -
Z
轴坐标,ML Kit
回来的特征点坐标包含Z
轴坐标,这使得上述的3D
姿势估量成为可能。Z
轴坐标的原点是左、右髋关节的中心点。接近摄像头方向为Z
轴负坐标,而远离摄像头方向为正坐标。Z
轴坐标值并没有上限值和下限值。
Z
轴正负值示意图:
姿势辨认API
和面部辨认API
一样,可以辨认出它们对应的特征点位置。面部辨认API
会测验辨认浅笑的嘴巴或张开的嘴巴,而姿势估量API
并不会这样,它不会给特征点附上任何含义,开发者只有自己经过一些算法处理特征点坐标去解说当前的姿势。
姿势估量API
只能辨认一个画面中一个人的人体姿势,如果有两个人一起在一个画面中,它只能回来具有更高可信度的人体的特征点。下面我看一下姿势辨认API
辨认的部分特征点的回来值,其间InFrameLikelihood
就是该特征点的可信度。
iOS
集成ML Kit
姿势估量SDK
如上一小节所述,ML Kit
提供了两种人体姿势辨认SDK
,根底SDK
和精确SDK
,下图是两者的比较:
咱们运用Pod
去集成ML Kit SDK
咱们在Podfile
中添加如下依靠,保存后,运转pod install
,然后运用XCODE
翻开生成的xcworkspace
文件,ML Kit
需求XCODE 12.5.1
以及更高的版本。
# 引进根底SDK
pod 'GoogleMLKit/PoseDetection', '2.5.0'
# 引进精确SDK
pod 'GoogleMLKit/PoseDetectionAccurate', '2.5.0'