Spatio-Temporal Tuples Transformer for Skeleton-Based Action Recognition

Spatio-Temporal Tuples Transformer for Skeleton-Based Action Recognition

本篇文章针对基于骨架的行为识别进行了研究,提出了一种时空元组transformer。该方法能够在连续帧中建立不同关节的关系,有比较强的区分相似动作的能力,达到了sota。

帧之间不同关节的相关性对行为识别非常有用,在一个动作中,相邻帧之间的不同身体部位常常是一起移动的(例如"跳远"中的手臂和腿)。Kaiming He等曾提出一个时空transformer结构,该结构将时空的骨架信息作为一个统一的序列作为输入,来建立关节之间的相关关系。这个方法有不合适之处,主要在于空间和时间的关节的语义信息是不一致的。考虑到这一点,作者设计了一个新的结合时间和空间的transformer结构。

模型结构:

  1. Spatio-Temporal Tuples Encoding模块
    假设原始数据序列的大小为:X ∈ R{C_0×T_0×V_0},其中C_0是关节点的特征大小,T_0是帧数,V_0是每一帧的关节数;首先将该序列的特征维度进行扩展,通过一个卷积结构将通道数C_0扩展到C_1;
    然后将序列按照帧的维度划分为T块,每一块包含n个连续帧,也就是X=[x_0, x_1, …x_T], 其中x_i ∈ R{C_1×n×V_0}X ∈ R{C_1×T×n×V_0};通过形状的转换将n个连续帧内的关节点整合为一个序列,得到X ∈ R{C_1×T×V};将该序列输入一个一层的卷积结构,得到最终的encoding结果X ∈ R{C×T×V}
  2. Positional Encoding
    关节点的位置在行为识别模型中也有重要作用,因此这里加入了位置编码。这里是通过sin和cos的编码方式实现的。
  3. Spatio-Temporal Tuples Transformer
    时空元组transformer由两部分组成,分别是时空元组注意力模块(STTA)和帧特征组合模块(IFFA)构成。
    STTA建立起一个时空元组内不同关节点之间的联系,IFFA建立起不同时空元组之间的联系。
    一个动作可以看作是由不同的子动作组成的,比如"跳远",包括"跑起来"、“起飞"和"着陆"这样的子动作。在该方法中,每个元组都包含一个子动作,STTA 能够对几个连续的 n 帧进行建模。如果构建起子动作(如"起跳”、“飞起"和"着陆”)的相关性,将有助于识别和区分相似动作,例如跳远和跳高。IFFA模块建立起子动作间的联系,通过采用 k2 × 1 核大小的卷积运算,实现时间维度的帧间特征聚合。
    Spatio-Temporal Tuples Transformer for Skeleton-Based Action Recognition_第1张图片

实验:

  1. 数据集
    1. NTU RGB+D:这是一个包含了60类,56000个样本的数据集;
    2. NTU RGB+D 120:这是一个包含了120类,114480个样本的数据集;
  2. 消融实验
    1. 首先作者研究了位置编码和IFFA模块的影响。实验证明,没有位置编码的STTFormer模型的精度低于完整模型的精度,表明位置编码可以显着提高性能。主要原因是,不同的时空,关节在一个动作中扮演着不同的角色,合理利用这个序列信息会有效提高效果。

    2. 其次作者验证了IFFA 模块的效果。可以发现,删除IFFA模块会严重降低性能。主要是因为该模块可以有效地对子动作之间的关系进行建模,这有利于区分相似的动作,从而提高模型的性能。
      Spatio-Temporal Tuples Transformer for Skeleton-Based Action Recognition_第2张图片

    3. 为了验证STTA模块的有效性,作者构建了一组比较实验。每个元组中包含的连续帧数 n 分别设置为 1 和 6。n = 1表示仅对帧内关节之间的关系进行建模;n = 6时,表示同时对6个连续帧中不同关节之间的关系进行建模。实验结果显示,STTA可以显著提高模型的性能,该模块不仅可以对一个帧中关节之间的关系进行建模,还可以在几个连续的帧中捕获不同关节之间的关系,从而提高性能。Spatio-Temporal Tuples Transformer for Skeleton-Based Action Recognition_第3张图片

    4. 和其他方法的对比Spatio-Temporal Tuples Transformer for Skeleton-Based Action Recognition_第4张图片

总结:
该文章基于一种比较直观的理解,将序列按照时间维度分组,将得到的子序列看作子动作序列,通过transformer在子动作序列内学习关节点之间的联系,一方面不仅建立了一帧内不同关节点之间的联系,另一方面又建立了相邻帧内关节点之间的联系。

论文中对比了不同分组帧数(1和6)得到的模型效果,来验证分组的有效果。针对实际的问题,分组帧数的选取可能会影响模型效果。另外关于transformer部分的结构和分类层部分的结构,论文中没有给出详细的介绍。

你可能感兴趣的:(深度学习,transformer,深度学习,人工智能)