Skeleton-Based Action Recognition with Directed Graph Neural Network
Skeleton-Based Action Recognition with Directed Graph Neural Network
摘要
因为骨架信息可以鲁棒地适应动态环境和复杂的背景,所以经常被广泛应用在动作识别任务上,现有的方法已经证实骨架中的关键点和骨头信息对动作识别任务非常有用。然而如何将两种类型的数据最大化地利用还没有被很好地解决。
作者将骨架数据表示成一个有向非循环图(Directed acyclic graph),该图基于自然人体的节点和骨骼的动力学依赖。
这个新颖的图结构用来提取节点、骨骼和他们之间的关联信息,然后基于提取到的特征进行预测。
另外,为了更好地适应动作识别任务,图的拓扑结构可以根据训练过程进行自适应地改变,这极大地提高了性能。
此外,利用骨架序列的运动信息与空间信息相结合,进一步提高了双流框架的性能。
算法在NTU-RGBD和Skeleton-Kinetics数据集上的性能远超流行算法。
一、引言
动作识别任务在很多方面都有应用,其中,人体骨架信息有很多优势,比如对尺度变化、背景干扰等具有很强的鲁棒性,而且骨架信息很容易通过硬件设备(kinetics)或者软件(openpose)获得。传统的基于骨架的动作识别通常手动设计特征来表示骨架,现有的基于深度学习的方法分为三种:RNN、CNN、GCN,其中连接点信息分别被表示成向量序列、伪图像、图。骨头信息,表征着人体骨头的方向和长度,它和关节点坐标信息是互补的,骨头和关节点是紧密相连的。(从人体骨骼自然结构说明了构造有向图的必要性)现有的基于图的方法通常把骨骼信息表示成一个无向图,并且用两个网络对骨头和关节点进行建模,这样不能将骨头和关节点之间的依赖关系完全探索出来。因此,作者以关节点为节点、骨头为边设计出了一个有向无环图,还设计了一个有向图卷积网络来对构造的图进行建模,这样提取到的特征不仅包含每个关节点和骨头信息,而且还有他们之间的依赖关系,促进了动作识别。另外一个问题是原始的骨架结构是手动设计的,不能根据动作识别任务进行优化,作者提出了一个自适应的图结构代替原始的固定的图结构,并且使用一个简单有效的方法一方面保证了训练过程的稳定性,另一方面有不失灵活,在性能上带来了显著提升。双流网络给基于RGB的动作识别带来了性能上的提升,作者也采用双流结构将空间流和时间流的结果融合来增强算法性能。
总结
- 据作者所知,他们是第一个用有向无环图来表示关节点和骨头信息以及他们之间的依赖关系
- 自适应的网络结构在训练过程中与模型参数共同训练和更新
- 双流结构
- 在NTU RGB+D和Kinects数据集上效果很好
二、相关工作
1. 基于骨架的动作识别
现有的方法主要分为三类:基于序列的方法、基于图像的方法、基于图的方法。基于序列的方法将骨架信息表示成有着设计好的遍历规则的骨架序列,然后用RNN进行动作识别;基于图像的方法通常把骨架信息表示成伪图像;基于图的方法用图来表示骨架信息,天然地保留了人体骨架信息。
2. 图网络
图结构是比图像和序列更一般化的数据结构,它不能直接用深度学习模块,比如CNN、RNN直接进行建模。用图网络结构来解决问题已经被探索了很多年了。
三、方法
给出一个骨架序列,首先根据节点的2D或3D坐标信息将骨头信息提取出来,然后根据每一帧的节点和骨头信息构建一个有向无环图,然后把它送到有向图卷积中提取特征用来进行动作识别。最后,用和提取空间信息相同的图网络结构提取动作信息,动作信息和空间信息的融合来进一步提高性能。
和2s-AGCN相似,在其基础上改变了网络结构,使用有向无环图构建人体骨架结构,并且改变了自适应网络的方法。
1. 有向图网络结构块
根据有向图结构更新节点和边的信息,更新方式如下:
\[
\overline{\mathbf{e}}_{i}^{-}=g^{\mathbf{e}^{-}}\left(\mathcal{E}_{i}^{-}\right) \qquad(1)\\
\overline{\mathbf{e}}_{i}^{+}=g^{\mathbf{e}^{+}}\left(\mathcal{E}_{i}^{+}\right) \qquad(2)\\
\mathbf{v}_{i}^{\prime}=h^{\mathbf{v}}\left(\left[\mathbf{v}_{i}, \overline{\mathbf{e}}_{j}^{-}, \overline{\mathbf{e}}_{j}^{+}\right]\right) \qquad(3)\\
\mathbf{e}_{j}^{\prime}=h^{\mathbf{e}}\left(\left[\mathbf{e}_{j}, {\mathbf{v}}_{j}^{s'}, {\mathbf{v}}_{j}^{t'}\right]\right) \qquad(4)
\]
\(e^-\)表示输入边,\(e^+\)表示输出边,对于下图(a)中的节点\(v_2\),输入边为\(e_1\),输出边为\(e_2\)和\(e_3\),\(v^s\)表示源点,\(v^t\)表示目标点,对于下图(a)中的边\(e_1\),源点为\(v_1\),目标点为\(v_2\),函数\(g\)表示聚合函数,函数\(h\)表示更新函数。
对网络中一个DGN块,首先对有向图中的边和节点进行更新,针对\(v_2\)节点,先对输入边和输出边用聚合函数进行聚合(上式中的(1)和(2)),再对\(v_2\)节点进行更新,最后用更新后的\(v^{'}_1\)和\(v^{'}_2\)对边\(e_1\)进行更新。

