【论文阅读】Realtime multi-person 2d pose estimation using part affinity fields

news2025/1/14 18:33:14

OpenPose:使用PAF的实时多人2D姿势估计。

code:GitHub - ZheC/Realtime_Multi-Person_Pose_Estimation: Code repo for realtime multi-person pose estimation in CVPR'17 (Oral)

paper:[1611.08050] Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields (arxiv.org)

0 摘要

一种检测图像中多人的2D姿态的方法。 使用非参数表示(关节亲和力场PAF)学习将身体部位与图像中的人体相关联。对全局上下文进行编码,允许自下而上的解析步骤,在保持高精度的同时实现实时性。该架构旨在共同学习关节位置和它们通过同一顺序预测过程的两个分支进行关联。 在COCO 2016关键点挑战中排名第一。

1 介绍

人体2D姿势估计的问题,主要集中在寻找个体的身体部位上。 推断图像中的多个人的姿势,困难在于:首先,每个图像可能包含未知数量的人;其次,人与人互动导致遮挡,空间干扰,部位的关联困难。 第三,运行时复杂度随人数而增加,给实时性带来了挑战。

常用的方法是:自上而下的单人姿势估计,但缺点很多。自下而上的方法:联合标记了部位检测的候选对象,并将其与单个人体相关联。但是,在完全连接的图上求解整数线性规划问题是一个NP难题,平均处理时间约为几小时。

本文提出了一种有效的方法,进行多人姿势估计:通过部分亲和力字段(PAF),展示了关联分数的自下而上的表示形式,该部分是一组2D矢量场,可对肢体在图像域上的位置和方向进行编码。 同时推断出检测和关联的这些自下而上的表示方式,可以很好地编码全局上下文,从而可以实现贪心解析高质量的结果,而计算成本少。

 图1 顶部: 多人姿势估计。 属于同一个人的身体部位被链接。 左下:部位亲和力场(PAF)对应于连接右肘和右肢的肢体腕。 颜色编码方向。 右下:放大预测PAF的视图。 在场中的每个像素处,一个2D向量编码肢体的位置和方向。

 2 方法

图2 总体流程。将整个图像作为两分支CNN的输入,以共同预测(b)中所示的身体部位检测,以及(c)中所示的部位关联的部位亲和力场(PAF)。 解析步骤执行一组二分匹配以关联身体部位候选者(d)。 最终组装成图像中所有人的全身姿势(e)。

将大小为w×h的彩色图像作为输入(图2a)。并为图像中的每个人生成解剖学关键点的二维位置(图2e)。首先,前馈网络同时预测身体部位位置的一组2D置信度图S(图2b)和部位亲和力的一组2D矢量场L,它们编码各个部位之间的关联度(图2c)。集合有J个置信图,每个关键点部位一个,。集合 有C个向量场,每个肢体一个, 。 Lc中的每个图像位置都编码一个2D向量(如图1所示)。最后,通过贪心推断来解析置信度图和亲和力场(图2d),以输出图像中所有人的2D关键点。

2.1 同时检测和关联

图3 两个分支的多级CNN。第一个分支中的每个stage预测置信度图S,第二个分支中的每个stage预测PAF。在每个stage之后,S和L以及图片的feature拼接在一起传入到下一个stage中。

同时预测检测置信度图和PAF。网络分为两个分支:顶部分支预测置信度图,底部分支预测PAF。首先通过卷积网络分析图像(由VGG-19的前10层初始化并微调),生成一组输入到每个分支的第一阶段的特征图F。在第一阶段,网络产生一组检测置信度图和一组PAF  ,其中 ρ1 和 φ1 是在第1阶段进行推理的CNN。在每个后续阶段中,前一阶段中两个分支的预测以及原始图像特征F被拼接(concat)起来产生精确的预测。

  ρt 和 φt  是在第t阶段进行推理的CNN。

 图4 右手腕(第一行)和PAF的置信度图跨阶段的右前臂(第二行)。 尽管在早期阶段左右身体部位和四肢之间存在混淆,但如在突出显示的区域中所示,通过后期的全局推断,估算值将越来越完善。

图4显示了跨阶段的置信度图和PAF的细化。 为了指导网络迭代地预测第一分支中的身体部位和第二分支中的PAF的置信度图,在每个阶段的末尾应用两个损失函数,分别在每个分支处应用一个损失函数。 在估计的预测与GT map和PAF之间使用L2损失。 对损失函数进行空间加权,以解决一个实际问题,即某些数据集不能完全标记所有人。 具体而言,在阶段t的两个分支处的损失函数为:

是GT置信度图,是GT PAF,W是一个二进制掩码,当在图像位置p缺少注释时,W(p)= 0。Mask是用来避免惩罚训练期间的真实积极预测。每个阶段的中级监督都通过定期补充梯度来解决了消失的梯度问题。整体目标函数是: 

2.2 用于部位检测的置信度图

评估方程式(5)中的 fs 。在训练过程中,从带注释的2D关键点中生成GT置信度图。每个置信度图是出现在每个像素上位置的特定身体部位的2D表示。如果有多个人出现,对于每个人 k,都有对应于每个可见部分 j 的峰。

