人体特征点概述

全部人体姿势辨认的根底就是人体特征点辨认,人体特征点是一系列具有代表含义的人体骨架特征点,人体特征点对应着不同的人体部位,例如眼睛、鼻子、手、膀子、髋关节、膝关节、脚等。

ML Kit可以辨认33个人体特征点,下图展现了ML Kit可以辨认的人体特征点:

姿态识别概述

ML kit结构的强壮之处在于,你并不需求具备机器学习方向很专业的技能,仅仅靠几行代码就可以获取到人体33个要害特征点。具体代码咱们会在后面去具体介绍。ML Kit辨认人体特征点的要求人体的脸部有必要出现在画面中。只有当人整个身体都出现在画面中时,姿势估量的作用才是最好的。当然当人体并没有完全出现在画面中时,它相同可以辨认部分身体特征点。

相同,咱们运用Core ML也相同可以辨认人体特征点,Core ML可以辨认19个人体特征点,相比之下,ML Kit可以辨认33个特征点,更为强壮,下图展现了Core ML可以辨认的人体特征点:

姿态识别概述


人体特征点辨认的办法

  • 图画中只有一个人时,特征点辨认相对简略,姿势辨认器辨认出各个身体部位特征点,然后经过在它们之间创立连接创立姿势。
  • 图画中有多人是,问题会变得复杂。现在有两种主流办法去辨认特征点。一种是“自顶向下”,首先辨认出图画中的每一个人,然后再辨认出每个人的特征点;另一种是“自底向上”,首先辨认出图画中的一切人体特征点,然后再经过算法将这些人体特征点组装成一个个的人体。如下图所示:

姿态识别概述


姿势辨认的运用

当咱们获取到人体特征点后,便可以对人体进行姿势辨认,人体姿势辨认依据特征点坐标维度分为2D姿势辨认和3D姿势辨认。
2D姿势辨认:

姿态识别概述

3D姿势辨认:
姿态识别概述

人体姿势辨认有许多运用场景,来看几个典型的运用:

  1. 咱们在许多大片中看到的人体特效都是人体姿势辨认的运用。先来看看下面这张电影剧照:

姿态识别概述

右边是真实的人类在摄影棚里面拍照的图片,依据这个图片便可以检测出其间的人体姿势,那么图形、风格、特效增强、设备和艺术造型等就可以被加载在人体上,就形成了左面图中夸张的电影特效画面了。

  1. 跌倒检测 在养老院或医院,经过实时摄像头,对摄像头中的人体进行跌倒检测,发出警报,大大缩短了老人、病人的救助时刻。那么跌倒检测的原理就是提取摄像头实时画面帧,辨认出其间的人体特征点,经过一系列坐标核算算法,检测出是否跌倒。

  2. 体育、舞蹈动作纠正 相同,经过提取摄像头实时画面帧,辨认出其间的人体特征点。经过一系列的算法将用户姿势和标准的体育、舞蹈动作进行比照,从而给出纠正意见。

人体姿势估量还有许多运用场景:

姿态识别概述


ML Kit人体特征点辨认要害点

  • 跨渠道才能,一起支撑AndroidiOS渠道
  • 可以辨认人体33个特征点,包含手、脚的位置
  • 在给出33个特征点坐标的一起,会给出每个特征点的可信度,可信度的数值范围从0.01.01.0代表最高可信度
  • ML Kit提供两个优化SDK,分别是根底SDK和精确SDK。根底SDK可以以30fps45fps的帧率处理实时视频流,可是它辨认的特征点可信度范围更为广泛。而精确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'