2.实现
输入:\(f_v\)是节点的特征图,大小为\(C \times T \times N_v\),并将其resize为\(CT \times N_v\);
\(A\)是节点与边的对应关系矩阵,大小为\(N_v \times N_e\),\(A_{ij}\)表示第i个节点是第j条边源点或目标点,当\(A_{ij}\)为-1时,表示是源点,为1时,表示是目标点,为0时,表示节点和边没有关系。如下图,表示第0个节点是第0条边的源点,第0个节点是第1条边的目标点。为了实施过程简单一些,将\(A\)分为\(A^s\)和\(A^t\),将源点和目标点分别提取出来形成单独的向量,并将值全设为1;
\[
A=\left[\begin{array}{rrrr}{-1} & {1} & {0} & {0} \\ {0} & {-1} & {1} & {0} \\ {0} & {-1} & {0} & {1}\end{array}\right]^{\top}\\
A^s=\left[\begin{array}{rrrr}{1} & {0} & {0} & {0} \\ {0} & {1} & {0} & {0} \\ {0} & {1} & {0} & {0}\end{array}\right]^{\top} \qquad
A^t=\left[\begin{array}{rrrr}{0} & {1} & {0} & {0} \\ {0} & {0} & {1} & {0} \\ {0} & {0} & {0} & {1}\end{array}\right]^{\top}
\]
将\(f_v\)和\(A^s\)相乘便得到大小为\(CT \times N_e\)的矩阵,表示某个点对应的输入边的聚合,从而实现了聚合函数的功能,因为需要对聚合后的结果进行归一化,等价于直接对\(A\)进行归一化,\(\tilde{A}=A \Lambda^{-1}\),$ \Lambda_{ii} = \sum_jA_{ij}+\epsilon\(,\)\epsilon$是为了避免除零,所以上述更新节点和边可以写成:
\[
f^{'}_v = H_v([f_v,f_e\tilde{A^s}^T,f_e\tilde{A^t}^T])\\
f^{'}_e = H_e([f_e,f_v\tilde{A^s}^T,f_v\tilde{A^t}^T])
\]
\(H\)表示一个全连接层来表示更新函数。
3.自适应图结构
\(A\):指的是邻接矩阵的形式
\(A_0\):自然人体骨架结构图
\(A = PA_0\):ST-GCN的实现方式,这种方法只能改变已经存在的边的重要性,不能生成新的边
\(A = A_0 + P\):这种方式可以生成新的边,但是无法移除原有的不需要的边
\(A = P\):这种方法会使得图结构的学习不收任何约束,反而会降低性能
\(A = P_{10}\):表示 前10次迭代\(A = A_0\),后面的迭代\(A = P\),这样用固定的图结构使得前期更容易训练,后期的 不固定的图结构带来了更多的灵活性。
4.时域信息建模
与ST-GCN相同,2s-AGCN和DGN的每个GCN(DGN)块都有一个TCN块,用\(K_t \times 1\)对时间域进行卷积。结构与2s-AGCN中的结构完全相同,就是把Convs替换成DGN块。

5.双流结构
双流结构与2s-GCN相同,都是利用骨骼长度和方向信息作为第二类信息,和节点信息组成双流结构,最后用加和进行融合产生最后的打分值。
四、实验结果
1.消融实验
2s-ST-GCN表示节点和骨头信息双流结构应用在ST-GCN上
1s-ST-GCN表示节点和骨头信息合为一流结构应用在ST-GCN上

2.自适应的DGN

3.双流网络对比

4.和state-of-the-art对比

版权声明:本文为博主原创文章,未经博主允许不得转载。
Skeleton-Based Action Recognition with Directed Graph Neural Network的更多相关文章
- 论文笔记:Person Re-identification with Deep Similarity-Guided Graph Neural Network
Person Re-identification with Deep Similarity-Guided Graph Neural Network 2018-07-27 17:41:45 Paper: ...
- 论文解读《Bilinear Graph Neural Network with Neighbor Interactions》
论文信息 论文标题:Bilinear Graph Neural Network with Neighbor Interactions论文作者:Hongmin Zhu, Fuli Feng, Xiang ...
- 论文解读(GCC)《GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training》
论文信息 论文标题:GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training论文作者:Jiezhong Qiu, Qibi ...
- Graph Embedding Review:Graph Neural Network(GNN)综述
作者简介: 吴天龙 香侬科技researcher 公众号(suanfarensheng) 导言 图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...
- 异构图神经网络笔记-Heterogeneous Graph Neural Network(KDD19)
自己讲论文做的异构图神经网络的ppt.再转变成博客有点麻烦,所以做成图片笔记. 论文链接:https://arxiv.org/abs/1903.07293
- Recent papers on Action Recognition | 行为识别最新论文
CVPR2019 1.An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognit ...
- Online handwriting recognition using multi convolution neural networks
w可以考虑从计算机的“机械性.重复性”特征去设计“低效的”算法. https://www.codeproject.com/articles/523074/webcontrols/ Online han ...
- 论文解读(SelfGNN)《Self-supervised Graph Neural Networks without explicit negative sampling》
论文信息 论文标题:Self-supervised Graph Neural Networks without explicit negative sampling论文作者:Zekarias T. K ...
- 论文解读(KP-GNN)《How Powerful are K-hop Message Passing Graph Neural Networks》
论文信息 论文标题:How Powerful are K-hop Message Passing Graph Neural Networks论文作者:Jiarui Feng, Yixin Chen, ...
随机推荐
- tornado请求与响应
tornado中处理请求与响应的类如下, 所有视图类必须继承该类: tornado.web.RequestHandler 一. 响应之self.write()方法 1. 该方法可返回值的类型: 当返 ...
- 【CSP2019】树上的数
[CSP2019]树上的数 题面 洛谷 题解 我们设每个点上的编号分别为\(a_1,a_2...a_n\). 10pts ... 菊花 假设现在菊花中心编号是\(rt\),设你依次拆边\((p_1,r ...
- 关于几类STL容器swap的复杂度问题
\(swap\)的方式有 \(S1.swap(S2)\) 或 \(swap(S1,S2)\) \(vector,map,set,deque \ \ \ \ swap\)复杂度:\(O(1)\) \(p ...
- js 立即调用函数 IIFE(Immediately Invoked Function Expression) 【转】
原文链接:https://www.cnblogs.com/ming-os9/p/8891300.html JS中 (function(){...})()立即执行函数 1 (function(){. ...
- Mac上Hive安装配置
Mac上Hive安装配置 1.安装 下载hive,地址:http://mirror.bit.edu.cn/apache/hive/ 之前我配置了集群,tjt01.tjt02.tjt03,这里hive安 ...
- OpenCV像素操作和图形绘制
像素操作 #include<iostream> #include<opencv2/opencv.hpp> using namespace std; using namespac ...
- Gitlab CI/CD
Gitlab CI/CD 前言 纵观人类历史的发展以及三次工业革命,你会发现利用机器来替代部分人力劳动,将重复的工作自动化从而解放生产力都是发展的必然趋势,在软件工程领域也不例外,其中 CI/CD 就 ...
- laravel框架中Job和事件event的解析
本篇文章给大家带来的内容是关于laravel框架中Job和事件event的解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在做项目的时候,一直对Job和Event有个疑惑.感觉两 ...
- sql server报【从varchar数据类型到datetime数据类型的转换产生一个超出范围的值】错误的解决办法
产生这个错误的原因是在使用convert函数将给定的日期字符串转换为日期类型的时候,因为datetime这个数据类型有时间数值的范围限定,当超出时间范围时就抛出这个错误. 如果类型是[datetime ...
- java如何消除太多的if else判断?
1.简介 if判断语句是很多编程语言的重要组成部分.但是,若我们最终编写了大量嵌套的if语句,这将使得我们的代码更加复杂和难以维护. 让我们看看能否使用别的方式来做呢. 设计模式是为了更好的代码重用性 ...