Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

上周看了一下Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition(2020CVPR)这篇paper,然后分享一下我对于这篇论文的一些理解吧,当然还有的部分没有看太明白,希望以后大佬可以写一个对于该篇paper的解读。把论文链接和code链接都丢下面。

https://arxiv.org/pdf/2003.14111.pdf​arxiv.org

 

https://github.com/kenziyuliu/ms-g3d​github.comDisentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

 

1、Motivation

首先作者认为对于从骨架图中进行鲁棒的动作识别,理想的算法应该超越局部关节连接性,提取多尺度结构特征长期依赖关系,因为结构上分离的关节也具有很强的相关性。然而现在的方法都是使用A的k阶幂指数来获得k邻居,通过邻接矩阵A的高阶幂来扩大感受野。但是使用幂指数的方式会存在biased weighting problem,所谓的biased weighting problem指的就是当对一个节点求K阶邻居时候,相对于它的K阶邻居来说,距离该节点近的和度比较大的权重会比较高。在骨骼图上,这意味着一个高阶的多项式在从远处的关节获取信息方面只是勉强有效,因为聚集的特征将由来自局部身体部位的关节主导

鲁棒算法的另一个令人满意的特性是能够利用复杂的跨时空关节关系进行动作识别。目前的方法,使用 spatial-only and temporal-only交错的模式,如下图所示。目前比较常用的方法是在每一帧上使用GCN来提取空间信息,在时间上使用TCN或者RNN来进行提取时间信息。虽然这种因式分解(这篇论文中称目前使用的方法为因式分解的方式)的方式允许高效的长时间建模,但它阻碍了跨越时空的直接信息流,从而无法捕捉复杂的区域时空节点。

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

2、Disentangled Multi-Scale Aggregation

作者根据这两个方面提出了改进方案。首先提出了一种新的多尺度扩展方案,通过消除距离较近和较远的邻域之间的冗余依赖关系来解决有偏加权问题,从而在多尺度聚合下分离出它们的特征。

目前我们使用的邻接矩阵的k次幂来求k阶邻居的计算方式如下:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

我们以下面这个例子来进行观察,当我们以节点1分别来求1,2,3阶邻居时,我们会发现相对与k阶邻居来说,距离节点1较近的和度比较大的颜色更深(权重更大),这就是作者说的biased weighting problem。

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

颜色越深表示权重越大

用pytorch计算了一下该矩阵,如下:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

从左到右分别是1阶邻接矩阵,2阶邻接矩阵,3阶邻接矩阵

为了解决biased weighting problem,设置新的邻接矩阵

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

使用了递推的方式,首先设置好A1和A0

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

然后使用做差来求高阶的邻接矩阵

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

I指的是自连接矩阵,后面1那部分表示的意思是:将邻接矩阵k次幂得到的矩阵中元素大于1的元素全都变为1

我们可以观察这种方式求k阶邻居的效果如下:我们可以看到除了k阶邻居和节点本身外,其他节点的权重都为0

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

下面是使用pytorch用作者提出的公式计算得到结果:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

得到下面多尺度的计算公式:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

3、G3D: Unified Spatial-Temporal Modeling

而为了利用复杂的跨时空关节关系提出了一种新颖的统一时空图卷积模块G3D,该模块可以直接对跨时空关节依赖关系进行建模。

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

为了避免在计算过程中参数过大和提取的特征过于泛化,作者使用了大小为τ的滑动时间窗口,每个窗口有τ帧,这样每个滑动时间窗口得到的图这样表示:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

顶点集合:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

表示为τ帧顶点集合的并集

边通过新的邻接矩阵来进行表示:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

每个邻接矩阵是N×N的,每行每列都有τ个,所以是τN×τN

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

表示 _((i) ) 中每个节点连接到j帧的他自己和1-hop空间邻居。

就如同下面这个例子,红色的边就是通过新的邻接矩阵建立的新边:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

此时我们的模型是一个3D模型,这样我们的特征也需要变为3D的,

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

此时G3D的计算公式为:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

对于滑动时间窗口,窗口结构的是帧不需要是连续的,他有一个扩张率 d,类似于步长,就是每隔d帧取一帧。这样就会获得更大的扩展,以时间分辨率为代价带来更大的时间覆盖(更低的帧速率)。

将多尺度扩展方案与G3D结合,Multi-ScaleG3D的计算公式:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

4、Model Architecture

MS-G3D的整体架构如下:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

在这篇论文中,作者使用了3个STGC块,STGC块的结构如下:

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

分为2个分支,最右边的因式分解分支用来提取长时间的特征,而左侧的MS-G3D用于提取局部时空特征,虚线的用于表明可以使用不同d和τ的MS-G3D

在MS-TCN中其借鉴了GoogLeNet的Incepetion结构,用来减少参数。

 

此外,该方法也和其他方法一样使用了Adaptive GraphsJoint-Bone Two-Stream Fusion。

5、Experiments

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition

Disentangling and Unifying Graph Convolutions for Skeleton-Based Action Recognition