这篇文章开篇就指出,我们的模型是要从人体动作的序列中选取出最informative的那些帧,而丢弃掉用处不大的部分。但是由于对于不同的视频序列,挑出最有代表性的帧的方法是不同的,因此,本文提出用深度增强学习来将帧的选择模拟为一个不断进步的progressive process。

这篇文章处理的问题是skeleton based action recognition,提出的模型的示意图如下:

                                    读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

可以看出整个模型大体分为两个部分,FDNet和GCNN。其中FDNet指的是frame distillation network,帧蒸馏网络,形象的将选取最有用的帧的过程用蒸馏来形容。FDNet得到有用的帧之后就要输入到GCNN,也就是graph convolutional neural network里面进行graph convolution,完成动作识别。

强化学习是通过优化选择actions的policy来最大化agent从environment所获得的rewards。文章中说至今为止,在动作识别领域,增强学习的应用还不多。

做skeleton based action recognition会用到人体关节的邻接矩阵,之前做skeleton based action recognition基本都是有骨骼相连的关节对才会在邻接矩阵的相应位置标记一个1,没有连接的位置就标记为0,但本文不同,本文考虑到不相连的关节之间的相互关系也是很重要的,比如两只手不是直接相连的,但是两只手的相互位置关系在识别‘拍手’这个动作时就尤为重要。因此,本文的人体关节邻接矩阵是这么设计的:如果两个关节有连接,就在邻接矩阵相应位置标记为α,称之为intrinsic dependencies,否则标记为β,称之为extrinsic dependencies。此外关节没有self connection,是邻接矩阵对角元素全是0.

本文的卷积操作如下:首先,人体骨架序列是表示成graph 的序列,也就是读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,对于序列当中的每一个graph,进行的卷积都是读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,其中y是卷积核,它的细节后文介绍,*表示卷积,xt是输入。之后读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition会被输入到全连接网络得到读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,将读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition连接起来构成新的序列(一个3D tensor)读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,之后用常规的CNN来处理G即得结果。本文的loss function选取的是交叉熵。接着介绍卷积的细节:首先graph上的拉普拉斯算符取做读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,其中In是单位阵,W是邻接矩阵,元素只有α、β和0,D是度矩阵,是对角的,表明graph每个node的度,即读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition。有了L,就可以进一步处理得到读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,其中读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition是L的最大特征值。之后就可以对输入的节点张量进行处理(节点张量x指的是每个节点的feature vector拼接而成得到的tensor)读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition这里面Tk是切比雪夫多项式,意思应该是对第k帧的graph的节点向量,就用k次的切比雪夫多项式来处理,这里再说明一下读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition是N个节点的三维坐标值。最后,卷积可以表示为读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition。这里面有一点不是很理解,就是为什么要用拉普拉斯算符的切比雪夫多项式来进行卷积,用邻接矩阵的多项式进行卷积可以理解,是为了进行不同hop的卷积,一次多项式就相当于第一层卷积,每个节点只聚合其最近邻节点的信息,而二次多项式聚合2-hop的信息。这样看来,这个拉普拉斯算符其实就相当于修饰过的邻接矩阵,而切比雪夫多项式也就是普通多项式修饰过得到的,应该是为了更好的表现。这个切比雪夫多项式之前在geometric deep learning这篇综述中也看到过,可以再去看看具体为什么要用切比雪夫多项式。

接着介绍FDNet,它的大体过程如下图所示

读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

本文将帧的选择过程描述为一个马尔可夫决策过程(Markov decision process,MDP)。有几个概念要先介绍:States,状态,MDP的状态S包含两个部分读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition是两个tensorF和M拼在一起,F是f×N×3的tensor,f是frames数量,N是joints数量,3就是三维坐标的意思,也就是说F是整个skeleton(graph)序列,而对于那些不够f个frames的序列,用双三次插值(bicubic interpolation)补全。M和F很相似,不同的是M是m×N×3的tensor,m是选出来的帧的数量,也就是说M包含着选出来的m帧skeleton graph的信息。而读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition是一个f-dimension的vector,只有m个值为1,其余为零,负责记录哪些帧被选了出来。本文中f等于100而m等于30.

