图卷积行为识别顶会文章解读及思路分析
脚本之家
你与百万开发者在一起
图卷积网络是近年来流行的一种在图上开展机器学习的神经网络模型,最早由Joan Bruna于14年提出[7]空域和谱域两种不同的图机器学习思路,工作[11]提出了空域图卷积思路,工作[9]在工作[7]的基础上进一步设计了空域图卷积网络以及相应的谱方法,工作[8]运用谱图卷积的思想对邻接矩阵实现了归一化,提出了一种将空域和谱域融合的 GCN模型,这也是目前使用最为广泛的模型。最近H.Ferenc在工作[10]中对图卷积提出了异议,也给学者们提供了新的研究方向。以上5篇文章是图卷积网络领域的标杆论文,如果要深入了解图卷积,建议全部阅读。
空域图卷积最早由工作[11]提出,其思想是将每个节点与其邻居节点的特征进行加权平均,然后传播到下一层,使用邻域来确定每个节点的加权平均范围(卷积范围),使用label策略来为参与卷积的节点分配权重,其层间传播公式为:
其中A是邻接矩阵,是图结构的一种常用数学表示,包含了邻居节点信息,通过矩阵乘法可以使得每个节点和其邻居节点特征进行聚合。W是权重矩阵,主要对边进行加权。这样的传播方法缺点是没有对邻接矩阵进行归一化,这使得A在传播过程中不断扩张(每次都乘矩阵A会导致特征值越来越大)。此外,由于A对角线元素为0,每个节点自身在进行卷积时不能将自己的特征计算在内。因此工作[8]提出了谱域图卷积的思想来解决这两个问题。
谱域图卷积的推导过程相对来讲要复杂很多,主要是借助于图的拉普拉斯矩阵和傅里叶变换来进行的,但是最后得到的层间传播公式并不复杂:
其中矩阵
公式(2)所描述的图卷积模型可以从很直观的角度理解。首先和单纯的空域图卷积(1)相比,对邻接矩阵做了自环操作(A+I),通过加单位矩阵的方法,使得中心节点自身的特征能参与卷积。然后通过矩阵
其中
谱域图卷积和空域图卷积是相辅相成的,空域图卷积提供了在图上开展机器学习的基本思想,谱域图卷积则是从图的拉普拉斯矩阵出发,推导出了和空域图卷积类似的卷积方法,并且解决了空域图卷积的两个问题。
公式(2)所描述的模型是目前使用最广泛的图卷积模型,由17年的工作[8]提出,因此从18年开始,许多行为识别领域的工作就开始围绕这种模型进行了。
行为识别是对包含有动作信息的数据进行分类,属于分类任务,通过时空特征来动作分类是该领域研究的主要思路。该领域研究按照输入数据形式主要分为三类:基于RGB图片或视频的行为识别,基于2D骨骼序列的动作识别,基于3D骨骼序列的动作识别。目前业界研究重点主要在第一和第三种数据,主要是这两种数据都有对应的大型数据集。基于RGB图片或视频的工作目前的主流方法是two-stream双流网络,一个流发掘空间特征,一个流发掘时间特征,而基于2D和3D骨骼序列的主流方法就是图卷积网络了。
骨骼序列就是将所有关节在每一时刻的空间位置层叠起来,排列成时间序列。由于人体骨骼结构可以用图结构来表示,顶点表示关节,边表示连接关节的肢节,因此可以用图卷积网络来发掘骨骼之间的空间联系。进一步的,如果我们能将图卷积操作拓展到时域上,就能同时发掘空间和时间特征。
[1] Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (AAAI, 2018)
1.时空域中的邻域定义
我们熟知的图卷积网络都是在空域进行的,这是因为邻域的通常在空域中定义。为了让发掘骨骼动作序列中的时间特征,本文首先将同一个关节与该关节在前后时刻的位置相连,得到一个时空连接图,这样就可以将序列转化为一张时空域中的三维图,然后在这个时空域上重新定义了邻域:
这里卷积中心点是
2.权重分配策略
首先介绍一下权重分配策略。GCN使用label策略来分配权重,首先按照一定的规则对邻域内的每个节点分配一个label:
然后根据每个节点的label为其分配一个权重:
其中
由于本文定义了时空域中的领域概念,因此就得重新定义相应的label策略:
和邻域策略基本相同,通过计算待判断节点与中心节点在时空图中的距离来分配label。此外,本文还设计了三种不同的规则来分配label:
图a:领域示意图
图b:第一种策略称为统一label划分,整个邻域内的节点包括中心节点共享一个label,因此这样的话权重矩阵实际上只有一个,在所有节点之间共享。
图c:第二种是基于距离的label划分,将节点的1邻域分为两个子集,即节点本身子集与邻节点子集,因此权重矩阵有两个。引入基于距离的划分使得我们可以分析骨架关键点之间的微分性质。
图d:空间构型划分。这种划分规则将节点的 1 邻域划分为 3 个子集,第一个子集为节点本身,第二个为空间位置上比本节点更靠近整个骨架重心的邻节点集合,第三个则为更远离重心的邻节点集合。建立这种划分规则在根据运动分析的研究中对向心运动与离心运动的定义。
3.单独的边权重
这是不同于一般GCN的一种学习思路,专门针对那些图结构不会发生变化的任务,非常重要的思路,只不过在本文中作者只是提了一下。
基于label的权重学习和分配策略让图中的所有节点都共享一个权重矩阵集合,使得图卷积网络能够在不同结构的图上训练和测试,然而在行为识别任务中,骨骼图的结构在同一个数据集中不会发生变化,对所有动作都是相同的,这使得为每个节点单独分配权重成为可能,更加细化的权重相对于共享权重而言,能精细的发掘每个关节对动作识别的贡献,从而取得更好的识别效果,当然,代价是参数数量的增加。那么如何在参数和性能之间做到平衡呢,这是一个永恒的话题,工作[6]为我们提供了一种不错的思路。
[6] Semantic Graph Convolutional Networks for 3D Human Pose Regression (ArXiv,2019)
这篇文章的主要是将图卷积用于姿态估计,所以,我们将重心放在该文设计的图卷积模型上。
在了解该文工作前,让我们先来回答前面提出的一个问题:为什么权重是矩阵的形式。
我把公式(3)抄过来方便查看:
我们假设
单边权重方案一
工作[1]中提到的单边权重,其实就是在共享权重的基础上再对每个节点分配一个标量值
那么
实际上就是对权重矩阵做了一个伸缩。这样网络每一层就需要额外再对每个节点学习一个单独的单边权重。我们假设网络有L层,每层有V个节点,那么总共多出来的(相对于传统的GCN)参数数量为:
L*V个。
单边权重方案二
也就是本文工作[6]所提出的方案,作者指出,方案一采用的标量单边权重过于简单,不能很好地刻画一些关节的特异性,因此在方案一的基础上将
这种方案多出来的参数数量为
单边权重方案三
这是最直观的一种方法,直接抛弃共享权重,权重在节点之间完全独立,每一层的每个节点都需要单独学习一个权重矩阵,那么总的权重矩阵数量为L*V,总的权重个数为:
我们假设传统的GCN的节点label有K类(通常K<=3),那么增加的参数数量为:
显然,在大部分情况下V>>K,增加的参数数量也是最多的,不过好在行为识别中使用的图卷积网络通常都比较浅,因此L不会很大。这种方案是目前我正在探究的一种方案,当然我不会直接使用,会尝试一些方法来降低参数数量。
邻接矩阵学习策略
不同于传统的GCN预先设置邻接矩阵,本文认为邻接矩阵也可以通过网络来自动学习,因此对邻接矩阵中的每个元素都设置了一个权重,因此在每一层,网络除了学习一般的权重矩阵,还需要学习一个邻接矩阵的权重矩阵。如何通过反向传播来同时完成对两个权重矩阵的学习和迭代更新呢?作者没有解释,不过通过一定的推导是可以实现的,篇幅有限,如果想了解,可以继续关注我的后续文章。
分图卷积策略
Part-based Graph Convolutional Network for Action Recognition. (BMVC.2019)
这篇文章首先借鉴了时空图卷积的思路[1],然后提出了一种较为复杂的图卷积思路:分图卷积。将人体骨骼图按照一定的先验知识划分为多个子图,在对每个节点及其邻域节点进行卷积时,分为两步:
首先将该节点与其他在同一个子图内的邻域节点进行卷积,也就是子图内的卷积:
这里把权重矩阵放在了特征矩阵前面,和公式(3)本质上无区别,对矩阵做一个转置就可以达到相同的效果。我们将子图内的卷积值称为节点的基本卷积值。
对于那些属于其他子图的邻域节点,先计算这些节点的基本卷积值,然后将基本卷积值与中心节点的基本卷积值用一个函数融合:
这样就能扩大子图边缘的节点的感受野,同时在一定程度上增加不同子图间信息传播的速度,也能强化同一个子图内的关节之间的联系。
这篇文章提供了多种分图策略。
总结
附录里面还给了一些其他的文章,不过大致思路都和上面介绍的三篇没有太大出入。总结一下,图卷积在行为识别领域的三个最主要的思路为:
1.如何设计权重分配策略,可以考虑不同的label策略,还可以考虑为每个节点单独学习独立权重。
2.如何设计邻接矩阵,可以是根据先验知识来调整邻接矩阵,也可以是让网络自己学习。
3.如何将图卷积扩展到时空域。
[1] Yan, S., Xiong, Y., & Lin, D. (2018). Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition. AAAI.
[2] Tang, Y., Tian, Y., Lu, J., & Li, P. (2018). Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition. CVPR.
[3] Thakkar, K. (2018). Part-based Graph Convolutional Network for Action Recognition. BMVC.
[4] Li, M., Chen, S., Chen, X., Zhang, Y., Wang, Y., Tian, Q., … Electric, M. (2019). Actional-Structural Graph Convolutional Networks for Skeleton-based Action Recognition. Ar.Xiv.
[5] Si, C., Chen, W., Wang, W., Wang, L., & Tan, T. (2019). An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognition. CVPR.
[6] Zhao, L. (n.d.).(2019). Semantic Graph Convolutional Networks for 3D Human Pose Regression. Ar.Xiv.
[7] Bruna, J., & Szlam, A. (2014). Spectral Networks and Deep Locally Connected Networks on Graphs. Ar.Xiv. #首次提出了空域和谱域两种不同的图卷积构建方式
[8] Kipf, T. N., & Welling, M. (2017). SEMI-SUPERVISED CLASSIFICATION WITH GRAPH CONVOLUTIONAL NETWORKS. ICLR. #在图上开展半监督学习,取得了里程碑式的效果
[9] Michaël Defferrard, Bresson, X., & Vandergheynst, P. (2016). Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering. NIPS.
[10] Jegelka, S. (2019). HOW POWERFUL ARE GRAPH NEURAL NETWORKS. ICLR. #分析图卷积的潜在缺点和限制
[11] Niepert, M., & Kutzkov, K. (2016). Learning Convolutional Neural Networks for Graphs. ICML.
本文作者:凯隐
声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。
- END -
●
返回 上一级 搜索“Java 女程序员 大数据 留言送书 运维 算法 Chrome 黑客 Python JavaScript 人工智能 女朋友 MySQL 书籍 等关键词获取相关文章推荐。