Learning Keypoint Tokens for Human Pose Estimation
目录
FCN-based Human pose estimation
Token-based Keypoint Representation
Keypoint tokens learn prior knowledge from data
Abstract
人体姿态估计深度依赖视觉线索和部位之间的解剖约束来定位关键点。大多数现有的基于CNN的方法在视觉表示方面做得很好,但是缺乏明确学习关键点之间约束关系的能力。 在本文中,我们提出了一种基于 Token 表示的人体姿态估计(TokenPose)新方法。 详细地说,每个关键点都被明确嵌入作为一个标记,以同时从图像中学习约束关系和外观线索。 大量实验表明,小型和大型 TokenPose 模型与基于 CNN 的最先进模型相当,同时更轻量级。 具体来说,我们在 COCO 验证数据集上的 TokenPose-S 和 TokenPose-L分别达到了 72.5 AP 和 75.8 AP 分别显着降低了参数 (↓80.6% ; ↓56.8%) 和 GFLOPs (↓75.3%; ↓24.7%)。
Introduction
在过去的十年中,深度卷积神经网络由于其强大的视觉表示和识别能力而在人体姿态估计方面取得了令人瞩目的表现 [8, 29, 22, 21, 38, 12, 37, 24]。 热图表示已经成为编码关键点位置的标准标签表示,大多数现有模型倾向于使用全卷积层来保持特征图的二维结构,直到网络输出。 然而,此类 CNN 模型通常没有抽象出具体的变量来直接表示关键点实体,这限制了模型显式捕获部件之间约束关系的能力。
最近,Transformer [35] 及其源自自然语言处理 (NLP) 的变体已合并为各种视觉任务的新选择。 它对全局依赖关系建模的能力比 CNN 更强大,这指出了一种有效捕获视觉实体/元素之间关系的有前途的方法。 而在 NLP 领域,所有的语言元素,如单词或字符,通常都用固定维度的嵌入或标记向量来符号化,以便更好地衡量它们在向量空间中的相似性,就像 word2vec [20] 的方式。
我们借用了这样一个“token”的概念,并提出了一种新颖的基于 token 的人体姿态估计表示,即 TokenPose。 具体来说,我们进行两种不同类型的标记化:关键点标记(keypoint token)和视觉标记(visual token)。 视觉标记是通过将图像均匀地分割成patch并将扁平化的patch映射到具有固定维度的嵌入来产生的。 同时,关键点标记是随机初始化的嵌入,每个嵌入都代表一种特定类型的关键点(例如,左膝、左脚踝、右眼等)。 生成的关键点标记可以分别从与视觉标记和其他关键点标记的交互中学习视觉线索和约束关系。 所提出的模型如何预测左脚踝位置的示例如图 1 所示。关键点的位置最终通过我们的网络输出的基于token的表示来估计。 TokenPose 的架构如图 2 所示。
*图1:预测左脚踝位置的过程。对于视觉提示学习(visual cue learning),提出的TokenPose在前几层关注全局上下文,然后随着网络的深入逐渐收敛到一些局部区域。 在最后几层中,TokenPose 依次考虑了靠近目标关键点的臀部和膝盖,最终定位到左脚踝的位置。 对于约束提示学习(constraint cue learning),TokenPose 表明定位左脚踝主要依赖于左膝和右脚踝,分别对应于邻接约束和对称约束。
值得注意的是,TokenPose 从大量数据中学习到关键点之间的统计约束关系。 这些信息被编码成关键点tokens,可以通过向量相似性记录它们的关系。 在推理过程中,TokenPose 将关键点tokens与对应的patch可能包含目标关键点的visual tokens相关联。 通过可视化注意力,我们可以观察它们如何交互以及模型如何利用线索来定位关键点
contributions
- 我们建议使用token来表示每个关键点实体。 通过这种方式,视觉提示(visual cue)和约束提示(constraint cue)学习被明确地整合到一个统一的框架中。
- 在这项工作中探索了基于混合和纯 Transformer 的架构。 据我们所知,所提出的 TokenPose-T 是第一个基于 Transformer 的二维人体姿态估计模型。
- 我们对两个广泛使用的基准数据集进行实验:COCO 关键点检测数据集和 MPII 人体姿势数据集。 与现有的基于 CNN 的同类产品相比,TokenPose 以更少的参数和计算成本实现了具有竞争力的最新性能。
Method
*图2:TokenPose的示意图:CNN 主干提取的特征图被均匀地分割成patches并展平为一维向量。 visual tokens是通过采用线性投影来嵌入展平向量来产生的。 此外,keypoint tokens被随机初始化以表示每种特定类型的关键点。 然后,将visual tokens和keypoint tokens的一维序列作为 Transformer 编码器的输入。 appearance cues和anatomical constraint cues都是通过每个 Transformer 层中的self-attention交互来捕获的。 最后,最后一个 Transformer 层输出的keypoint tokens用于通过 MLP 头预测关键点热图。
我们首先重新审视基于热图的全卷积网络 (FCN) 以进行人体姿态估计,然后描述我们基于token的设计。
FCN-based Human pose estimation
人体姿态估计的目标是在一幅大小为H x W x3的图像中定位N个关键点或部位。目前,基于heatmap的全卷积神经网络[37,4,22,40,7,23,38,29]由于其具有高性能,已成为主流解决方案。
目前广泛采用的方法是利用CNN生成多分辨率图像特征图,再用回归器regressor估计N个大小为热图。为了生成N张热图,使用1x1卷积将热图通道数降为关节点数N。
虽然现有的基于FCN的方法已经取得了很大的成功,但是CNN很难显式地捕获关键点之间的约束关系,这导致了该任务的模型设计不够优化。
Token-based Keypoint Representation
Visual tokens
标准的Transformer接受一个token嵌入的一维序列作为输入。为了处理二维图像,我们遵循ViT的流程。一张输入图像被分为多个网格共
个patches,patch的尺寸为
。每个patch被展平为尺寸为
的一维向量。为了获得一个visual token v,每个被展平的patch p通过线性投影函数
被映射为d维的嵌入,具体参数设置如表1所示。
考虑到人体姿态识别是一个位置敏感的视觉任务,在每个特定的visual token vi上加上2D位置嵌入,以产生输入的visual tokens
,其中
是visual tokens的数量。用这种方式,产生的每一个visual token代表原始图像的特定区域。
Keypoint tokens
我们添加了N个可学习的d维嵌入向量来表示N个目标关键点。我们将keypoint tokens表示为[keypoint]。来自输入图像块的visual tokens加上keypoint tokens作为Transformer的输入。Transformer编码器输出的N个keypoint tokens的状态作为N个关键点表示。
Transformer
给定1D token嵌入序列T = {[visual], [keypoint]}作为输入,Transformer编码器通过叠加M个blocks以学习关键点特征表示。每个block包含一个Multi-head Self-attention (MSA)模块和一个Multilayer Perceptron(MLP)模块。此外,在每个模块之前采用层归一化(LN)。
self-attention模块的公式可以表示为:
其中是关于三个线性投影层的可学习参数,
是第l-1层的输出,d是token的维度并且
。多头自注意力MSA是自注意力SA的扩展,有h个SA操作,被称为heads。在多头自注意力当中,
通常被设置为d/h。
其中。值得注意的是,最终的热图预测是基于M个blocks的transformer encoder输出的[keypoint] tokens,即
Heatmap estimation
为了获得尺寸为的二维热图,将transformer编码器输出的d维[keypoint] tokens通过线性投影层映射到
维度的特征向量。然后将映射的一维向量reshape成二维热图。此外还采用均方误差损失函数MSE对预测热图和groundtruth热图进行比较。
Hybrid architecture
也可以从卷积神经网络输出的特征映射中提取输入的visual tokens,而不是直接操作原始图像块。在混合结构中,采用CNN来更有效地提取图像的底层特征。
Experiments
4.1Model Variants
我们为 TokenPose 提供基于混合和纯 Transformer 的变体。 对于混合架构,使用不同深度的卷积神经网络进行图像特征提取。 配置详细信息如表 1 所示。注意,TokenPose-T* 是基于 pureTransformer 的变体。 TokenPose-S*、TokenPose-B 和 TokenPose-L* 分别采用 stem-net2、HRNet-W32 [29] 和 HRNet-W48 [29] 作为骨干网。
在本文中,为了方便起见,使用了简短的符号。例如,TokenPose-L/D24 表示具有 24 个 Transformer 层的“Large”变体。 除非另有说明,TokenPose-S 和 TokenPose-L 被用作 TokenPose-Small-v2 和 TokenPose-Large/D24 的缩写
4.2COCO Keypoint Detection
实现细节:
在本文中,我们遵循类似于 [29,7,38,25] 的两阶段自上而下的人体姿态估计范式。 在该范式中,首先由人检测器检测单人实例,然后预测关键点。 我们在验证集和测试开发集上采用了 SimpleBaseline [38] 提供的广泛使用的人体检测器。 为了减轻量化误差,采用了精心设计的坐标解码策略[42]。
对于我们的工作,基本学习率设置为 1e-3,并在第 200 和第 260 轮分别下降到 1e-4 和 1e-5。 总的训练过程需要 300 个 epoch,给定的 Transformer 结构往往依赖于更长的训练来收敛。 我们遵循HRNet中的数据增强。
与SOTA对比:
如表 2 所示,与其他最先进的方法相比,我们提出的 TokenPose 通过更少的模型参数和 GFLOP 实现了具有竞争力的性能。与采用 ResNet-50 作为主干的 SimpleBaseline 相比,我们的 TokenPose-S-v1 将 AP 提高了 2.1 个百分点,模型参数(↓ 80.6%)和 GFLOP(↓75.3%)都显着降低。与使用 ResNet-152 作为主干的 SimpleBaseline 相比,我们的TokenPose-S-v2实现了更好的性能,同时仅使用了 9.0% 的模型参数。与 HRNet-W32 和 HRNet-W48 相比,TokenPose-B 和 TokenPose-L 分别以不到 50% 的模型参数实现了相似的结果。此外,TokenPose-T 仅使用 5.8M 模型参数和 1.3 GFLOPs 获得 65.6 AP,没有任何卷积层。注意,所有 Transformer 部分都是从头开始训练的,没有任何预训练。此外,表 5 显示了我们的方法和 COCO 测试开发集上现有的最先进方法的结果。以 384 × 288 作为输入分辨率,我们的 TokenPose-L/D24 达到 75.9 AP。
4.3MPII Human Pose Estimation
我们遵循 HRNet 中的测试程序。 一些表现最好的方法的 PCKh@0.5 结果如表 4 所示。所有的实验都是在输入图像大小为 256 × 256 的情况下进行的。结果表明,我们提出的 TokenPose 在更轻量级的同时实现了有竞争力的性能。
4.4Ablation Study
Keypoint token fusion
中间监督被广泛用于帮助模型训练和提高热图估计质量,尤其是当网络变得非常深时。 同样,我们建议将 Transformer 编码器的不同层输出的keypoint tokens对应地连接起来,即“key-point token fusion”,以帮助模型训练。
以 12 层 Transformer 的 TokenPose-L+/D12 为例,将第 4、8、12 层输出的关键点 token 对应连接起来。 然后将生成的三倍长的keypoint tokens发送到 MLP 头部以获得最终的热图。
我们在表 6 中报告了有和没有keypoint token fusion的 TokenPose-S 和 TokenPose-L+/D12 的结果。对于 TokenPose-L+/D12,使用关键点令牌融合将结果提高了 0.2 AP。 但是,对于像 TokenPose-S 这样的小变体,它反而会导致性能下降。
对于具有keypoint tokens fusion的 TokenPose-Large,我们发现较低的Transformer层提供了比高层更有意义的证据来理解交互过程。 我们将此归因于token fusion,它使最终的关键点表示能够直接利用来自早期层的信息。 而这样的现象在没有token fusion的TokenPose-Small模型中是不会出现的,在该模型中,注意力交互逐渐表现出清晰而有意义的注意力过程。 我们将在4.5节中进一步描述它。
请注意,KeyPoint tokens fusion仅用于TokenPose-L,因为它的结构非常深且复杂。
Position embedding
关键点定位是一项位置敏感的视觉任务。 为了说明位置嵌入的效果,我们基于 TokenPose-S-v1 进行了具有不同位置嵌入类型(即无位置嵌入、2D 正弦和可学习位置嵌入)的实验。 如表 7 所示,采用位置嵌入最多可将性能提高 5.5 AP。 特别是,2D 正弦位置嵌入比可学习位置嵌入表现更好,这是预期的,因为预测热图需要 2D 空间信息。
Scaling
模型缩放是一种广泛使用的提高模型性能的方法,包括宽度方向 [35, 10] 缩放和深度方向缩放 [3, 26]。 如表 3 所示,增加深度和宽度都有助于改善结果。
4.5Visualization
为了说明所提出的TokenPose如何明确地利用部件之间的visual和constraint cue来定位关键点,我们在推理过程中可视化了细节。 我们观察到单个模型对于大多数常见示例具有相似的行为。 我们从 COCO 验证集中随机选择一些样本,并将图 3 和图 5 中的细节可视化。
Appearance cue
我们在图 3 中可视化了不同 Transformer 层的keypoint token和visual token之间的注意图(attention map)。注意图是基于keypoint token和visual token之间的注意分数形成的。 请注意,我们根据一维注意力得分的原始空间位置对其进行可视化reshape。
我们在图 3 中选择了两张图像进行比较。我们可以看到,随着层深度的增加,keypoint tokens捕获的内容逐渐从全身外观线索到更精确的局部部分线索。 在前几层中,多个拥挤的人可能会同时给出外观提示作为干扰,但模型可以逐步关注目标人。 在随后的层中,不同类型的keypoint token分别关注其相邻的关键点和具有高置信度证据的关节。
在推断被遮挡的关键点时,模型的行为不同。 如图 3 所示,我们注意到被遮挡的左脚踝keypoint tokens更加关注其对称关节(即右脚踝)以获得更多线索。
*图3:keypoint token(例如,鼻子、肘部(l)和肘部(r)等)与 TokenPose-S 不同层中的visual token之间的注意力图的可视化,它由 12 个 Transformer 层组成。 请注意,我们将所有visual token转换为图像中相应的patch区域。 较红的颜色区域意味着给定类型的关键点在这些patch/visual token上具有更高的关注度。 上面和下面显示的示例分别是非遮挡和遮挡的情况。
Keypoint constraints cue
第 2、4、6、8、10 和 12 自注意力层中keypoint token的注意力图在图 5 中可视化。在前几层中,每个关键点都关注几乎所有其他关键点以构建全局上下文。 随着网络的深入,每个关键点往往主要依赖于几个部分来产生最终预测。
具体来说,我们在表 8 中展示了基于最终自注意力层的一些典型关键点的 top-2 约束。特别是,我们观察到 top-2 约束往往是目标关键点的相邻和对称约束,这也 符合人类视觉系统。 例如,预测右手腕主要关注来自右肘和左手腕的约束,分别对应其相邻约束和对称约束。
Keypoint tokens learn prior knowledge from data
在提议的 TokenPose 中,作为第一个 Transformer 层的输入的输入 [keypoint] token是完全可学习的参数。 这些知识与整个训练数据集的偏差有关,但与任何特定图像无关。 在推理过程中,它将被用来促进模型从具体图像中解码视觉信息并进一步进行预测。
为了显示这些输入keypoint token中编码了哪些信息,我们计算了它们的内积矩阵。经过缩放和归一化后,矩阵在图 4 中可视化。我们可以看到一个关键点趋向于与其对称关键点或相邻关键点高度相似。 例如,左髋主要与右髋和左肩相关,相似度得分分别为 0.104 和 0.054。 这样的发现符合我们的常识,并揭示了模型学到了什么。 我们还注意到有一项工作 [31] 通过计算来自 MPII 数据集注释的互信息来分析关节之间的统计分布。 相比之下,我们的模型能够从训练数据中自动学习先验知识,并将其显式编码到输入[keypoint] 标记中。
*图4:学习的关键点标记的内积矩阵。我们将输入第一个 Transformer 层的关键点标记,计算它们的内积矩阵,将它们缩放 √d,并使用 softmax 在列处对其进行归一化。 因此,每一行都可以表示给定类型的关键点与其他关键点的学习的先验约束关系。
Conclusion
在本文中,我们提出了一种新颖的基于token的人体姿态估计表示,即 TokenPose。 特别是,我们将图像分割成块以产生visual token并将关键点实体表示为标记嵌入。 通过这种方式,所提出的 TokenPose 能够通过自注意力交互明确地捕获visual cue和constraint cue。 我们表明,没有任何预训练的低容量纯Transformer 架构也可以很好地工作。 此外,与最先进的基于 CNN 的方法相比,混合架构以更低的计算成本实现了具有竞争力的结果。