Pose for Everything: Towards Category-Agnostic Pose Estimation 阅读笔记

类无关姿态估计

ECCV 2022 Oral
论文链接
代码链接
其他参考

引入了一个新任务:CategoryAgnostic Pose Estimation (CAPE) 类无关姿态估计

摘要: 目前的2D姿态估计与类别耦合,例如人、动物、车辆。但很多场景需要检测未知类的姿态/关键点。本文引入一项类无关姿态估计任务(CategoryAgnostic Pose Estimation (CAPE)),创建一个能定位任意类别物体关键点的模型。为了实现这一目标,本文将姿态估计问题表述为关键点匹配问题,并设计了一个新的CAPE框架:POse Matching Network(POMNet)。本文提出一种 transformer-based Keypoint Interaction Module (KIM),来捕捉不同关键点间的交互以及 support 和 query 图像间的关系。本文提出了一个用于设计CAPE算法的多类别姿态(MP-100)数据集,该数据集包含100个对象类别,超20K个实例的2D姿态。实验表明,我们的方法在很大程度上优于其他baseline。


1 Introduction

人体姿态估计广泛应用于虚拟现实(VR)和增强现实(AR);动物姿态估计在动物学和野生动物保护中具有重要意义;车辆姿态估计对自动驾驶至关重要。不同领域会涉及检测多种类别的姿态,例如生物学家通过分析植物的姿态来研究植物的生长。但传统的姿态估计器是类特定的,只针对它们所训练的类别,因此必须收集大量标记数据并设计特定类姿态估计器来检测新物体的姿态,这既费时又费力。更糟糕的是,收集稀有物种(如濒危动物)数据集和需要专业知识标注语义关键点(如医学图像)极具挑战性。因此,需要开发能检测不同类别关键点的姿态估计器。
如图1所示,本文引入了一项新的类无关姿态估计任务(CategoryAgnostic Pose Estimation (CAPE)),CAPE旨在使用单个模型检测任何类别的姿态。
给定一个新类别的support图像及其关键点定义,类无关姿态估计器预测 query 图像的同种类别,这样可以根据关键点定义生成任何对象的姿态。大大降低了新类别数据收集,模型训练和调参的成本。
在这里插入图片描述

图1:类特定姿态估计 vs 类无关姿态估计(CAPE)。(a) 传统的姿态估计任务是类特定的。姿势估计器在单类对象数据集上训练,且只能预测该类别的姿态。(b) CAPE任务要求姿态估计器检测给定关键点定义的任意类别的姿态。在多类别姿态数据集上训练,类无关姿态估计器可在给定一个或几个 support 图像的情况下推广到新的类别。

设计类无关姿态估计器存在一些挑战:

  1. 大多姿态估计采用有监督的回归方法,需要成千上万的标记图像学习将输入图像映射到关键点位置。
  2. 不同对象的关键点数量和定义不同。学习独特的输出表示并利用结构信息非常重要。
  3. 几乎没有用于开发多类别大规模姿态估计的数据集。以前的数据集大多只包含一个类别(例如人体)。

本文迈出了CAPE的第一步,并提出了一个新的框架:POse Matching Network(POMNet),将2D姿态估计任务表述为匹配问题。 基于参考的关键点定义从 support 图像中提取关键点特征,并从query 图像中提取图像特征,用 Matching Head(MH)合并support 关键点特征和query图像特征,以最大可能性估计关键点位置。 这样,模型无关于类别,可以检测任意数量关键点。此外还设计了一个基于transformer的关键点交互模块(Keypoint Interaction Module KIM)来捕获不同关键点间以及 support 和 query 图像间的关系。 不同关键点的特征相互作用,以学习给定对象类别的固有结构,关键点特征进一步与 query 图像特征对齐以获得更好的匹配。
为训练并评估类无关姿态估计器,我们收集了一个大规模多类别姿态数据集:Multi-category Pose(MP-100),包含超过20K个实例,涵盖100个子类别和8个超类别(如动物脸、家具、车辆和衣服)。据我们所知,这是第一个包含多类别姿态标注的基准。
本文的主要贡献有三:

  • 本文引入了一个新的具有挑战性的任务CAPE,要求模型基于给定几个关键点定义的 support 图像预测任何对象的姿态。
  • 本文提出了一个新的CAPE框架:POMNet,将关键点检测任务表述为匹配问题,提出了关键点交互模块(KIM)来捕获关键点间关系和 support-query 关系。
  • 为CAPE任务构建了第一个大规模多类别数据集:MP-100,来促进相关研究。

