全面详解!图卷积在动作识别方向的应用

本文结合现有的文献和方法以及作者自己的实践理解,详细阐述了图卷积在基于骨架的动作识别方向的应用,内容翔实,值得一读。

文章的脉络为:

1. 问题简述

2. 基本概念介绍

3. 方法和思路分析

4. 文献解读

    4.1 时空特征的提取

    4.2 更全面的空间 特征抽取 策略

    4.3 数据增强

    4.4 综合方法

由于篇幅较长,将分为上下进行发布。

问题简述

人体动作识别是近年来 CV 领域的热门研究方向,其对 人机交互 、智能监控等应用具有重要意义。骨架动作识别属于动作识别的一个分支,旨在识别由骨架随时间变化构成的时间序列所代表的动作类型,即每个样本由连续的骨架帧构成,维度是 ( T,V,C), 表示时间, V表示关节, C 表示空间位置( XYXYZ),模型需要给出样本所属动作类别,因此属于多分类任务。其另一个分支是 RGB 视频动作识别

该任务常用的数据集是 NTU RGB+D 数据集,以及Skeleton-Kinetics(用 openpose 在Kinetics-400视频数据集中得到 3D 骨架)数据集。

基本概念介绍

本文主要介绍近两年来基于图卷积的骨架动作识别相关工作,图卷积的标准公式为:

该公式的严密推导过程是从图的 傅里叶变换 以及谱域分析开始的,不过可以从空域来简单理解,即邻接矩阵 A 乘特征矩阵 H可以聚合( sum, mean, max 等)一阶邻域特征,自环邻接 I 可以将聚合的邻居特征与当前节点特征合并,最后通过 权重 矩阵 完成通道的变换。矩阵 是度矩阵,用于对自环邻接矩阵 (A+I) 进行对称 规范化 ,此外一些论文也使用随机游走 规范化

图卷积的核心思想是建立图中不同节点之间的信息交流,从而学习图中每个节点的嵌入特征表示,在只考虑一阶邻域的条件下,随着网络层数加深,每个节点的 感受野 都会越来越大,最终覆盖全图,实现信息的完全交互。

对于 图分类 任务,在最后一层图卷积后,通常会经过一层 readout 层,得到整个图的表示,然后用这个表示来进行分类。对于骨架动作识别任务,每个样本都由图序列构成,因此需要在时间和空间维度同时进行 readout,通常是 pooling。

方法和思路分析

笔者认为该任务可以从三个领域借鉴方法:

1. 骨架通常由关节(joint)和骨骼(bone)相互连接表示,具有天然的图结构,因此可以借助 GNN 强大的空间 特征抽取 能力,来学习动作的潜在表示。事实上从 18 年开始,绝大部分骨架动作识别相关工作都是基于 图卷积网络 的。

2. 骨架序列属于时间序列,因此可以利用时间序列建模的相关方法来获取时间特征,例如 GRU、LSTM、3D 卷积等。

3. 骨架动作识别与 视频动作识别 都需要通过模型来提取动作的潜在特征,特别是时空特征的提取,因此可以相互借鉴方法。

此外,也有学者提出了其他的方法,例如可以将骨架序列转化为 RGB 图片,这样该问题就转化为 图像分类 问题(18 年之前的主流方法),也有基于 KNN 和贝叶斯的相关方法,总之解决问题的思路方法是多元化的,不局限于某一特定领域。在笔者阅读相关文献时,总结出了一些常见的改进(涨分)思路:

数据增强:原始骨架数据反映的骨架位置信息,如果对相邻两帧求差值,便可以得到骨架的一阶动态信息,对相邻关节求差值亦可以得到骨骼动态信息。理论上模型也能学习到这些信息,但提前计算出来并作为输入,可以在一定程度上提升 准确率

