本文是港中文大学发表在AAAI2018的一篇工作,是GCN应用在基于骨架的动作识别的开山之作,后续工作有很多,比如今年的CVPR2019的《Actional-Structural Graph Convolutional Networks for Skeleton-based Action Recognition》和《Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition》都是在此基础上进行优化。
论文链接: https://arxiv.org/abs/1801.07455
官方源码(pytorch): https://github.com/yysijie/st-gcn
1.介绍
当前基于深度学习的动作识别领域主要是对于外观和光流进行建模,而在此之外容易想到的是通过人体骨架。动态骨架模态可以自然地表示为一系列人体关节位置的时间序列,以二维或三维坐标的形式表示,然后通过分析其运动模式,可以识别人类的行为。人体的骨骼和关节轨迹对光照变化和场景变化具有较强的鲁棒性,目前也有很多精度很高的姿态估计算法,从感觉上来说是一种非常不错的想法。
早期利用人体骨架进行动作识别的方法,仅仅是利用单个时间步长的关节坐标来形成特征向量,并对其进行时间分析,而这类方法的能力是有限的,因为它们没有显式地利用关节之间的空间关系,这是理解人类行为的关键。之后出现了一些考虑关节连接的方法,并得到了效果的提升,但大多数依赖于手工设计的规则来进行分析,难以推广。
此外人体骨架是以图的形式出现的,而不是类似图片那样的二维或者三维像素网格,考虑到最近非常热的图神经网络(GCN),很自然的想到利用GCN来建模。因此本文作者提出将图神经网络扩展到时空图模型,即Spatial-Temporal Graph Convolutional Networks(ST-GCN),如图1所示,该模型是建立在一系列骨架图之上的,其中每个节点对应于人体的一个关节。有两种类型的边,一种是符合关节自然连通性的空间边,另一种是跨越连续时间步长连接同一关节的时间边。并在此基础上构造了多个时空图卷积层,实现了信息在时空维度上的集成。
2.Spatial Temporal Graph ConvNet
2.1 Pipeline概况
首先我们来看整体的网络结构,对视频利用OpenPose等算法进行姿态估计,并构造骨架序列的时空图。之后用多层时空图卷积(ST-GCN),逐步在图上生成更高层次的特征图,最后用标准的Softmax分类器将其分类为相应的动作类别,如下图所示。
2.2 骨架图结构
骨架序列通常由每个人体关键点的二维或三维坐标表示,在此使用时空图 G = ( V , E ) G=(V,E) G=(V,E)来表示N个关节点与T帧的人体骨架序列中空间与时间的连接关系,具体来说在图中的点 V V V就是骨架序列中的所有关节点,对于Kinetics数据集使用OpenPose提取姿态就是18个关键点,对于NTURGB+D数据集就是25个关键点,而每一个关键点的特征向量由该点坐标和置信度组成。图中的边 E E E分空间和时间两种,分别是如图1中依据人体自然结构连接的蓝色连接边线 E S = { v t i v t j ∣ ( i , j ) ∈ H } E_S=\left\{ v_{ti}v_{tj}|(i,j)\in H \right\} ES={ vtivtj∣(i,j)∈H},其中 H H H表示人体关节自然连接的集合,与图1中同一个关节点在不同时间帧上的绿色连接边线 E F = { v t i v ( t + 1 ) j } E_F=\left\{ v_{ti}v_{(t+1)j}\right\} EF={ vtiv(t+1)j},因此 E F E_F EF表示边的时间轨迹。
2.3 时空图卷积神经网络
在深入研究完整的ST-GCN之前,首先来看单帧上的图卷积操作,在假设stride为1且有合适padding的条件下,给定kernel大小为 K ∗ K K*K K∗K的卷积算子和一个通道数为 c c c的输入特征图 f i n f_{in} fin,单通道在空间位置 x x x处的输出值可以表示为
其中采样函数 p p p用来列举位置 x x x的领域,权重函数 w w w用于计算和采样 c c c维通道输入特征向量的内积,这里采用的是可变性卷积中的公式形式。
将上式推广到输入特征图为空间图 V t V_t Vt的情况时,就定义了图的卷积运算。那么下一步就来重新定义采样函数 p p p以及权重函数 w w w。
1. 采样函数: 在图像中,采样函数是相对于中心位置 x x x的近邻像素,也就是围绕中心 x x x卷积核大小的一块区域。在图卷积中,可以类似的定义对于节点 v t i v_{ti} vti