怎么看论文:带着目的,你是想要解决什么问题,这篇论文的摘要能给你带来什么收获。
摘要、结论:是否和你的研究方向高度相关,或者如果你应用这个模型能解决什么问题。
引言部分:作者为什么开展这项研究。这篇文章是否值得精读。
深度挖掘结论和讨论部分:如何开展实验获得初始数据、数据分析解读数据内涵等。
做笔记(Endnote、Mendeley):列出对自己有价值核心信息,方便后面定位相关文献。
或者表格列出文献:
序号、文献名称、文献类型、发表年份、关键部分、研究方法、存在问题、产生原因、解决方法、创新点、下一步工作
我总结的论文各部分对于我的作用:
摘要:重要。这个文章是干什么的,解决了什么问题,用了什么方法。
引言:现有的问题和不足,自己提出什么方法。
研究现状:介绍研究背景和技术。
提出的方法:对模型进行分析。
实验:模型的结果。
消融实验:告诉你模型各部分或参数的作用或者设置什么值最合理。
结论:阐述模型的牛逼之处,有的文章会总结出不足之处。
基于骨架动作识别的时空图卷积网络
传统骨架建模方法依赖于手工制作的部分或遍历规则,导致表达能力有限和泛化困难。
本文提出时空图卷积网络(ST-GCN),通过从数据中自动学习空间和时间模式来超越以前方法的限制,并且能够自动捕捉关节空间结构中嵌入的模式以及它们的时间动态不仅有更强的表达能力,而且有更强的概括能力。
动态骨架模态可以自然地以2D或三维坐标的形式由人体关节位置的时间序列来表示。然后可以通过分析其运动模式来识别人类动作。
大多数方法依赖手工制作的零件或规则来分析空间模式。本文涉及一个用于动作识别的骨架序列的通用表示。
在图上的GCN原理遵循以下几点:1)光谱透视,其中以光谱分析的形式考虑图形卷积的局部性。2)空间透视,其中卷积滤波器直接应用图节点及其邻域。
该模型将图形神经网络应用于基于骨架的动作识别任务的人。它可以通过利用图卷积的局部性和时间动态性来隐式的学习部分信息。通过消除手动零件分配的需要,模型更容易涉及并且能够学习更好的动作表示。
模型建立在一系列骨架图的基础上,每个节点对应与人体的一个关节。有两种类型的边缘,即符合关节自然连通性的空间边缘和跨连续时间步长连接相同关节的时间边缘。在其上构建多层空间时间图卷积,这允许沿着空间和时间维度整合信息。
ST-GCN的层次性质消除了手工制作零件分配或遍历规则的需要。这不仅会带来更强的表达能力,从而获得更高的性能,而且有很好的泛化性。
这篇文章带给我的收获:
Kinetics:人体动作数据集。300000个视频片段,400多人类行为类别,大概有10s的持续动作。数据集提供包含240000个剪辑的训练集和20000个剪辑的验证集。
NTU-GRB+D:最大的具有3D关节标注的用于人体动作识别的任务数据集。有60个动作类中的56000个动作片段。
作者推荐了两个基准:X-sub:440320训练,16560验证。训练片段来自一个演员子集,模型根据来自其余演员的片段进行评估。X-View:37920训练,18960验证,训练集来自摄像头2和3,测试集来自摄像头1.
评价指标: top-1 和 top-5.
具有良好划分策略的时空卷积模型始终优于baseline model。局部卷积使用稀疏联合图作为ST-GCN使用具有非共享权重的卷积滤波器。
结论:多个子集划分比单一标记效果好得多,在多子集划分策略中空间配置划分获得了更好的性能。
表2所比较的方法有手工制作特征的特征编码方法。NTU-RGB+D数据集是在约束环境中捕获的,这使得需要稳定骨架序列的方法能够很好地工作。
结论,所提出的ST-GCN可以在两个数据集上很好地工作,证明了所提出的时空图卷积运算和所得到的ST-GCN模型的有效性。
基于骨架的方法准确性不如基于视频帧的模型。因为Kinetics中有很多动作类需要识别演员与之互动的物体和场景。
为了验证这一点,表4是选择与身体运动密切相关的30个类别的子集,Kinetics-Motion,结果如下表示:
此外,表5探索two-stream style action recognition.基于骨架的RGB和光流模型提供补充信息。使用ST-GCN时,骨架可以提供补充信息。
ST-GCN模型:将CNN引入到基于骨架的动作识别中。在图像目标识别的任务中,分层表示和局部性由卷积神经网络的固有特性实现,而不是手动分配目标部分。
基于骨架的数据可以从运动捕捉设备或视频中的姿态估计算法获得。数据是一系列帧,每一帧包含一组关节坐标。给定2D或3D的身体关节顺序。本文构建时空图,关节是图的节点,人体结构和时间的自然联系是图的边。模型的输入是图节点的联合坐标向量。它被认为是基于图像的CNN的模拟,输入由在2D图像网格上的像素强度向量形成。将对输入数据使用多层时空图卷积运算,在图上生成更高级别的特征图,然后使用softmax分类器到相应的动作类别,整个模型通过反向传播以端到端的方式进行训练。
骨架图通常由帧中人体关节的2D或3D坐标来表示。模型使用时空图形成骨架序列的层次表示,在N个关节和T帧的骨架序列上构造了一个无向时空图,同时具有intra-body和inter-frame连接。
V = { v t i ∣ t = 1 , . . . , T , i = 1 , . . . , N } V = \{v_{ti}|t=1,...,T,i=1,...,N\} V={vti∣t=1,...,T,i=1,...,N}表示骨架序列的所有关节
ST-GCN的输入,节点 F ( v t i ) F(v_{ti}) F(vti)的特征向量由t帧上第i个关节的坐标向量以及估计的置信度组成。
分两步构建骨架图:根据人体结构的连通性,一个框架内的关节与边缘连接。然后每个关节将连接到连续帧中的同一关节。所以该设置中的连接是自然定义的,无需手动分配零件。这也使得网络架构能够在具有不同数量的关节或关节连接的数据集上工作。
Formally,边集E由两个子集组成:每一帧的骨架内连接: E S = { v t i v t j ∣ ( i , j ) ∈ H } E_S = \{v_{ti}v_{tj}|(i,j)\in H\} ES={vtivtj∣(i,j)∈H},H是自然连接的人体关节的集合。还有一个包含帧间边缘,它连接连续帧中与 E F = { v t i v ( t + 1 ) i } E_F=\{v_{ti}v_{(t+1)i}\} EF={vtiv(t+1)i}。因此,一个特定关节的所有边缘I将表示其随时间的轨迹。
两个子集:骨架内的连接和帧间骨架的运动轨迹
单帧内的模型图:在 τ \tau τ时刻的N个关键节点 V t V_t Vt,骨架边 E S ( τ ) = { v t i v t j ∣ t = τ , ( i , j ) ∈ H } E_S(\tau)=\{v_{ti}v_{tj}|t=\tau,(i,j)\in H\} ES(τ)={vtivtj∣t=τ,(i,j)∈H}。给定一个 K × K K \times K K×K的卷积核,通道为c的输入特征图 f i n f_{in} fin,在位置x中的单通道输入值为:
f o u t ( x ) = ∑ h = 1 K ∑ w = 1 K f i n ( p ( x , h , w ) ) ⋅ w ( h , w ) f_{out}(\mathbf x) = \sum^K_{h=1} \sum^K_{w=1}f_{in}(\mathbf p(\mathbf x,h,w))\cdot\mathbf w(h,w) fout(x)=h=1∑Kw=1∑Kfin(p(x,h,w))⋅w(h,w)
采样函数: p : Z 2 × Z 2 → Z 2 \mathbf p:Z^2 \times Z^2 \rarr Z^2 p:Z2×Z2→Z2枚举位置x的邻域,在图像卷积的情况下,也可表示为 p ( x , h , w ) = x + p ′ ( h , w ) \mathbf p(\mathbf x,h,w)=\mathbf x + \mathbf p'(h,w) p(x,h,w)=x+p′(h,w)。
权重函数: w : 2 → R c \mathbf w:^2 \rarr \mathbb R^c w:2→Rc在c维空间提供权重向量,用于c为采样输入特征向量计算内积。波器权重在输入图像上的任何地方都是共享的。
图卷积运算时将上述公式扩展到输入要素图位于空间图 V t V_t Vt上的情况。特征图 f i n t : V t → R c f^t_{in}:V_t \rarr R^c fint:Vt→Rc是图的每个节点上的向量。下一步是重新定义采样函数p和权重函数w。
采样函数:在节点 v t i v_{ti} vti的邻域集合 B ( v t i ) = { v t j ∣ d ( v t j , v t i ) ≤ D } , ( D = 1 ) B(v_{ti})=\{v_{tj}|d(v_{tj},v_{ti})\leq D\},(D=1) B(vti)={vtj∣d(vtj,vti)≤D},(D=1)。 d ( v t j , v t i ) d(v_{tj},v_{ti}) d(vtj,vti)表示从 v t j v_{tj} vtj到 v t i v_{ti} vti的最小长度,则采样函数 B ( v t i ) → V B(v_{ti}) \rarr V B(vti)→V可以表示为:
p ( v t i , v t j ) = v t j ( 2 ) \mathbf p(v_{ti},v_{tj}) = v_{tj} ~~~(2) p(vti,vtj)=vtj (2)
权重函数:权重函数通过根据空间顺序索引 ( c , K , K ) (c,K,K) (c,K,K)维度的张量来实现。所以没有给每一个neighbour一个唯一的标签,而是通过将一个联合节点的节点 v t i v_{ti} vti属性划分为固定数量的k个子集 B ( v t i ) B(v_{ti}) B(vti)来简化这个过程,其中每个子集都有一个数字标签。所以可以将邻域中的节点映射到其子集标签 l t i : B ( v t i ) → { 0 , . . . , K − 1 } l_{ti}:B(v_{ti})\rarr\{0,...,K-1\} lti:B(vti)→{0,...,K−1}。权函数 w ( v t i , v t j ) : B ( v t i ) → R c \mathbf w(v_{ti},v_{tj}):B(v_{ti})\rarr R^c w(vti,vtj):B(vti)→Rc可以通过索引(c,K)维的张量来实现:
w ( v t i , v t j ) = w ′ ( l t i ( v t j ) ) ( 3 ) \mathbf w(v_{ti},v_{tj}) = \mathbf w'(l_{ti}(v_{tj})) ~~~ (3) w(vti,vtj)=w′(lti(vtj)) (3)
空间图卷积:
f o u t ( v t i ) = ∑ v t j ∈ B ( v t i ) 1 Z t i ( v t j ) f i n ( p ( v t i , v t j ) ) ⋅ w ( v t i , v t j ) ( 4 ) f_{out}(v_{ti}) = \sum_{v_{tj}\in B(v_{ti})} \frac 1 {Z_{ti}(v_{tj})}f_{in}(\mathbf p(v_{ti},v_{tj}))\cdot \mathbf w(v_{ti},v_{tj}) ~~~(4) fout(vti)=vtj∈B(vti)∑Zti(vtj)1fin(p(vti,vtj))⋅w(vti,vtj) (4)
Z t i ( v t j ) = ∣ { v t k ∣ l t i ( v t k ) = l t i ( v t j ) } ∣ Z_{ti}(v_{tj})=| \{v_{tk}|l_{ti}(v_{tk})=l_{ti}(v_{tj})\}| Zti(vtj)=∣{vtk∣lti(vtk)=lti(vtj)}∣等于相应子集的基数。是为了平衡不同子集对输出的贡献。
则经过变换
f o u t ( v t i ) = ∑ v t j ∈ B ( v t i ) 1 Z t i ( v t j ) f i n ( v t j ) ⋅ w ( v t i , v t j ) ( 5 ) f_{out}(v_{ti}) = \sum_{v_{tj}\in B(v_{ti})} \frac 1 {Z_{ti}(v_{tj})}f_{in}(v_{tj})\cdot \mathbf w(v_{ti},v_{tj}) ~~~(5) fout(vti)=vtj∈B(vti)∑Zti(vtj)1fin(vtj)⋅w(vti,vtj) (5)
若将一个图像当做一个规则的2D网格,此公式可类似于标准的2D卷积。
时空建模:
可以定义一个简单的策略将空间图CNN扩展到空间时间域。即扩展邻域的概念,将时间上相连的关节包括在内:
B ( V t i ) = { v q j ∣ d ( v t j , v t i ) ≤ K , ∣ q − t ∣ ≤ ⌊ Γ / 2 ⌋ } B(V_{ti}) = \{v_{qj}|d(v_{tj},v_{ti}) \leq K,|q-t|\leq \lfloor \Gamma/2\rfloor \} B(Vti)={vqj∣d(vtj,vti)≤K,∣q−t∣≤⌊Γ/2⌋}
Γ \Gamma Γ主要控制包含在邻域图中的时间范围,也成为时间内核大小。在时空图中的卷积操作,需要采样函数和权函数。时间轴是有序的,直接修改标签图的 l S T l_{ST} lST以获得一个以 v t i v_{ti} vti根的时空邻域:
l S T ( v q j ) = l t i ( v t j ) + ( q − t + ⌊ Γ / 2 ⌋ ) × K l_{ST}(v_{qj}) =l_{ti}(v_{tj}) + (q-t+\lfloor\Gamma/2\rfloor)\times K lST(vqj)=lti(vtj)+(q−t+⌊Γ/2⌋)×K
第一项是 v t i v_{ti} vti中单帧情况的标签映射。
区分策略用来实现标签映射。
uni-labeling:每个上的特征向量将具有相同权重向量的内积。但是在单帧情况下相当于计算所有相邻节点的权重向量和平均特征向量之间的内积。有可能会丢失局部信息。 K = 1 , l t i ( v t i ) = 0 , ∀ i , j ∈ V K=1,l_{ti}(v_{ti})=0,\forall i,j \in V K=1,lti(vti)=0,∀i,j∈V。
Distance partitioning:根据节点到根节点的距离划分邻域集。D=1,所以当d=0时为根节点,其他为d=1的子集中,因此有两个不同的权重向量能模拟局部微分属性,例如关节之间的相对平移。 K = 2 , l t i ( v t j ) = d ( v t j , v t i ) K=2,l_{ti}(v_{tj})=d(v_{tj},v_{ti}) K=2,lti(vtj)=d(vtj,vti)。
Spatial configuration partitioning:在分割过程中利用身体骨骼是空间定位的配置。该策略将邻域分为三种:根节点本身,向心组(比根节点更接近骨骼重心的相邻节点),离心组。所有关节的平均坐标被视为其重心。这一策略的灵感来源于身体部位的运动可以大致分为同心运动和偏心运动。
l t i ( v t j ) = { 0 , i f r j = r i 1 , i f r j < r i 2 , i f r j > r i l_{ti}(v_{tj}) = \begin{cases} 0, if~~~ r_j = r_i \\ 1, if~~~ r_j \lt r_i \\ 2, if~~~ r_j \gt r_i \end{cases} lti(vtj)=⎩⎪⎨⎪⎧0,if rj=ri1,if rj<ri2,if rj>ri
r i r_i ri是训练集中所有帧从中心到关节i的平均距离。
在做动作时一个关节可能因为成群移出现在身体的多个部位。在时空图卷积的每一层上增加了一个可学习的掩码M。该掩码将基于专家系统中每个空间图边的学习重要性权重来缩放节点特征对其相邻节点的贡献。
单帧内关节的体内连接有表示自连接的邻接矩阵 A \mathbf A A和单位矩阵 I \mathbf I I来表示。在单帧情况下,具有第一分区策略的ST-GCN为:
f o u t = Λ − 1 2 ( A + I ) Λ − 1 2 f i n W . f_{out} = \mathbf \Lambda^{-\frac 1 2}(\mathbf A + \mathbf I)\mathbf \Lambda^{- \frac 1 2}\mathbf f_{in} \mathbf W. fout=Λ−21(A+I)Λ−21finW.
Λ i i = ∑ j ( A i j + I i j ) \mathbf \Lambda^{ii} = \sum_j(A^{ij}+I^{ij}) Λii=∑j(Aij+Iij)。多输出通道的权重向量堆叠形成权重矩阵 W \mathbf W W。时空情况下,特征图表示为(C,V,T)的张量。图卷积是由 1 × Γ 1 \times \Gamma 1×Γ的标准2D卷积实现,将结果在第二维度上乘以邻接矩阵 Λ − 1 2 ( A + I ) Λ − 1 2 \mathbf {\Lambda}^{-\frac 1 2}(\mathbf A + \mathbf I)\mathbf \Lambda^{-\frac 1 2} Λ−21(A+I)Λ−21。
具有多个子集划分的情况(距离划分和空间配置划分)也用这种策略。邻接矩阵被分解为几个矩阵: A + I = ∑ j A j \mathbf A + \mathbf I = \sum_j \mathbf A_j A+I=∑jAj
举例:
A 0 = I , A 1 = A f o u t = ∑ j Λ j − 1 2 A j Λ j − 1 2 f i n W j \mathbf A_0 = \mathbf I,\mathbf A_1 = \mathbf A \\ f_{out} = \sum_j \mathbf \Lambda_j^{-\frac 1 2}\mathbf A_j \mathbf \Lambda_j^{-\frac 1 2}\mathbf f_{in}\mathbf W_j A0=I,A1=Afout=j∑Λj−21AjΛj−21finWj
Λ j i i = ∑ k ( A j i k ) + α , α = 0.001 \Lambda^{ii}_j = \sum_k(A^{ik}_j)+\alpha,\alpha=0.001 Λjii=∑k(Ajik)+α,α=0.001避免 A j \mathbf A_j Aj出现空行。
对每个邻接矩阵用一个可学习的权重矩阵M来伴随。用 ( A + I ) ⊗ M (\mathbf A + \mathbf I)\otimes \mathbf M (A+I)⊗M来代替 A + I \mathbf A + \mathbf I A+I。用 A j ⊗ M \mathbf A_j \otimes \mathbf M Aj⊗M替代 A j \mathbf A_j Aj。 ⊗ \otimes ⊗代表矩阵之间的元素乘积, M \mathbf M M被初始化为全1矩阵。
网络架构和训练:ST-GCN在不同节点上共享权重。首先将输入骨架送到BN层来规范化数据。