OpenPose原理解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: Openpose论文原理总结

openpose是一种实时检测图像中多人的二维姿势的方法 。面临下面三项挑战:

第一,每张图像可能包含未知数量的人,他们可能出现在任何位置或规模。

第二,由于接触、遮挡或肢体衔接,人与人之间的互动会引起复杂的空间干扰,使得身体部分的关联变得困难。

第三,运行时的复杂性往往随着图像中人的数量而增加,使实时性能成为一个挑战 。
1.png
整体流程如下:

  1. 将整个图像作为网络输入,预测出一组身体部位位置的二维置信度图S(如图b)和一组部位亲和域(PAF)的二维矢量场L(如图c,它编码了部位之间的关联程度)。
  2. 通过贪婪推理对置信图和PAF进行解析(如图d),输出图像中所有人物的二维关键点。

其中身体部位的二维置信度图S={S_1, S_2, S_3, ..., S_j},每个部位一个S_j∈R^(w×h)。部位亲和域的二维矢量场L={L_1, L_2,..., L_c},每个肢体一个,L_c∈R^(w×h×2)。

网络架构

2.png
总体结构如图3所示,首先通过特征提取网络F(论文用的VGG-19)进行特征提取,将得到的特征层输入接下来的网络。后续网络被分成两个分支:顶部分支(以米黄色显示)预测置信图,底部分支(以蓝色显示)预测亲和场。

每个阶段都有中间监管,用于补充梯度,解决梯度消失的问题,确保结果不会向着错误的方向发展 。

stage t

在Stage 1,网络接收特征提取网络的输出,产生一组检测置信度映射S1=ρ1(F)和一组部分亲和域L1=φ1(F),其中ρ1和φ1是用于在阶段1进行推理的网络结构。
3.png
在Stage t (t>1),我们将特征提取网络输出的特征层和前一个Stage阶段生成的S(t-1)和L(t-1)连接输入,用来精细化预测。其中ρt和φt是用于在阶段1进行推理的网络结构。

Loss

网络结尾,应用了两个损失函数,分别用于优化身体部位的二维置信度图和部位亲和域的二维矢量场
4.png
如上图所示,4.1.png优化身体部位的二维置信度图,其中4.2.png是真实的置信度图。4.3.png优化部分亲和域,其中4.4.png为真实的部位亲和域的二维矢量场。W(P)是一个掩码,当注释在图像位置P中消失时该掩码使该位置数据失效。
总体的损失函数是:

5.png
了解了上面的网络结构,出现了几个疑问:

1.训练时,基于真实标签的置信度图4.2.png是如何生成的?

部分检测的置信度图 (PCM)

参考文章:https://zhuanlan.zhihu.com/p/360541947

该节解决了上面的第一个问题:训练时,基于真实标签 的置信度图4.2是如何生成的?

当图像只出现一个人时,每个置信度图中有一个峰值,代表一个部位。

6.png
当图像出现多个人时,为每个人每个部位生成单独的置信度图6.1.png,其中j代表部位 j,k代表人k,6.2.png用来控制峰值的扩散。

为什么采用公式(6)呢?

该公式代表着在关节点上的像素的置信度为1,其周围像素点根据距离呈高斯分布扩散,距离越远,置信度越低;距离越
近,置信度越高。 参考文章博主进行了更形象的解释!!!

之后,网络真实输出的置信度图是通过最大运算符对单个可信度图进行的聚合 :
7.png
这里第一次看的时候比较疑惑为什么每个节点取k个人中最大的,这样相当于只有一个人的信息了,如何预测呢?

后来明白了,该小结上面的内容是在训练的时候做的事情,确实是每个部位只生成一个置信度图,一共19个(18个节点加背景图)

在测试时,我们预测置信图,并通过进行非最大限度的抑制来获得身体部位的候选位置 ,如图4第一行所示

8.png
比如通过预测置信度图,并通过非最大限度的抑制获得左眼(e1, e2, e3),左耳(r1, r2, r3, r4),之后通过PAF将节点正确连接起来。

部分关联的部分亲和域 (PAF)

9.png
该部分的输入是一组检测到的身体部位(训练时是标注好的,测试时是通过置信图预测的),如图5(a)中蓝色点和红色点所示。

部分亲和场是一个二维矢量场,保留了肢体支撑区域的位置和方向信息(如图5(c)所示),那么是如何定义的呢?

利用下面的公式:
11.png
这里面,一些定义如下图所示:
10.png
p是第k个人,部位c上的一点。v是p所在的肢体骨骼方向上的单位向量,x_jk是第k个人部位j的位置。那么p点在该肢体上的范围如下:
12.png
到这里我们便得到了部分亲和场,训练时到这里也就可以去计算损失了。
接下来是测试的时候做的事情

我们有了检测到的一组身体部位,结合上面求的部分亲和场,接下来可以计算两个节点之间的肢体关联置信度:公式如下
13.png
其中,d_j2和d_j1是两个关节的坐标。p(u)是通过均匀采样u的方式插值两个候选身体部位和的位置得到的位置 ,如下公式
14.png
节点有了,关系大小可以用置信度表示了,这很像图的特性,下面也是用二分图进行的节点分配:具体如何做的呢?

