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对比

原文链接:原文链接
代码链接:代码链接

版权声明:本文为博主原创文章,未经博主允许不得转载。

出处:https://www.cnblogs.com/shyern/

Skeleton-Based Action Recognition with Directed Graph Neural Network的更多相关文章

  1. 论文笔记: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: ...

  2. 论文解读《Bilinear Graph Neural Network with Neighbor Interactions》

    论文信息 论文标题:Bilinear Graph Neural Network with Neighbor Interactions论文作者:Hongmin Zhu, Fuli Feng, Xiang ...

  3. 论文解读(GCC)《GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training》

    论文信息 论文标题:GCC: Graph Contrastive Coding for Graph Neural Network Pre-Training论文作者:Jiezhong Qiu, Qibi ...

  4. Graph Embedding Review:Graph Neural Network(GNN)综述

    作者简介: 吴天龙  香侬科技researcher 公众号(suanfarensheng) 导言 图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体 ...

  5. 异构图神经网络笔记-Heterogeneous Graph Neural Network(KDD19)

    自己讲论文做的异构图神经网络的ppt.再转变成博客有点麻烦,所以做成图片笔记. 论文链接:https://arxiv.org/abs/1903.07293

  6. Recent papers on Action Recognition | 行为识别最新论文

    CVPR2019 1.An Attention Enhanced Graph Convolutional LSTM Network for Skeleton-Based Action Recognit ...

  7. Online handwriting recognition using multi convolution neural networks

    w可以考虑从计算机的“机械性.重复性”特征去设计“低效的”算法. https://www.codeproject.com/articles/523074/webcontrols/ Online han ...

  8. 论文解读(SelfGNN)《Self-supervised Graph Neural Networks without explicit negative sampling》

    论文信息 论文标题:Self-supervised Graph Neural Networks without explicit negative sampling论文作者:Zekarias T. K ...

  9. 论文解读(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, ...

随机推荐

  1. Linux性能优化实战学习笔记:第五十一讲

    一.上节回顾 上一节,我带你一起学习了常见的动态追踪方法.所谓动态追踪,就是在系统或者应用程序正常运行的时候,通过内核中提供的探针,来动态追踪它们的行为,从而辅助排查出性能问题的瓶颈. 使用动态追踪, ...

  2. [LeetCode] 789. Escape The Ghosts 逃离鬼魂

    You are playing a simplified Pacman game. You start at the point (0, 0), and your destination is (ta ...

  3. 第02组 Alpha冲刺(5/6)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 摸鱼 准备"Alpha事后诸葛亮" 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们 ...

  4. Python3.7 exe编译工具对比zz

    For years, NVDA has used Py2exe to package Python code into something that is executable on a system ...

  5. 用友U8删除采购转固卡片后,再次转固找不到采购订单,且其他订单转固报错

    问题描述 1.用户反馈删除两张之前通过采购转固定资产的卡片后,想要再次生成卡片时候,却找不到这两张卡片. 2.用户尝试对其他未转固定资产的订单进行转固,在保存卡片时提示“本次结转将放弃全部已完成的业务 ...

  6. 并查集 + 路径压缩(经典) UVALive 3027 Corporative Network

    Corporative Network Problem's Link Mean: 有n个结点,一开始所有结点都是相互独立的,有两种操作: I u v:把v设为u的父节点,edge(u,v)的距离为ab ...

  7. day11——函数名的使用、f格式化、迭代器、递归

    day11 函数名的第一类对象及使用 1.可以当作值被赋值给变量 def func(): print(1) print(func) a = func a() 2.当作元素存放在容器中 def func ...

  8. Redis 实战搭建高可用架构

    前言:最近在看关于redis缓存方面的知识,今天就来个 Redis sentinel 高可用架构,实战开始之前,先看看sentinel的概念 什么是redis-sentinel Redis-Senti ...

  9. mac 远程桌面连接

    1.安装 百度搜索下载远程桌面连接软件 microsoft remote desktop for mac,或者你安装了mac版的office,会默认有安装这个软件的. 提示“证书或相关链无效”的解决办 ...

  10. Dapper学习(四)之Dapper Plus的大数据量的操作

    这篇文章主要讲 Dapper Plus,它使用用来操作大数量的一些操作的.比如插入1000条,或者10000条的数据时,再使用Dapper的Execute方法,就会比较慢了.这时候,可以使用Dappe ...