论文笔记——I^2R-Net

本文提出了一种名为I^2R-Net的新型网络,用于多人姿态估计。该网络包含人内关系模块和人际关系模块,通过两阶段框架捕获人内和人与人之间的依赖关系,尤其在拥挤场景中提高了姿态估计的准确性。实验显示,I^2R-Net在COCO、CrowdPose和OCHuman数据集上超越了现有最佳方法。
摘要由CSDN通过智能技术生成

摘要:

在本文提出了用于多人姿态估计的人内和人际关系网络(I^2R-Net)。它涉及到两个基本的模块。首先,人内关系模块针对一个人进行操作,旨在捕获人内的依赖关系。其次,人际关系模块考虑了多个实例之间的关系,并专注于捕获人间交互。通过降低特征图的分辨率,人际关系模块可以设计得非常轻量级,但也可以学习有用的关系信息,以显著提高人内关系模块的性能。模型在COCO、CrowdPose和OCHuman数据集上进行了广泛的实验。结果表明,所提出的模型超过了所有最先进的方法。

 一、前言

二维多人姿态估计(MPPE)的目的是检测和定位所有出现在给定图像中的人的人类关键点。由于人体姿态提供了丰富的结构和运动信息,MPPE在人类活动理解、人物交互、化身动画等领域引起了广泛的关注。目前的MPPE方法可以分为自上而下和自下而上两种方式。

尽管上述方法在MPPE中取得了很好的性能,但由于重叠、自遮挡和各种外观和姿态,在拥挤的场景中产生的效果较差。自上而下的方法分别对待每个人,忽略了人与人之间相互作用的信息线索。另一方面,自下而上的方法联合检测图像中所有人的关节,可能将人之间的关节关联起来,但人之间的关系是模糊和不可知的。

最近,一些先驱通过解耦来解决上述挑战或者在一个人身上融合多种可能的姿势。然而,这些方法仍然没有完全考虑到多重-人的相关性,留下这些重要的相互作用未被探索。

自顶向下的方法一个接一个地进行估计,而不考虑实例之间的关系。虽然自底向上的方法可以同时检测所有的姿势,但关系线索是模糊的。相比之下,我们的工作关注于在多人场景中捕获层次交互,以提高姿态估计性能。因此,我们提供了一个新的二阶段框架,专注于为MPPE进行部分级和实例级关系的建模。

本研究研究了如何利用人内和人与人的相关性,例如姿态相似的人或相互密切互动的人,以提高多人姿态估计的准确性。如图1(a)所示,两个人互相拥抱。他们的姿势显示出强烈的人体内信息(例如,左右对和同一肢体的两个关键点)和明显的人体间关系。在图1(b)中,这些人在一起跳舞,表明他们的姿势是相似的,也提供了更准确的姿态估计的人类间的关系信息线索,特别是在被遮挡区域或低分辨率区域。

基于上述观察结果,我们提出了一种新的MPPE双阶段人内和人际关系网络(I2R-Net)。、

第一阶段的目标是学习一个人的身体部位之间的依赖关系。它以高分辨率运行,并捕捉小部位的位置,如眼睛、手腕和脚踝。

第二阶段在低分辨率下进行多人协作。它的目的是实例之间的相互作用,如触摸手、连接手臂和交叉双腿。值得注意的是,每个实例都由一个低分辨率的特征图表示,而不仅仅是一个向量。

通过这样做,我们可以从区域获得不同的响应,因为跨实例交互依赖于空间语义信息。同时,低分辨率特征图显著降低了第二阶段的计算成本,但足以捕获有用的相关信息。我们称之为第一个人内关系模块,以及第二个人际关系模块。这两个阶段以跳跃连接的顺序堆叠起来。

这个两阶段的框架结构灵活,功能专门为MPPE。人内关系模块可以是一种任意的单人姿态估计方法,旨在探索关键点检测的部分级模式。此外,人间关系模块可以通过任何非局部模型来实现,从而更加关注语义特征中的相关性。

这两个模块能够协同推断多人的姿态,因为第一个模块为下一个模块提供了高质量的姿态信息,而第二个模块帮助第一个模块消除遮挡或区分性较差区域的歧义。

贡献:

  • 提出了一个两阶段的MPPE框架,它不仅将每个身体的部分联系在一个人身上,而且在图像中的多人之间建立了联系。该方法弥补了姿态估计与人与人之间交互作用的空隙,也就是通过人与人之间的交互作用信息去更好的姿态估计也就是关键点检测。
  • 该框架被设计成是灵活的。处理人内关系的模块可以是任意姿态估计方法。而建模人际关系的模块是非常轻量级的。
  • 大量的实验表明,在没有花哨的情况下,该方法在CrowdPose、OCHuman和COCO等具有挑战性的数据集上显著超过了最先进的方法。

二、相关工作

Sure! Here's your code with comments added: ```matlab F = zeros(length(z), 1); % Initialize the F vector with zeros for i = 1:length(z) % Define the Phi function using anonymous function Phi = @(theta, R, r) (z(i) + lc - lm) .* r.R .(R - r.sin(theta)) ./ ... ((R.^2 + r.^2 - 2*R.*r.*sin(theta)).sqrt(R.^2 + r.^2 + (z(i) + lc - lm).^2 - 2*R.*r.*sin(theta))) + ... (z(i) - lc + lm) .* r.R .(R - r.sin(theta)) ./ ... ((R.^2 + r.^2 - 2*R.*r.*sin(theta)).sqrt(R.^2 + r.^2 + (z(i) - lc + lm).^2 - 2*R.*r.*sin(theta))) + ... (z(i) + lc + lm) .* r.R .(R - r.sin(theta)) ./ ... ((R.^2 + r.^2 - 2*R.*r.*sin(theta)).sqrt(R.^2 + r.^2 + (z(i) + lc + lm).^2 - 2*R.*r.*sin(theta))) + ... (z(i) - lc - lm) .* r.R .(R - r.sin(theta)) ./ ... ((R.^2 + r.^2 - 2*R.*r.sin(theta)).sqrt(R.^2 + r.^2 + (z(i) - lc - lm).^2 - 2*R.*r.sin(theta))); % Calculate the value of F(i) using the integral3 function F(i) = BrNI / (4 * lc * (Rc - rc)) * integral3(Phi, 0, 2*pi, rc, Rc, rm, Rm); end ``` This code calculates the values of the vector `F` using a loop. The `Phi` function is defined as an anonymous function that takes `theta`, `R`, and `r` as input parameters. It performs a series of calculations and returns a value. The integral of `Phi` is then calculated using the `integral3` function. The result is stored in the corresponding element of the `F` vector. Please note that I have made some assumptions about the variables and functions used in your code since I don't have the complete context. Feel free to modify or clarify anything as needed.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值