第二个概念,Actions,action指的是调整选取哪些帧所进行的动作,本文模型中有三种action,‘向左移动’、‘向右移动’、‘原地不动’三种,分别记作0、2、1.并且移动的步长定位一帧。这个actions是DFNet的输出,每一次迭代,FDNet都输出一个vector读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,而读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition表示为第i帧选择动作j的概率大小,也就是为某一帧选择向左向右或是不动的概率大小。在采取action的时候有一个问题,比如第一帧向右移动的很多,而第二帧一直向左移动,导致第一帧到了第二帧右边,这样不同帧的顺序可能在一次次移动中产生混乱,因此作者为action设定了bound,定了界限,以保证所有帧都是按顺序排列的,设定界限也很简单,上限是这一帧和下一帧中间帧,即

                                                    读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition表示第i帧移动的上界,也就是向右移动的界限,是第i帧和第i+1帧的中间位置向上取整,而如果i等于m,也就是i成为了选出来的m帧里的最后一个,那么调整的上限就是f,也就是graph序列的总帧数。调整的下界也是同样的想法,是这一帧和上一帧的中点,若是不能整除就向下取整

                                                   读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

最终,第i帧的调整范围确定为读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,用读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition表示调整的变化量,那么调整后的帧可表示为读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,而读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition的范围就可以写作

                                           读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

这里面用了min,要达到的效果也就是,如果调整量读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition加上去以后读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition没有超过界限导致帧的顺序混乱,那就正常按照action的值来进行移动,否则,向左移动时,如果读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition已经到了下限的位置,读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition=0,那就不能再向左移动(读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition=0),向右移动时同理。

接下来是Rewards的概念,记作读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,体现的是agent在状态S下采取动作action,会带来多好的结果。这个reward是用一个事先训练好的GCNN来获得的,在第一次迭代时,如果预测结果正确,那么r=1,否则r=-1,当n>1时,要表达r,首先要介绍一下读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,这里面读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition表示第n次迭代时,正确的将结果预测为c的概率(就是说c是分类的ground truth),这样,r0在-1和1之间取值,最终n>1的reward表达如下

                                                          读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

这个Ω是一个较大的数字,这个reward表达式的含义是,如果预测结果从错误跳变到正确,就给一个stimulation,也就是一个大的Ω,如果预测结果从正确跳变到错误,就给一个大的惩罚,就是-Ω,而没有正确错误跳变的时候,就按照r0的表达式给reward。

整个FDNet就是产生action用的,将FDNet所有参数表示为θ,那么FDNet表示为读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,根据状态S,在参数θ的控制下输出动作action,其结构如下图所示

                                            读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

Sa经过卷积层,pooling层,全连接层之后,和经过全连接层的Sb合并起来,输入到同一个全连接层中,经过这层全连接层的线性变换,由softmax层得到action。

接着,文章阐述了一下关于训练网络的内容,首先,目的是要最大化“discounted reward R”,也就是读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition这里突然就出现了一个discounted reward,这个是强化学习中的内容,γ是一个大于0小于1的数,越往后,reward就越打折扣,可能是因为主要的调整集中在前几次迭代?或者也是为了最终能收敛?我还不是很确定。然后,为了最大化这个R,提出的loss函数是读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,这两者之间有什么关系我也还没台东,为什么增大这个reward就是要减小这个loss?有了这个loss之后,就可以由此更新θ了,具体是读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition,这个读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition只说是normalized R,应该也是强化学习中我还没了解到的内容。之后作者说到,训练深度强化学习可以用deep Q-learning或者policy gradient,而本文action有三种,3^m很大,用deep Q-learning计算量大(这里还需具体了解deep Q-learning的细节才知道为什么),所以用了policy gradient。整个深度增强网络算法如下:

                                              读书笔记5:Deep Progressive Reinforcement Learning for Skeleton-based Action Recognition

最后作者讲了如何将FDNet和GCNN结合起来,首先,从graph的序列中均匀的选出一些frames,用它们来训练GCNN,之后将GCNN的参数固定,再来训练FDNet,而训练过的FDNet又能够精细调节GCNN, 就这样两者互帮互助。

相关文章:

  • 2021-07-23
  • 2021-08-20
  • 2021-08-13
  • 2021-09-24
  • 2021-07-07
  • 2021-10-31
  • 2022-01-18
  • 2021-09-28
猜你喜欢
  • 2022-01-10
  • 2021-10-21
  • 2021-10-12
  • 2021-06-06
  • 2021-10-07
  • 2021-10-07
相关资源
相似解决方案