拥挤场景多人姿态估计论文梗概及代码CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark

本文主要是介绍拥挤场景多人姿态估计论文梗概及代码CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

姿态估计是视频动作分析识别的基础工作,我有一篇小综述讲了姿态估计相关技术路线的发展,可以点这个链接看。
本文是MVIG大佬们发表在CVPR2019上的一篇论文,上号交通大学,基于AlphaPose思路,进一步提升了拥挤情况下准度
代码:github点这,基于Pytorch,是实时多人姿态估计系统
论文:论文点这
论文第二版点这

Abstract

多人姿态估计是大量计算机视觉任务的基础,近年来也取得了很大成就。然鹅(故意打成鹅的),几乎没有先进的方法探究拥挤场景中姿态估计问题,这个问题在仍然是具有挑战性且实用中不可避免。与此同时,当下的基准也难以对这种情况进行适当的评估。本文中,我们提出了一种新颖有效的方法来解决人群中的姿态估计问题。我们的模型有两个关键部分:候选点的单人姿态估计(SPPE)和全局最大节点关联算法。
通过使用图模型对每个关键点与全局关联进行多峰预测(multi-peak),我们的方法对于在拥挤场景中不可避免的干扰具有鲁邦性,且推理效率很高。提出的方法比CrowPose数据集上最新方法高5.2mAP,MS COCO上也证明了泛化能力,数据和代码已公开。

一、Introduction

姿态估计两大类方法,自上而下Top-down、自下而上Bottom-up。
现有方法上,看上去效果不错,但是拥挤情况下性能严重下降如图3。如图1直观的看
效果图
下降图
本文提出新的方法,采用全局视图来解决干扰问题。
我们采用Top-Down方式,先检测每个人,然后使用单人姿态估计 single person pose estimation (SPPE)

我们提出了一个节点候选SPPE和一个全局最大节点关联算法。与以前仅仅预测输入人体区域的目标节点有所不同,我们的联合候选SPPE方法输出每个节点的候选位置列表。候选列表包括目标节点和干涉节点。然后我们的关联算法利用这些候选集,建立人与人之间的联系图。

最后,我们使用全局最大节点关联算法,解决了这个图模型中的 关键点关联问题。此外,我们的图优化算法的计算复杂度与常规NMS相同。

综上所述,本文的主要工作如下:i)提出了一种解决拥挤的姿态估计问题的新方法。ii)我们收集了一个新的拥挤人体姿势数据集,以更好地评估拥挤场景中的算法。我们对提出的方法进行实验。当使用相同的基于ResNet-101的网络骨干网时,我们的方法在数据集上比所有最新技术都高5.2mAP。此外,我们使用模块将SPPE和后处理步骤替换为最新方法,并在MSCOCO数据集上带来了0.8mAP的改进。也就是说,我们的方法可以在不拥挤的场景中正常使用。

2 Related Work

(这部分点本链接看我的综述更全)

3 Our Method

流程如图2,人体检测器获得的人体边界框送入联合候选(JC)单人姿态估计器SPPE,JC SPPE在热力图上找到不同相应分数的联合候选(3.1节)。然后,联合关联算法建立人-节点连接图(3.2节)

图2

3.1 Joint-Candidates SPPE

JC SPPE接受人的区域,输出一组热力图,表示人体关键点位置。即便输入一个框按理只有一个人,但是拥挤场景下,一个框里肯不可避免的有其他人的大量节点。以前的工作使用SPPE来抑制干扰节点,但是SPPE在拥挤场景中失效。为了解决这个问题,我们提出 JC SPPE,拥有在更多全局视角下的新的损失函数。

3.1.1 Loss Design

对于第i个人的区域 R i R_i Ri , 有两种节点,一种是人体节点target joints,另一种是干扰节点interference joints。损失模块中采用热力图,由于其像素级别的监督和全卷积结构,因而被广泛使用。想增强target joints的响应,抑制其他的相应。但是我们并不直接抑制,因为当前的干扰节点可能是其他区域的人体节点。
因此,我们在干扰节点中以全局方式估计人体姿态和其他人的人体推荐区域。
所以,为了利用两种候选节点,我们以不同的强度输出他们。
Heatmap Loss
公式1
Ω i k Ω_i^k ik 是干扰节点的集合。 C i k C_i^k Cik 是热力图中的干扰节点。µ是[0,1],取0.5,即不被注意到,又不被覆盖掉。常规的热力图损失函数是µ=0