类邻接矩阵策略:GCN 中使用的邻接矩阵只包含一阶邻域,每个节点的 感受野 都非常有限,只有达到足够深度,网络层才能学习到远端关节之间的语义信息。此外,传统的邻接矩阵元素只有 1 两种值,在多数情况下很难反应关节间的相互关系。因此,设计一种不限于一阶邻域和整数值的邻接矩阵,是许多工作的探究点。对于骨架动作识别任务,主要建立非骨骼连接的关节之间的联系,例如手腕和脚踝。

注意力机制 Self-attention 及其相关变体在最近几年很火,例如由 何恺明 团队提出的 non-local 模块,在视频行为识别、 目标检测 等任务上都取得了不错的效果。对动作识别而言,每个动作的信息往往集中在某一个或几个关节,而且肢节末端的关节由于运动更频繁,幅度更大,往往具有更多的关键信息,因此空间注意力是值得探究的点。

图结构拓展:通常在构建图时,只将关节作为图的节点,然而骨骼(bones)与关节具有密不可分的关系,虽然视觉上骨骼通常是长条形的,但仍然可以抽象为一个点参与图卷积。这种做法可以显著提升图的分辨率以及对空间信息的表达能力。

局部划分(part-based)方法:同一肢节或同一个区域内的关节之间运动相似度会更高,按这个规律可以将骨架分为多个区域(part),在区域内和区域间定义不同的信息传播方式,可以有效的提取局部和全局特征。这种方法称为part-based method。

文献解读

因此由于水平有限,不能写得通俗易懂,可能会造成一些内容理解起来困难,因此建议结合原文阅读,还请谅解。此外,在解读文献时,陈述顺序和原文的顺序会有一些出入,这是因为不同文献侧重点不同,我会尽量按照我认为的合理顺序来分析。

此外,我会根据个人理解,从一些简单,通俗易懂的工作开始介绍,然后再介绍相对复杂的工作,这样有助于大家理清该领域的研究思路和方向。

时空特征的提取

图结构序列与视频一样,都兼具时间和空间特征,因此如何在 GCN 的基础上,设计对时空特征的抽取方法,是构造网络时必须考虑的问题。

01

DPRL: Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition(CVPR,2018)

http://openaccess.thecvf.com/content_cvpr_2018/CameraReady/1736.pdf

通过 强化学习 帧蒸馏方法(frame distillation)来选择最具代表性的帧,然后再通过 图卷积网络 抽取空间信息。前者是时间上的类注意力方法,后者则是空间上的 特征抽取 方法,整体网络结构如下:

网络结构

深度渐进式强化学习 (DPRL)

帧蒸馏网络对应中的 FDNet。样本中不同帧所含信息不同,且许多相邻帧往往具有大量的冗余信息,该工作通过 强化学习 蒸馏方法从原始帧序列中挑选最具代表力,可识别力的帧参与图卷积,使网络能得到更多的有用信息,而丢弃哪些混淆度强的无用信息。具体方法在文献中有详细介绍。

基于 强化学习 的帧蒸馏网络

类邻接矩阵策略

这篇文章是典型的类邻接矩阵策略。通过手工构建的非骨骼连接(下图虚线)来强化节点之间的信息交流,提高节点的 感受野 对于某些动作而言,其主要运动关节在原始骨架中并不是直接相连的,例如拍手动作,这就意味着在1邻域的情况下,需要经过多次卷积两手之间才会有互相得到对方的信息,如果让他们直接相连,可以让信息在更浅的网络层得到交互,更深的网络学习到的特征信息也更加稳定准确。

人工构建的非骨骼连接

具体地,对于固有骨骼连接,在邻接矩阵中用一个可学习 参数 α 来代表连接 权重 ,对非固有邻接,用可学习 参数 β 来代表连接 权重

此外,在进行图卷积时,由于输入是图序列,因此会对每一帧单独进行图卷积,然后在时间维度上进行 concate,从而得到整个图序列的 feature map 。

实验结果

在 NTU 数据上的实验结果,左右两列分别是 cross subject 和 cross view:

总结

