openpose原理以及各种细节的介绍

news/2024/11/22 18:00:44/

前言:

   OpenPose是一个基于深度学习的人体姿势估计库,它可以从图像或视频中准确地检测和估计人体的关键点和姿势信息。OpenPose的目标是将人体姿势估计变成一个实时、多人、准确的任务。——本节介绍openpose的原理部分

把关键点按照定义好的规则从上到下把它拼接起来——top-down,先做目标检测,检测到每一个目标框,然后在框里面进行特征点连接,所以不会出现这个人连到另外一个人的部位去

Top-dowm(先做检测再做回归,与传统的目标检测RCNN系列很像)的方法的问题:

相比较与传统的top-dowm来说,openpose是没有进行目标检测的,在目标没有框的时候来做任务。。

 

通过回归损失,得到每一个关键点的特征图,18个关键点就18张特征图。

在实际打标签的时候就需要把标签做成热度图,而且在实际肩膀的位置是1,如果你打的点远离肩膀,那就是0.9,0.8,0.7,每一个点都要进行高斯分布形成一个热度图

右下角是飞镖游戏举的例子

PAF就是将属于同一个人的不同关键点按顺序拼接,而且是有方向的,重点是这个方向!!!白色衣服人的肩膀的点会与所有的粉色点连接,但是要找到最适合属于同一个人的,就是PAF做的事

 

分为两个网络。第一个网络预测18个特征图,每一张特征图表示当前预测的是什么部位

 

 

19种不同的连接方式规则,每一种连接方式都要预测他们的方向,因为每种连接方式有两个方向,19*2(x,y)=38种不同的连接方向

 

如何确定关键点的连接? 下图一个头连接了两个脖子,如果你能告诉我哪个得分高,那就迎刃而解了。匈牙利匹配?二分图

 

这个匹配与向量大小无关,仅更方向有关,所以在打标签的时候,都是做成了单位向量,它只有方向没有大小。

标签定义,两条垂线是有阈值的,然后做出矩形,但凡落到矩形中的,那就是跟v是同一个方向的,只保留掉落在矩形面积中的点,其他点全部去掉。   

 

19组连接方式,38个特征图,每个特征图代表x或者y方向。  19是先验,作者规定的,头连鼻子,鼻子连脖子,脖子连肩膀等等。。。。。。。。。

 

下图 是实际做出了的效果:

 

得到PFA的标签后(包括所有人该连接处的向量),开始计算方向相同的值,

下图的上方是各种打乱的方向,他们是预测值,调整预测值的方向相同的值,而右下角是标注的图,是同一个方向的

再看看下图的上方,明显右边计算出来的积分(投影的思想)更大也就是权重更大,所以选择这个方向

 

计算完PAF权值计算后开始连接

如何确定关键点的连接?

如果能给我一个权值(分数,代价矩阵)这件事就能做了

基于上图的预测值和真实标注值后,那怎么判断预测值是左边的可能性大呢,还是右边的可能性大呢?

积分的思想,可以想象成求近似。

左边,计算几个矩形的面积,那简单,计算出来相加就行

但是右边,矩形如果有无限多个,就不好计算了,用积分近似,计算当前xy轴围成的面积

 

原来投影是这样用的。 当两个向量相同的时候,他们的内积是最大的,因为cos0等于1。也就是投影是最大的,如果有夹角,夹角越大那么投影就越小。现在的目标就是找到最大的投影也就是同个方向的

 

预测的时候,比如有b这两种点,需要判断a分别到各个绿色的的点的方向,是否跟a与b的方向解决或者相同,越接近的就是这条线的概率就越大。那为什么需要积分呢? 因为当这个部位非常超级很多个点的时候,单单计算面积之和已经不好使了,需要用积分来近似。

但是为了计算高效性,作者在预测的时候,把文件编译成C,

 

 

匹配结果:

先做完这一步

 

如果同时考虑多种匹配,那太难了

咱们固定好就是二分图,这个固定就是作者预先设定好的那个规则,谁连谁都事先指定好了。这样可以直接套匈牙利算法

然后看看这个例子:第一个红点与下面的三个蓝色点,那肯定是第一个的积分最大,绿色先的积分肯定要小于黄色的

 

