当前位置: 代码迷 >> 综合 >> 行为分析(二):姿态估计部分(二):HRNet-DEKR
  详细解决方案

行为分析(二):姿态估计部分(二):HRNet-DEKR

热度:106   发布时间:2023-11-21 09:22:52.0

HRNet-DEKR: Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression-通过解耦关键点回归完成自下而上方式的人体位姿估计

论文摘要

在本文中我们对从图像中估计人体姿势的自底向上范式感兴趣。我们研究了以前不如关键点检测和分组框架的密集关键点回归框架。我们的动机是准确地回归关键点位置需要学习专注于关键点区域的表示。我们提出了一种简单而有效的方法,称为解缠(解耦)关键点回归(DEKR)。我们通过逐像素空间变换器采用自适应卷积来激活关键点区域中的像素,并相应地从中学习表示。我们使用多分支结构进行单独的回归:每个分支通过专用的自适应卷积学习一个表示并回归一个关键点。由此产生的解开表示能够分别关注关键点区域,因此关键点回归在空间上更准确。我们凭经验表明,所提出的直接回归方法优于关键点检测和分组方法,并在两个基准数据集 COCO 和CrowdPose 上实现了出色的自底向上姿态估计结果。代码和模型可从 GitHub - HRNet/DEKR: This is an official implementation of our CVPR 2021 paper "Bottom-Up Human Pose Estimation Via Disentangled Keypoint Regression" (https://arxiv.org/abs/2104.02300) 获得。

写在前面

为什么DEKR版本的自底而上的方法准确率可以有效的提高?因为其余自底而上的算法都是先对整个输入去直接做人体关键点的生成,然后再将这些人体关键点通过聚类等方式确定所属的人,自然,整个网络的性能会受到聚类效果的影响。

而DEKR版本采用分支的形式,在训练的时候就进行了关键点的解耦,再加上自适应卷积的对网络学习能力的提升,自然准确率会高些。

先补充点基础知识

主要是写一些关于DEKR的基础知识点

1.DEKR 解构式关键点回归:算法思想

DEKR的个性在于,它独立地对每个关键点进行特征提取和回归,实现了关键点之间的解耦,犹如其名——解构式关键点回归,而这种做法的成功则得益于其中的重要思想:回归关键点坐标的特征必须集中注意到关键点周围的区域

主要包含一下两点
(1)传统卷积只能激活中心像素及其周围的邻域点,于是,DEKR设计了一种自适应卷积,它能够使得像素点的激活范围不再局限于其邻域,而是集中在关键点周围
(2)为了使得每个关键点的预测更加精准,就应该更有针对性地对各个关键点进行特征提取和回归。于是,DEKR采用了多分支结构,每个分支与每个关键点一一对应,利用自适应卷积专心学习关键点特征,然后基于这些特征去回归关键点的位置这些并行的分支结构都是一样的,但是各自有独立的参数,互相“井水不犯河水”。这样就实现了各个关节点之间的解耦。

将上面的两点结合起来大致的框架是

图3. 解构式关键点回归。 每个分支通过两个自适应卷积从主干输出的特征图的分区中学习一个关键点的表示,并分别使用 1×1 卷积回归每个关键点的 2D 偏移。 这是三个关键点的说明,特征图被分成三个分区,每个分区输入一个分支。 在我们关于 COCO 姿态估计的实验中,特征图被分为 17 个分区,并且有 17 个分支用于回归 17 个关键点。 

2.自适应卷积

我发现自适应卷积是一个很广泛的概念,没有准确的定义,CVPR2019 通用网络之内容自适应卷积 - 知乎这里的定义是只要进行了一个额外的k核操作,都可以叫做自适应卷积,k核可以使各种操作,比如是RGB分布计算得到的。结合DEKR可一说这里的k核是仿射变换得到的。

一个正常的卷积(例如,3×3卷积)只能看到中心像素 q 附近的像素。 几个正常卷积的序列可能会看到离中心像素更远的像素,这些像素可能位于关键点区域,但可能不会聚焦并高度激活这些像素。 我们采用自适应卷积来学习专注于关键点区域的表示。 自适应卷积是对普通卷积(例如 3×3 卷积)的修改。

偏移量可以通过额外的正常 3 × 3 卷积以非参数方式(如可变形卷积)或以参数方式将空间Transformer网络 [26] 从全局方式扩展到像素方式来估计。 我们采用后者并为每个像素估计一个仿射变换矩阵 Aq (∈R2×2) 和一个平移向量 t (∈R2×1)。 然后 Gqs = AqGt + [t t ... t]。 Gt 表示规则的 3×3 位置(意思是在变换后的空间中进行普通卷积)

这套仿射变换的具体做法是:

实在看不明白上面的推导过程就只需要记住:自适应卷积的目的是使得像素的激活点不集中与其周围,而是更广大的范围,也就是说尽可能的直接看到关键点;自适应卷积回归的是该像素与与关键点的x/y偏移量,这也是直接让模型的自始至终对关键点建模的一种操作。因为DEKR的直接回归本身对于关键点的建模能力较弱(相对于自上而下方式而言),所以他需要这种强烈的直接信息编码先验。

自下而上模式中的知识点

关于Heatmap

如果一个正样本(x,y)处于多个关键点的高斯核半径范围内,那么它应该负责预测哪个关键点?标签值该如何设置?最直接拍脑袋的做法——选择最近的那个关键点去预测。那么,对应的标签值就是最大的那个。因为由高斯函数的公式可知,距离中心越近函数值越大。

虚拟中心点:另外,还有个重点需要说明下,就是DEKR不仅为各类关键点(COCO是17类)制作了heatmap,而且还为一种被称为中心点的虚拟关键点(后简称虚拟中心点)制作了heatmap。这种虚拟中心点与人一一对应,其坐标值就是每个人所有关键点的坐标均值。这个虚拟中心点很关键,因为接下来的offset标签主要是基于它进行分配的。

关于offset

其实这部分的思想和以上Heatmap那里的差不多,只不过不是基于高斯核的方式,而是直接设定一个距离 r ,以虚拟中心点为中心, 横、纵坐标与虚拟中心点的距离都不超过 r的位置(x,y) 则为正样本,其标签值由该位置坐标与各个关键点(COCO的话就是17个)的坐标作差计算得出:

如果一个正样本(x,y)处于多个虚拟中心点(也就是对应多个人)的有效范围内,那么它该回归哪个人的关键点位置呢?DEKR的做法是:选择面积最小的人去回归。至于每个人的面积,则是根据其中关键点之间的最远距离来计算。
这也是在解决自下而上方式中本质存在的问题:如何对关键点聚类于同一个人身上。

为何这里不能像上述Heatmap部分那样选择最近的关键点进行回归呢?如果那样的话,一个正样本就可能回归多个人的关键点位置,而正样本是要被模型看作(学习)虚拟中心点的位置,其与人是一一对应的,也是就说,在宏观意义上,它被视作一个人。

因此,DEKR的做法,就能保证正样本回归的关键点都是属于同一个人的

另外,由于在图像中,远近高低各人的尺度不一,因此直接回归绝对坐标的差值是不理智的,易造成模型倾向于大(尺度)人物(大尺度容易有大差值,大差值产生大loss)。

于是,上述提到的人物面积就该“出场”了!面积大小即尺度大小,于是可以使用面积对坐标差值进行归一化,这样就消除了尺度带来的影响。当然,由于面积是距离的二次方,因此还需要先对它开个根号。

参考:DEKR 解构式人体关键点回归(二):标签分配(Label Assignment)

直奔论文评价指标

HRNet-DEKR是CVPR2021的工作,可以看到之前的SOTA,不过这里要注意,DEKR版本是自下而上的,是不能直接和HRNet相比的。在DEKR之前自下而上版本的SOTA是HigherHRNet,HigherHRNet的指标是下面的表格

 以及HRNet的指标是

可以看到自顶而下和自下而上的方法都是分别比较的