该工作提出的帧蒸馏网络在思想上与 注意力机制 一致,即挑选出有意义,感兴趣的部分,而空间上的非物理连接则能有效的提高特征聚合速度,此外自学习的邻接矩阵 参数 能让重要关节得到更多的关注。

02

ST-GCN: Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition(AAAI, 2018)

https://arxiv.org/pdf/1801.07455.pdf

一篇非常具有代表性的文章,其核心思想是通过空域上的图卷积和时域上的常规卷积,来聚合时间和空间特征。

时空图卷积

借鉴了 视频动作识别 中对 3D 卷积分解为 (2+1)D 的思想,通过空间上的图卷积来提取空间信息,通过前后相邻帧的常规卷积来提取时间信息,通过二者的串联叠加来逐步提取时空信息。这么做相当于将每个节点的 感受野 扩大到的时空范围。

时空图卷积示意图

假设 feature map 维度是 (C, T, V)每个 block 由两部分组成:

1.对每一帧的图卷积:

2. 在 维度进行的常规卷积,卷积核大小是 (τ,1)

此外图卷积和整个 block 都包含 residual 连接。

邻域划分策略

节点邻域是节点的邻居节点的集合,体现在邻接矩阵中。标准 GCN 对所有节点使用同一个 权重 矩阵,但人体运动过程中,存在关节距离重心越远,运动幅度越大的规律,即包含的信息越多,因此本文提出将邻域分为三个部分:自身,近重心,远重心,如下图中的(d):

三种不同的邻域划分策略

划分过后对每个节点而言,其邻域会分为三个部分,因此图的邻接矩阵就分为了三个子邻接矩阵,每个矩阵单独享有一个卷积 权重 ,分别进行图卷积,最后通过加法叠加结果。这样划分会导致 参数 数量增加(扩增 3 倍),但网络对空间特征细节的刻画能力也更加强。

邻接矩阵自学习策略

通过为邻接矩阵赋予一个等大小的 权重 矩阵,可以让网络自动学习边与边之间的连接 权重

M 表示待学习的 权重 矩阵(全 1 初始化), Aj 表示第 j 个邻域对应的邻接矩阵,通过二者的 hardmard 乘积得到最终的邻接矩阵。这种做法可以在一定程度上提高对已有物理连接的刻画能力,但不能使 A 中的 0 值变为非 0 值,即不能在关节间建立非物理连接。

提出新数据集

本文通过 openpose 从视频中提取 2D 骨架序列,再将置信度作为 z 轴,从而得到 3D 骨架序列,由此从Kinetics-400视频行为数据集中得到了Kinetics-skeleton 骨架行为数据集。

实验结果

在 NTU 数据集上的实验结果:

在 Kinetics-skeleton 数据集上的实验结果:

总结

本文通过线性 堆叠 的 GCN 和 TCN 来间接扩大每个节点的 感受野 ,非常有助于时空信息的提取。对邻域的经验性划分虽然会增加 参数 数量,但也能提高网络对不同关节特征的刻画能力。此外,自学习的 mask 参数 能让关节连接 权重 更加平滑,但相较于 DPRL,本文没有建立非相邻关节之间的直接连接,因此远端关节之间的信息交互会更困难。而对于 DPRL,其使用的是人工定义的非骨骼连接,因此对空间信息的刻画能力非常有限。

更全面的空间 特征抽取 策略

虽然骨架代表了物理上真实存在的关节连接,但在骨架的基础上建立更多的非物理连接,甚至是关节的强连通图,能提高每个节点的 感受野 ,从而让网络在浅层就能学习到更多的有用信息。

01

HCN: Co-occurrence Feature Learning from Skeleton Data for Action Recognition and Detection with Hierarchical Aggregation

https://arxiv.org/pdf/1804.06055.pdf

这篇文章提出的方法在 GCN 相关工作出现之前效果最佳,这里简要介绍。

HCN网络结构示意图

