文章目录

  • 前言
  • 总览
  • 一、Introduction
    • 背景
    • AS-GCN
    • 主要贡献
  • 二、Related Works
  • 三、Background
    • 3.1 Notations (符号注记)
    • 3.2 Spatio-Temporal GCN(时空图神经网络)
  • 四、Actional-Structural GCN
    • 4.1 Actional Links (A-links)
      • Encoder:
      • Decoder:
    • 4.2 Structural Links (S-links)
    • 4.3 Actional-Structural Graph Convolution Block(动作结构图卷积块)
    • 4.4 Multitasking of AS-GCN(AS-GCN 的多任务处理)
  • 可视化
    • 可视化 A-link
    • 特征可视化

前言

笔者从人工智能小白的角度,力求能够从原文中解析出最高效率的知识。
之前看了很多博客去学习AI,但发现虽然有时候会感觉很省时间,但到了复现的时候就会傻眼,因为太多实现的细节没有提及。而且博客具有很强的主观性,因此我建议还是搭配原文来看。

请下载原文《Actional-Structural Graph Convolutional Networks for Skeleton-based Action Recognition》搭配阅读本文,会更高效哦!

若要更好地理解此篇文章,请参考其改进的前身:
【读前请读】:《论文超详细精读|六千字:ST-GCN》
以及,同样以ST-GCN为基础改进的:
【读后再读】:《论文超详细精读|万字:2s-AGCN》

总览

首先,看完标题,摘要和结论,我了解到了以下信息:

  1. 引入了一个encoder-decoder(编码器-解码器)结构,称为A -link 推理模块(AIM),以捕获特定于动作的潜在依赖关系,即直接从动作中捕获活动链接,这样可以捕获更丰富的依赖关系。
  2. 扩展了现有的骨架图,以表示高阶依赖关系,即S-link 结构链接。
  3. 将这两种类型的link组合成一个广义的骨架图,进一步提出了动作结构图卷积网络(AS - GCN),将动作结构图卷积和时间卷积作为基本构建块,学习动作识别的空间和时间特征。
  4. 在识别头的平行位置增加了一个未来姿态预测头,以帮助通过自我监督捕获更详细的动作模式。

一、Introduction

背景

  1. 最早的骨骼动作识别方法通常是将每一帧中所有的身体关节位置编码为特征向量进行模式学习
  2. 骨骼数据通常通过深度传感器定位关节的2D或3D空间坐标,或使用基于视频的位姿估计算法获得。这些模型很少探究身体关节间的内部依赖关系,从而遗漏了大量的身体关节间的信息。
  3. 为了获取关节相关性,目前的方法是构造顶点为关节、边为骨骼的骨架图,并利用图卷积网络(GCN)提取相关特征。

ST-GCN缺点
较远关节关系被忽略。ST-GCN虽然提取了通过骨骼直接连接的关节的特征,但结构上的距离较远的关节可能包含关键的动作模式,在很大程度上被忽略了。例如,在走路时,手和脚是紧密相关的。虽然ST-GCN试图用分级GCN聚合范围更广的特征,但节点特征在长时间扩散过程中可能会减弱。

AS-GCN

上图展示了AS-GCN模型的特点,其中它学习了A-link行为链接并扩展了行为识别的S-link结构链接。
优点如下:

  1. 更多的全局关节信息:特征响应表明,与仅使用骨架图建模局部关系的ST-GCN相比,该方法可以捕获更多的全局关节信息。
  2. 预测未来帧:AS-GCN精确地预测未来帧,显示捕获了足够详细的信息。

主要贡献

  1. 如上图。提出了A-link链接推理模块(AIM)来推断行为链接,捕捉动作特定的潜在依赖。将A-link 活动链接与S-link 结构链接组合为广义骨架图。

  2. 如上图。提出了A动作-S结构图卷积网络(AS-GCN)来提取基于多图的有用的时空信息

  3. 引入一个额外的未来姿态预测Head来预测未来姿态,通过捕捉更详细的动作模式来提高识别性能;

  4. 在两个大规模数据集上,AS-GCN优于几种最先进的方法。作为一个副产品,ASGCN还能够精确预测未来的姿态。

