当前位置: 首页 > news >正文

【ICCV2022】 CAPAO:一种高效的单阶段人体姿态估计模型

CAPAO:一种高效的单阶段人体姿态估计模型

  • 重新思考关键点表示:将关键点和姿态建模作为多人姿态估计的对象(Rethinking Keypoint Representations: Modeling Keypoints and Poses as Objects for Multi-Person Human Pose Estimation)

1. 摘要

  • 在人体姿态估计等关键估计任务中,基于热图的回归是主要的方法,尽管存在明显的缺点:热图本质上存在量化误差,需要过多的计算来生成和后处理。
  • 为了找到一个更有效的解决方案,我们提出在一个密集基于锚的单阶段检测框架,其将单个关键点和空间相关的关键点(即姿态)建模为对象。因此,我们将我们的方法称为KAPAO(发音为“Ka-Pow”),用于表示关键点并伪装成对象。
  • 将KAPAO应用于单阶段多人姿态估计问题,同时检测人姿态和关键点对象,利用两种人姿态表示的优势。在实验中,我们观察到KAPAO比以前的方法更快、更准确,受热图后处理的影响。在实际设置中,当不使用测试时间增强时,精度-速度的权衡特别有利。

论文:https://arxiv.org/pdf/2111.08557.pdf
代码:https://github.com/wmcnally/kapao

效果如下所示,如果想要查看更多视频,可以去源代码仓库查看:
在这里插入图片描述

2. 简介

  • 估计关键点位置最常用的方法是生成热图(heat-maps),即在目标关键点坐标上的中心二维高斯分布。然后利用深度卷积神经网络对输入图像上的目标热图进行回归,并通过预测的热图的最大值参数进行关键点预测。

  • 上述方法存在的弊端:1.受到输出热图的空间分辨率的限制,热图越大越有利,但是即使使用了大型热图,也需要特殊的后处理步骤来改进关键点预测,从而减缓推理;2.当同一类型(即类)的两个关键点彼此靠近时,重叠的热图信号可能会被误认为是单个关键点。

  • 我们引入了一种新的姿态对象表示,以帮助检测空间相关的关键点集。此外,我们同时检测关键点对象和姿态对象,并使用一个简单的匹配算法来融合结果,以利用这两种对象表示的好处。通过对姿态对象的检测,统一了人的检测和关键点估计,提供了一种高效的单阶段多人姿态估计方法,其精度和速度如下图所示:其中,圆的大小与模型参数的数量成正比
    在这里插入图片描述

  • 由于没有使用热图,KAPAO在准确性和推断速度方面比最近的单阶段人体姿态估计模型要更好,特别是在不使用测试时间增强(TTA)时,这代表了这些模型在实践中是如何部署的。如上所示,KAPAO在没有TTA的情况下,在微软COCO关键点验证集上实现了70.6的AP,而平均延迟为54.4 ms(转发通过+后处理时间)。与最先进的单级模型HigherHRNet + SWAHR 相比,KAPAO在不使用TTA时更快5.1×,更精确3.3 AP。与中心组(The center of attention: Center-keypoint grouping via attention for multi-person pose estimation. In: ICCV (2021))相比,KAPAO更快3.1×,更准确1.5 AP。这项工作的贡献总结如下:

      1. 提出了一种新的姿态对象表示方法,它通过包含一组与该对象相关联的关键点来扩展传统的对象表示方法。
      1. 通过同时检测关键点对象和姿态对象,并融合检测结果,提出了一种新的单阶段人体姿态估计方法。在不使用TTA的情况下,所提出的无热图的方法明显比最先进的基于热图的方法更快、更准确。

3. 相关工作

3.1 Heatmap-free keypoint detection

  • DeepPose [58]使用深度神经网络的级联,直接从图像中回归关键点坐标,迭代地细化关键点预测。此后不久,Tompson等人[57]引入了关键点热图的概念,这在人类姿态估计和其他关键点检测应用中仍然普遍存在。
  • 注意到与生成热图相关的计算低效,Li[30]等人解开了水平和垂直关键点坐标,这样每个坐标都使用一个热编码向量表示。这节省了计算量,并允许扩展输出分辨率,从而减少了量化误差的影响,并消除了细化后处理的需要。Li等人[27]引入了残余对数似然(RLE),这是一种基于归一化流[53]的直接关键点回归的新的损失函数。直接关键点回归也已尝试使用Transformers