这里输入 Input 的大小是  T*V*CT 是帧长度, V是节点数量, C 是输入通道。

开始的两层卷积是常规的通道卷积,然后将 VC 维度对调,这样接下来的卷积就会将 V作为通道处理,而卷积对通道的操作是全连接,因此任意两个节点都会进行加权求和。这种做法体现在图上,相当于建立任意两个节点之间的可学习 权重 连接,将图当成强连通图对待。因此该方法虽然没有直接使用图卷积,却仍然能取得不错的效果。

实验结果

NTU 数据集:

02

2S-AGCN: Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition(CVPR, 2019)

https://arxiv.org/pdf/1805.07694.pdf

本文在 ST-GCN 的基础上,提出了更加合理的邻接矩阵策略,不仅包含自学习的邻接矩阵,还通过 self-attention 机制为每个样本计算单独的邻接矩阵,大大增强了网络对空间特征的抽取能力。

数据增强

即将 bones 流作为独立数据流,独立于 joint 流进行训练。预测时结合两个网络的预测值,得到最终预测结果:

适应性邻接矩阵策略

这里的 k 表示三种不同的领域,即 ST-GCN 中的 spatial 邻域划分策略。邻接矩阵由三部分构成:

A k 是基础邻接矩阵,值只有 01,只包含关节间原有的直接物理连接。

B k 权重 邻接矩阵,初始化为 0,由网络自动学习。

C k 是 attention 邻接矩阵,计算方式为embedded 高斯函数:



T 表示转置。这部分主要借鉴了 “non-local neural network” 和 “attention is all you need” 中提出的self-attention 方法,但不同于 何恺明 的 non-local网络,这里是用关节的轨迹来计算两个关节之间的attention 值,时间维度被合并到了 C 中,这么做可以降低计算量和 参数 量,防止 过拟合

三个邻接矩阵的整体计算过程可以用类似于 non-local 网络中的图例来表示:

实验结果

在 NTU cross view上的 Ablation 实验:

个人认为在 cross subject 条件下对比会比较明显。NTU 数据集:

Kinetics-Skeleton 数据集:

03

DGNN:Skeleton-Based Action Recognition with Directed Graph Neural Networks

https://url.cn/5x6EUs3

在 ST-GCN 和 2S-AGCN 的基础上进一步提高了抽取空间特征时的细粒度。

有向图信息传播

在 ST-GCN 中提出的邻域划分策略,实际上可以概括为不同的信息传播方向区别对待,信息从末端关节流向中心关节和从中心关节流向末端关节应该区别对待。因此本文用有向图来处理不同的信息方向:

此外在,2S-AGCN 中 bones 流和 joints 流相互独立,然而二者实际上应该具有更加紧密的联系,因此本文将 Bones 也作为一种节点参与到信息流传播中,这样可以提高空间特征的细粒度。这与 Sym-GNN 中的 AGC 部分有一定的相似之处。

结合以上两点,可以用关联矩阵(incidence matrix)来表示节点和边之间的连接关系,关联矩阵规模是 (Nv , Ne),即节点数和边数。关联矩阵中 1 表示节点是边的源节点, -1 表示目标节点。进一步地可以将源节点关联矩阵和目标节点关联矩阵分开:

在进行信息传播时,先分别以节点和边为中心聚合特征,然后再更新节点和边的值:

g 表示聚合函数,通过关联矩阵图卷积进行聚合, 表示更新函数,这里是 1*1 卷积(即 FC 层)。假设某一层输入通道是 Cin,输出通道数是 Cout,则 1*1 卷积的卷积核大小为 3*Cin*Cout,要比标准图卷积中 Cin*Cout 的卷积核大三倍。因此 参数 数量相对来讲要多很多。

数据增强

本文将 motion 流作为另一个独立训练的数据流,bone 和 joints 计算 motion 值的方法相同,即计算两帧差值。

实验结果

NTU 数据集:

Kinetics-Skeleton 数据集:

03