二、Related Works

骨架动作识别中许多算法都是基于两种方法开发的:基于人工的和基于深度学习的。

  • 基于人工:设计了基于物理直觉的动作模式捕获算法,如局部占用特征、时间关节协方差和李群曲线。
  • 基于深度学习:从数据中自动学习动作特征。

三、Background

3.1 Notations (符号注记)

  • 骨架图: G ( V , E ) \mathcal{G}(V, E) G(V,E),其中 V V V 是 n n n 个身体关节的集合, E E E 是 m m m 个骨头的集合。
  • 邻接矩阵: A ∈ { 0 , 1 } n × n A\in \lbrace0,1\rbrace^{n\times n} A∈{0,1}n×n。如果第 i i i和第 j j j个关节连接,则 A i j = 1 A_{ij}=1 Aij​=1,否则为0。A充分描述了骨架结构。
  • 对角度矩阵: D ∈ R n × n D\in\mathbb{R}^{n\times n} D∈Rn×n。其中, D i , i = ∑ j A i , j D_{i,i} = ∑_j A_{i,j} Di,i​=∑j​Ai,j​。

为了获取更精细的位置信息,文章将一个根节点及其邻居分成三个集合:
(1)根节点: A r o o t A^{root} Aroot。
(2)向心群节点: A c e n t r i p e t a l A^{centripetal} Acentripetal,它们比根更接近身体重心。
(3)离心群节点: A c e n t r i f u g a l A^{centrifugal} Acentrifugal,它们远离重心。

  • 分区组集合: P = { r o o t , c e n t r i p e t a l , c e n t r i f u g a l } \mathcal{P} = \{root, centripetal, centrifugal\} P={root,centripetal,centrifugal},记 ∑ p ∈ P A ( p ) = A ∑_{p∈P} A^{(p)} = A ∑p∈P​A(p)=A
  • T帧内3D关节位置: X ∈ R n × 3 × T \mathcal{X}\in\mathbb{R}^{n\times 3 \times T} X∈Rn×3×T
  • 第t帧的3D关节位置: X t = X i , : , t ∈ R n × 3 \mathcal{X}_t=\mathcal{X}_{i,:,t}\in\mathbb{R}^{n\times 3} Xt​=Xi,:,t​∈Rn×3,它在 X \mathcal{X} X 的最后一个维度中对第 t t t 帧进行了切片。
  • 第 i i i 个关节在第 t t t 帧坐标系的位置: x t = X i , : , t ∈ R d x_t=\mathcal{X}_{i,:,t}\in\mathbb{R}^{d} xt​=Xi,:,t​∈Rd

3.2 Spatio-Temporal GCN(时空图神经网络)

建议阅读《论文超详细精读|六千字:ST-GCN》

  1. 网络结构:ST-GCN包含许多个block,每个block包含一个空间图卷积和一个时间卷积,交替提取空间和时间特征。最后一个block连接到一个全连接的分类器以生成最终的预测。
  2. 空间图卷积运算:是ST-GCN的关键部分,它为每个关节引入了相邻特征的加权平均

四、Actional-Structural GCN

广义图:A动作-S结构图,定义为 G g ( V , E g ) G_g(V, E_g) Gg​(V,Eg​),其中 V V V 为原始关节集, E g E_g Eg​为广义链接。

在Eg中有两种类型的链接:结构链接(S-link),显式地派生自主体结构,和动作链接(A-link),直接从骨架数据推断。

4.1 Actional Links (A-links)

背景:人类的许多动作都需要相隔很远的关节才能协同移动,这导致了关节之间的非物理依赖性。为了捕捉各种动作的对应依赖关系,论文引入了动作链接(A-links),它由动作激活,可能存在于任意一对关节之间。