首先为人体目标k生成单独的置信度图 。令  为图片中人物k的第j个部位的GT位置。 中位置 的价值定义为:

σ控制峰的扩展。网络要预测的GT置信度图是通过max运算符汇总的各个置信度图,

用置信度图的最大值代替平均值,以使峰值接近的精度仍然保持不同。在测试时,我们预测置信度图(如图4的第一行所示),并通过执行非最大抑制来获得候选的身体部位。 

图5.部位关联策略。(a)身体部位检测两个身体部位类型的候选者(红色和蓝色圆点)候选连接(灰线)。(b)使用中点(黄点)表示的连接结果:正确的连接(黑线)和不正确的连接(绿线)也能满足入射约束。(c)使用PAF的结果(黄色箭头)。 通过编码位置和方向的支持PAF消除了假肢。 

 

2.3 用于部位关联的PAF

给定一组检测到的身体部位(图5a中红色和蓝色),如何组装它们以形成未知人数的全身姿势?需要每对身体部位检测的关联的置信度测量,即它们属于同一部位人。衡量关联的一种可能方法是检测肢体上每对部位之间的附加中点,并检查其在候选对象部位检测的发生率,如图5b所示。但是当人们聚集,这些中点可能支持虚假关联(图5b中绿线)。原因是表示形式有两个限制:(1)仅对位置进行编码,而不是每个肢体的方向;(2)将肢体的支撑区域减少到单个点。

为了解决这些限制,我们提出了部位亲和力场,它同时保留肢体区域的位置和方向信息 (如图5c)。部位相似性是每个肢体的2D矢量场,也如图1d所示:对于属于特定肢体的区域中的每个像素,一个2D矢量编码从肢体一个部位指向另一部位的方向。每种类型的肢体都有一个对应的亲和力场,将其两个相关的身体部位连接在一起。如下图一个单独肢体。

人物k的肢体c的部位 j1 和 j2 的真实位置表示为  。如果一个点p在肢体上, 是一个由 j1 指向 j2的联合向量。其他的所有点,值是0。

PAF简单来说就是描述PCM热力点之间的亲和力,使用2D向量建模骨骼。

