极智AI | Realtime Multi-Person人体姿态估计之OpenPose

欢迎关注我的公众号 [极智视界],获取我的更多经验分享

大家好,我是极智视界,本文来介绍一下 Realtime Multi-Person人体姿态估计之OpenPose。

邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:t.zsxq.com/0aiNxERDq

OpenPose 主要是采用一个叫做 PAF (Part Affinity Fields,翻译过来是叫 部件亲和场) 来预测人体各部位及其肢体之间的关系,可以更好地检测图片或视频中的人物姿态,如头部、手部和脚部等,并实现多人的实时姿态估计。目的是很明确的,就是更加实时、更加准确地实现多人的人体姿态估计,而采用的方法 PAF 可能就需要好好解释了。看下面的图,

将上面红色手臂放大后,就是上图中的右边部分,可以看到 RAF 的庐山真面目,原文对它的解释是这样的:

a set of 2D vector fields that encode the location and orientation of limbs over the image domain.

首先 RAF 它是一个二维矢量的集合,用来描述人体肢体的两个维度的信息:

  • 肢体的位置;==> location;
  • 肢体的方向;==> orientation;

这个东西标注的时候就是这么标的,比如下面的也是 RAF,这是 OpenPose 中最重要的概念。

有了 RAF 的概念之后,咱们继续。

人体姿态估计一般会有两种方法,分别是 Top-down 的方法 以及 Bottom-up 的方法。而 OpenPose 是属于 Bottom-up 的方法,也就是先把图中所有肢体关节都检测出来然后进行组装;而 Top-down 的方法不一样,是先用一个目标检测器框人体,然后对目标小图逐个进行单人的姿态估计。这两种方法的优缺点十分明显,Bottom-up 的方法对于肢体关节的再组装难度大,但效率高,耗时增加受人体数量增加的影响没有 Top-down 方法那么明显。Top-down 方法容易受到前面检测器的检测效果的影响,而且对于人越多的场景,效率越低,这种耗时增加是呈线性的,比如对于下面的人群密集的场景,一般 Top-down 就会比 Bottom-up 慢很多。当然 Top-down 也有其优势的地方,虽然 Top-down 的精度易受前面检测器效果的影响,但是一旦前面检测器框的 "准" 了(不一定是真的准,比如 AlphaPose 中就通过降低检测器的置信度阈值来保留更多的检测框,然后主要依靠后续的 P-NMS 筛选的方式来解决这个问题),后面人体姿态估计的精度会提升的很明显,至少它不太会将这个人的关节连接到另外的人上去。

看下面这个架构图,称之为 OpenPose 的多阶段 CNN 架构,

上面的架构分为两个阶段,前面的阶段用来预测 PAFs,后面的阶段预测 maps 的置信度。这里的架构是多阶段多层次的,多阶段的意思不断迭代地进行预测 (包含 3x PAF - 1x CM),下面的图很好地展示了迭代预测的 "循序渐进"。

多层次的意思是 OpenPose 中会将热度图按关节点分为 18 个特征图,这是什么意思呢,来看下面这个图,对于人体关键点的标注,在 COCO 数据集中其实是提供 17 个关键点,而在 OpenPose 中是多出了一个点,为 17 + 1 = 18 个关键点,多出来的关键点是下图中的 1 号关键点 - 脖子,它是 2 号和 5 号肩膀关键点直接求平均得到的。

有了上面关键点标注的概念,在 OpenPose 中,它是会分别按关节用热度图来分开预测的,还是看下面这张图,这个展示的前面那张热度图中只是在预测右臂膀,这样就解释清楚了。

在 OpenPose 中,最难的地方不是定位关键点,而是确定方向、把同属于一个人的关键点连接起来。如下,对于图中的三个人,候选六个关键点。(a) 中红色点和蓝色点就代表关键点,灰色连线是所有的候选连接,而最终咱们的目标是要像 (c) 那样把正确的两两关键点给连接起来,这中间就要经过步骤 (b)。在步骤 (b) 中,采用连线中点 (黄色点) 是否是 body 上的概率来进行筛选,这样其实可以筛选过滤掉一大部分的灰色连接。但问题是经过这样的筛选后,依然还有绿色线和黑色线是保留了下来,我们直观可以分析,黑色线是不对的,但是按目前的信息对于模型来说,还是无法进一步甄别。

这个时候 PAF 就闪亮登场了,PAF 就是用来解决这个限制。就如上图的 (c),再进一步通过连线的方向 (箭头方向,orientation) 来进行匈牙利匹配来进行筛选,然后得到最终正确的连接。具体可能还需要进一步解释一下,来看下面这张图,

蓝色点和橙色点是两个关键点,向量 V 是最完美的那个连接,若 P 点是手臂上的任意一个点,那么 P 和 蓝色点也会形成一个向量,这个向量与最完美的向量 V 之间会存在一定的夹角,也就是这两个向量之间会存在一定的距离。这样,熟悉的剧本不就来了嘛,预测值 "蓝-P向量" 与 真实值 "蓝-橙" 向量,再定个损失函数,定个阈值,咔嚓一训练就完事。通过这样的方式就可以把错误的连线进行过滤,而保留尽可能接近完美的正确连线,就像下面这张图,最终也会通过这种方式将错误的连线删除掉。

下面展示了一些 OpenPose 的多人人体姿态估计的检测效果图,



好了,以上分享了 Realtime Multi-Person人体姿态估计之OpenPose,希望我的分享能对你的学习有一点帮助。


【公众号传送】

《极智AI | Realtime Multi-Person人体姿态估计之OpenPose》

畅享人工智能的科技魅力,让好玩的AI项目不难玩。邀请您加入我的知识星球, 星球内我精心整备了大量好玩的AI项目,皆以工程源码形式开放使用,涵盖人脸、检测、分割、多模态、AIGC、自动驾驶、工业等。一定会对你学习有所帮助,也一定非常好玩,并持续更新更加有趣的项目。 t.zsxq.com/0aiNxERDq

相关推荐
春末的南方城市8 分钟前
开源音乐分离器Audio Decomposition:可实现盲源音频分离,无需外部乐器分离库,从头开始制作。将音乐转换为五线谱的程序
人工智能·计算机视觉·aigc·音视频
矢量赛奇29 分钟前
比ChatGPT更酷的AI工具
人工智能·ai·ai写作·视频
KuaFuAI38 分钟前
微软推出的AI无代码编程微应用平台GitHub Spark和国产AI原生无代码工具CodeFlying比到底咋样?
人工智能·github·aigc·ai编程·codeflying·github spark·自然语言开发软件
Make_magic1 小时前
Git学习教程(更新中)
大数据·人工智能·git·elasticsearch·计算机视觉
shelly聊AI1 小时前
语音识别原理:AI 是如何听懂人类声音的
人工智能·语音识别
源于花海1 小时前
论文学习(四) | 基于数据驱动的锂离子电池健康状态估计和剩余使用寿命预测
论文阅读·人工智能·学习·论文笔记
雷龙发展:Leah1 小时前
离线语音识别自定义功能怎么用?
人工智能·音频·语音识别·信号处理·模块测试
4v1d1 小时前
边缘计算的学习
人工智能·学习·边缘计算
风之馨技术录1 小时前
智谱AI清影升级:引领AI视频进入音效新时代
人工智能·音视频
sniper_fandc1 小时前
深度学习基础—Seq2Seq模型
人工智能·深度学习