2 Related Works

2.1 2D Pose Estimation

CV界有两类关键点:① 语义点(Semantic points)具有明确语义(例如左眼);② 兴趣点(interest points)是 low-level 点 (例如角点)。2D姿态估计侧重于预测对象的语义点,例如人体部位、人脸特征点、手关键点和动物姿态。但当前的姿态估计方法和数据集仅关注单个 super-category 关键点,不支持跨类别/未知姿态估计。
2D姿态估计方法:当前的2D姿态估计方法可分为回归法和热图法两类,回归法直接将图像映射到关键点坐标,对于实时应用灵活有效,但易受遮挡和运动模糊的影响,导致性能下降。热图使用似然热图来编码关键点位置,定位精度高,在2D姿态估计领域独占鳌头。最近关于姿态估计的工作主要集中在设计强大的卷积神经网络或基于 transformer 的架构,但这些工作只关注特定类别,相比之下,我们的模型能够检测未知类的任意对象关键点。
2D姿势估计基准。现有的2D姿态估计数据集仅关注单个 super-category。如图2所示,大多集中于人类相关的类别上(例如,人体,人脸和手)。其他 long-tailed 类别的数据集在数据规模和多样性方面相对有限,但分析这些 long-tailed 类对象在学术界和工业界都具有重要意义,例如,车辆姿态估计对于自动驾驶很重要,动物姿态估计在动物学和野生动物保护中具有重要意义,室内家具姿态估计对开发家用机器人非常重要。本文构建了第一个大规模多类别姿态数据集:MP-100数据集)。

在这里插入图片描述

图2:流行的2D姿态估计数据集的类别和图像数量。

2.2 Category-agnostic Estimation

类无关估计已应用于许多CV任务,包括检测、分割、对象计数和视角点估计。本工作主要与StarMap 有关,它提出用规范视角位置编码类无关3D关键点表示,但StarMap仅适用于刚性对象(例如家具),并依赖一些昂贵的3D CAD模型来识别预测的关键点proposal。相比之下,CAPE旨在根据一张或几张 support 图像给出的手工关键点定义来预测任何对象类别(刚性和非刚性)的2D姿态。

2.3 Few-shot Learning

少样本学习致力于仅使用少量样本来学习新类,最近的少样本学习法大致可分为三类:metric-learning-based 法、meta-learning-based 法 和 data-augmentation-based法。Metric-learning-based Approaches: Prototypical networks 学习 support 数据中每个类的原型(embedding特征),然后将query 数据分类为原型最接近的类Meta-learning-based Approaches: 模型无关元学习和基于LSTM的元学习器旨在搜索一组最佳初始化权重,使分类器可以通过仅微调少数支持样本就能快速推广到新任务上。Dataaugmentation-based Approaches: 基于数据扩充的方法生成新类的合成示例,通过使用这些合成示例进行再训练来提高性能。我们的方法属于 Metric-learning-based 法,并设计关键点交互模块(KIM)来捕捉不同关键点间和 support-query 图像间的关系。

3 Class-Agnostic Pose Estimation (CAPE)

3.1 Problem Definition

CAPE指给定一个或几个具有 unseen 类别关键点定义的support样本,无需大规模标记的监督和再训练模型就能检测该类别对象的关键点,CAPE能够显著降低数据标注和参数调整的成本。
为验证CAPE模型在 unseen 类上的泛化性,在 base类别上训练,在 novel类别上评估,base 类别和novel 类别互斥,测试集的novel类别不会出现在训练集中。给CAPE模型提供一个unseen 类别的K个标注的支持样本,模型需要检测与支持样本属于同一类别的 query 样本的姿态。 在这个意义上,CAPE任务可被视作 K-shot 姿态估计问题,K=1 为 one-shot 姿态估计。

3.2 POse匹配网络(POMNet)

传统姿态估计器既不能应用于未知类别,也不能应用于关键点定义不同的同一类别(例如19个人脸关键点定义和68个人脸关键点定义)。POMNet 将CAPE视作一个匹配问题,计算每个位置的参考支持关键点特征和 query 图像特征间的匹配相似度,因此它能够处理各种具有不同关键点数量和定义的类别。如图3所示,POMNet由三部分组成:特征提取器( Θ S 和 Θ Q Θ_S和Θ_Q ΘSΘQ)、关键点交互模块(KIM)和匹配头(MH)。

