2s-AGCN论文理解

《Two-Stream Adaptive Graph Convolutional Networks for Skeleton-Based Action Recognition》

与AS-GCN一样,这篇论文也是在ST-GCN的基础上进行了改进优化,同样是2019年发布在CVPR上的文章。这篇论文主要是提出了一个 双流自适应图卷积网络(2s-AGCN)。

顾名思义,可以看出论文的两个主要创新点:

  1. 双流。 骨架数据的二阶信息被显示表示,并使用双流框架与一阶信息相结合,从而显著提高识别性能
  2. 自适应性。提出了一种自适应图卷积网络,用于端到端的网络中国自适应地学习不同GCN层和骨架样本图地拓扑结构。

那这两个创新点是怎么来的呢?其实还是要回顾一下ST-GCN这篇论文(1条消息) ST-GCN论文分析_Eric加油学!的博客-CSDN博客,

它的整体公式,其实就是

2s-AGCN论文理解_第1张图片

 Wk是权重函数,Ak是邻接矩阵,Mk是注意力掩码,Kv是子集类别数

它刚发布的时候很惊艳,属于skeleton-based GCN的奠基石了,但是也是有缺点的。

2s-AGCN论文对于ST-GCN的图构造过程的缺点概括如下:

  1. ST-GCN中使用的骨骼图是试探性预定义的,仅显示人体物理结构
  2. GCN的结构是高层次的,其中不同的层包含多级语义信息,但ST-GCN中应用的图的拓扑是固定在所有层上的,缺乏对所有层包含的多层语义信息进行建模的灵活性和能力
  3. 对于不同动作类别的所有样本,一个固定的图结构可能不是最优的

其实,总结一下,它的主要缺点就是两个:

ST-GCN的注意力机制灵活性不够,掩码Mk是与邻接矩阵直接相乘,这里说的相乘是按元素相乘,而不是矩阵相乘。这就造成了一个现象就是,如果邻接矩阵Ak里面的部分元素为0,那无论Mk对应元素是什么值,它的结果最后都是0.

换句话说,也就是没法创造出不存在的连接。举个例子,对于“行走”这个动作,手和脚的联系是比较大的(左脚右手,右脚左手这样摆动嘛),但是根据骨架图的构建,手和腿之间没有直接相连,所以它们之间的依赖关系就很难利用,导致效果不好。

第二个缺点,就是没有利用到骨骼数据的第二特征,第一特征是关节坐标,第二特征是骨骼的长度和方向。骨骼的长度和方向其实也包含了丰富的行为信息的。

(ST-GCN中附加道每个顶点的特征向量只包含关节的二维或者三维坐标,也就是所说的骨架数据的一阶信息,但是代表两个关节之间骨骼特征的二阶信息没有被利用)

对于这两个主要的缺点,这篇2s-AGCN对其进行改进,便诞生了。

首先,对于第一个缺点,2s-AGCN提出了自适应图卷积的主要公式如下

2s-AGCN论文理解_第2张图片

其实相比于ST-GCN而言,它就是对其邻接矩阵进行了改进,分为了三部分之和

第一部分 Ak 是和公式2中的邻接矩阵相同 ,原始的标准 N * N邻接矩阵,代表了人体的物理结构

第二部分 Bk 也是一个N * N的邻接矩阵,但有所区别的是,Bk是一个可训练权重,能与其他参数一起被参数化和优化,而且没有对其进行如归一化等任何的约束条件。换句话说,Bk完全是从数据学习过来的参数。这就说明,它不仅仅可以表示两个节点间有无联系,还可以表示它们联系的强弱。

到这里,会发现这个Bk是不是和ST-GCN中的掩码Mk没什么差别呀。所以这就是改进之处,在于其融合方式,ST-GCN是采用相乘的,也就是Ak与Mk按元素相乘,但2s-AGCN是采用相加,Ak与Bk相加。既然是相加,那是不是就可以产生原本Ak中所不存在的联系。这一点就很妙  (在DGNN这篇论文中,又对这一步做了更进一步的优化)

第三部分 Ck。是一个依赖数据图,为每个样本生成一个唯一的图。用的是高斯嵌入函数,用来捕捉关节之间的相似性。其实也有点和Bk类似,就是确定两点是否有连接和其强弱。

 它的源码我还没有看过,因为可能有的论文一些创新点,在paper中一笔带过或者看的不是很明白,在源码中就体现的很详细,能够理解清楚;有的论文可能创新点讲的很细致很清楚,但在源码中的体现就很细小。(所以,可以结合着其他博客的源码分析来理解这一部分)

那针对于第二个缺点,也就是我们接下来去分析的双流中的另一个分支,输入的数据是骨骼的长度与方向。长度和方向,听上去似乎比关节坐标复杂很多,但其实就是将关节的长度和方向表示为从源关节指向目标关节的向量。首先,找一个重心(比如就是胸腔部分的中心点),因为每个骨骼都是连接了两个关节的,靠近重心的关节看作源关节,远离的看作目标关节,根据其坐标,求出它们的向量。向量的长度就是骨骼的长度,向量的方向就是骨骼的方向,其实也挺好理解的。

这样子的话,另一个分支的输入数据就清楚了,而一个骨骼是需要两个关节组成的,且人体的骨骼图不是环状图,所以关节数是会比骨骼数多1的。这样子就需要添加一个空关节,值为0,使两者数量相等,网络也能够相同,便于双流网络的实现。

双流框架如下图所示

2s-AGCN论文理解_第3张图片

所以从大体上来说,这篇论文就是针对于ST-GCN的两个缺点,提出了相应的改进的创新点。总结就是用相加的方法取代相乘的注意力机制,另外利用了骨骼的长度与方向,充分利用了信息,提高识别精度。

(可以再看一看DGNN这篇论文,又是在2s-AGCN上做了更进一步的改进,优化的更好)

你可能感兴趣的:(action,recognition,深度学习,分类)