引言

想象一下,看着一个人坐在桌前的剪影。他们的手臂在动。他们是在写信,还是在键盘上打字?对于普通的观察者,甚至对于许多计算机视觉算法来说,这两个动作看起来都惊人地相似。姿势是一样的;活动的身体部位 (手臂和手) 也是一样的。区别在于那些关节相对于彼此运动的微妙、细粒度的细节中。

在计算机视觉领域, 基于骨架的动作识别 (Skeleton-based Action Recognition) 已成为分析人类行为的强力工具。与处理繁重像素数据的 RGB 视频分析不同,基于骨架的方法专注于人体关节 (节点) 和骨骼 (边) 的几何图结构。这使得它们高效且对光照或背景的变化具有鲁棒性。

然而,作为该任务行业标准的标准图卷积网络 (GCNs) ,在处理具有相似运动轨迹的动作时经常碰壁。它们擅长区分“跑步”和“坐下”,但在区分“写字”与“打字”时却很吃力。为什么?因为它们倾向于捕捉粗粒度的全局运动模式,而平滑掉了区分相似类别所需的微小判别性细节。

在这篇文章中,我们将深入探讨 ProtoGCN , 这是由中国科学院的研究人员提出的一种新颖架构。这篇论文引入了“原型视角 (Prototypical Perspective) ”。ProtoGCN 不仅仅是学习一个通用的特征图,而是将复杂的动作分解为可学习的“原型 (prototypes) ”组合——即存储在记忆库中的基本运动单元。

图 1. 相似动作“写字”和“在键盘上打字”的骨架及学习到的拓扑结构示意图。

如上图 1 所示,传统方法 (标记为 PYSKL) 难以区分写字和打字之间的连接模式。相比之下,本论文提出的方法 (ProtoGCN) 揭示了明显的运动模式 (图 b 和 d) ,成功突出了手部参与的微妙差异。

让我们来拆解这个模型是如何实现如此细粒度的区分的。

背景: 相似性的挑战

在理解解决方案之前,我们必须了解当前 GCN 在该领域的具体局限性。

人体骨架自然地被表示为图,记为 \(\mathcal{G} = (\mathcal{V}, \mathcal{E})\),其中 \(\mathcal{V}\) 代表关节,\(\mathcal{E}\) 代表骨骼。一系列的动作被表示为形状为 \(N \times T \times C\) (关节数 \(\times\) 时间 \(\times\) 通道数) 的张量。

GCN 的目标是通过聚合邻居的信息来更新这些关节的特征。标准的自适应 GCN 层使用以下逻辑更新特征:

标准 GCN 转换函数方程。

这里,\(\mathbf{H}^{(l)}\) 是第 \(l\) 层的特征图,\(\mathbf{W}\) 是权重矩阵,而 \(\mathbf{A}\) 是定义哪些关节相互关联的拓扑矩阵 (邻接矩阵) 。

问题在于,大多数现有方法专注于优化图的结构 (矩阵 \(\mathbf{A}\)) 以处理一般运动。它们往往忽略了特定关键身体部位的特征细节 。 当两个动作有 90% 相似时,分类器会感到困惑,因为那独特的 10% 在全局聚合的噪声中丢失了。ProtoGCN 的研究人员意识到,要解决这个问题,网络需要显式地从一组独特的细节中“重构”动作,而不是仅仅将它们平均化。

核心方法: ProtoGCN

ProtoGCN 的架构旨在强制网络关注微妙的细节。它通过三管齐下的方法来实现这一点:

  1. 运动拓扑增强 (Motion Topology Enhancement, MTE): 改进图结构以捕捉更丰富的关节关系。
  2. 原型重构网络 (Prototype Reconstruction Network, PRN): 论文的核心——将动作分解为可学习的原型。
  3. 类别特定对比学习 (Class-Specific Contrastive Learning, CSCL): 一种将特征空间中不同动作推开的训练策略。

让我们看看整体架构。

图 2. ProtoGCN 的整体架构。

