论文&代码
背景
基于骨架的动作识别(skeleton-based action recognition)由于它的效率和鲁棒性,近年来受到了广泛关注。目前的基于骨架的动作识别方法通常被定义为一种one-hot的编码分类任务,没有充分利用动作之间的语义关系。例如,"make a victory sign" (“做出胜利的手势”) 和 "Thumb up"(“竖起拇指”)是两种手势动作,其主要区别在于手部的运动。这些细粒度的信息难以从动作类别的分类编码中被获知,但可以在对动作描述中被感知到。因此,在训练中利用动作描述可能有助于表示学习。在本文中,我们提出了一种基于骨架的动作识别方法-GAP。具体来说,我们首创利用预训练的大规模语言模型作为知识引擎(knowledge engine),自动生成动作各个身体部位运动的文本描述,并提出了一种多模态训练方案,利用文本编码器生成不同身体部位的特征向量并监督骨架编码器进行动作表示学习。实验证明,我们提出的GAP方法在各种基线模型上实现了显著的改进,而不需要额外的计算成本。GAP在包括NTU RGB+D、NTU RGB+D 120和NW-UCLA在内的流行的基于骨架的动作识别基准测试中取得了新的最高水平。总的来说,我们的方法证明了利用自然语言描述,可以更好地理解动作语义,并提高基于骨架的动作识别(skeleton-based action recognition) 性能的有效性。我们的研究提供了一种新的范式,即如何利用LLM来提升传统计算机视觉任务的性能,为未来的研究提供了新的思路。
方法
图1 不同骨骼点动作识别框架的对比
• 首次提出使用大语言模型(LLM)生成对动作的细粒度描述,从而提升动作识别的精度
• 简单、有效,仅在训练时增加计算量,对测试速度没有影响
• 在多个标准测试集上: NTU RGB+D, NTU RGB+D 120 and NW-UCLA取得了SOTA
图2 整体框架图
核心贡献
使用LLM生成的动作描述,对动作识别训练进行细粒度的监督
• 使用LLM(GPT3)生成对于动作的细粒度描述(Head, Hand, Hip, Leg)
• 使用Multi-part Contrastive Loss,对人体不同的部位特征分别进行监督
• 推理时只使用全局特征,无需使用text encoder, 加快推理速度
人体分区
通过对人体不同区域特征进行池化(pooling)获得对应区域的特征
大语言模型进行动作描述生成
使用Prompt+动作名称,生成对应的动作描述
具体的生成模式包含: Paragraph (一整段描述);Synonym (同义词);Part description (分人体部位描述). 详情可见图4和图5。
损失函数
交叉熵损失函数
对比损失函数
人体部位分区对比损失函数(人体分区如图3所示)
总体损失函数
实验结果
- 消融实验
- 我们对GAP的不同部份进行了消融实验,包括人体部位分区策略,text prompt生成方式,text encoder, skeleton encoder, 描述方法等等。
- SOTA对比
- 从表格2-4中可以看到,我们在NW-UCLA, NTU RGB+D, NTU RGB+D 120上,均取得了SOTA性能。
- 分析讨论
为了深入理解GAP方法,我们在NTU RGB+D 120上进行详细的分析和讨论。在图6中,我们展示了在NTU120上使用GAP和不使用GAP之间存在超过4%的绝对准确率差异的动作类别。对于动作类别如"写字(writing)"、"打开盒子(open a box)"、"进餐(eat meal)"和"挥刀(wield knife)"等动作,我们可以观察到GAP能显著地提高这些类别的准确率,因为语言模型能够为这些动作生成详细的身体部位运动描述。但是,对于"剪纸(cutting paper)"、"自拍(taking a selfie)"、"玩魔方(play magic cube)"和"玩手机/平板电脑 (play with phone/tablet)"等动作类别,GAP的性能较差。我们认为这些性能差的动作与性能好的动作之间的主要区别在于前者与物体相关,使用骨架数据来识别它们很具有挑战性。此外,数据集中存在的类别偏差可能也会导致我们在NTU120上提出的方法在与物体相关的动作上表现差异。因为数据集中可能存在其他相似的动作类别。例如,通过分析"剪纸(cutting paper)",我们发现它与"双手搓揉(rubbing two hands)"(也出现在NTU120中)之间的主要区别在于持有的物体,如纸张、剪刀。相反,虽然"打开盒子(opening a box)"也是与物体相关的动作,但在NTU120数据集中没有与此相似的其他动作,如"展开衣服(unfold clothes)"。更多的分析,可以参考我们的论文。
总结
我们开发了一种新的基于骨骼点的动作识别框架(GAP),这是首个使用动作知识先验进行骨骼点动作识别的工作。我们采用了大规模语言模型(LLM)作为知识引擎,自动生成详细的身体部位描述,避免了繁琐的手动标注。GAP利用动作描述来引导骨骼点编码器的学习并增强学到的表征,使其具备关于动作和人体部位关系的知识。大量实验证明GAP是一个通用的框架,可以与各种骨干网络组合,以增强表征学习。GAP在NW-UCLA、NTU RGB+D、NTU RGB+D 120这些标准数据集上取得了SOTA效果。