为了从动作中自动推断出A-link,论文开发了一个可训练的A-link推理模块(AIM),该模块由一个编码器(Encoder )和一个解码器(Decoder)组成:

  • Encoder:会根据输入信息在训练过程学习任意2 个节点之间的连结,并生成与行为直接相关的A-link。
  • Decoder:以Encoder 生成的特征( A-link ) 推论下个时间点的节点位置。

Encoder:


C C C 指的是A-link 的种类数量,每个 A \mathcal{A} A 表示的是在特定节点与 c − t h c-th c−th 种类的连结性。这边的encode(·) 会先对3D 的关节点信息抽出特征后,再转换为连结的概率。

为了要抽取连结的特征,该论文刻意使节点于连结之间交替地传递信息,若将 T T T 个帧 的第 i − t h i-th i−th 的节点表示为Vector:

则节点特征p 可表示为:

而在第k 次的迭代中,连结与节点的资讯传递则可表述为:

f v ( ⋅ ) f_v(·) fv​(⋅) 和 f e ( ⋅ ) f_e(·) fe​(⋅) 都是多层感知器,而 ⊕ ⊕ ⊕ 是向量拼接, F ( ⋅ ) \mathcal{F}(·) F(⋅) 则是聚合链接特征并获得联合特征的操作,比如平均和元素最大化。

在传播K次之后,编码器输出链接概率为:

r r r 是一个随机变量,它的元素是从Gumbel(0,1)分布中采样的 i.i.d。 τ \tau τ 则控制 A i , j 的离散化 A_{i,j}的离散化 Ai,j​的离散化,最终透过Gumbel softmax得到一个近似类别机率的结果$A_{i,j}。

Decoder:


基本的想法是将A-link 的特征转换为下个时间点( t + 1 t+1 t+1 ) 的关节点位置,若将第 i i i 个节点在第 t t t 个Frame 的特征定义为:

那上个式子的decode(·) 则可以表述为:

此时 f v ( ⋅ ) f_v (·) fv​(⋅)、 f e ( ⋅ ) f_e (·) fe​(⋅)、 f o u t ( ⋅ ) f_out (·) fo​ut(⋅) 都是多层感知器

  • (a) 步骤是基于A-link 生成特征
  • (b) 则是聚合前一步骤的特征于对应的节点特征上
  • (c) 步骤透过GRU ( Gated recurrent unit ) 更新节点特征
  • (d) 步骤便是预测下个时间点的节点座标,最终会透过一个高斯分布取得结果。

那么AIM 的Cost function 定义如下:


在实际操作上,该论文有先对AIM 做pretrain ,因此在公式最右边的分母有个A 上标(0) 的prior。

在实验过程中有发现,A 的机率分布越稀疏,整体的表现就越好,作者们推测原因是,过多的连结可能捕捉到一些无用的资讯,进而造成模型混淆。

然而在Encoder 的定义中,有透过softmax 确保这边的数值加总为1,而当每个C 都是一个很小的数值时,其实比较难促进稀疏的状态产生。

为了要能控制稀疏程度,该论文在两节点并没有连结的状态中,以较大的机率加入了一个Ghost link,但同时确保所有机率加总为1 。

再来为了捕捉节点之间的关联性,该论文有在A-link 上做Actional Graph Convolution ( AGC ) ,公式定义如下:


下方展开的式子中, X i n X_in Xi​n 左边的 A a c t A_act Aa​ct 是graph convolution kernel,右边的 W a c t W_act Wa​ct 则是可被训练的权重,用于捕捉这个特征的重要性。
另外,对AIM 做预训练比较像是个暖身的动作,在整体模型训练时,A-links 只会透过Encoder的Forward-passing 进行更新。

4.2 Structural Links (S-links)

