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

news2024/11/26 23:45:50

前言:

   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.coloradmin.cn/o/649607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matter实战系列-----5.matter设备证书烧录

一、安装工具 1.1 安装Commander_Linux工具 下载地址 https://www.silabs.com/documents/public/software/SimplicityCommander-Linux.zip 下载完之后解压缩,在压缩包内执行命令如下 tar jxvf Commander_linux_x86_64_1v15p0b1306.tar.bz cd ./commander ./co…

启动appium服务的2种方法(python脚本cmd窗口)

目录 前言: 1. 通过cmd窗口命令启动 1.1 启动单个appium服务 1.2 启动多个appium服务 2. 通过python脚本来启动 2.1 启动单个appium服务 2.2 启动多个appium服务 3. 启动校验 3.1 通过cmd命令查看 3.1.1 查看指定端口号 3.1.2 查看全部端口号 3.2 通过生…

华为笔记本怎么用U盘重装Win10系统?

华为笔记本怎么用U盘重装Win10系统?华为笔记本拥有指纹识别、背光键盘、信号增强等功能,带给用户超棒的操作体验,用户现在想用U盘来重装华为笔记本Win10系统,但不知道具体怎么操作,这时候用户就可以按照以下分享的华为…

CMAC算法介绍

文章目录 一、简介二、符号三、步骤3.1 子秘钥生成3.2 计算MAC值 一、简介 CMAC(Cipher Block Chaining-Message Authentication Code),也简称为CBC_MAC,它是一种基于对称秘钥分组加密算法的消息认证码。由于其是基于“对称秘钥分…

网络安全|渗透测试入门学习,从零基础入门到精通—渗透中的开发语言

目录 前面的话 开发语言 1、html 解析 2、JavaScript 用法 3、JAVA 特性 4、PHP 作用 PHP 能做什么? 5、C/C 使用 如何学习 前面的话 关于在渗透中需要学习的语言第一点个人认为就是可以打一下HTML,JS那些基础知识,磨刀不误砍柴…

RTU遥测终端机的应用场景有哪些?

遥测终端机又称智能RTU遥测终端机,是一种用于采集、传输和处理遥测数据的设备。在现代科技的发展中,遥测终端机扮演着重要的角色。它是一种能够实现远程监测和控制的关键设备,广泛应用于各个领域,包括水文水利、环境监测、工业自动…

Linux系统:优化命令sar

目录 一、理论 1.命令描述 2.命令作用 3.命令参数 4.实用实例 二、实验 1.压力测试 三、问题 1.Linux系统五大负载如何解决 2.为什么使用ab命令进行网络传输数据的压力测试 3.ab命令发送请求测试失败 四、总结 1.sar命令 2.ab命令 3.五大负载 一、理论 1.命令描…

MySQL的索引(我把梦想卖了 换成了柴米油盐)

文章目录 一、索引的概念二、索引的作用如何实现? 三、索引的副作用四、创建索引的原则依据创建索引的依据 五、索引的分类六、索引的增删改查1.创建索引(1)创建普通索引(2)创建唯一索引(3)创建…

Spring Boot进阶(51):Spring Boot项目如何集成 HTML?| 超级详细,建议收藏

1. 前言🔥 我们都知道,Spring Boot作为一款广泛应用于企业级的开发框架,其通过简化开发过程、提高开发效率赢得了众多开发者的青睐。在实际项目开发中,集成 HTML作为 Web 应用程序中的一个基本需求,也是现在极其常见的…

618最值得入手的数码产品有哪些?四款必入数码产品数码推荐

时间飞逝,不知不觉已经过了6月中旬,大家心心念念的618年中大促也即将迎来最后一波高潮。这次618大促各大品牌的优惠力度都非常可观,特别是数码产品类,可以说是今年最值得入手的时期。今天也为大家推荐几款高颜值数码好物&#xff…

在 Apple silicon Mac 上 DFU 模式修复或恢复 macOS 固件

搭载 Apple 芯片的 Mac 电脑 DFU 模式全新安装 macOS Ventura 请访问原文链接:https://sysin.org/blog/apple-silicon-mac-dfu/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Mac computers with Apple silicon&a…

聚焦2023数博会|高端对话,大咖观点精彩荟萃(上)

当前数据作为新型生产要素,是数字化、网络化、智能化的基础,已快速融入生产、分配、流通、消费和社会服务管理等各环节,深刻改变着生产方式、生活方式和社会治理方式。数据基础制度建设事关国家发展和安全大局。为加快构建数据基础制度&#…

【C++】手撕跳表

文章目录 跳表简介时间复杂度 代码实现节点类跳表类 源代码(附详细注释)参考 跳表 简介 跳表全称为跳跃列表,它允许快速查询,插入和删除一个有序连续元素的数据链表。跳跃列表的平均查找和插入时间复杂度都是O(logn)。快速查询是…

代码随想录二叉树 Java(三)

文章目录 (简单)501. 二叉搜索树中的众数(*中等)236. 二叉树的最近公共祖先(中等)235. 二叉搜索树的最近公共祖先(中等)701. 二叉搜索树中的插入操作(*中等)4…

软件测试中如何编写单元测试用例(白盒测试)

目录 前言: 一、 单元测试的概念 二、开始测试前的准备 三、开始测试 四、完成测试 前言: 单元测试是软件测试中一种重要的测试方法,它是在代码级别进行测试,通过对每个模块或功能进行独立测试来保障代码的正确性和可靠性。…

实验篇(7.2) 11. 站对站安全隧道 - 双方互相发起连接(FortiGate-IPsec) ❀ 远程访问

【简介】前面我们实验的是FortiClient客户端与防火墙进行VPN连接,现在我们要做的实验是防火墙与防火墙之间进行VPN连接。现在我们来看看两台防火墙之间要怎样创建VPN连接。 实验要求与环境 OldMei集团深圳总部部署了域服务器和ERP服务器,用来对集团总部进…

【探索 Kubernetes|容器基础进阶篇 系列 3】容器进程的文件系统

文章目录 系列文章目录👹 关于作者一、回顾二、容器进程的文件系统是什么样子的?rootfs一致性解决应用依赖关系解决复用性 三、OverlayFS 联合文件系统先决条件overlay2 驱动程序如何工作结构图探索含义-磁盘上的镜像层和容器层镜像层容器层 四、overlay…

动态规划dp —— 26.环绕字符串中唯一的子字符串

1.状态表示 是什么?dp表中里的值所表示的含义就是状态表示 dp[i]表示:以i位置元素为结尾的所有的子串里面,有多少个在base中出现过 2.状态转移方程 dp[i] 等于什么 如果是单个字母的子串,肯定会在base中出现,所以…

一文详解!appium自动化测试

目录 前言: Appinum前置知识 Andriod SDK 元素获取—UI Automator adb命令实践 adb常用命令 小结 Package与Activity Activity页面布局元素 monkey简介 monkey事件 操作事件简介 monkey参数 事件类参数 约束类参数 调试类参数 Monkey参数应用综合案…

生成式AI - 关键技术历史和发展

✈️当谈及生成式人工智能(AI),我们进入了一个令人惊叹的领域,它不仅改变了我们与技术的互动方式,而且极大地推动了人工智能的发展。通过模仿人类创造力和想象力的能力,生成式AI引领着我们走向了全新的可能…