如图 2 所示,流程从左到右。骨架序列进入主干网络。在特定层, MTE 模块优化拓扑结构。然后特征被传递给 PRN , PRN 访问原型的记忆库以重构高清晰度的特征表示 (\(\mathbf{Z}\)) 。最后,输出受到对比学习模块的约束。

1. 运动拓扑增强 (MTE)

任何 GCN 的质量都严重依赖于拓扑矩阵 \(\mathbf{A}\)——即告诉网络关节之间如何关联的地图。静态的人体骨架图 (手腕连接肘部) 是不够的,因为在动作过程中,手可能与脚相关联 (例如在走路时) 。

研究人员建议在标准拓扑的基础上增加两个新组件:

  • 样本内相关性 (\(\mathbf{A}_{intra}\)): 使用自注意力机制捕捉单个骨架序列内部的全局关系。
  • 样本间区分度 (\(\mathbf{A}_{inter}\)): 通过比较关节之间的成对区别来捕捉差异。

这些增强拓扑的数学公式为:

使用查询 (queries) 和键 (keys) 计算 A_intra 和 A_inter 的方程。

这里,\(H^Q\) 和 \(H^K\) 是从输入特征派生出的投影查询和键。系统计算内积以获得相关性,计算差值以获得区分度。

这些新拓扑被添加到标准自适应拓扑 \(\mathbf{A}_0\) 中。这给了我们一个新的、更丰富的 GCN 层更新规则:

包含 A_intra 和 A_inter 的增强 GCN 更新规则。

通过包含 \(\mathbf{A}_{inter}\),模型显式地计算关节之间的差异,这有助于过滤掉噪声并突出关键的运动部位。

2. 原型重构网络 (PRN)

这是论文最具创新性的贡献。直觉上,人类运动是由“原子”运动单元 (原型) 组成的。例如,“举起手臂”可能是“挥手”和“投掷”共享的一个原型。

PRN 创建了一个记忆模块 (Memory Module) , 这是一个包含 \(n_{pro}\) 个原型向量的可学习矩阵 \(\mathbf{W}_{memory}\)。

网络不是直接向前传递原始特征,而是尝试将当前动作描述为这些存储原型的加权组合。这是通过寻址机制 (Attention) 完成的。网络会问: “记忆库中的哪些原型最匹配我当前的输入?”

它从输入特征生成一个“查询 (query)”,并将其与记忆库进行比较,以生成响应权重 \(\mathbf{R}\):

计算响应权重 R 的 Softmax 方程。

一旦计算出权重 \(\mathbf{R}\),网络就通过从记忆库中提取相关原型来“组装”新的、增强的表示 \(\mathbf{Z}\)。

\[ \mathbf{Z} = \mathbf{R} \cdot \mathbf{W}_{memory} \]

这个过程是一个起过滤作用的瓶颈。通过强制特征表示由可用的原型构建,网络过滤掉了不相关的噪声 (抖动、相机移动) ,只保留记忆库中定义的核心运动模式。

3. 类别特定对比学习 (CSCL)

拥有记忆库很好,但我们如何确保原型实际上是有意义的?我们需要监督学习过程。

作者采用了对比学习 (Contrastive Learning) 。 目标很简单:

  • 拉近同一动作类别的样本 (例如,所有“写字”片段) 。
  • 推远不同类别的样本 (例如,“写字”与“打字”) 。

他们维护一个“类别记忆库”,存储每个动作类别的质心 (平均表示) 。这些类别质心 (记为 \(\mathbf{m}_k\)) 使用动量策略更新以确保稳定性:

类别质心的动量更新方程。

这里,\(\mathbf{f}_k\) 是当前样本的特征,\(\alpha\) 是动量系数。

使用的损失函数是 InfoNCE 的变体,称为类别特定对比损失 (\(\mathcal{L}_{CSC}\)) 。 它最大化样本与其正确类别质心之间的相似性,同时最小化与所有其他类别质心的相似性。

类别特定对比损失方程。

训练模型

最终模型是端到端训练的。总损失函数结合了标准交叉熵损失 (用于分类准确性) 和新的对比损失 (用于强制特征分离) 。