首先,我们计算出两个部位的所有连接的权重,即E,生成矩阵。

下面举一个例子:假设有左耳={r_1, r_2, r_3, r_4},左眼={e_1, e_2, e_3},通过计算每个耳到眼的E值可以得到下列矩阵(值乱写的,正常应该是通过公式10生成的):
16.png

该二维矩阵代表了一个二分图,类似下面:
15.png
接下来找到权重最大组合
首先明确约束,二分图中所有边不能公用一个顶点,这也很好理解,假设我们r3和e3连接了,即一个人的骨骼配对了,怎么可能再将另外一个人的骨骼节点和这个配对了的人的骨骼节点进行相连呢。

我们就是再上面提到的约束基础上寻找最大的权重组合,如下:
17.png
从该图能看出,与r1置信度最大的是e4,但是却不能被分配到一起,因为e4和r4的置信度更大。为了得到最大的权重总和,必须让r4和e4相连,r1与其余的节点相连。到这里就是所有的思想步骤了!!!

知道了权重最大组合的思想,再看数学表达就容易了很多:

假设我们有多人的身体部位候选集18.png
其中J代表身体部位j,N_j代表身体部位j有多少个候选位置,19.png代表部位j的第m个侯选位置。

我们定义了下面的公式用来判断关节是否连接:

20.png
其中21.png属于(0, 1),代表着关节22.png21.png是否连接。同时为了达到上面二分图所有边不能公用一个顶点的效果,对该公式中的m和n做出约束。

24.png
最后,就是权重最大组合的公式:

25.png
26.png

相关文章
|
6天前
|
安全 算法 网络协议
解析:HTTPS通过SSL/TLS证书加密的原理与逻辑
HTTPS通过SSL/TLS证书加密,结合对称与非对称加密及数字证书验证实现安全通信。首先,服务器发送含公钥的数字证书,客户端验证其合法性后生成随机数并用公钥加密发送给服务器,双方据此生成相同的对称密钥。后续通信使用对称加密确保高效性和安全性。同时,数字证书验证服务器身份,防止中间人攻击;哈希算法和数字签名确保数据完整性,防止篡改。整个流程保障了身份认证、数据加密和完整性保护。
|
3月前
|
存储 缓存 算法
HashMap深度解析:从原理到实战
HashMap,作为Java集合框架中的一个核心组件,以其高效的键值对存储和检索机制,在软件开发中扮演着举足轻重的角色。作为一名资深的AI工程师,深入理解HashMap的原理、历史、业务场景以及实战应用,对于提升数据处理和算法实现的效率至关重要。本文将通过手绘结构图、流程图,结合Java代码示例,全方位解析HashMap,帮助读者从理论到实践全面掌握这一关键技术。
118 14
|
4月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
153 3
|
21天前
|
机器学习/深度学习 算法 数据挖掘
解析静态代理IP改善游戏体验的原理
静态代理IP通过提高网络稳定性和降低延迟,优化游戏体验。具体表现在加快游戏网络速度、实时玩家数据分析、优化游戏设计、简化更新流程、维护网络稳定性、提高连接可靠性、支持地区特性及提升访问速度等方面,确保更流畅、高效的游戏体验。
65 22
解析静态代理IP改善游戏体验的原理
|
18天前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
78 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
9天前
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
49 12
|
5月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
90 3
|
7天前
|
开发框架 监控 JavaScript
解锁鸿蒙装饰器:应用、原理与优势全解析
ArkTS提供了多维度的状态管理机制。在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。
25 2
|
2月前
|
机器学习/深度学习 自然语言处理 搜索推荐
自注意力机制全解析:从原理到计算细节,一文尽览!
自注意力机制(Self-Attention)最早可追溯至20世纪70年代的神经网络研究,但直到2017年Google Brain团队提出Transformer架构后才广泛应用于深度学习。它通过计算序列内部元素间的相关性,捕捉复杂依赖关系,并支持并行化训练,显著提升了处理长文本和序列数据的能力。相比传统的RNN、LSTM和GRU,自注意力机制在自然语言处理(NLP)、计算机视觉、语音识别及推荐系统等领域展现出卓越性能。其核心步骤包括生成查询(Q)、键(K)和值(V)向量,计算缩放点积注意力得分,应用Softmax归一化,以及加权求和生成输出。自注意力机制提高了模型的表达能力,带来了更精准的服务。
|
3月前
|
存储 物联网 大数据
探索阿里云 Flink 物化表:原理、优势与应用场景全解析
阿里云Flink的物化表是流批一体化平台中的关键特性,支持低延迟实时更新、灵活查询性能、无缝流批处理和高容错性。它广泛应用于电商、物联网和金融等领域,助力企业高效处理实时数据,提升业务决策能力。实践案例表明,物化表显著提高了交易欺诈损失率的控制和信贷审批效率,推动企业在数字化转型中取得竞争优势。
131 16

热门文章

最新文章

推荐镜像

更多