按照前文所述Part confidence map和PAF结合,按照原理说可以很好的模拟二维人体的各种效果,按照亲和力高的pcm点,属于同一个人,按理说就能够实现目标效果了,但是实际上并非如此。看到这篇文章中的大佬这样解释:DL-Practise:[多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络

大体表述意思是是很多时候亲和力接近,无法完全根据此配对成功。单单依靠亲和力最大值匹配会出现不想要的结果。

转化为二分图匹配问题,解决方法是使用匈牙利算法。

通过采样和对u的等距值求和来估算积分。

 图6.图的匹配。(a)带有部位检测的原始图像; (b)K部分图; (c)树结构; (d)一组二部图

 

 

 

参考:深度学习论文翻译(12)——OpenPose - 知乎 (zhihu.com)

论文阅读笔记(1)OpenPose:Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields - 知乎 (zhihu.com) [多图/秒懂]白话OpenPose,最受欢迎的姿态估计网络 - 知乎 (zhihu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1340933.html

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

相关文章

SpringBoot多线程与任务调度总结

一、前言 多线程与任务调度是java开发中必须掌握的技能,在springBoot的开发中,多线程和任务调度变得越来越简单。实现方式可以通过实现ApplicationRunner接口,重新run的方法实现多线程。任务调度则可以使用Scheduled注解 二、使用示例 Slf…

磁盘管理 :逻辑卷、磁盘配额

一 LVM可操作的对象:①完成的磁盘 ②完整的分区 PV 物理卷 VG 卷组 LV 逻辑卷 二 LVM逻辑卷管理的命令 三 建立LVM逻辑卷管理 虚拟设置-->一致下一步就行-->确认 echo "- - -" > /sys/class/scsi_host/host0/scan;echo "- -…

【SpringBoot】第2章 SpringBoot核心配置与注解

学习目标 熟悉SpringBoot全局配置文件的使用 熟悉SpringBoot自定义配置 掌握SpringBoot配置文件属性值注入 掌握Profile多环境配置 了解随机值设置以及参数间引用 2.1 全局配置文件 全局配置文件能够对一些默认配置进行修改。SpringBoot使用一个application.properties…

设计模式(4)--对象行为(7)--观察者

1. 意图 定义对象间的一种一对多的依赖关系, 当一个对象的状态改变时,所有依赖于它的对象都得到通知并被自动更新。 2. 四种角色 抽象目标(Subject)、具体目标(Concrete Subject)、抽象观察者(Observer)、 具体观察者(Concrete Observer) 3. 优点 3.1 …

数据结构学习 Leetcode494 目标和

关键词:动态规划 01背包 dfs回溯 一个套路: 01背包:空间优化之后dp【target1】,遍历的时候要逆序遍历完全背包:空间优化之后dp【target1】,遍历的时候要正序遍历 题目: 解法一: …

国际物流公司科普_集装箱种类区分和介绍_箱讯科技

集装箱运输的不断发展,为适应装载不同种类货物的需要,因而出现了不同种类的集装箱。今天和大家一起来总结一下。 按使用材料分类 根据箱子主体部件(侧壁、端壁、箱顶等)采用什么材料,就叫做什么材料制造的集装箱&…

pybullet安装时出现fatal error C1083: 无法打开包括文件: “string.h”: No such file or directory

pybullet安装时出现fatal error C1083: 无法打开包括文件: “string.h”: No such file or directory 报错原文: -----CloneTreeCreator.cppD:\Program_Professional\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\include\cstring(11): fat…

最短路径(数据结构实训)(难度系数100)

最短路径 描述: 已知一个城市的交通路线,经常要求从某一点出发到各地方的最短路径。例如有如下交通图: 则从A出发到各点的最短路径分别为: B:0 C:10 D:50 E:30 F:60 输…

百度每天20%新增代码由AI生成,Comate SaaS服务8000家客户 采纳率超40%

12月28日,由深度学习技术及应用国家工程研究中心主办的WAVE SUMMIT深度学习开发者大会2023在北京召开。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰现场公布了飞桨文心五载十届最新生态成果,文心一言最新用户规模破1亿,截…

PostgreSQL14 Internals 中文版 持续修正...

为了方便自己快速学习,整理了翻译版本,目前翻译的还不完善,后续会边学习边完善。 About This Book 1 Introduction Part I Isolation and MVCC 2 Isolation 3 Pages and Tuples 4 Snapshots 5 Page Pruning and HOT Updates 6 Vacuum…

加强-jdbc与连接池的关系,连接池有哪些

0驱动什么是数据库驱动 开发人员编写好应用程序之后想要操作数据库,平常就了解到有很多种数据库如oracle\mysql\sql server,代码已经写好了是一套总不能在使用不同的数据库技术的时候代码就要写不同方式连接来连接数据库吧,所以开发商在开发数…

产品管理-学习笔记-版本的划分

版本号说明【X.Y.Z_修饰词】 版本号定义原则X表示大版本号,一般当产品出现重大更新、调整、不再向后兼容的情况时我们会在X上加1Y表示功能更新,在产品原有的基础上增加、修改部分功能,且并不影响产品的整体流程或业务Z表示小修改&#xff0c…

Illustrator脚本 #015 自动角线

这是一个在画板上自动生成辅助线和角线的脚本,只要单击最右边按钮运行脚本即可。 绿色的为参考线及出血线。 #target "Illustrator" var settings = {addTrim : true,addBleedGuide : true,addCenterGuide : true,addCover : false,overlapAlert : false,trimma…

联营商自述被坑惨,加盟库迪没有未来?

撰稿 | 多客 来源 | 贝多财经 近日,库迪联营商在社交平台不约而同发出了致库迪咖啡管理层的公开信,两封公开信可谓字字珠玑,没有一句废话,揭开了库迪咖啡在细节、运营、扩张、培训等方方面面的“背后真相”。 两封公开信 折射库…

【PowerMockito:编写单元测试过程中采用when打桩失效的问题】

问题描述 正如上图所示,采用when打桩了,但是,实际执行的时候还是返回null。 解决方案 打桩时直接用any() 但是这样可能出现一个mybatisplus的异常,所以在测试类中需要加入以下代码片段: Beforepublic void setUp() …

如何积极管理日内伦敦银交易?

伦敦银日内交易要做得好,积极的管理是很重要的。不要小看管理这个因素,在日内这种短线交易中,它能对交易结果产生决定性的影响。晚走几秒钟,市场可能就由涨转跌了,投资者就可能由盈转亏了。下面我们就来具体地讨论一下…

Java——值得收藏的Java final修饰符总结!!!

Java final修饰符总结 一、final修饰类二、final修饰方法三、final修饰变量 总结 算下刚转Java到现在也有三个多月了,所以打算对Java的知识进行汇总一下,本篇文章介绍一下Java的final修饰符的作用,final表示最后的、最终的含义,fi…

专题四:前缀和

前缀和 一.一维前缀和(模板):1.思路一:暴力解法2.思路二:前缀和思路 二. 二维前缀和(模板):1.思路一:构造前缀和数组 三.寻找数组的中心下标:1.思路一:前缀和 四.除自身以外数组的乘积&#xff…

java设计模式学习之【备忘录模式】

文章目录 引言备忘录模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用备忘录示例代码地址 引言 想象一下,你正在编辑一篇重要的文档,突然你意识到最近的一些更改实际上破坏了文档的结构。幸运的是,你的文本编辑器允许你撤…

Java的maven

一.概念: 是一款用于管理和构建java项目的工具 作用: 方便项目的依赖管理 统一项目的结构,方便程序员开发及维护 提供了一套标准的项目构建流程,方便编译和构建 二.仓库类型: 本地仓库>自己计算机上的一个目录 中央仓库>由Maven团队维护的全球唯一的。…