【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。这项工作的贡献总结如下:-
- 提出了一种新的姿态对象表示方法,它通过包含一组与该对象相关联的关键点来扩展传统的对象表示方法。
-
- 通过同时检测关键点对象和姿态对象,并融合检测结果,提出了一种新的单阶段人体姿态估计方法。在不使用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. 结论
- 本文提出了一种基于关键点和对象建模的无热图关键点估计方法
KAPAO。KAPAO通过检测人体姿态对象,有效地应用于单阶段多人人体姿态估计问题。此外,融合联合检测到的关键点对象可以以最小的计算开销提高预测的人体姿态的精度。当不使用测试时间增强时,KAPAO明显比以前的单阶段方法更快、更准确,这将受到热图后处理和自下而上的关键点分组的极大阻碍。此外,KAPAO在严重遮挡下表现良好,这可以由CrowdPose的竞争结果证明。
conda info --envs
相关文章:
【ICCV2022】 CAPAO:一种高效的单阶段人体姿态估计模型
CAPAO:一种高效的单阶段人体姿态估计模型 重新思考关键点表示:将关键点和姿态建模作为多人姿态估计的对象(Rethinking Keypoint Representations: Modeling Keypoints and Poses as Objects for Multi-Person Human Pose Estimation…...
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是线程…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
C语言中提供的第三方库之哈希表实现
一. 简介 前面一篇文章简单学习了C语言中第三方库(uthash库)提供对哈希表的操作,文章如下: C语言中提供的第三方库uthash常用接口-CSDN博客 本文简单学习一下第三方库 uthash库对哈希表的操作。 二. uthash库哈希表操作示例 u…...