3.2 Single-stage human pose estimation

   单阶段人体姿态估计方法使用单个前向通道来预测图像中每个人的姿态。相比之下,两阶段的方法首先使用现成的人检测器(例如,更快的R-CNN [52],YOLOv3 [51]等)来检测图像中的人。然后估计每个检测的姿态。单阶段方法通常不太准确,但通常在拥挤的场景[28]中表现更好,通常因为它们的简单和效率而被首选,随着图像中人数的增加,这变得特别有利。与两阶段方法相比,单阶段方法在设计上的差异更大。例如,它们可以:(i)检测图像中的所有关键点并执行自下而上的分组到人体姿态;(ii)扩展对象检测器以统一人检测和关键点估计;或(iii)使用替代的关键点/姿态表示(例如,预测根关键点和相对位移)。下面,我们将简要总结一下最新的最先进的单阶段方法:

  • Cheng等人[7]将HRNet [54]重新用于自底向上的人体姿态估计,通过添加一个转置卷积来加倍输出热图分辨率(HigherHRNet),并使用关联嵌入[42]进行关键点分组。他们还实施了多分辨率训练来解决尺度变化问题。
  • Geng等人的[12]使用HRNet骨干预测了人中心热图和2K个偏移图,分别表示以每个像素为中心的候选姿态的K个关键点的偏移向量。他们还使用单独的回归头和自适应卷积来解开关键点回归(DEKR)。
  • Luo等人[35]以HigherHRNet为基础,提出了尺度和权重自适应热图回归(SWAHR),该回归基于人尺度对地面-真实热图高斯方差进行缩放,并平衡前景/背景损失加权。他们的修改提供了比HigherHRNet的显著精度改进,以及与许多两阶段方法相当的性能。再次使用HigherHRNet作为基础,
  • Bras‘o等人[3]提出中心小组使用一个完全可区分的自我注意模块,端到端训练与关键点检测器。
  • 值得注意的是,上述所有方法都遭受了昂贵的热图后处理,因此,它们的推理速度还有很多不足之处

3.3 Extending object detectors for human pose estimation

目标检测任务与人体姿态估计任务之间存在显著的重叠。例如:

  • He等人[14]使用Mask R-CNN实例分割模型,通过使用一个热掩模预测关键点来进行人体姿态估计。
  • Wei等人[64]提出了点集锚,它采用了视网膜网[32]目标探测器。
  • Zhou等人。[70]使用基于热图的中心点和中心网建模对象,并将姿态表示为中心点的2k维属性。
  • Mao等人[36]使用动态滤波器[21]使用FCPose调整了FCOS [56]对象检测器。虽然这些基于目标探测器的方法提供了良好的效率,但它们的精度并没有与最先进的基于热图的方法竞争。
  • 我们的工作最类似于点集锚点[64];然而,我们的方法不需要定义依赖于数据的姿态锚点。此外,我们同时检测单个关键点和姿态,并融合检测,以提高我们最终姿态预测的准确性。

4. KAPAO: Keypoints and Poses as Objects

  • KAPAO使用一个密集的检测网络来同时预测一组关键点对象和一组姿态对象.
  • 这两种对象表示法都具有独特的优势。关键点对象专门用于检测具有强局部特征的单个关键点。在人类姿态估计中常见的这些关键点的例子包括眼睛、耳朵和鼻子。然而,关键点对象不携带关于人或姿势概念的信息。如果单独用于多人的人体姿态估计,将需要一种自下而上的分组方法来将检测到的关键点解析为人体姿态。相比之下,姿态对象更适合于定位具有弱局部特征的关键点,因为它们使网络能够学习一组关键点内的空间关系。此外,它们可以直接用于多人的人体姿态估计,而不需要自下而上的关键点分组。
  • 认识到关键点对象存在于姿态对象的子空间中,KAPAO网络被设计为使用单个共享网络头以最小的计算开销同时检测两种对象类型。在推理过程中,使用一种简单的基于公差的匹配算法,将更精确的关键点对象检测与人体姿态检测进行融合,该算法在不牺牲任何大量推理速度的情况下,提高了人体姿态预测的准确性。下面的部分详细介绍了网络架构、用于训练网络的损失函数和推理。

4.1 Architectural Details

  • 下图提供了模型的算法结构,它使用一个深度卷积神经网络N映射RGB输入图像I(hxwx3)到一组特征金字塔(分别按照8、16、32、64进行采样),其中N为多任务损失L训练的密集检测网络,然后利用非极大值一直(NMS)获得候选检测结果:姿态和关键点,并利用匹配算法将其融合在一起,获取最终的人体姿态预测结果P

在这里插入图片描述

  • N是一个YOLO风格的特征提取器,在特性金字塔[31]宏体系结构中广泛使用跨阶段-部分(CSP)瓶颈。为了为不同的速度要求提供灵活性,通过缩放N中的层数和通道数,我们训练了三种尺寸的KAPAO模型(即KAPAO-S/M/L)。
  • 此处翻译时公式比较难打,直接附上原图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4.2 Loss Function

在这里插入图片描述
在这里插入图片描述