该论文在 S-links 上,为了比 ST-GCN 更能获得远程的信息,对采用高次作法,让信息方扩散到较远的节点上,再做 Structural Graph Convolution (SGC),公式定义如下:
这里的 L L L 为次数, A A A 是第 p p p 部分的图, M M M 和 W W W 都可以是每个次方里被训练方的参数,目的是要在每个次方里捕捉每个方的参数权重与特征。

4.3 Actional-Structural Graph Convolution Block(动作结构图卷积块)

为了综合地获取任意关节间的运动和结构特征,作者将AGC和SGC相结合,发展了动作-结构图卷积(ASGC)。

λ λ λ 是个超参数,可控制使用 Actional feature 的影响程度。
为了捕捉帧之间的行为特征,有沿时间轴对每个关节点使用(T-CN时间轴,通过共享参数的口轴轴上的特征)。

结合 ASGC 与 T-CN 形成了 Actional-Structural block (AS-GCN block),可同时图形空间与时间轴上的特征,如上图。

4.4 Multitasking of AS-GCN(AS-GCN 的多任务处理)

1.骨架:
完整的 AS-GCN 是由多个不同的块组成的:

经过多个时空特征聚合后,AS-GCN可以跨时间提取高级语义信息。
2.动作识别head:
为了对动作进行分类,我们在backbone network后面构造一个识别head。我们对backbone network输出的特征图的关节维度和时间维度进行全局平均池化(global averaging pooling),得到特征向量,最后将特征向量输入到softmax分类器中,得到预测的类标签noisy,用于动作识别的损失函数为标准交叉熵损失:


3.未来姿态估计head:

以往对骨架数据分析的研究大多集中在分类任务上。
这里作者还考虑了姿态预测,如上图。

位置是标准的链接在对的信息贯穿的一个高层次的骨干,多个SGCN层级的获取点之后,获取到关节3D点的位置,在损失函数上的点是L2损失:

4.实践:
将识别头和未来预测头结合起来训练,可以提高识别性能。其背后的直觉是,未来预测模块促进了自我监督,避免了识别中的过拟合

可视化

可视化 A-link

为了更可以把这个值地有A-links到底都学的设计,论文的链接在0.9的链接以橘色线表示


一个特别的线粗线与是大小,确实在动作机更准确的相关率上,比较大的反应,表示可以给模型与行为更相关,更相关的特征信息。

特征可视化

除了 A-links 的观察外,该论文还对每个个体如何影响最终的分类决策,所以好奇也对特定动作的特征图做视觉化:

这图的(a)部分是「挥手」行为在不同时间点的状态,由左至右看会发现,一开始的时间对上半身有比较均等的强度,但随着动作持续越久,对挥动中的不同结果有的反应。

(b) 那部分另外还有远程信息的动作,可以看到手和两个人的反应是比较大的。

(c) 是使用 CN 上 ST-GCN 的差异部分,可同样是正确的与论文之间的反应,但在就信息的比较中,AS-GCN 的功效与作用比较高。

未来姿势预测
逆向预测模组的效果表演可视化:


图中的上图的目标,下排是预测的结果,看起来结果并不差,因为作者希望看到的结果是,AS-GCN 保留了特征的能力,并在与行为的细节上进行了预测相关的部分(头部、多人)效果更好。

