极智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

相关推荐
G皮T2 小时前
【人工智能】ChatGPT、DeepSeek-R1、DeepSeek-V3 辨析
人工智能·chatgpt·llm·大语言模型·deepseek·deepseek-v3·deepseek-r1
九年义务漏网鲨鱼3 小时前
【大模型学习 | MINIGPT-4原理】
人工智能·深度学习·学习·语言模型·多模态
元宇宙时间3 小时前
Playfun即将开启大型Web3线上活动,打造沉浸式GameFi体验生态
人工智能·去中心化·区块链
开发者工具分享3 小时前
文本音频违规识别工具排行榜(12选)
人工智能·音视频
产品经理独孤虾3 小时前
人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像
人工智能·机器学习·ai·大模型·产品经理·商品画像·商品工业属性
老任与码3 小时前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
蹦蹦跳跳真可爱5894 小时前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
雷羿 LexChien4 小时前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
两棵雪松4 小时前
如何通过向量化技术比较两段文本是否相似?
人工智能
heart000_14 小时前
128K 长文本处理实战:腾讯混元 + 云函数 SCF 构建 PDF 摘要生成器
人工智能·自然语言处理·pdf