在这里插入图片描述

图3:POMNet的 overview。特征提取器ΘS和ΘQ分别提取支持关键点特征和 query 图像特征。关键点交互模块(KIM)通过在关键点间传递消息并捕获 query 和支持图像间的关系来细化关键点特征。匹配头(MH)合并细化的关键点特征和 query 图像特征来预测 query 图像的关键点定位。利用MSEloss来监督模型。

Feature Extractor 特征提取: 采用两个并行的特征提取器来提取support关键点特征和query图像特征,采用在ImageNet上预训练的 ResNet-50 作backbone。
特征提取器 Θ S Θ_S ΘS提取support 图像 I S I_S IS的特征: F S = Θ S ( I S ) F_S = Θ_S(I_S) FS=ΘS(IS),GT热图: H S ∗ j ∈ R H × W × 1 H^{∗j}_S∈R^{H×W ×1} HSjRH×W×1 表示support关键点标注,给定support 图像特征和 support 样本的GT热图,如下获得相应的关键点特征:
在这里插入图片描述
F S ∈ R h × w × c 和 F ^ S j ∈ R 1 × 1 × c F_S∈R^{h×w×c} 和 \hat{F}^j_S∈R^{1×1×c} FSRh×w×cF^SjR1×1×c 分别表示 support 图像特征和 j-th 关键点特征,Upsample() 将支持图像特征上采样至相应热图 size,AvgPool() 通过加权平均聚集GT关键点位置周围的支持图像特征。J 表示参照关键点数量。
按照相似的pipeline,用特征提取器 Θ Q Θ_Q ΘQ提取 query 图像 I Q I_Q IQ的特征: F Q = Θ Q ( I Q ) F_Q = Θ_Q(I_Q) FQ=ΘQ(IQ),collapse query 图像特征,并reshape为一个sequence,提取的图像特征用于在关键点交互模块(KIM)细化支持关键点特征,在匹配头MH中预测关键点位置。

关键点交互模块 Keypoint Interaction Module (KIM): KIM旨在通过有效的注意力机制增强支持关键点特征。先通过一个全连接层降低支持关键点特征的通道维度,并将不同关键点的特征作为一个 sequence 进行输入,不同类别的关键点数量不同,因此在末尾添加几个带 padding mask 的虚拟特征来保持固定数量 L(L=100)个输入特征,使 KIM能适应各种关键点数量。 KIM包含 3 个 transformer blocks,每个blocks都包含两个主要的组件:Self-Attn 和 Cross-Attn。Self-Attn学习在关键点之间交换信息并利用固有的对象结构,允许关键点特征彼此交互,并使用注意力权重聚合这些交互。Cross-Attn 用于聚集 query 图像中的有用信息从而使关键点特征与 query 图像特征交互,以对齐特征表示减轻表示gap
关键点特征作为query输入,flattened query 图像特征作为 key 和 value 输入,降低 query 图像特征的通道维度以匹配关键点特征的通道维度,给query 图像特征应用 sin position embedding,按照惯例,还包括前馈网络(FFN) 。因此,支持关键点特征能被KIM处理并细化:
在这里插入图片描述
我们排除了伪 padding 特征,选择前 J 个有效关键点特征来获得细化的关键点特征: { F ˉ S j } j = 1 J , J ≤ L \{\bar{F}^j_S\}^J_{j=1}, J≤ L { FˉSj}j=1J,JL

匹配头 Matching Head (MH): 细化的关键点特征作为参照,匹配头(MH)的目标是在 query 图像中寻找热图编码的最佳匹配位置
扩维关键点特征的空间维度与 query 图像特征 F Q F_Q FQ 一致,然后和 F Q F_Q FQ 进行concatenate,最后采用一个 decoder Θ M Θ_M ΘM 估计关键点热图,整个过程如下:
在这里插入图片描述
Expand() 表示空间扩张操作, H Q j H_Q^j HQj 是 j-th 关键点的预测热图,decoder Θ M Θ_M ΘM 遵循SimpleBaseLine(有点低级),由一个 3×3 卷积层+转置卷积层构成,来上采样热图。用 pixel-wise MSE 来监督 POMNet:
在这里插入图片描述