PBGCN: Part-based Graph Convolutional Network for Action Recognition(BMVC, 2019

典型的 part-based 方法,将人体骨架分为多个子图,定义了子图内部和子图之间的信息传播方式,这样便能更好的抽取局部关节信息,同时加快信息传播速度。

数据增强

何(geometric)特征与动力学(kinematic)特征

这里的几何信息就是骨骼特征(包含非骨骼连接),即在空间上计算相邻关节坐标差值,动力学特征就是运动特征,通过计算相邻帧对应关节的差值得到。

基于局部划分的图卷积(PBGC)

首先将人体骨架图分为多个子图:

并且保证相邻两个子图间至少有一个公共关节。然后对每个节点,首先在其所在的子图内执行图卷积,再执行子图间的信息传播:

其中(5)表示在分图p中的点vi的卷积结果,Nkp是点vi在子图p中的邻接节点集合,Wp表示点子图p的 权重 矩阵(不与其他子图共享),(6)表示点vi与相邻子图的邻接节点之间的信息聚合。其中聚合函数定义如下:

即加权平均。因此,每个点先在其所属子图内的邻域进行图卷积,再与相邻子图的邻接节点进行信息聚合。

由于不同子图之间不共享 权重 ,因此子图划分策略就异常重要。本文提出了多种不同的划分策略,可以按上下不同肢体划分,可以按左右划分,其中效果最好的是四部划分:

这是因为人体骨架左右对称,左手和右手往往具有非常相似的行为,适合共享 权重 ,而不同类型的肢体往往具有不同的运动特征,因此适合划分到不同子图。

时空图卷积

这部分与ST-GCN中的时空图卷积比较相似。

公式15表示时域卷积,将每个关节与该关节前后τ帧内的值做加权求和。

04

2s-SDGCN Spatial Residual Layer and Dense Connection Block Enhanced Spatial Temporal Graph Convolutional Network for Skeleton-Based Action Recognition(ICCV 2019,workshop)

本文方法相对较简单,即认为空间信息重要性更强,因此在残差连接中也进行图卷积:

上方绿色部分是本文使用的残差连接,而ST-GCN是用的残差连接只有简单的通道变换,没有邻接矩阵参与运算。

用公式表示如下:

此外,还添加了dense连接(DCB):

将这两种方法结合到一起,再嵌入到其他方法中。

05

STGR: Spatio-temporal graph routing for skeleton-based action recognition(AAAI, 2019)

本文从时间和空间的角度设计了邻接矩阵计算方法,以计算节点之间的时间和空间关系。虽然设计了较为复杂的邻接矩阵策略,但效果并不如2S-AGCN。

空间图路由子网络

首先根据一种无 参数 图划分策略,将每一帧的原始图划分为K个子图。将每个子图都当成强连通图,这样就能得到空间图序列:

为1时,表示关节i与j在时刻t是相连的,为0时表示不相连,是否相连是根据子图划分情况来决定的,而任意两个子图的节点之间都不会相连(完全隔离)。

得到了空间连接图序列后,就要从所有图中选出最具信息的一个,首先用7*7的卷积来聚集局部特征,然后再全局取平均(GAP):

这样就将每一时刻的图都用一个标量值来表示:

这样 就包含了图的所有信息,并且是一个序列。使用两层全连接层来对m进行进一步加权:

其中:

得到的μ也是一个长为T的 权重 向量,将T作为权值,回代到原图G中,并在时间范围做平均:

整个这一步,实际上就是对每个时刻的图做了一次加权平均。

时间路由子网络

首先将输入序列用每个关节的时序轨迹来表示,这样就得到了N个独立的关节轨迹。接着用一个LSTM来学习每个关节轨迹的浅层表示:

将LSTM最后一个时间步的隐状态作为该关节轨迹的最终表示。(这里说LSTM在不同关节轨迹间 参数 不共享)得到关节特征经过编码后的特征序列:

接着通过FC层转换和向量点乘(类似于embedded高斯函数)来计算两个关节之间的联系:

最终学习到关节之间的时域联系。

时空特征融合

网络结构示意图

通过concate的方法融合学习到的图,然后进行图卷积。

关节连接可视化

图(a)是关节的原始关节骨骼连接,图(b)是空间图路由学习到的关节连接,图(c)是时间图路由学习到的连接。

学习到了时间和空间图分别对应各自的邻接矩阵,在进行图卷积时通过加法进行特征融合:

其中 。这个公式和ST-GCN很相似,只不过ST-GCN中只有三个不同的空间图,没有时间图。因此本文的工作实际上就是在ST-GCN的基础上,增加了两个额外的邻接矩阵策略,其他地方没有明显改动。优化时不仅使用分类 损失函数 ,还使用图稀疏 损失函数 ,以确保图的稀疏性:



06

AGC-LSTM: An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition(CVPR,2019)

传统的 LSTM 每一时间步的输入都是一维向量, convLSTM 将卷积操作作为元计算方式,从而让LSTM 可以接受图片时间序列作为输入,进一步地,本文将 GCN 作为 LSTM 的元计算方式,从而可以让 LSTM 可以接受图时间序列作为输入。

数据增强

通过求相邻帧 插值 可以得到motion信息,再通过FC和将motion信息与原始数据结合,然后通过LSTM进行初步的通道扩张:

得到的Eti具有512通道数,作为LSTM网络的输入。此外,本文还将part流作为另一个数据流:

通过双流融合来提升效果。



注意力增强型图卷积LSTM网络

和传统LSTM一样都具有三个门结构,输入门, 遗忘门 ,输出门。但是这些门是通过图卷积操作来计算的。单元结构和计算公式如下:

空间注意力机制

对每个时步而言,将其所有节点对应的输出值加权求和:

然后再添加res连接:

计算得到一个attention系数 αt,注意 αt长度是一个长度为 N(节点数)的向量,最终该时间步节点  i 的输出值为:

在最后一层,将不同节点的输出聚合起来,就得到了该时间步的最终输出值:

得到的 (global)和 (local)用于最终的动作类别预测。



时序平均池化

在AGC-LSTM层之间进行时间维度上的 池化 ,可以逐步提高AGC-LSTM层的时间 感受野 ,同时也能大幅度降低计算量。



损失函数

不仅对 输出进行监督,还额外对他们的 attention 值进行监督,第三项保证对不同的关节赋予的相同的注意力,第四项保证关注的关节数量是有限的。

数据增强

笔者认为只要是多输入网络,不局限于单纯的关节位置,就可以看成是一种数据增强方法。从前面的一些文章中可以发现数据增强是广泛使用的策略,这里介绍一些以数据增强为核心的文章。

01

VA-fusion: View Adaptive Neural Networks for High Performance Skeleton-based Human Action Recognition(TPAMI, 2018)

光学估计和穿戴式传感器是目前常用的两种三维运动数据采集方法。而光学估计会受到机位和视角的影响,即对同一段动作,在不同的机位和角度下,估计得到的3D骨骼数据是有差异的:

本文提出了一种视角自动学习网络来解决这个问题,即让网络自行学习最佳的摄像机视角,即对骨架进行一定的旋转和平移, 参数 为[ αtβtγtdt],其中前三个分别对应是三个轴的旋转 参数 dt表示位移,因此变换公式为:

对每一帧,都有一组对应的视角变换 参数

可以分别在RNN和CNN上学习视角变换,不同的网络对应不同的变换方法:

其中LSTM作为主网络时,通过LSTM层学习四个 参数 (对每一帧)在CNN作为主网络时,先将骨架 映射 为伪RGB图,然后通过以下公式进行坐标变换:

其中 R 是旋转矩阵,由旋转 参数 得到。

本文还提出了随机旋转骨架的数据增强方法,可以在一定程度上降低 过拟合 。此外,将坐标原点移动到每个动