细节说完了。

现在说说整体框架图

首先输入图像a,b帮我们估计18个关键点实际的位置,18个关键点那就会生成 18个特征图(看B,好几张特征图)。

c图也是18张特征图,每张特征图有19*2种?

d图使用积分计算出谁更大就选择谁

e图把所有结果连接起来

 

网络结构

Convolutional Pose Machines  CPM当年类型的模型(感受野要大层数要深,每个stage都加上了loss)

级联的思想:

Stage1,2,3一层一层的修正,一层一层逐层优化,是当年很流行的做法

 

 

序列的作用

多个stage,相当于纠正的过程,不断调整预测结果

 

制定好谁跟谁连接,按照先后顺序来的

[[1, 8], [8, 9], [9, 10], [1, 11], [11, 12], [12, 13], [1, 2], [2, 3], [3, 4], [2, 14], [1, 5], [5, 6], [6, 7], [5, 15], [1, 0], [0, 14], [0, 15], [14, 16], [15, 17]] 

 

超过了一定范围,那就是0了,只有中心点是1

 

整体框架

两个分支都要经过多个阶段,注意每个阶段后要把特征拼接一起

 

 

Openpose不仅能估计人体躯干的,人脸的,手的也可以。

 

 


http://www.ppmy.cn/news/401256.html

相关文章

步步为营:使用Abaqus CAE连接Neper多晶发生器进行材料仿真与建模的详细教程

前言 首先,我想强调一点,我写这篇文章并不是因为我认为自己是这个领域的专家,相反,我在学习过程中遇到了很多问题,这篇文章只是我想把我遇到的问题以及我找到的解决方案与你们分享。我希望能够帮助那些正在尝试使用Ab…

如何有效提升英文口语水平?这 15 个方法值得学习!

要提升英文口语水平,除了多说多练,还有很多方法可以尝试。下面,小编为大家整理了15个有效的方法,让你说英语更自信流利! Record yourself speaking English and listen back to your pronunciation and intonation, i…

AntDB数据库荣获2023年中国信创产业拳头奖“2023年中国信创数据库卓越品牌”

近日,由全球新经济产业第三方数据挖掘和分析机构iiMedia Research(艾媒咨询)主办的“2023年(第2届)中国信创产业大会”在广州圆满落幕。大会现场揭晓了“2023年中国信创产业拳头奖”。AntDB数据库从众多参评产品中脱颖…

云服务器docker方式部署JAVA微服务

党建后端java微服务部署步骤(采用docker部署) 开通dua 开通端口号:8848、6379、8000 - 8010、9848、9849 step1:安装必要的一些系统工具 sudo apt-get update sudo apt-get install ca-certificates curl gnupg step2&#xff1a…

HarmonyOS学习路之开发篇—Java UI框架(自定义组件与布局 二)

自定义布局 当Java UI框架提供的布局无法满足需求时,可以创建自定义布局,根据需求自定义布局规则 常用接口 Component类相关接口 接口名称 作用 setEstimateSizeListener 设置测量组件的侦听器 setEstimatedSize 设置测量的宽度和高度 onEstima…

一个7×7的卷积核可以用三个3×3的卷积核替代,一个5×5的卷积核可以有两个3×3的卷积核替代

从图上我们可以看出,一个3030的图像经过一个77(49个参数)的卷积核之后,输出的feature map的大小为2424,与经过三个33卷积核(27个参数)之后的的输出是一致的。经过一个55的卷积核(25个参数)之后,输出的featu…

【CV】VGG卷积核为什么取3*3 ? VGG使用3*3卷积核的优势是什么?

在VGG中,使用了3个3x3卷积核来代替7x7卷积核,使用了2个3x3卷积核来代替5*5卷积核,这样做的主要目的是在保证具有相同感知野的条件下,提升了网络的深度,在一定程度上提升了神经网络的效果。 比如,3个步长为…

3*3卷积核生成

1.卷积核 由于图像经过卷积操作后会减少两行两列,因此在生成卷积核的时候一般会对图像进行填充,填充的方式有加0,加1和复制边界三种方法。本文将会构建一个可以选择三种填充方式的卷积核模块 2.无填充模式卷积核生成 1.第一行数据写入FI…