Extension to K-shot. 当K(K>1)个支持图像可用时,先单独提取每个样本的支持关键点特征,然后计算K个样本的均值。随后的 pipeline(包括KIM和MH)与 1-shot 完全相同。有了更多支持图像,POMNet 能够捕获更稳健的关键点特征,以处理类别内的差异和关键点定义的模糊性。

4 Mulit-category Pose (MP-100) Dataset

如图4所示,MP-100数据集涵盖了100个子类别和8个超类别(人手、人脸、人体、动物体、动物脸、衣服、家具和车辆)。从几个流行2D姿态数据集中收集了超过18K张图像,20K个标注,关键点数量从8到68不等。
在这里插入图片描述

图4:MP-100数据集涵盖100个子类和8个超类(人手、人脸、人体、动物脸、动物身体、衣服、家具和车辆)。

将收集到的100个子类划分为train/val/test sets (70 for train, 10 for val, and 20 for test),形成五个 test set 不重叠的 splits,并评估五个 splits 的平均模型性能,因此每个类别在不同的 split 上作为新类别被测试,避免了类别偏差。此外,为平等对待所有类别,尽量平衡不同类别的实例数量。
每个 split 的 test set 选择2K个样本,每个类别中有100个实例。train/val set 分别选择14K/2K个样本 for 70/10个类别。由于不同类别的实例数量多样,且存在少于200个实例的罕见类别,因此最小化所有类别的实例数量的标准偏差。在样本选择过程中,对每个类别,优先选择具有更有效关键点标注且图像分辨率更大的实例。图5 展示了MP-100数据集上每个类别实例数量的直方图,每个类别的实例数量大致平衡。

在这里插入图片描述

图5:MP-100数据集上每个类别的实例数量直方图。

5 Experiments

5.1 Implementation Details

对于MP-100数据集上的每个split,在 train set 上训练POMNet,val set 上验证,test set 上评估,train/val/tset set 互斥。训练期间,随机配对同类别的支持图像和 query 图像;根据 bbox crop出对象,并resize为 256 × 256;采用 random scaling ([−15%, 15%]) 和 random rotation ([−15◦, 15◦]) 数据增强来提升模型的泛化性;使用8个GPU,每个GPU batch size=16,训练210个epoch;遵循 MMPose,采用 Adam优化器,基础学习率为1e-3,并在第170和第200个epoch将学习率分别衰减到1e-4和1e-5。测试过程中,为每个新类别随机抽取了3000个episodes,由于每个split有20个测试类别,因此共构建 60000 个 episodes进行评估。
Probability of Correct Keypoint:PCK(正确关键点概率)用于评估姿态估计,若预测关键点和 gt 相关键点间的归一化距离小于某个阈值(σ),则认为是正确的:
在这里插入图片描述
1(·) 表示 indicator function;d是gt bbox 的最长边,用作归一化项;计算N个关键点的正确比率。实验报告每个split中所有类别的平均 [email protected] (σ = 0.2),为了最小化类别偏差,还报告5个split的平均PCK结果。

5.2 Benchmark Results on MP-100 Dataset

CAPE是一项新任务,我们 tailor 现存的少样本学习 baseline,包括:Prototypical Networks、Finetune 和 MAML 来解决这一新任务。为公平比较,所有baseline 都采用 ResNet-50 作backbone。
Prototypical Networks (ProtoNet): ProtoNet为每个类构造一个原型,并将 query example 分配给原型“最近”的类。为了解决CAPE,使用 ProtoNet 为每个关键点构建原型,并在 query 图像中找到其特征最接近原型的位置。与图像分类不同,特征的感受野和空间分辨率对姿态估计至关重要,实验发现,Stage-3 的特征能良好平衡这两个因素。
Fine-tune: 该模型先使用 train set 上所有基本类的组合进行预训练。测试过程中,在估计 query 图像的姿态之前,在新类别的支持图像上对模型进行微调。为处理关键点数量不同的问题,模型输出所有类别中的最大关键点数量,即MP-100数据集上的68个,在训练和微调期间,仅针对每个特定类别监督少数有效关键点。
Model-Agnostic Meta-Learning (MAML): 通过元训练,MAML模型搜索良好的初始化权重,从而可以通过对几个支持图像进行微调来快速适应给定类别。与 FineTune 类似,MAML 模型的关键点数量设为68。在元测试期间,该模型可以在给定一些支持图像的情况下快速适应新类别。
如表1所示,POMNet在CAPE任务上显著优于现有的少样本学习方法。在5-Shot设置的实验中观察到 ProtoNet 主要依赖于 low-level 的外观特征,且仅使用5个样本难以为所有关键点构建可靠原型,它单独处理每种类型的关键点,不利用结构信息,限制了性能。MAML和FineTune通过在测试期间对一些样本进行微调来适应新的对象类别,但由于样本数量有限,会出现过拟合或欠拟合使模型难以在新类别上实现良好的性能。POMNet将CAPE任务视为一个匹配问题,解耦对象类别和关键点数量,同时,KIM明确捕捉关键点间和对象结构间的关系。因此,POMNet在5-Shot设置下的新类别上达到了80.71PCK,大幅优于baseline(提高25%以上)。
当样本图像的数量减少到1时,POMNet仅退化1.3%(79.70 vs 80.71PCK),可能是因为POMNet捕捉了语义关键点间的关系,并对遮挡和视觉模糊更鲁棒。相比之下,ProtoNet需要基于单个关键点构建原型,因此对外观变化更敏感,从而导致更大的性能下降(44.78 vs 58.56PCK)。

