IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> DGNN论文阅读 -> 正文阅读

[人工智能]DGNN论文阅读

《Skeleton-based Action Recognition with Directed Graph Neural Networks》

这一篇论文总体上,我觉得写的是很有逻辑调理,创新点也很清晰,基本是对于ST-GCN和2s-AGCN进行的改进了。

首先一上来,作者是先对已有的基于骨骼行为识别的算法进行了一个分类,分为了三种:RNNs、CNNs和GCNs,他们分别是将骨骼数据转化成了 向量序列、伪图像 和 图。作者这篇文章中是使用GCN。

而之前的GCN方法通常是将骨骼表示为无向图,也就是利用其三维坐标,关节是节点坐标,骨骼就是边(两坐标向量之差),再使用两个独立网络对骨骼和关节进行建模,这种处理方式没有办法充分的利用关节和骨骼之间的依赖关系。

所以 作者在此基础上,提出了一个大的创新点,就是 将骨架表示为一个有向无环图(Directed Acyclic Graph),也就是DAG这时候也许会想问,骨骼哪来的方向,方向又要怎么去确定。作者对其的定义为:首先人体骨架会有一个中心点(比如在ST-GCN中也出现的胸腔部位那的中心点1号),每一条边的方向是由顶点与中心点之间的距离来决定的,具体的表示为 离中心点近的点 指向 离中心点远的点如下图所示:

?至此,我觉得都是很好理解的,对于整个有向无环图来说,方向已经明白了,无环就更不用说了,人体的骨架本来就没有环。但是,接下来的概念才是真正绕的,需要理清楚。

既然每一条边的方向,我们都知道了,那我们针对于每一个顶点,或者是每一条边来说吧,是不是应该给他们各自命个名呀。

形式上而言,对于每一个顶点v_i,我们将指向它的边定义为传入边 e_i^-,从它发出的边定义为e_i^+

对于有向边e_j,定义它是从源顶点v_j^s到目标顶点v_j^t的向量。

如上图, 对于顶点v2,它的传入边就是e1,传出边就是e2和e3。那对于边e1来说呢,v1就是它的源顶点,v2就是它的目标顶点。

所以,如果vi 是 ej 的目标(源)顶点,那么ej 就是 vi 的传入(出)边? ? 【这个逻辑要理理清】?

?我们也都知道,每一条边来说,它的源顶点和目标顶点肯定是各自只有一个的,但是对于每一个顶点来说,它的传入和传出边的数量就不是固定的了,比如上图中 v2的传出边就有2条

?最后,我们把顶点vi的传入边的集合称为?\large \varepsilon_i^-,传出边的集合称为\large \varepsilon _i^+?。 V就是所以顶点的集合。那这样子的话,一个有向图G就可以表示为 G = (V,\LARGE \varepsilon)。而一个基于骨架的视频是一系列的帧组成,所以就可以表示为 S = (G1,G2,...,Gt),其中t就是视频的长度。


至此,有向图的问题也解决了,那接下来就是怎么去提取图中的特征了。针对于这种有向图,作者就提出了Directed Graph Neural Network(DGNN)网络。该网络包含多个层,每个层都提供一个包含顶点和边的属性的图,并输出带有更新属性的相同图。 (也就是说,每经过一层,顶点和边的特征就会得到一次更新)(并且在这里,顶点和边的属性它是用向量表示的)

在底层,每个顶点或边只能从其相邻的边或顶点接收属性这些层中的模型旨在更新属性时提取顶点和边的局部信息

在顶层,来自彼此距离较远的关节和骨骼的信息可以累积在一起。因此,对于识别任务而言,提取的信息更具全局性和语义性

其实,这个有点像CNN的过程,底层的时候,提取关节信息可能只需要一个关节和两个相连的骨骼就行了。而在顶层,它可以累积距离更远的关节,比如手和脚,这样子信息的利用就会更加充分。

那要怎么去进行更新呢?

其实就是要讲它的DGN块了,主要包含两个聚合函数和两个更新函数。更新函数用于根据连接的边和顶点更新顶点和边的属性。聚合函数用于聚合连接到一个顶点的多个传入(传出)边中包含的属性。

整个过程其实也就是四步,分别是聚合入边和出边的信息,再更新顶点和边的属性。公式如下:

当然,这个顺序肯定不是随便的,论文中给出如下图

?也就是先顶点更新,再边更新。通过大量实验,paper选择了平均池作为传入边和传出边的聚合函数,并选择了单个完全连接层作为本工作中的更新函数


接下来就是DAG的具体实现了,对于每一个DAG块,输入的顶点是 C x T x Nv的张量fv,C是通道数,T是帧数,Nv是顶点数。同样,输入边也是C x T x Ne的张量,Ne是边数。根据顶点和边的数量关系,我们应该能知道,Ne是要比Nv少1的。

