paper https://arxiv.org/abs/2103.15320
github https://git.io/AdelaiDet
我们提出了一个基于回归的姿态估计框架来解决这个问题。不同于以往基于回归的方法往往落后于那些先进的方法,我们将姿态估计任务转化为一个序列预测问题,可以通过Transformer有效地解决。我们的框架简单而直接,绕过了基于热图的姿态估计的缺点。此外,由于变压器中的注意机制,我们提出的框架能够自适应地注意到与目标关键点最相关的特征,这在很大程度上克服了以往基于回归的方法的特征失调问题,大大提高了性能。重要的是,我们的框架可以内在地利用关键点之间的结构化关系。在MS COCO和MPII数据集上的实验表明,我们的方法可以显著提高基于回归的姿态估计的水平,并与最好的基于热图的姿态估计方法进行比较。
人体姿态估计要求计算机在输入图像中获取人体感兴趣的关键点,在人类行为理解等许多计算机视觉任务中起着重要作用。现有解决该任务的主流方法大致可以分为基于热度图的方法(图1上)和基于回归的方法(图1下)。
图1. 主流姿态估计方法比较。(a)基于热图的方法。(b)基于回归的方法。
基于热度图的方法通常首先利用全卷积网络(FCNs)预测热度图或分类评分图,然后根据热度图或评分图中的峰值位置定位人体关节。大多数姿态估计方法都是基于热图的,因为热图具有较高的精度。然而,基于热图的方法可能会遇到以下问题。1) 需要进行后处理(如取最大值操作)。后处理可能是不可微的,这使得框架无法端到端可训练。2) FCNs预测的热图分辨率通常低于输入图像的分辨率。降低的分辨率导致量化误差,限制了关键点的定位精度。这种量化误差可以通过根据峰值附近像素的值移动输出坐标来解决,但这会使框架更加复杂,并引入更多的超参数。3)ground-truth heatmaps需要人工设计和启发性调整,这可能会导致ground-truth heatmaps中包含许多噪声和模糊。
相反,基于回归的方法通常通过FC(全连接)预测层直接将输入图像映射到人体关节的坐标,消除了热图的需要。基于回归的方法比基于热图的方法更直接,因为在原则上,姿态估计是一种回归任务,如目标检测也是回归任务。此外,基于回归的方法可以绕过上述基于热图的方法的缺点,具有更大的应用前景。
然而,由于回归方法的性能往往不如热图方法,因此对回归方法的研究较少。原因可能有四个方面(?不是三点)。首先,为了减少FC层的网络参数,在DeepPose[46]中,应用一个全球平均池化来减少FC层之前的feature map分辨率。这种全局平均池破坏了卷积特征映射的空间结构,显著降低了性能。接下来,如DirectPose[44]和SPM[35]所示,在基于回归的方法中,卷积特征和预测不对齐,导致关键点定位精度低。此外,基于回归的方法只回归了身体关节的坐标,没有考虑这些关键点之间的结构化依赖[41]。
最近,我们见证了Transformer的兴起。Transformer最初是为序列到序列(seq-to-seq)的任务而设计的,这启发我们将单个人的姿态估计制定为预测K长度序列坐标的问题,其中K是一个人的身体关节数。这就产生了一个简单而新颖的基于回归的姿态估计框架,称为TFPose(即基于Transformer的姿态估计)。如图2所示,以CNN的特征映射为输入,Transformer依次预测K个坐标。TFPose可以绕过上述基于回归的方法的困难。首先,它不需要像DeepPose[46]那样的全局平均池化。其次,由于多头注意机制,我们的方法可以避免卷积特征与预测之间的特征错位。第三,由于我们以顺序的方式预测关键点,转换器可以自然地捕获关键点之间的结构化依赖关系,从而提高性能。
**图2. TFPose的整体流程。**该模型通过将普通CNN与Transformer结构相结合,直接并行预测关键点坐标序列。Transformer解码器将一定数量的关键点查询和编码器输出作为输入。然后,我们将解码器的输出嵌入传递给一个多层前馈网络,该网络预测最终的关键点坐标。
计算机视觉方面的Transformer Transformer除了在NLP(自然语言处理)方面取得了重大进展,也引起了计算机视觉界的广泛关注。对于基本的图像分类任务,ViT应用一个纯Transformer序列化的image patches。除了图像分类,Vision Transformer还广泛应用于目标检测(DETR, Deformable DETR)、分割(MaX-DeepLab, VisTR)、3D姿态估计 [22, 23, 28]、低层次视觉任务(IPT)。特别地,DETR和Deformable DETR制定了目标检测任务来预测bounding box,从而实现对目标检测模型的端到端训练; Transformer在3D手势估计[22,23]和3D人体姿态估计[22,23]中的应用表明,Transformer适合于人体姿态建模。
基于热图的2D姿态识别&基于回归的2D姿态识别就不展开了
本文主要研究单人姿态估计问题。与前人的工作相同,我们首先应用一个人体探测器(person detector)来获取人的bounding box。然后,根据检测到的框,从输入图像中裁剪出每个人。
我们用 I ∈ R h × h × 3 I \in \mathbb{R}^{h\times h\times 3} I∈Rh×h×3表示裁剪后的图像,其中h、w分别是图像的高度和宽度。对于只有一个人的裁剪图像,之前基于热图的方法将应用卷积神经网络F去预测此人的关键点热图 H ∈ R h × h × k H \in \mathbb{R}^{h\times h\times k} H∈Rh×h×k( H k H_k Hk为第 k t h k^{th} kth个关节),其中k为预测关键点的个数。形式上,我们有
H = F ( I ) H = F(I) H=F(I)
H的每个像素代表身体关节在该像素上的概率。为了获得关节坐标 J ∈ R 2 × k J\in \mathbb{R}^{2\times k} J∈R2×k( J k J_k Jk为第 k t h k^{th} kth个关节),这些方法通常使用取最大值操作来获得具有峰值激活的位置。形式上,设p是H上的空间位置,可以写成
J k = a r g m a x p ( H k ( p ) ) J_k=arg max_{p}(H_k(p)) Jk=argmaxp(Hk(p))
需要注意的是,在基于热图的方法中,p的定位精度达到了H的分辨率,而这往往远远低于输入的分辨率,从而导致量化误差。此外,这里的argmax操作不是可微操作,这使得整个过程无法端到端训练。
在TFPose中,我们将J作为k长度序列,直接将输入I映射到身体关节的坐标J。
J = F ( I ) J=F(I) J=F(I)
其中F由三个主要组件组成: 一个用于提取多级特征表示的标准CNN Backbone,一个用于捕获和融合多级特征的Transformer Encoder,以及一个用于生成关键点坐标序列的粗到细 Transformer Decoder。如图2所示。请注意,我们的TFPose是完全可微分的,定位精度不受特征图分辨率的限制。
如图3所示,CNN Backbone提取输入图像的多层次特征。多级特征映射分别用C2、C3、C4和C5表示,其strides分别为4、8、16和32。我们分别对这些特征图应用1 × 1卷积,这样它们的输出通道数量就相同了。
这些特征映射被展平并连接在一起,将 F 0 ∈ R n × c F_0\in \mathbb{R}^{n\times c} F0∈Rn×c输入到Transformer中的第一个编码器中,其中n是F0中的像素数。这里,我们使用Fi表示Transformer中第i个编码器的输出。和原始Transformer以及Deformable DETR相同,F0加上位置嵌入,我们用 F 0 E F_0^E F0E表示带有位置嵌入的F0。然后是F0和 F 0 E F_0^E F0E被送到Transformer中计算memory M ∈ R n × c M\in \mathbb{R}^{n\times c} M∈Rn×c。利用memory M,在Transformer解码器中使用query matrix Q ∈ R K × c Q\in \mathbb{R}^{K\times c} Q∈RK×c,得到K个关节点的坐标 J ∈ R K × 2 J\in \mathbb{R}^{K\times 2} J∈RK×2。
图3. 位置编码。该图说明了Transformer输入F0的位置嵌入。 E i l E^l_i Eil表示层次嵌入,描述特征向量来自哪个层次。 E P E_P EP表示一个特征向量在特征图上的空间位置的像素嵌入,我们使用 F 0 E F_0^E F0E来代表嵌入位置信息的 F 0 F_0 F0,按照Deformable DETR, F 0 E F_0^E F0E和 F 0 F_0 F0都是Transformer的输入。
我们遵循Deformable DETR设计我们的Transformer编码器。如前所述,在将F0作为输入之前,将F0的每个特征向量都加入位置嵌入。和Deformable DETR一样,我们使用层级嵌入 E i l ∈ R 1 × c E^l_i \in \mathbb{R}^{1\times c} Eil∈R1×c和像素位置嵌入 E P ∈ R n × c E^P \in \mathbb{R}^{n\times c} EP∈Rn×c,前者编码特征向量所在的层级,后者编码特征向量在特征图上的空间位置。如图3所示,将第 l l l层的所有特征向量被加入 E l L E_l^L ElL,再加入位置嵌入Ep,其中Ep为特征向量在特征图上的二维位置对应的二维余弦位置嵌入。
在TFPose中,我们使用 N E = 6 N_E = 6 NE=6个编码器层。对于 E t h E^{th} Eth编码器层,如图4所示,将前一个编码器层的输出作为该层的输入。和Deformable DETR一样,我们还计算了每个编码器层的输出向量之间的pixel-to-pixel attention(用p2p注意表示)。应用** N E N_E NE个Transformer编码器层**后,可得到Memory M。(M如图所示, 为encoder输出)
**图4. Transformer结构。**在训练期间,**反卷积模块被用来上采样Transformer编码器输出( M C 5 M_{C5} MC5),以辅助损失计算。**在测试期间,只输出Transformer解码器。"Norm"表示归一化; (Xi, Yi)表示第 i t h i^{th} ith个关键点的坐标
N E N_E NE个Encoder, N D N_D ND个Decoder
在解码器中,我们的目标是从Memory M中解码所需的关键点坐标。如前所述,我们使用query matrix Q ∈ R K × c Q\in \mathbb{R}^{K \times c} Q∈RK×c来实现,K是关节点个数。Q本质上是一个额外的可学习矩阵,它在训练过程中与模型参数联合更新,每一行对应一个关键点。在TFPose中,我们有** N D N_D ND个Transformer解码器层**。
如图4所示,每一解码器层以Memory M和前一解码器层 Q d − 1 ∈ R K × c Q_{d-1} \in \mathbb{R}^{K \times c} Qd−1∈RK×c的输出作为输入,第一层以M和矩阵Q作为输入。同样, Q d − 1 Q_{d-1} Qd−1加入位置嵌入, 结果用 Q d − 1 E Q^E_{d-1} Qd−1E表示。 Q d = 1 Q_{d=1} Qd=1和 Q d − 1 E Q^E_{d-1} Qd−1E将被发送到query-to-query注意力模块(记为q2q attention),该模块旨在模拟人体关节之间的依赖关系。q2q注意模块使用 Q d − 1 、 Q d − 1 E Q_{d-1}、Q_{d-1}^E Qd−1、Qd−1E和 Q D − 1 E Q^E_{D-1} QD−1E作为values, queries和keys。之后,q2q注意力模块和M的输出用于计算pixel-to-qurey attention(记为p2q attention),value为前者,query为后者。然后,将一个MLP应用于p2q attention的输出和解码器Qd的输出。通过应用输出通道为2的MLP来预测关键点坐标。K个关节点的坐标 J ∈ R K × 2 J\in \mathbb{R}^{K\times 2} J∈RK×2
受之前基于回归的姿态识别网络的启发,我们不是简单地预测最终解码器层中的关键点坐标,而是要求所有解码器层预测关键点坐标。具体来说,我们让第一个解码器层直接预测目标坐标。然后,每一个其他解码器层细化预测其前解码器层,通过预测细化 Δ y ^ d ∈ R k × 2 \Delta \hat{y}_d \in \mathbb{R}^{k\times 2} Δy^d∈Rk×2。通过这种方式,关键点坐标可以逐步细化。形式上,设 y ^ d − 1 \hat{y}_{d- 1} y^d−1为第(d-1)层解码器层预测的关键点坐标,则第d层解码器层的预测为
y ^ d = σ ( σ − 1 ( y ^ d − 1 + Δ y ^ d ) ) \hat{y}_d=\sigma(\sigma_{-1}(\hat{y}_{d-1}+\Delta \hat{y}_d)) y^d=σ(σ−1(y^d−1+Δy^d))
其中 σ \sigma σ和 σ − 1 \sigma −1 σ−1分别表示sigmoid函数和inverse sigmoid函数。 y ^ 0 \hat{y}_0 y^0是一个随机初始化的矩阵,在训练过程中与模型参数联合更新。
TFPose的损失函数由两部分组成。第一部分是L1回归损失。设 y ∈ R K × 2 y\in \mathbb{R}^{K\times 2} y∈RK×2为ground-truth坐标。回归损失公式为:
L r e g = ∑ d = 1 N D ∥ y − y ^ d ∥ L_{reg}=\sum^{N_D}_{d=1}\parallel y-\hat{y}_d \parallel Lreg=d=1∑ND∥y−y^d∥
其中 N D N_D ND为解码器的个数,每个解码器层都由目标关键点坐标监督。第二部分是辅助损失 L a u x L_{aux} Laux。与DirectPose[44] (2019)一样,我们在训练中使用了辅助热图学习(auxiliary heatmap learning),这样可以获得更好的性能。为了使用热图学习,我们从M中收集特征向量C5,并将其重塑为原始的空间形状。结果用 M C 5 R ( h / 32 ) × ( w / 32 ) × c M_{C5} \mathbb{R}^{(h/32) \times (w/32) \times c} MC5R(h/32)×(w/32)×c表示。与SimpleBaselines类似,我们对 M C 5 M_{C5} MC5应用3次反卷积对特征图上采样8倍,生成热图 h ^ ∈ R ( h / 4 ) × ( w / 4 ) × k \hat{h} \in \mathbb{R}^{(h/4) \times (w/4) \times k} h^∈R(h/4)×(w/4)×k,然后计算预测热图和ground-truth热图之间的均方误差(MSE)损失。ground-truth热图生成方式和SimpleBaselines相同。形式上,辅助损失函数为
L a u x = ∥ H − H ^ ∥ 2 L_{aux}=\parallel H-\hat{H} \parallel ^2 Laux=∥H−H^∥2
将两个损失函数相加,得到最终的总损失如下,这里λ是一个常数,用来平衡这两个损失。
L o v e r a l l = L r e g + λ L a u x L_{overall}=L_{reg}+\lambda L_{aux} Loverall=Lreg+λLaux
数据集 使用COCO和MPII数据集。
训练细节 单人姿态识别。默认使用ResNet-18在消融研究中被用作Backbone。输入图像的大小为256×192或384×288。在ImageNet上预先训练的权值用于初始化ResNet backbone。网络的其余部分用随机参数初始化。对于Transformer,我们采用了Deformable DETR中提出的Deformable Attention Module,并使用了相同的超参数。
训练 所有模型均采用AdamW优化,基本学习率为4 x 10-3。β1和β2被设置为0.9和0.999。重量衰减设置为10-4。λ默认设置为50,以平衡回归损失和辅助损失。除非特别说明,所有的实验都使用基础学习速率为4 x 10^-3的余弦退火学习率。Transformer的学习速率和预测关键点偏移的线性投影降低了10倍。对于数据扩增,应用了随机旋转、随机缩放、翻转和半体数据扩增。对于辅助损失(auxiliary loss),我们遵循无偏数据处理(UDP)来生成无偏ground-truth。(所以用了UDP 2020CVPR,却又不和它的结果进行比较?)
Query-to-query attention。在TFPose中,query-to-query attention被设计为捕获跨所有关键点的结构感知信息。与使用手工设计方法显式地强制模型学习结构感知信息的[41]不同,query-to-query attention隐式地模拟人体结构。为了研究query-to-query attention的影响,我们在所有解码器层中报告了删除query-to-query attention的结果。如表1所示,提出的query-to-query attention提高了1.3% AP的性能,但只增加了0.1 GFLOPs计算成本。
表1. Query-to-query attention的影响
Transformer解码器的配置。这里我们研究了解码器宽度和深度的影响。具体来说,我们通过改变Transformer解码器中输入特征的通道数和解码器层数来进行实验。如表2所示,256通道特征图的Transformer比128通道特征图的AP高1.3%。此外,我们还改变了解码器层的数量。如表3所示,性能在前三层增长,在第四解码器层达到饱和。
表2. decoder不同通道数的影响
表3. decoder不同层数的影响
辅助损失(auxiliary loss)的影响。如前人的工作可知,Transformer模块收敛速度可能较慢。为了缓解这一问题,我们采用了Deformable DETR中提出的deformable attention。除此之外,我们提出了一个辅助损失来加速TFPose的收敛速度。在这里,我们研究了辅助损失的影响。在本实验中,第一个模型只对回归损失进行监督;第二种模型同时受到回归损失和辅助损失的监督。如图5和表4所示,辅助损失可以显著加快TFPose的收敛速度,并显著提高性能(+2.3% AP)。
**抽样关键点的可视化。**为了研究Deformable Attention Module如何定位人体关节点,我们将该模块在特征图C3的采样位置进行可视化。在Deformable Attention Module中,有8个attention head,每个head会在每个特征图上采样4个点。所以对于C3 feature map,有32个采样点。如图7所示,采样点(红点)都密集分布在ground truth(黄圈)附近。该可视化说明TFPose在一定程度上解决了feature alignment的问题,并且可以对像素信息密集的CNN进行监督。
可视化query-to-query attention。为了进一步研究query-to-query attention是如何工作的,我们将query-to-query attention的注意力权重可视化。如图6所示, 有两个明显的模式的关注: 第一个关注模式是对称的关节(如左肩与右肩)更有可能相互影响, 和第二个注意模式是邻关节(如眼睛、鼻子、嘴巴)更有可能相互影响。这种注意模式提示TFPose可以利用身体关节之间的上下文和结构关系来定位和分类身体关节的类型。
在本节中,我们将TFPose与以前最先进的2D位姿估计方法进行比较,包括COCO val、COCO test-dev 和MPII。我们比较了这两种方法的准确性和计算成本。我们提出的TFPose和其他最新方法的结果列于表5、表6和表7。
表5都是以ResNet50为Backbone的进行比较,所以比的都是2018年之前的。 显然像HRNet这种,TFPose并没有比过(在表6中倒是比了)
我们提出了一种新的基于Transformer的姿态估计框架TFPose,该框架在很大程度上提高了基于回归的位姿估计的性能,并克服了基于热图的方法的后处理不可微、量化误差等缺点。我们已经证明,通过注意机制,TFPose可以自然捕获身体关节之间的结构关系,从而提高性能。在MS-COCO和MPII基准上的大量实验表明,TFPose可以在基于回归的方法中实现最先进的性能,并可与最佳的基于热图的方法相媲美。