结合交叉熵和对比损失的总损失方程。

(其中 \(\mathcal{L}_{CE}\) 是如下所示的标准分类损失) :

交叉熵损失方程。

实验与结果

研究人员在四个主要基准上测试了 ProtoGCN: NTU RGB+D (60 & 120)Kinetics-SkeletonFineGYM 。 FineGYM 特别值得注意,因为它专注于体操项目,其中的动作差异非常微妙且具有技术性。

与最先进技术的比较

结果表明,ProtoGCN 始终优于现有方法。

表 1. 在 NTU 和 Kinetics 数据集上的性能比较。

在表 1 中,观察 NTU RGB+D 120 数据集 (这是一个巨大且困难的数据集) ,ProtoGCN 在 Cross-Subject 分割上达到了 90.9% 的准确率,击败了 FR-Head 和 GraphFormer 等强劲对手。

FineGYM 的结果 (见下表 2) 也许最能说明问题。该数据集要求区分细粒度的子动作。ProtoGCN 达到了 95.9% 的准确率,相比 PYSKL (94.3%) 有了显著提升。

表 2. 在 FineGYM 上的性能比较。

为什么它有效? (消融实验)

作者进行了消融实验,以证明性能的提升不仅仅是运气。他们系统地移除了模型的各个部分,观察会发生什么。

表 3. 各组件贡献的消融研究。

如表 3 所示:

  • 仅基线 (Baseline): 87.8%
  • 添加 MTE (拓扑增强): +0.3%
  • 添加 PRN (原型): +0.7% (这是最大的单一贡献者)。
  • 完整模型: 89.0%

这证实了原型重构网络是该架构中的核心支柱。

他们还分析了超参数的影响,例如对比损失的权重 (\(\lambda\)) 和记忆库中的原型数量 (\(n_{pro}\))。

图 3. 关于 lambda 和记忆容量的消融研究。

图 3 显示模型相对稳健,但当记忆大小约为 100 个原型时达到峰值。这表明大约 100 个“原子运动单元”足以重构这些数据集中人类动作的巨大复杂性。

可视化差异

为了真正理解其影响,我们可以查看每个类别的“准确率差异”。与基线相比,ProtoGCN 在哪些特定动作上改进最大?

图 5. 准确率差异高于 1% 的动作类别。

图 5 显示了改进最大的类别。注意这些动作的类型: “骑马跳 (saddle book,体操动作) ”、“数钱”、“剪纸”。这些都是涉及精细手部运动的物体操作动作——正是传统 GCN 经常失败的“相似”动作类型。

最后,让我们再看一次学习到的拓扑结构,看看网络实际上在“看”什么。

图 4. PYSKL 和 ProtoGCN 学习到的拓扑结构的可视化。

在图 4 中,我们看到了关节注意力的热力图。

  • 行 (a) 点头 (Nod Head): 与基线相比,ProtoGCN 在参与点头的特定关节上显示出更清晰、更深色的激活。
  • 行 (d) 踢 (Kick): 注意力强烈集中在腿部关节上。

ProtoGCN 列中较深的颜色表示更强的相关性。模型已成功学会忽略身体的静态部分,并强烈关注定义该动作的关节。

结论

ProtoGCN 代表了基于骨架的动作识别向前迈出的重要一步。通过摆脱简单的全局特征聚合,转而采用原型视角 , 模型学会了“看见”真正重要的细节。

运动拓扑增强 (寻找更好的关节关系) 和原型重构网络 (过滤噪声并从核心模式重构动作) 的结合,使得系统能够区分像写字和打字这样高度相似的动作。

对于该领域的学生和研究人员来说,ProtoGCN 阐释了一个强有力的概念: 有时,要理解整体,你必须首先完美地理解局部。通过实施基于记忆的重构约束,我们可以构建不仅准确,而且具有敏锐辨别力的 AI。

ProtoGCN 的代码已公开,鼓励大家进一步探索图神经网络中基于原型的学习。