所以和ST-GCN类似,也需要取一个Nv x Ne的关联矩阵A。不同的是,ST-GCN中取得是NxN的邻接矩阵,因为是无向图。而本论文是有向图,所以用关联矩阵区分一下。并且其元素的意义也是不一样的,这里的A是代表了点和边的组合,ST-GCN中仅单纯是点与点。

那既然是有向图,肯定是需要在A中将这个方向的概念体现出来的。paper中规定了:如果v是e的源顶点,或者e是v的传出边,那么相应的 Aij = -1 ; 如果v是e的目标顶点,或者e是v的传入边,那么相应的 Aij = 1 ;如果没有连接,Aij = 0;并且为了进一步区分源顶点和目标顶点,paper中用\large A^s表示源顶点的关联矩阵,而其本来在A中的值是-1,这里需要取他的绝对值。\large A^t为目标顶点的关联矩阵。可以用之前的一个图(a)来举例说明一下:

?对于这个图(a)而言,A是其关联矩阵,但是将其进行转置了。如果对于转置的矩阵来看,三行四列,对应的就是三个节点和四条边。

A11 = -1 ,说明v1顶点是e1边的源顶点,所以值是-1,以此类推,可以得到整个A矩阵。

As和At对A中元素进行区分。

接着,看它的聚合函数g。给定一个张量和关联矩阵,他们的聚合函数其实就是矩阵的相乘。比如输入顶点张量fv 和 As,先将fv的shape转换成CT x Nv(本来是C x T x Nv), 因为As的shape是Nv x Nv的,所以乘完以后的shape是 CT x Ne的张量。聚合函数的道理就是把关联矩阵中元素为1的保留,为0的就不保留了。元素为1就是指它的传入边或是目标顶点,为0就不是,所以按照矩阵相乘的原理就可以实现聚合。最后就可以将公式转换成下面的式子,其中H是一个单层的全连接层,\large \widetilde{A}^s表示经过标准化处理


那对于自适应这一块内容,其实也就是注意力机制。这里就需要提到之前说DGNN是对ST-GCN和2s-AGCN的进一步改进,其中就有一点就是这里。回顾一下ST-GCN注意力机制的缺点和2s-AGCN中的对其的改进,写在这个博客中了2s-AGCN论文理解_Eric加油学!的博客-CSDN博客

简单来说,就是ST-GCN里面初始邻接矩阵为A0,它的更新函数是 A = PA0,其中P是初始化为1的可训练矩阵,但是要注意的是,它们的相乘是哈达玛积,也就是两个矩阵的对应元素相乘,并不是矩阵的乘法,,所以带来的问题就是A0里面如果有一些元素为0,则无论怎么更新,它的值永远都是0,也就是没办法创造出原本没有的连接。【打个比方,两条腿之间不是直接相连的吧,但是你走路肯定两条腿是一前一后的关系,这都是有联系的,但是ST-GCN这样子处理就没办法挖掘到这样的联系】

那2s-AGCN就对它做出了改进,它将这个矩阵A分成了3分,对其做加法。也就是A = P + A0.这里选择用相加来代替相乘。初始化P都为0的。那这样子就可以有效的避免了,无论怎么更新,原本为0的一直为0的弊端。【到此为止,是不是觉得问题已经得到了有效的解决】

但这篇论文的作者认为,依旧不是很好,他认为,A0是不可修改的,并且所有层都要用到,这不应该是一个自适应网络所想要的。如果不去掉,训练到后面,无论训练到哪种程度,P所包含的特征肯定是足够了的,这时候A0就是个累赘了。但是又不能把它直接给去掉,因为刚开始训练的时候除了本身物理结构就没什么好的参考指标了,所以肯定是需要A0的,它代表了人体的先验知识,少了的话肯定效果不是最优。【那这样,矛盾就来了,既不能直接去掉,又不能一直用它,那要怎么搞】

作者的办法就是,我现在前10个批次的训练中加上这个A0,后面的训练就不要了。这样既解决了刚开始训练时,提供了参考指标,又解决了训练后期加上A0后的冗余。完美的解决了ST-GCN和2s-AGCN的问题。


至于双流网络的内容,就没什么特别好讲的了,其实可以参考2s-AGCN,都差不多的样子,就是另一个分支网络输入的是顶点的差和边的差所组成的向量,输入到另一个DGNN网最后融合分类。

至此,DGNN就基本阅读完毕了,总体来说,ST-GCN作为图方法的奠基石,为后续的所有研究奠定了基础,2s-AGCN对其进行完善,DGNN又进一步优化。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:23:58  更:2022-03-30 18:28:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 12:31:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码