反思关键点表示:将关键点和姿态建模为多人姿态估计的对象
ECCV 2022(我也不太确定)
摘要: 关键点估计任务(如人体姿态估计)主要采用热图法,但其存在明显缺点:热图本身存在量化误差,需要过多的计算来生成和后处理。为找到一种更有效的解决方案,我们提出在一个 dense single-stage anchor-based 检测框架内,将单个关键点和空间相关关键点集(即姿态)建模为对象。因此,我们将我们的方法称为KAPAO(发音为“Ka Pow”),Keypoints And Poses As Objects。通过同时检测人体姿态和关键点对象,并融合检测结果以利用这两种对象表示的优势,将KAPAO方法应用于单阶段多人姿态估计问题。实验观察到KAPAO比之前的方法更快、更准确,因为之前的方法受热图后处理的影响很大。当不使用 test-time 增强时,速度和准确性间的权衡在实际设置中尤其可观。
关键词:人体姿态估计,目标检测,YOLO
文章目录
1 Introduction
关键点估计是一项定位图像中兴趣点的计算机视觉任务。它被用于多种应用,并已成为计算机视觉领域研究最多的课题之一。估计关键点位置最常用的方法是在目标关键点坐标上以方差较小的 2D Gaussians 为中心,生成目标域——热图。然后使用深度卷积神经网络回归输入图像上的目标热图,并通过预测热图的最大值参数进行关键点预测。虽然强有力的实验结果将热图回归定位为检测和定位关键点的标准方法,但也存在一些已知缺点:① 首先,热图回归方法存在量化误差: 一个关键点预测的准确性直接受热图空间分辨率的限制,所以较大的热图是有利的,但需要额外的上采样操作和更高分辨率的高代价处理。即使使用大热图,也需要特殊的后处理步骤来优化关键点预测,这会减慢推理速度。② 其次,当两个同类别关键点非常接近时,热图信号重叠可能会误判为是单个关键点,这种失败很常见。出于这些原因,研究人员已经开始研究heatmap-free 关键点检测方法
本文介绍了一种新的 heatmap-free 关键点检测方法,并将其应用于单阶段多人姿态估计中。 我们的方法建立在最近的研究(DeepDarts)基础上,该研究显示了如何通过在小的方形 keypoint bounding boxes 中心表示关键点,将关键点建模为一个 dense anchor-based 检测框架中的对象。 在人体姿态估计的初步实验中,我们发现这种关键点检测方法对于具有局部图像特征(例如眼睛)的人体关键点很有效,,但在检测需要更全局理解的人体关键点(如臀部)时效果较差。 因此,我们引入了一种新的姿态对象表示,以帮助检测空间相关的关键点集。我们的总体方法是同时检测关键点对象和姿态对象,并使用简单的匹配算法融合结果,以利用这两种对象表示的优点。 通过检测姿态对象,我们将人体检测和关键点估计统一起来,从而实现了一种高效的单阶段多人人体姿态估计方法。
由于不使用热图,KAPAO在精度和推理速度方面优于最近的单阶段人体姿态估计模型,尤其是在不使用测试时间增强(test-time augmentation: TTA)的情况下,TTA是此类模型在实践中的部署方式。如图1所示,在没有TTA的情况下,KAPAO在 COCO val set上达到70.6的AP,平均延迟为54.4毫秒(forward pass + post-processing时间)。与 sota 单阶段HigherHRNet+SWAHR相比,KAPAO速度快5.1倍,不使用TTA时AP更准确。与CenterGroup 相比,KAPAO速度快3.1倍,AP更准确。
这项工作的研究贡献总结如下:
- 本文提出了一种新的 pose object representation ,它通过额外包含一组与对象相关联的关键点扩展了传统的对象表示法。实验展式了如何使用一个multi-task loss学习pose object 表示。
- 通过同时检测 keypoint objects 和 human pose objects,并融合检测结果以利用这两种对象表示的优点,开发了一种新的单阶段多人姿态估计方法。与先前使用热图的sota法相比,在COCO Keypoints benchmark上,不使用TTA时,本文提出的heatmap-free法更快更准确。
2 Related Work
Heatmap-free keypoint detection. 在运动分析中,McNally等人在飞镖自动评分系统的开发中遇到了重叠的热图信号问题,因此选择使用小方形边界框将关键点建模为对象。事实证明,这种关键点表示非常成功,并为我们的工作提供了灵感。
Single-stage human pose estimation. 单阶段方法通常不太准确,但在拥挤场景下表现更好,并且由于其简单有效而备受青睐,随着图像中人数的增加,这种方法变得特别有利。
相比于两阶段方法,单阶段方法的设计差异更大。例如,他们可以:(i)检测图像中的所有关键点,并对人体姿态进行自下而上的分组;(ii)扩展目标检测器,以统一人体检测和关键点估计;或(iii)使用 alternative keypoint/pose representations(例如,预测根关键点和相对关键点位移)。 下面我们简要总结了最新的 sota single-stage 方法。
Cheng等人通过添加转置卷积来 double 输出热图分辨率,并使用 associative embeddings 进行关键点分组,以利用HRNet进行自下而上的人体姿态估计(HigherHRNet),他们还使用 multi-resolution training 来解决尺度变化问题。Geng等人没有使用自下而上的关键点分组,而是以HRNet为backbone预测了 person center heatmaps 和 2K offset maps 来表示一个以每个像素为中心的候选姿态的K个关键点的偏移向量,他们还使用单独的回归头和自适应卷积来分离关键点回归(DEKR)。Luo等人以HigherHRNet为基础,提出了尺度和权重自适应热图回归(SWAHR),该回归基于人体尺度来scale ground-truth heatmap Gaussian 标准偏差,并引入了一种新的损失来帮助平衡前景/背景损失权重,他们对HigherHRNet的修改实现了比HigherHRNet更高的精度,并且与许多两阶段方法的性能相当。Bras´o等人再次以HigherHRNet为基础,提出CenterGroup,使用一个 fully differentiable 的自注意模块,匹配关键点与人体中心,该模块以端到端的方式与关键点检测器一起训练。上述方法都需要高代价的热图后处理,因此,其推理速度有待提高。
Extending object detectors for human pose estimation. 目标检测和人体姿态估计任务之间存在着明显的重叠。例如,He等人使用Mask R-CNN实例分割模型,通过使用一个 one-hot mask 预测关键点来进行人体姿态估计。Wei等人提出了 Point-Set Anchors,使用 pose anchors 代替bounding box anchors 来调整 RetinaNet 目标检测器。Zhou等人通过CenterNet使用基于热图的中心点来建模对象,并将姿态表示为中心点的一个2K维属性。Mao等人提出了FCPose,使用 dynamic filters 结合FCOS目标检测器来处理人体检测。
3 KAPAO: Keypoints and Poses as Objects
本文提出的方法中,训练一个 dense detection network (yolo风格) 来同时预测keypoint objects 集合:{
O
^
k
∈
O
^
k
\hat{\mathcal{O}}^k ∈ \hat{O}^k
O^k∈O^k} 和 pose objects 集合: {
O
^
p
∈
O
^
p
\hat{\mathcal{O}}^p ∈ \hat{O}^p
O^p∈O^p} ,并集:
O
^
=
O
^
k
⋃
O
^
p
\hat{O} = \hat{O}^k \bigcup \hat{O}^p
O^=O^k⋃O^p。我们简要介绍了每个对象类型背后的概念以及相关的符号。除非另有说明,否则所有单位均假定为像素。
一个关键点对象(keypoint object)
O
^
k
\hat{\mathcal{O}}^k
O^k 是对传统对象表示法(以边界框中心坐标 (bx, by) 表示)的改进,其中关键点的坐标表示为一个宽高(bw,bh)相等的小边界框 b 的中心,b = (bx, by, bw, bh) ,超参 bs 控制关键点边界框大小(即bs=bw=bh)。有K个关键点对象类,每个人体关键点类型对应一个类。
姿态对象(pose objects)
O
^
p
\hat{\mathcal{O}}^p
O^p 是传统对象表示的扩展,它还包括与对象关联的关键点集。即,姿态对象包括一个 “person” 类的边界框和一组与anatomical landmarks相吻合的 keypoints:
z
=
{
(
x
k
,
y
k
)
}
k
=
1
K
z = \{(x_k, y_k)\}^K_{k=1}
z={(xk,yk)}k=1K。
这两种对象表示都具有独特的优势:关键点对象专门用于检测具有强局部特征的单个关键点,例如眼睛、耳朵和鼻子。但关键点对象不包含关于人体或姿态的信息,若单独将其用于多人姿态估计,则需要使用自下而上的分组方法将检测到的关键点解析为人体姿态。相比之下,姿态对象更适合定位局部特征较弱的关键点,因为它使网络能够学习一组关键点内的空间关系,此外,它可以直接用于多人姿态估计,而无需自下而上的关键点分组。
关键点对象存在于姿态对象的子空间中,KAPAO网络使用单个共享网络头以最小的计算开销同时检测这两种类型的对象。在推理过程中,融合精确的关键点对象检测与人体姿态检测,使用一种简单的tolerance-based 匹配算法,在不牺牲推理速度的情况下提高人体姿态预测的准确性。以下各节详细介绍了网络体系结构、用于训练网络的损失函数、推理。
3.1 Architectural Details
图2为 KAPAO pipeline 的示意图。它使用深度卷积神经网络
N
\mathcal{N}
N 将RGB输入图像
I
∈
R
h
×
w
×
3
I∈ R^{h×w×3}
I∈Rh×w×3 映射到一组包含对象预测
O
^
\hat{O}
O^ 的四输出 grids:
G
^
=
{
G
s
∣
s
∈
{
8
,
16
,
32
,
64
}
}
,其中
G
s
∈
R
h
s
×
w
s
×
N
a
×
N
o
\hat{G}=\{\mathcal{G}^s|s∈\{8,16,32,64\}\},其中 \mathcal{G}^s∈ R^{\frac{h}{s}×\frac{w}{s}×N_a×N_o}
G^={Gs∣s∈{8,16,32,64}},其中Gs∈Rsh×sw×Na×No。
Na是anchor channel 数,No是每个对象的 output channels 数。N 是一个YOLO风格的特征提取器,它在一个特征金字塔体系结构中使用Cross-Stage-Partial (CSP) bottlenecks。通过调整N中的层数和通道数,训练三种尺寸的KAPAO模型(即KAPAO-S/M/L)以满足不同的速度要求。
由于 strided convolutions 的性质,一个 output grid cell:
G
^
i
,
j
s
\hat{\mathcal{G}}^s_{i,j}
G^i,js 中的特征取决于图像 patch:
I
p
=
I
s
i
:
s
(
i
+
1
)
,
s
j
:
s
(
j
+
1
)
I_p=I_{si:s(i+1),sj:s(j+1)}
Ip=Isi:s(i+1),sj:s(j+1)。因此,若目标对象的中心 (bx, by) 位于Ip,则 output grid cell:
G
^
i
,
j
s
\hat{\mathcal{G}}^s_{i,j}
G^i,js 负责检测它。output grid的感受野随 stride: s 的增大而增加,因此较小的 output grid (感受野较大)更适合检测较大的对象。
output grid cell:
G
^
i
,
j
s
\hat{\mathcal{G}}^s_{i,j}
G^i,js 包含对应于anchor boxes:
A
s
=
{
(
A
w
a
,
A
h
a
)
}
a
=
1
N
a
A^s = \{(A_{w_a}, A_{h_a})\}^{N_a}_{a=1}
As={(Awa,Aha)}a=1Na 的Na 个 anchor channels。一个目标对象
O
\mathcal{O}
O 通过对象的 tolerance-based 匹配和 anchor box size 分配给一个anchor channel ,这就造成了冗余,使
G
^
i
,
j
s
\hat{\mathcal{G}}^s_{i,j}
G^i,js 可以检测多个对象,并能针对不同的对象大小和形状进行specialization。通过允许neighbouring grid cells :
G
^
i
±
1
,
j
s
和
G
^
i
,
j
±
1
s
\hat{\mathcal{G}}^s_{i\pm1,j} 和 \hat{\mathcal{G}}^s_{i,j\pm1}
G^i±1,js和G^i,j±1s检测 Ip 中的一个对象,造成了额外的检测冗余。(冗余需要通过NMS进行抑制)
G
^
i
,
j
,
a
s
\hat{\mathcal{G}}^s_{i,j,a}
G^i,j,as 的No个输出通道包含一个预测对象
O
^
\hat{\mathcal{O}}
O^ 的属性:包括objectness :
p
^
o
\hat{p}_o
p^o(对象存在的概率),bbox中间值:
t
^
′
=
(
t
^
x
′
,
t
^
y
′
,
t
^
w
′
,
t
^
h
′
)
\hat{t}^′ = (\hat{t}^′_x, \hat{t}^′_y, \hat{t}^′_w, \hat{t}^′_h)
t^′=(t^x′,t^y′,t^w′,t^h′),K+1个类:
c
^
=
(
c
^
1
,
.
.
.
,
c
^
K
+
1
)
\hat{c} = (\hat{c}_1, ..., \hat{c}_{K+1})
c^=(c^1,...,c^K+1)(c1判断是否为人用于姿态对象,其余确定是哪类关节点) 和姿态对象的K个关键点坐标的中间值:
v
^
′
=
{
(
v
^
x
k
′
,
v
^
y
k
′
)
}
k
=
1
K
\hat{v}^′ = \{(\hat{v}^′_{xk}, \hat{v}^′_{yk})\}^K_{k=1}
v^′={(v^xk′,v^yk′)}k=1K。因此,
N
o
=
1
+
4
+
K
+
1
+
2
K
=
3
K
+
6
N_o = 1+4+K+1+2K = 3K + 6
No=1+4+K+1+2K=3K+6。
遵循yolov5,对象 bbox的中间值:
t
^
′
\hat{t}^′
t^′ 在 grid 坐标中预测,相对于 grid cell 原点 (i, j) 使用:
其中
A
w
和
A
h
A_w和 A_h
Aw和Ah 分别为 anchor 的宽和高,s 的值根据对应的 grid 分为 8,16, 32, 64,σ 为 sigmoid 函数,
t
^
∗
′
\hat{t}_{*}^{'}
t^∗′ 为边界框的中间值。
该检测策略也扩展到姿态对象的关键点。一个 姿态对象的关键点坐标 中间值:
v
^
\hat{v}
v^ 在grid 坐标中预测,并相对于 grid cell 原点 (i, j) 使用:
sigmoid 函数 σ 通过限制关键点的取值来促进学习(例如, v ^ x k 和 v ^ y k 分别被限制为 ± 2 A w s 和 A h s \hat{v}_{xk} 和 \hat{v}_{yk}分别被限制为 ±2\frac{A_w}{s}和\frac{A_h}{s} v^xk和v^yk分别被限制为±2sAw和sAh)。损失应用于grid space 来学习 ˆt 和 ˆv。样本targets:t 和 v 如图3所示。
3.2 Loss Function
构造 grids: G 的目标集,并应用多任务损失
L
(
G
^
,
G
)
\mathcal{L}(\hat{G},G)
L(G^,G)来学习objectness:
p
^
o
(
L
o
b
j
)
\hat{p}_o (\mathcal{L}_{obj})
p^o(Lobj),intermediate bounding boxes :
t
^
(
L
b
o
x
)
\hat{t}(\mathcal{L}_{box})
t^(Lbox),class scores:
c
^
(
L
c
l
s
)
\hat{c} (\mathcal{L}_{cls})
c^(Lcls) ,和 intermediate pose object keypoints:
v
^
(
L
k
p
s
)
\hat{v} (\mathcal{L}_{kps})
v^(Lkps) 。单幅图像的损失分量计算如下:
其中,ωs是 grid 权重,BCE是二进制交叉熵,IoU是complete intersection over union(CIoU),νk是目标关键点vk的可见性标志。当
G
^
i
,
j
,
a
s
\hat{\mathcal{G}}^s_{i,j,a}
G^i,j,as 表示一个目标对象
O
\mathcal{O}
O 时,target objectness: po=1乘以IoU分数,以促进 anchor channel 预测的specialization ,当
G
^
i
,
j
,
a
s
\hat{\mathcal{G}}^s_{i,j,a}
G^i,j,as 不是一个目标对象时, po=0。实际上,使用 batched grids 对一个batch的图像应用损失。总损失
L
\mathcal{L}
L是按batch size:Nb scale 损失分量的加权和:
3.3 Inference
使用以下变换将预测的intermediate bounding boxes: ˆt 和 intermediate keypoints: ˆv 映射回原始图像坐标:
若
G
^
i
,
j
,
a
s
\hat{\mathcal{G}}^s_{i,j,a}
G^i,j,as的置信度
p
^
o
⋅
m
a
x
(
c
^
)
大于阈值
τ
c
p
\hat{p}o · max(\hat{c})大于阈值\mathcal{τ}_{cp}
p^o⋅max(c^)大于阈值τcp且 argmax(ˆc)=1,则表示一个正姿态对象检测:
O
^
p
\hat{\mathcal{O}}^p
O^p。类似地,若
p
^
o
⋅
m
a
x
(
c
^
)
>
τ
c
k
\hat{p}o · max(\hat{c})>\mathcal{τ}_{ck}
p^o⋅max(c^)>τck 且 argmax(ˆc)>1,则
G
^
i
,
j
,
a
s
\hat{\mathcal{G}}^s_{i,j,a}
G^i,j,as表示一个正关键点对象检测:
O
^
k
\hat{\mathcal{O}}^k
O^k,关键点对象类是 argmax(ˆc) − 1。
为了消除冗余检测并获得候选姿态对象
O
^
p
′
\hat{O}^{p'}
O^p′和候选关键点对象
O
^
k
′
\hat{O}^{k'}
O^k′,将具有IoU 阈值:τbp 和 τbk(τck和τbk是用于所有关键点类的标量阈值) 的NMS 分别应用于pose object bounding boxes 和 keypoints object bounding boxes 来过滤正姿态对象预测:
O
^
p
\hat{O}^p
O^p 和正关键点对象预测:
O
^
k
\hat{O}^k
O^k:
最后,通过使用一个 distance tolerance:
τ
f
d
\mathcal{τ}_{fd}
τfd 融合候选关键点对象和候选姿态对象来获得最终的人体姿态预测:
P
^
=
{
P
^
i
∈
R
K
×
3
}
\hat{P}=\{ \hat{P}_i∈R^{K×3}\}
P^={P^i∈RK×3} for
i
∈
1...
n
(
O
^
p
′
)
i ∈ {1...n(\hat{ O}^{p′})}
i∈1...n(O^p′) 。为了促进关键点对象与姿态的正确匹配,关键点对象仅与置信度
p
^
o
⋅
m
a
x
(
c
^
)
>
τ
f
c
\hat{p}_o · max(\hat{c}) >\mathcal{τ}_{fc}
p^o⋅max(c^)>τfc 的姿态对象融合:
算法1定义了关键点对象融合函数 φ ,使用以下符号来索引一个对象的属性:
x
^
=
O
^
x
\hat{x}=\hat{\mathcal{O}}_x
x^=O^x(例如,一个姿势对象的关键点
z
^
被表示为:
O
^
z
p
\hat{z}被表示为:\hat{\mathcal{O}}^p_z
z^被表示为:O^zp)。
3.4 Limitations
KAPAO的一个局限性是姿态对象不包括单个关键点置信度,因此人体姿态预测通常包含由融合的关键点对象填充的一组稀疏的关键点置信度 P ^ i [ : , 3 ] \hat{P}_i[:,3] P^i[:,3](有关详细信息,请参见算法1)。如果需要,当 τck→ 0时,只使用关键点对象就可以诱导出一组完整的关键点置信度。另一个限制是,由于使用了较大的输入,需使用大量的时间和 GPU 内存进行训练。
4 Experiments
4.1 Microsoft COCO Keypoints
Training. KAPAO-S/M/L在COCO train2017中训练了500个epoch。输入图像被调整大小并填充到1280×1280,保持原始纵横比。
Testing. 使用一个 coarse grid search在验证集上手动调整六个推理参数(τcp、τck、τbp、τbk、τfd、τfc),以最大程度提高准确性。结果对推理参数值不太敏感。当使用TTA时,输入图像按系数0.8、1和1.2进行scale,未scale的图像水平翻转。在post-processing,NMS前 concatenate multi-
scale detection。当不使用TTA时,使用矩形输入图像(即最长一侧为1280 px),这略微降低了准确性,但提高了推理速度。
result.
4.2 CrowdPose
4.3 Ablation Studies
5 Conclusion
本文提出了一种新的 heatmap-free 关键点估计法 KAPAO,该方法将关键点和姿态建模为对象。通过直接检测人体姿态对象,KAPAO可以有效应用于单阶段多人姿态估计问题。此外,融合姿态对象和关键点对象可以以最小的计算开销提高人体姿态预测的准确性。因此,当不使用 test-time augmentation(TTA)时,KAPAO比先前受 heatmap post-processing 和 bottom-up keypoint grouping 阻碍的单阶段方法更快、更准确。此外,从CrowdPose的结果来看,KAPAO在严重遮挡情况下表现良好。