当前位置: 首页 > 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是线程…...

华为OD机试题,用 Java 解【压缩报文还原】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

机器学习-BM-FKNCN、BM-FKNN等分类器对比实验

目录 一、简介和环境准备 二、算法简介 2.1四种方法类: 2.1.1FKNN 2.1.2FKNCN 2.1.3BM-FKNN 2.1.3BM-FKNCN 2.2数据预处理 2.3输出视图 2.4调用各种方法看准确率 2.4.1BM-FKNCN 2.4.2BM-FKNN 2.4.3FKNCN 2.4.4FKNN 2.4.5KNN 一、简介和环境准备 k…...

ChatGPT火了,对话式人工智能还能干嘛?

身兼数职的ChatGPT      从2022火到了2023      连日来一直是各大平台的热议对象      其实除了写诗、敲代码、处理文档      以ChatGPT为代表的      对话式人工智能      还有更重要的工作要做      对话式AI与聊天机器人      相信大多数人…...

十一、操作数栈的特点(Operand Sstack)

1.每一个独立的栈帧中除了包含局部变量表以外,还包含一个后进先出的操作数栈,也可以称之为表达式栈。 2.操作数栈,在方法执行过程中,根据字节码指令,往栈中写入数据,或提取数据,即入栈&#xff…...

拆解瑞幸新用户激活流程,如何让用户“动”起来?

Aha时刻 一个产品的拉新环节,是多种方式并存的;新用户可能来自于商务搭建了新的渠道,运营策划了新的活动,企划发布了新的广告,销售谈下了新的客户,市场推广了新的群体,以及产品本身的口碑传播,功能更新带来的自然流量。 这是一个群策群力的环节,不同的团队背负不同的K…...

tkinter界面的TCP通信/开启线程等待接收数据

前言 用简洁的语言写一个可以与TCP客户端实时通信的界面。之前做了一个项目是要与PLC进行信息交互的界面,在测试的时候就利用TCP客户端来实验,文末会附上TCP客户端。本文分为三部分,第一部分是在界面向TCP发送数据,第二部分是接收…...

华为OD机试题,用 Java 解【任务混部】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

看linux内核启动流程需要的汇编指令解释

一、指令 0.MRS 和MSR MRS 指令: 对状态寄存器CPSR和SPSR进行读操作。 MSR指令: 对状态寄存器CPSR和SPSR进行写操作。 1.adrp adrp x0, boot_args把boot_args的页基地址提取出来,放到x0中。 2.stp stp x21, x1, [x0]将 x21, x1 的值存入 x0寄存器记录的地址中…...

【巨人的肩膀】JAVA面试总结(二)

1、💪 目录1、💪1.0、什么是面向对象1.1、JDK、JRE、JVM之间的区别1.2、什么是字节码1.3、hashCode()与equals()之间的联系1.4、String、StringBuffer、StringBuilder的区别1.5、和equals方法的区别1.6、重载和重写的区别1.7、List和Set的区别1.8、Array…...

【网络安全入门】零基础小白必看!!!

看到很多小伙伴都想学习 网络安全 ,让自己掌握更多的 技能,但是学习兴趣有了,却发现自己不知道哪里有 学习资源◇瞬间兴致全无!◇ 😄在线找人要资料太卑微,自己上网下载又发现要收费0 🙃差点当…...

怎么做网站设计/百度网站排名怎么提高

今天带给大家的是一道中国台湾某著名cpu生产公司的面试题。储备知识要看懂今天的代码需要一点储备知识。// C语言的符号意义 ~ 按位取反 例如 ~(111b) (000b) >> 按位右移 例如 (0011b)>>2 (0000b) ~、>>、 的…...

站长工具最近查询/广东企业网站seo哪里好

2019独角兽企业重金招聘Python工程师标准>>> Logback日志使用说明 项目跑了几个月了、测试服务器一直报空间不足、公司很小也没有运维。登上去查看以后发现log日志文件上百G并且很多都是没用的。所以下午简单查看了一下日志文件的配置。 没有优化后的logback.xml配置…...

公司注册代办公司靠谱吗/廊坊百度快照优化排名

操作步骤: 新建/opt/install目录(随便建,脚本中路径一致就行)将installjdk(安装命令脚本),java(环境变量配置脚本),jdk-8u201-linux-x64.tar.gz(安装包也可是其他版本JD…...

wordpress博客 houdini/网站百度关键词优化

文章目录1. 四个问题2. 论文介绍3. 参考资料4. 收获1. 四个问题 解决什么问题 过去的点云网络提取的特征信息 未被完全利用, 用什么方法解决 提出一个即插即用模块,对每一层的特征再利用。具体来说包含Local Context Fusion和Global Bilinear Regulariz…...

工信部网站用户名/舆情分析报告

1,rand 生成均匀分布的伪随机数。分布在(0~1)之间主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’rand(RandStream,m,n)利用指定的Ra…...

手机网站建设合同/如何推广自己的微信公众号

SimHash是一种文本表示的方法,和TF-IDF一样,但是TF-IDF需要遍历所有文本来计算得到文本的表示,计算量较大。 一.SimHash的计算过程 1.分词 对于中文文本来说,一般都要先进行分词才能进一步得到文本的表示向量。 首先按照一定粒…...