3.1.2Discussion

常规的SPPE取决于高质量的人为检测结果。它的任务是根据给定的人的包围框来定位和识别关键点节点。如果SPPE误将干扰节点用作目标节点,则将是无法恢复的错误。丢失的节点无法在诸如pose-NMS的后处理步骤中恢复。

我们提出的候选节点损失旨在解决此缺陷。此损失函数鼓励JC SPPE网络预测多峰热图,并将所有可能的节点设置为候选。在拥挤的场景中,尽管传统的SPPE很难识别目标关节,但JC SPPE仍然可以预测出候选关节列表并保证高召回率。我们将关联问题留给下一个过程,在那个过程中,我们可以从其他JC SPPE(根据其他人体建议)获得更多全局信息来解决该问题。

3.2 Person-Joint Graph人体关键图

由于我们的候选节点机制和人体检测器的冗余包围框,候选节点在数值上比实际多很多。为了减少多余的节点,我们构建了一个人体节点图,并应用最大人体节点匹配算法来构造最终的人体姿势。
图4

3.2.1 Joint Node Building 合并节点

由于高度重叠的人体区域往往会预测出相同的实际节点(如图4所示),因此我们首先将这些可以组合的对象归为一组,它们代表与一个节点相同的实际节点。

由于高质量的关节预测,指示同一节点的候选节点始终彼此靠近。因此,我们可以使用以下规则对它们进行聚类:
对于第k个节点(身体各部位节点编号为1…k),给定两个位于 p 1 k 和 p 2 k p_1^k和p_2^k p1kp2k 的候选关节,及控制偏差δ,如果p1-p2欧氏距离 ≤ min{u1, u2}δ,我们将它们标记为同一组。
u 2 k u_2^k u2k 是p2在热度图上的高斯响应,由高斯响应的误差决定。
公式2
δ是控制第k个关节偏差的参数,我们直接采用MSCOCO关键点数据集中的参数。
使用min{u1,u2}而不是恒定阈值的原因是为了确保只有在 p 1 和 p 2 p_1和p_2 p1p2 同时落入彼此的控制域(半径分别为u1δ,u2δ)时,我们才将它们组合在一起。 一个Node表示一组按上述标准聚集在一起的节点。

现在,通过将一个节点组合为一个Node,我们有了Node集
J = v j k : k ∈ 1... K , j ∈ 1... N k J={v^k_j:k∈{1...K},j∈{1...N_k}} J=vjkk1...Kj1...Nk ,其中 N k N_k Nk 是身体部位k的关节节点数, v j k v^k_j vjk 是身体部位k的第j个节点。J中的节点总数为∑Nk。

3.2.2 Person Node Building个人节点的构建

person nodes代表人体检测器检测到的人体区域。我们将person nodes表示为 H = h i : ∀ i ∈ 1... M H={h_i:∀i∈{1...M}} H=hii1...M ,其中 h i h_i hi 是第i个人节点,M是检测到的人体区域的数量。
理想中,高质量的行人检测器应该紧贴着人,然鹅(故意打成鹅的),拥挤场景中,很难如此。人体检测器将产生许多多余的建议,包括截断和不紧凑的边界框。 在Sec 3.3中进行全局人关节匹配时,我们将消除这些低质量的人体区域。

3.2.3Person-Joint Edge

在获得node和person nodes之后,我们将它们连接起来以构建我们的人节点图。对于每个人的节点hi,JC-SPPE将预测节点的多个候选结果。如果这些候选结果中有对node v j k v^k_j vjk 有所贡献,我们将在他们之间建立一个边缘 e k i j e^k~ij~ ek ij  权重e是双参关节点的响应评分,记为 w i k j w^k_ij wikj 这样我们可以构造边缘集合E={ekij:∀i,j,k}。
人关节图可以写成: G = ( ( H , J ) , E ) G=((H,J), E) G=((H,J),E)