4.3 Inference

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.4 Limitations

在这里插入图片描述

5. Experiments

5.1 Microsoft COCO Keypoints

训练时:

  • KAPAO-S/M/L都在2017年COCO列车上训练了500个周期,使用内斯特罗夫动量的随机梯度下降,权重衰减,学习速率在单余弦周期上衰减.
  • 输入的图像被调整大小并填充到1280×1280,保持原来的长宽比。在训练过程中使用的数据增强包括马赛克[2]、HSV颜色空间扰动、水平翻转、平移和缩放。
  • 许多训练超参数都继承自[23,61],包括锚盒A和减重量w、λobj、λbox和λcls。其他的,包括关键点边界框大小bs和关键点损失权重λkps,都是使用小网格搜索手动调整的。
  • 这些模型在4个v100gpu上进行训练,每个gpu有32 GB内存,批处理大小分别为128、72和48分别是KAPAO-S、M和L。在每个历元之后进行验证,保存提供最高验证AP的模型权重。

测试结果直接放表格吧:

在这里插入图片描述在这里插入图片描述

5.1 CrowdPose

人群中的姿势:

  • 研究发现,在之前的单阶段方法相比,KAPAO在存在遮挡方面表现突出,在所有指标上都取得了竞争性的结果,以及AP的最先进的准确性。
  • 在拥挤场景中的熟练程度是明显的,更多遮挡情况下准确度更高。
    在这里插入图片描述

5.2 消融研究(Ablation Studies)

在这里插入图片描述
在这里插入图片描述

6. 结论

  • 本文提出了一种基于关键点和对象建模的无热图关键点估计方法KAPAOKAPAO通过检测人体姿态对象,有效地应用于单阶段多人人体姿态估计问题。此外,融合联合检测到的关键点对象可以以最小的计算开销提高预测的人体姿态的精度。当不使用测试时间增强时,KAPAO明显比以前的单阶段方法更快、更准确,这将受到热图后处理和自下而上的关键点分组的极大阻碍。此外,KAPAO在严重遮挡下表现良好,这可以由CrowdPose的竞争结果证明。
conda info --envs

相关文章:

【ICCV2022】 CAPAO:一种高效的单阶段人体姿态估计模型