在这里插入图片描述

表1:MP-100数据集上基于5-Shot和1-Shot与baseline的比较。POMNet显著优于其他方法。

5.3 Cross Super-Category Pose Estimation

为进一步评估泛化能力,使用“Leave-One-Out”策略进行交叉超类姿态估计评估,即在MP-100数据集上训练除一个超类之外的所有超类模型,在这一个超类上进行评估,评估的超类包括人体、人脸、车辆和家具。
表2所示,POMNet在所有超类上都优于baseline,显示出更强的泛化能力,但超类泛化仍有很大的改进空间。我们注意到,所有方法在车辆和家具超类上表现不佳,可能是因为这些类别与训练类别非常不同,且提取的特征没有足够的辨别力,车辆有大量不可见的关键点,家具图像之间的类内差异很大,使这两个超类更具挑战性。解决CAPE需要处理遮挡和类内外观变化问题,并为看不见的类提取更多的区别性特征,我们将在未来探索这些方向。

在这里插入图片描述

表2:Cross super-category evaluation (PCK)。POMNet 优于其他方法,但在稀有类别上仍有很大的提升空间。

5.4 Ablation Study

模型组件的影响。 表3显示了关键点交互模块(KIM)和匹配头(MH)的效果。
在这里插入图片描述

表3:MP-100 Split1上 1-Shot 设置下的消融研究。KIM和MH显著提高了模型性能。

培训类别数影响。如表4左边的数据所示,更多的训练类别能使模型更好地推广到新类别上,验证了MP-100数据集的必要性和我们实验的合理性。

在这里插入图片描述

表4:左侧(“#Train”):1-Shot 设置下训练类别数的影响。对一个新类别(“人体”)进行评估。右:训练和测试都只针对“人体”。

Sanity check: 采用人体姿态估计作健全性检查。在右表4中,“Oracle”是指POMNet仅在同一类别(“人体”)上进行训练和测试,其性能与SBLRes50相当,验证了设计的正确性。

5.5 Qualitative Results

图6定性评估了POMNet对MP-100测试集上的新类别的泛化能力。POMNet对视角变化和多样性外观具有鲁棒性。典型失败案例包括外观模糊(前两个示例)和严重遮挡(第三个示例)。

在这里插入图片描述

图6:POMNet对不可见类别的定性结果。第一列使手工标注的支持样本,其他列是预测的query样本。最后一列显示了一些失败案例(红色圆圈)。

6 Conclusions and Limitations

本文介绍了一个新任务:CAPE,不仅能促进姿态估计的发展(例如,新类别的伪标记),还便于其他领域的研究人员检测他们感兴趣对象(例如植物)的关键点。此外,它还可能积极影响其他CV任务,例如可以为基于关键点的目标跟踪、基于轮廓的实例分割和图形匹配开发CAPE模型。为了实现这一目标,我们提出了第一个CAPE框架:POMNet,以及第一个用于CAPE任务的数据集:MP-100。实验表明,POMNet在MP-100数据集上显著优于其他方法。然而,CAPE任务仍存在许多挑战:例如罕见类别的泛化性、类内外观变化、自遮挡和外观模糊。总之,CAPE作为一项重要但具有挑战性的任务,值得更多的研究和进一步探索。

猜你喜欢

转载自blog.csdn.net/unauna9739/article/details/128105729
今日推荐