3.3 Globally Optimizing Association

从现在开始,我们估计人群中人体姿势的目标已转变为求解上述人节点图并最大化总边缘权重。我们的目标函数如下图,d表示是否保留边,Eq.5和6约束每个人体区域只能匹配1-K的节点各一个。
公式4
如方程式10所示,求解人节点图G中的全局分配问题在数学上等效于分别求解其子图Gk。Gk是由人体子集和第k个节点子集组成的二部图。 对于每个子图,应用更新的Kuhn-Munkres算法[1]以获得优化结果。通过分别求每个Gk,我们获得最终结果集R。

给定图匹配结果,如果dkij=1,则vkj的加权中心被分配给第i个人体提案的第k个节点。在此,加权中心表示vkj中的候选节点坐标的线性组合,权重是他们的热力图响应分数。以这种方式,可以构造每个人体区域的姿势。无法匹配任何节点的人员区域将被删除。

公式8
Computational Complexity
姿势估计的推理速度在许多应用中至关重要。我们证明了我们的全局节点算法与普通的贪婪NMS算法效率相同

3.4 Discussion

我们的方法采用基于图的方法,以全局最佳方式将节点与人体区域相关联。人体区域相互竞争节点。通过这种方式,没有主导人体实例的不合格人体区域将不会被分配任何节点,因为由于缺少主导人体实例,它们的节点响应分数都相对较低,将许多糟糕的人体区域拒绝。与我们的方法相比,常规NMS是一种基于贪婪和基于实例的算法,效率较低。尽管[10,17,27]提出了姿势-NMS来利用姿势信息,但是他们的算法是基于实例的,无法解决节点缺失和装配错误的问题。我们的全局优化关联方法可以很好地处理此类情况。
图

4 数据集CrowdPose Dataset

图6

4.1 拥挤程度定义

公式12
第i个人的包围框中,属于i的关键点是 N i a N_i^a Nia 不属于的是 N i b N_i^b Nib ,请看图6

4.2 数据收集

各个组都选了些,即拥挤,又是生活化的场景。MS COCO有17个关键点,MPII有16个,AI Challenger有14个关键点。我们就定14个吧。30000张图,选20000高质量的图。共有80000个人。训练验证测试分别是5:1:4,平均IOU是0.27,而MSCOCO是0.06,MPII是0.11,AI那个是0.12

5 实验

图7
简单使用YOLOV3来检测人,姿态估计采用AlphoPose,训练时旋转30度以内,尺度30%以内,输入320 x 256,热度图输出为80 x 64,学习率10-4,80 epochs后10-5,minibatch是64,RMSprop的优化器。测试时检测器结果先宽和高扩大30%,使用 JC SPPE,2块1080Ti上训练,基于Pytorch。
使用ResNet-101,不同对比实验中我们使用了相同的backbone来对比实验。

表2

表3
Inference Speed

如表2,我们和AlphoPose速度差不多。我们使用最精确的OpenPose对比的,它的输入是1024 X 736。

Conclusion

推出了创新的方法来解决遮挡等问题。基于候选关键点的SPPE,我们构建了行人关键点图模型。我们将姿态估计问题转换到图匹配问题,在全局视野优化了结果。
为了更好的评估拥挤场景的效能,创建CrowdPose数据集,并且明显的达到了最好效果,在MSCOCO也表明了方法具有泛化场景的能力。

这篇关于拥挤场景多人姿态估计论文梗概及代码CrowdPose: Efficient Crowded Scenes Pose Estimation and A New Benchmark的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095195

相关文章

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

uva 10916 Factstone Benchmark(打表)

题意是求 k ! <= 2 ^ n ,的最小k。 由于n比较大,大到 2 ^ 20 次方,所以 2 ^ 2 ^ 20比较难算,所以做一些基础的数学变换。 对不等式两边同时取log2,得: log2(k ! ) <=  log2(2 ^ n)= n,即:log2(1) + log2(2) + log2 (3) + log2(4) + ... + log2(k) <= n ,其中 n 为 2 ^

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1