CAPAO:一种高效的单阶段人体姿态估计模型 重新思考关键点表示:将关键点和姿态建模作为多人姿态估计的对象(Rethinking Keypoint Representations: Modeling Keypoints and Poses as Objects for Multi-Person Human Pose Estimation&#xf…...

ROS1学习笔记:ROS中的坐标管理系统(ubuntu20.04)

参考B站古月居ROS入门21讲:ROS中的坐标系管理系统 基于VMware Ubuntu 20.04 Noetic版本的环境 文章目录一、机器人中的坐标变换二、TF功能包三、小海龟跟随实验3.1 启动实验3.2 查看当前的TF树3.3 坐标相对位置可视化3.3.1 tf_echo3.3.2 rviz一、机器人中的坐标变换…...

requests---(2)session简介与自动写博客

目录:导读 session简介 session登录 自动写博客 获取登录cookies 抓取写博客接口 requests自动写博客 写在最后 http协议是无状态的,也就是每个请求都是独立的。那么登录后的一系列动作,都需要用cookie来验证身份是否是登录状态&#…...

基于 HAProxy + Keepalived 搭建 RabbitMQ 高可用集群

RabbitMQ 集群 通常情况下,在集群中我们把每一个服务称之为一个节点,在 RabbitMQ 集群中,节点类型可以分为两种: 内存节点:元数据存放于内存中。为了重启后能同步数据,内存节点会将磁盘节点的地址存放于磁…...

基于51单片机和proteus的智能调速风扇设计

此智能风扇是基于51单片机和proteus的仿真设计,功能如下: 1. Timer0 PWM控制电机转速 2. DHT11采集温湿度 3. LCD1602显示温湿度及电机状态 4. 按键控制电机加减速启停等 5. 串口控制电机加减速启停等 功能框图如下: Proteus仿真界面如下…...

SQL Server开启CDC的完整操作过程

这里写自定义目录标题写在前面SQL Server开启CDC1. 将指定库的实例先开启CDC2. 开启需要开启CDC的表3. 关闭CDC功能更详细信息参照官网写在前面 鉴于老旧数据的结构和项目都在sqlserver上存储,且迁移成本巨大,当下要为sqlserver的存储过程减负。要将一部…...

【Spring Cloud Alibaba】008-Sentinel

【Spring Cloud Alibaba】008-Sentinel 文章目录【Spring Cloud Alibaba】008-Sentinel一、服务雪崩1、概述2、解决方案常见的容错机制二、Sentinel:分布式系统的流量防卫兵1、**Sentinel** 概述简介特性Sentinel 的开源生态Sentinel 的历史2、Sentinel 基本概念资源…...

解读CRC校验计算

个人随笔 (Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 参考:http://www.sunshine2k.de/articles/coding/crc/understanding_crc.html 参考:https://en.wikipedia.org/wiki/Cyclic_redundancy_check 参考:https://www.cnblogs.com/…...

深入理解Spring MVC下

上一篇博客从理论概念上来梳理Spring MVC相关知识,此篇博客将通过spring官网提供showcase代码为例子,详细介绍showcase代码中包含的各个例子是如何实现的。官网的showcase代码包含的主要例子包括,Demo地址:Mapping Requests&#…...

【Linux】ssh-keygen不需要回车,自动生成密钥,批量免密操作!

使用命令ssh-keygen 需要手动敲击回车,才会生成密钥,如下代码所示 [rootlocalhost ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase):…...

C/C++开发,无可避免的内存管理(篇四)-智能指针备选

一、智能指针 采用C/C开发堆内存管理无论是底层开发还是上层应用,无论是开发新手,还是多年的老手,都会不自觉中招,尤其是那些不是自己一手经历的代码,要追溯问题出在哪里更是个麻烦事。C/C程序常常会遇到程序突然退出&…...

VMware ESXi给虚拟机扩容

用ESXi管理的虚拟机硬盘空间不够了,讲一下如何进行扩容。 一、查看现状 通过如下三个命令,可以查看硬盘情况,可以看到只有500G,已经用了45%。这次我们再扩容500G。 df -Th lsblk fdisk -lIDE磁盘的文件名为        /de…...

认识STM32和如何构建STM32工程

STM32介绍什么是单片机单片机(Single-Chip Microcomputer)是一种集成电路芯片,把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种/0口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电…...

RabbitMQ延迟队列

目录 一、概念 二、使用场景 三、RabbitMQ 中的 TTL (一)队列设置 TTL (二)消息设置 TTL (三)两者的区别 四、整合SpringBoot实现延迟队列 (一)创建项目 (二&am…...

Java中常用的七种队列你了解多少?

文章目录Java中常用的七种队列你了解多少?ArrayBlockingQueue队列如何使用?添加元素到队列获取队列中的元素遍历队列LinkedBlockingQueue队列如何使用?1. 创建SynchronousQueue对象2. 添加元素到队列3. 获取队列中的元素4. 遍历队列SynchronousQueue队列…...

<Java获取时间日期工具类>常见八种场景(一)

一:自定义时间日期工具类常用的八种方式(整理): 0,getTimeSecondNum:时间日期转成秒数,常用于大小比较 1,getLastYearMonthLastDay:获取去年当月最后一天的时间日期 2,getLastYearM…...

接上一篇 对多个模型环形旋转进行优化 指定旋转位置

using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; public class ModelAnimal : MonoBehaviour { //记录鼠标滑动 public Vector2 lastPos;//鼠标上次位置 Vector2 currPos;//鼠标当前位置 Vector2 offset;//两次位置的偏移…...

Unity中获取地形的法线

序之前,生成了地形图:(42条消息) 从灰度图到地形图_averagePerson的博客-CSDN博客那末,地形的法线贴图怎么获取?大概分为两个部分吧,先拿到法线数据,再画到纹理中去。关于法线计算Unity - Scripting API: M…...

模型解释性:PFI、PDP、ICE等包的用法

本篇主要介绍几种其他较常用的模型解释性方法。 1. Permutation Feature Importance(PFI) 1.1 算法原理 置换特征重要性(Permutation Feature Importance)的概念很简单,其衡量特征重要性的方法如下:计算特征改变后模型预测误差的增加。如果打乱该特征的…...

spring常见面试题(2023最新)

目录前言1.spring是什么2.spring的设计核心是什么3.IOC和AOP面试题4.spring的优点和缺点5.spring中bean的作用域6.spring中bean的注入方式7.BeanFactory 和 ApplicationContext有什么区别?8.循环依赖的情况,怎么解决?9.spring中单例Bean是线程…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...

JavaScript 中的 ES|QL:利用 Apache Arrow 工具

作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...

django filter 统计数量 按属性去重

在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析,分为​​已启动​​和​​未启动​​两种场景: 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​:当其他组件(如Activity、Service)通过ContentR…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

消息队列系统设计与实践全解析

文章目录 🚀 消息队列系统设计与实践全解析🔍 一、消息队列选型1.1 业务场景匹配矩阵1.2 吞吐量/延迟/可靠性权衡💡 权衡决策框架 1.3 运维复杂度评估🔧 运维成本降低策略 🏗️ 二、典型架构设计2.1 分布式事务最终一致…...