论文超详细精读|八千字:AS-GCN相关推荐

  1. 论文超详细精读|八千字:DGNN

    文章目录 前言 总览 一.Introduction 背景 问题解决过程 主要贡献 二.Related work 2.1 Skeleton-based action recognition(骨架动作识别 ...

  2. 论文超详细精读|五千字:STGR

    文章目录 前言 总览 一.Introduction 背景 主要贡献 二.Related Works Skeleton-based Action Recognition.(骨架动作识别) Recurre ...

  3. 论文超详细精读|六千字:ST-GCN

    文章目录 前言 总览 一.Introduction 背景与局限 解决问题思路 新方法及主要贡献 二.Related work Neural Networks on Graphs(图神经网络) Skel ...

  4. 《数据结构》(一)时间复杂度和空间复杂度(超硬核八千字)

    ------------------时间复杂度和空间复杂度--------------------- 1.时间复杂度和空间复杂度 在学习数据结构和算法之前,每一个初学者第一步要熟练掌握的就是时间复杂度 ...

  5. 经典神经网络论文超详细解读(八)——ResNeXt学习笔记(翻译+精读+代码复现)

    前言 今天我们一起来学习何恺明大神的又一经典之作: ResNeXt(<Aggregated Residual Transformations for Deep Neural Networks&g ...

  6. 经典神经网络论文超详细解读(三)——GoogLeNet InceptionV1学习笔记(翻译+精读+代码复现)

    前言 在上一期中介绍了VGG,VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩,而今天要介绍的就是同年分类任务的第一名--GoogLeNet . 作为2014年Ima ...

  7. 经典神经网络论文超详细解读(二)——VGGNet学习笔记(翻译+精读)

    前言 上一篇我们介绍了经典神经网络的开山力作--AlexNet:经典神经网络论文超详细解读(一)--AlexNet学习笔记(翻译+精读) 在文章最后提及了深度对网络结果很重要.今天我们要读的这篇VGG ...

  8. 【YOLO系列】YOLOv1论文超详细解读(翻译 +学习笔记)

    前言 从这篇开始,我们将进入YOLO的学习.YOLO是目前比较流行的目标检测算法,速度快且结构简单,其他的目标检测算法如RCNN系列,以后有时间的话再介绍. 本文主要介绍的是YOLOV1,这是由以Jo ...

  9. Pandas教程【国宝级教程,一万八千字总结】

    Pandas教程[国宝级教程,一万八千字总结]

最新文章

  1. Mysql高级调优篇——第一章:调优必备索引知识
  2. 在中间层 .NET 应用程序中通过授权管理器使用基于角色的安全
  3. soundex mysql_MySQL SOUNDEX()用法及代码示例
  4. 【职场】面试中最难回答频率最高的70个问题
  5. 单网卡部署WEB+Mail+FTP+ISA服务器之四:局域网内部署FTP和winwebmail服务器
  6. 利用WPF建立自己的3d gis软件(非axhost方式)(五)在鼠标点击的位置增加UI
  7. 【收藏】SpringBlade开发手册地址
  8. 设计模式学习(三)——装饰器模式
  9. openstack nova 源码分析4-nova目录下的driver.py
  10. 如何防止抓包软件抓取我们网页的信息?
  11. Linux系统编程之进程间通信
  12. 差分进化算法(python实现
  13. 计算机超级管理用户名,超级管理员设置及简介
  14. python 高斯过程_【Scikit-Learn 中文文档】高斯过程 - 监督学习 - 用户指南 | ApacheCN...
  15. python调用有道翻译_Python通过调用有道翻译api实现翻译功能示例
  16. 程序员必备的英语词汇表-持续更新
  17. Git 和 GitHub
  18. 三人行,必有我师焉。择其善者而从之,其不善者而改之。
  19. select option
  20. 从零开始开发一个自动抓取教务系统课表等信息并动态显示的安卓课程表APP,原理分析及功能实现完美教程

热门文章

  1. babylonjs_使用BabylonJS构建强大的3D浏览器游戏
  2. 时间序列模型 (三):指数平滑法
  3. 纳德拉憾失左膀右臂 陆奇离任为哪般
  4. 吸血鬼猎人巴菲第一至八季/全集Buffy迅雷下载
  5. CODING DevOps 高可用实践,保障服务稳定的“定海神针”
  6. AutoCAD LISP 绘制阿基米德螺线曲线
  7. HttpClient API常用方法
  8. ATA-4014高压功率放大器驱动超声马达测试应用
  9. Testin实验室发布中国安卓游戏指数(8月报):欢乐斗地主夺冠
  10. 【web】伪类伪元素