现有的2D姿态估计工作主要集中在某一类别,例如人类、动物和车辆。然而,有很多应用场景需要检测unseen对象类的姿态(或关键点)。因此作者提出CAPE任务(Category-Agnostic Pose Estimation),该任务旨在创建一个姿态估计模型,该模型能够在只给定少数样本的情况下检测任何类别物体的姿态,并定义关键点。为了实现这一目标,作者将姿态估计问题形式化为关键点匹配问题,并设计了一个新框架,称为pose匹配网络(POMNet)。此外,还介绍了多类别姿态(MP-100)数据集,这是一个由100个对象类别组成的2D姿态数据集,包含超过20K个实例,设计用于开发CAPE算法。实验表明,POMNet在很大程度上优于其他基线方法。
来自:Pose for Everything: Towards Category-Agnostic Pose Estimation
目录
- 背景概述
- 相关工作
- 2D姿态估计
- 类别无关姿态估计
- 小样本学习
- 类别无关姿态估计CAPE
- 问题定义
- 姿态匹配网络POMNet
- 特征提取
- 关键点交互
- 匹配头
- 扩展到K-shot
- 多类别姿态数据集MP-100
- 评价指标
背景概述
2D姿态估计(也称为关键点定位)旨在预测实例的预定义语义部分的位置。近年来在计算机视觉领域受到极大的关注。例如,人体姿态估计已被广泛应用于虚拟现实(VR)和增强现实(AR);动物姿态估计在生物科学中具有重要意义;车辆姿态估计对于自动驾驶至关重要。
来自不同领域的 real-world 应用通常涉及检测各种新颖物体的姿态。例如,生物学家可以通过分析植物的姿态来研究植物的生长。然而,传统的姿态估计器是特定于类别的,只能应用于他们训练的类别。为了检测新物体的姿态,用户必须收集大量的标记数据并设计特定类别的姿态估计模型,这既耗时又费力。更糟糕的是,稀有物体(如濒危动物)的数据收集和需要领域知识(如医学图像)的语义关键点注释极具挑战性。因此,对开发能够在不同类别中推广的姿态估计方法是意义重大的。
因此,作者介绍了一项重要但具有挑战性的任务,称为类别无关姿态估计(CAPE)。如图1所示,与只能预测类别指定的姿态的传统姿态估计方法不同,CAPE旨在使用单个模型来检测任何类别的姿态。给定新类别的support图像和相应的关键点定义,类无关姿态估计器预测query图像中相同类别的姿态。通过这种方式,可以根据任意关键点定义生成任何感兴趣对象的姿态。大大降低了每个新类的数据收集、模型训练的成本。
- 图1:类别特定姿态估计与类别无关姿态估计(CAPE)。
- a:传统的姿态估计任务是特定于类别的。估计器是在包含单个类别的对象的数据集上训练的,并且只能预测该类别的姿态。
- b:CAPE任务要求姿态估计器在给定关键点定义的情况下检测任意类别的姿态。在包含多类别对象的姿态数据集上训练后,姿态估计器可以在给定一个或几个support图像的情况下推广到新的类别。
有几个挑战阻碍了计算机视觉社区设计能够预测大量物体类别的姿态系统:
- 首先,大多数姿态估计方法为有监督回归任务,需要数千个标记的图像来学习从输入图像到关键点位置的映射。
- 其次,不同的对象可能具有不同的关键点定义和未知数量的关键点。学习统一的输出表示并利用结构信息是非常重要的。
- 第三,对于通用姿态估计方法的开发,几乎没有具有许多视觉类别的大规模姿态估计数据集,以前的数据集大多只包含一个类别(例如人体)。
相关工作
2D姿态估计
在计算机视觉社区中有两种类型的关键点。语义点 semantic points 是具有明确语义的点(例如左眼),而感兴趣点 interest points 属于low-level points(比如corner points)。2D姿态估计侧重于预测对象的语义点,例如人体部位、面部标志、手关键点和动物姿态。然而,当前的姿态估计方法和数据集只关注单个类别的关键点,不能支持跨类别的姿态估计。
现有方法可分为两类:基于回归的方法和基于heatmap的方法。基于回归的方法直接将图像映射到关键点坐标。这种方法对于实时应用是灵活和有效的。然而,它们很容易受到遮挡和运动模糊的影响,从而导致性能较差。基于热图的方法使用热图对关键点位置进行编码。由于具有良好的定位精度,基于热图的方法在二维姿态估计领域占主导地位。最近关于姿态估计的工作主要集中在设计强大的卷积神经网络或基于ViT的架构。然而,他们只专注于检测训练过程中出现的对象类别的关键点。相比之下,作者提出的方法能够检测任意对象的关键点。
现有的2D姿态估计数据集仅关注于单个类别。如图2所示,大多数注意力都集中在与人类相关的类别上,例如,人体、人脸和人手,这些类别有许多大规模的数据集。对于其他在长尾分布上的类别,数据集在规模和多样性方面都相对有限。尽管如此,分析这些长尾对象类别在学术界和工业界都具有重要意义。例如,车辆姿态估计对于自动驾驶非常重要。动物姿态估计在生物科学中具有重要意义。室内家具姿态估计对于开发家用机器人非常重要。在该文中,作者构建了第一个大型基准测试(MP-100数据集),该数据集包含各种视觉类别的姿态标注。
- 图2:流行的2D姿态估计数据集的类别和图像数量。
类别无关姿态估计
类别无关的估计可以应用于许多计算机视觉下游任务。这种工作主要与StarMap有关,它提出了用规范视图位置编码的类别无关的3D关键点表示。然而,StarMap仅适用于刚性对象(如家具),并依赖于目标类别的几个昂贵的3D CAD模型来识别预测的关键点。相比之下,CAPE旨在根据一个或几个support图像给出的任何手动关键点定义来预测任何对象类别(刚性和柔性)的2D姿态。
小样本学习
小样本学习旨在只使用几个例子识别新类别。最近的小样本学习方法可以大致分为三类,即基于度量学习的方法、基于元学习的方法和基于数据增强的方法。
- 基于度量学习的方法:原型网络学习support数据中每个类的原型(嵌入特征),然后将查询数据分类为与原型“最近”的类。
- 基于元学习的方法:模型无关元学习和基于LSTM的元学习旨在搜索一组良好的初始化权重,以便分类器可以通过仅对少数support样本进行微调来快速推广到新任务。
- 基于数据增强的方法:生成新类的合成示例,通过使用这些合成示例进行再训练来提高性能。
作者提出的方法属于基于度量学习的方法。这是CAPE的第一个框架。此外,关键点交互模块(KIM,Keypoint Interaction Module)是专门为CAPE设计的,用于捕捉不同关键点之间的关系以及支持和查询图像之间的关系。
类别无关姿态估计CAPE
问题定义
该文介绍了一种新的任务,称为类无关姿态估计(CAPE)。与预测单个已知/可见类别的关键点的现有姿态估计任务不同,CAPE需要单个模型来检测任意类别的关键点。更具体地说,给定一个或几个具有unseen类别的关键点定义的support样本,可以在不标记大规模监督和重新训练模型的情况下检测该类别的对象关键点,从而显著降低数据注释和参数调整的成本。
为了验证CAPE模型在unseen类别上的泛化能力,要求其在基本类别上进行训练,但在新类别上进行评估。基本类别和新类别是互斥的,其中测试集上的类别不会出现在训练数据中。在测试阶段,CAPE模型提供了一个unseen类别的 K K K个标记的support样本。需要模型来检测与支持样本属于同一类别的query样本的姿态。从这个意义上说,CAPE任务可以被视为一个 K K K-shot姿态估计问题。特别地,当 K = 1 K=1 K=1时,这是one-shot姿态估计。
姿态匹配网络POMNet
传统的姿态估计器既不能应用于unseen物体类别,也不能应用于同一类的不同关键点定义场景(例如,19个关键点人脸定义和68个关键点的人脸定义)。为了实现CAPE,作者将该任务定义为匹配问题,并提出了一个新的框架,称为POse Matching网络(POMNet)。POMNet通过计算每个位置的reference支持关键点特征和query图像特征之间的匹配相似性来工作。因此,POMNet能够处理具有不同关键点编号和定义的各种类别。如图3,POMNet包括三部分:特征提取器 Θ S \Theta_{S} ΘS和 Θ Q \Theta_{Q} ΘQ,关键点交互模块KIM,匹配头MH。
- 图3:POMNet概述。特征提取器 Θ S Θ_S ΘS和 Θ Q Θ_Q ΘQ分别提取support关键点特征和query图像特征。关键点交互模块(KIM)通过在关键点之间传递消息并捕捉查询和支持图像之间的关系来细化关键点特征。匹配头(MH)将细化的关键点特征和查询图像特征相结合,以预测查询图像中的关键点定位。MSE损失用于监督模型。
特征提取
使用两个并行的特征提取器来提取支持关键点特征和查询图像特征。在实现中,使用在ImageNet数据集上预训练的ResNet-50作为主干。对于support image I S I_{S} IS,特征提取器 Θ S \Theta_{S} ΘS用于提取support的特征 F S = Θ S ( I S ) F_{S}=\Theta_{S}(I_{S}) FS=ΘS(IS)。支持样本的关键点注释在热图表示中提供。我们将支持样本的GT热图表示为 H S ∗ H^{*}_{S} HS∗, H S ∗ j ∈ R H × W × 1 H^{*j}_{S}∈R^{ H×W×1} HS∗j∈RH×W×1表示第 j j j个关键点的热图。给定支持样本的支持图像特征和GT热图,我们可以获得相应的关键点特征: F ^ S j = A v g P o o l ( U p s a m p l e ( F S ) ⊗ H S ∗ j ) , j = 1 , 2 , . . , J \widehat{F}_{S}^{j}=AvgPool(Upsample(F_{S})⊗H^{*j}_{S}),\thinspace j=1,2,..,J F Sj=AvgPool(Upsample(FS)⊗HS∗j),j=1,2,..,J其中, F S ∈ R h × w × c F_{S}\in R^{h\times w\times c} FS∈Rh×w×c表示support图像的特征, F ^ S j ∈ R 1 × 1 × c \widehat{F}_{S}^{j}\in R^{1\times 1\times c} F Sj∈R1×1×c表示第 j j j个关键点的特征。 U p s a m p l e Upsample Upsample是上采样操作,它将support图像特征重新整形为与相应热图相同的大小。 ⊗ ⊗ ⊗为像素级相乘。 J J J为reference的关键点数量。
对于query图像 I Q I_Q IQ,应用特征提取器 Θ Q Θ_Q ΘQ来提取查询图像特征 F Q = Θ Q ( I Q ) F_{Q}=\Theta_{Q}(I_{Q}) FQ=ΘQ(IQ)。然后折叠查询图像特征的空间维度并重塑为一个序列。
关键点交互
KIM旨在通过有效的注意力机制来增强support关键点特征。首先通过完全连接来减少支持关键点特征的通道数。然后将不同关键点的特征作为序列输入。由于不同类别的关键点数量不同,作者在末尾添加了几个带有padding掩码的伪特征,以保持固定数量 L L L的输入特征(文中实现为 L = 100 L=100 L=100),这使得KIM能够适应各种关键点数量。
KIM有三个Transformer块,每个Transformer块由两个主要组件组成,即Self-Attn和Cross Attn。对于Self-Attn,自注意力层学习在关键点之间交换信息并利用固有的对象结构。它允许关键点特征交互,并使用注意力权重聚合这些交互。对于Cross-Attn,关键点特征还与query图像特征交互,以对齐特征表示并减小gap。具体地,Cross-Attn被应用于聚合query图像中的有用信息。关键点特征作为Q,序列化的查询图像特征作为K和V。查询图像特征的通道维度被减小以匹配关键点特征的通道尺寸。
KIM对support关键点特征进行了处理和细化, { F ‾ S j } j = 1 L = K I M ( { F ^ S j } j = 1 L , F Q ) \left\{\overline{F}_{S}^{j}\right\}_{j=1}^{L}=KIM(\left\{\widehat{F}_{S}^{j}\right\}_{j=1}^{L},F_{Q}) {FSj}j=1L=KIM({F Sj}j=1L,FQ),作者排除了伪填充特征,并通过选择基于ones的前 J J J个有效关键点特征来获得精细的关键点特征 { F ‾ S j } j = 1 J \left\{\overline{F}_{S}^{j}\right\}_{j=1}^{J} {FSj}j=1J,其中 J ≤ L J≤L J≤L。
匹配头
给定细化的关键点特征作为参考,匹配头(MH)的目标是在用热图编码的query图像中寻找最佳匹配位置。
将细化的关键点特征扩展到与查询图像特征 F Q F_Q FQ相同的空间形状。然后将扩展的特征与查询图像特征连接起来。最后,使用解码器 Θ M Θ_M ΘM来估计关键点热图。该过程如下: H Q j = Θ M ( E x p a n d ( F ‾ S j ) ⊕ F Q ) , j = 1 , 2 , . . . , J H_{Q}^{j}=\Theta_{M}(Expand(\overline{F}_{S}^{j})⊕ F_{Q}),\thinspace j=1,2,...,J HQj=ΘM(Expand(FSj)⊕FQ),j=1,2,...,J其中, ⊕ ⊕ ⊕为沿通道拼接, E x p a n d Expand Expand为空间扩展操作,即在空间上复制细化的关键点特征以适应查询图像特征的空间大小。 H Q j H_{Q}^{j} HQj是第 j j j个关键点的预测热图。解码器 Θ M Θ_M ΘM由一个3×3卷积层组成,然后是反卷积层,以获得更高的分辨率。像素均方误差(MSE)损失被应用于监督POMNet训练: L M S E = 1 J H W ∑ j = 1 J ∑ p ∣ ∣ H Q j ( p ) − H Q ∗ j ( p ) ∣ ∣ 2 L_{MSE}=\frac{1}{JHW}\sum_{j=1}^{J}\sum_{p}||H_{Q}^{j}(p)-H_{Q}^{*j}(p)||^{2} LMSE=JHW1j=1∑Jp∑∣∣HQj(p)−HQ∗j(p)∣∣2其中, H H H和 W W W为热图的高和宽。 H Q j ( p ) H_{Q}^{j}(p) HQj(p)和 H Q ∗ j ( p ) H_{Q}^{*j}(p) HQ∗j(p)是位置 p p p处的预测像素强度和GT像素强度。
扩展到K-shot
当 K K K( K > 1 K>1 K>1)个support图像可用时,首先单独提取每个样本的support关键点特征,然后计算 K K K个样本之间的平均值。后续pipeline(包括KIM和MH)与1-shot设置的pipeline完全相同。有了更多的支持图像,POMNet能够捕获更健壮的关键点特征,以处理类别内的差异和关键点定义的模糊性。
多类别姿态数据集MP-100
过去的姿态估计数据集仅由一个类别的对象组成,并且没有用于CAPE任务的现有数据集。因此,作者构建了第一个包含多个类别对象的大规模姿态数据集,称为MP-100。MP-100数据集总共涵盖了100个子类别和8个超类别(人手、人脸、人体、动物体、动物脸、衣服、家具和车辆),如图4所示。
- 图4:MP-100概览。
MP-100从几个流行的2D姿态数据集收集了超过18K的图像和20K的注释。不同类别的关键点编号各不相同,从8到68不等。将收集到的100个类别划分为train/val/test set(70个用于训练,10个用于验证,20个用于测试,train/val/test set分别互斥)。根据常见设置,形成五个测试集不重叠的分割,并评估五个分割的平均模型性能。在这种情况下,每个类别都被测试为不同拆分的新类别,从而避免了类别偏差。此外,为了平等对待所有类别,作者尽量平衡了不同类别之间的实例数量,见图5。
- 图5:每个类别的实例数量。
评价指标
对于MP-100数据集上的每个分割,在训练集上训练POMNet,在验证集上验证性能,最后在测试集上评估模型。PCK(Probability of Correct Keypoint,正确关键点百分比)是一种常用的姿态估计指标。如果预测的关键点和GT关键点之间的归一化距离小于某个阈值 σ σ σ,则认为这是正确的: P C K = 1 N ∑ i = 1 N 1 ( ∣ ∣ p i − p i ∗ ∣ ∣ 2 d ≤ σ ) PCK=\frac{1}{N}\sum_{i=1}^{N}1(\frac{||p_{i}-p_{i}^{*}||^{2}}{d}\leq\sigma) PCK=N1i=1∑N1(d∣∣pi−pi∗∣∣2≤σ)其中 p i p_i pi和 p i ∗ p^{*}_{i} pi∗分别是预测的和GT关键点位置。 1 1 1是指示函数。 d d d是GT边界框的最长边,用作归一化项。
计算总的 N N N个关键点的正确比率。在实验中,一般报告PCK@0.2( σ = 0.2 σ=0.2 σ=0.2)。为了最大限度地减少类别偏差,还需报告所有5次数据拆分的平均PCK结果。