TCSVT2020
丰富的激活图表卷积网络,用于基于骨骼的骨骼动作识别
现有方法大多使用完整的骨架,但是现实生活中,捕获不完全的或嘈杂的骨架是不可避免的,当某些信息关节被遮挡或受到干扰时,这可能会降低性能。探索在所有骨架关节上传播充分辨别特征使得分布式冗余表示将动作模型的灵敏程度降低到非标准骨架。具体地,一系列有序流延伸骨干GCN,该流是通过前面流较少激活的关节学习辨别特征。通过类激活映射class activation maps(CAM)测量每个GCN流的骨架关节激活程度。并且只有来自未激活的关节的信息将被传递到下一个流,通过其获得所有源关节丰富的特征。richly activated GCN(RA-GCN)。
显示了由于场景中的其他人而显示的一些遮挡行为的示例。嘈杂的数据将严重损坏模型的性能。因此,如何增强基于骨架的动作识别模型的稳健性仍然是一个紧迫和具有挑战性的问题。
在本文中,通过集合学习的成功启发,文章提出了一种基于GCN的多流模型,旨在从骨架运动序列中学习丰富的鉴别特征,从而提高所提出的模型的鲁棒性。方法中每条流的目的是探索以前流未激活的骨架关节上的一组有区别的特征。**骨架关节上的已经学习了的多余但互补的特征提供了处理嘈杂或不完整的骨架数据的有效策略。**例如,当我们认识到动作投掷时,最多的有区别的关节位于对象投掷过程中的两臂之间,而身体摇曳以及手的上下文的子行动也可以用来推断投掷的行动。
为了区分每个流中最具有信息性的关节,文章成功引入技术:class activation maps(CAM),它最初旨在在负责可视分类的最终CNN层可视化激活的热图。通过之前的GCN流获得的activation maps被累计作为掩模矩阵mask matrix来告诉新流哪些关节已经被激活了。新流将会被迫从未激活的关节中探索新的可区分的特征。richly activated GCN (RA-GCN),在丰富的发现和互补性特征将提高模型对非标准骨架的鲁棒性。第一次采用CAM来通过扩展激活骨架关节来减轻骨架行为识别中闭塞和抖动问题。
Y.-F. Song, Z. Zhang, and L. Wang, “Richly activated graph convolutional network for action recognition with incomplete skeletons,” in IEEE Int. Conf. Image Process (ICIP), 2019.
RA-GCN来探索所有骨架关节的充分可区别性的特征,构造多留网络,每个流都负责从一组激活的关节中提取特征。以这种方式,当由第一个流提取的关节被遮挡了,该模型还是可以从其他流中发现可区分的信息。
V是关节数,T是一个序列的帧数,输入数据 x \bf x x的大小为 C i n × T × V , C i n = 1 C_{in}\times T\times V,C_{in}=1 Cin×T×V,Cin=1。
提出的方法包括三个主要步骤:
a)数据预处理:关节的相对坐标比绝对坐标更具有信息量。在模型中应用相对坐标和运动特征的几何特征来增加动作识别的识别信息,在分发到所有GCN流之前要预处理输入数据。相对坐标可以被识别为每个帧中的所有关节和中心关节(中脊柱)的差异,所有关节都转换为相对坐标,对位置变换信息更具有鲁棒性。为了提取更具有信息的运动特征,计算 x ˙ t = x t + 1 − x t \dot{\bf x}_t={\bf x}_{t+1}-{\bf x}_t x˙t=xt+1−xt。
b)Richly Activated GCN
1)baseline:ST-GCN
spatial graph convolutional空间图卷积操作: 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 ( l t i ( v t j ) ) f_{out}(v_{ti})=\sum_{v_{tj}\in{\mathcal B}_{(v_{ti})}}\frac{1}{Z_{ti}(V_{tj})}f_{in}(v_{tj})\cdot {\bf w}(l_{ti}(v_{tj})) fout(vti)=∑vtj∈B(vti)Zti(Vtj)1fin(vtj)⋅w(lti(vtj))
应用邻接矩阵 A \bf A A后: f o u t = ∑ d = 0 D W d f i n ( Λ d − 1 2 A d Λ d − 1 2 ⊗ M d ) {\bf f}_{out}=\sum_{d=0}^D{\bf W}_d{\bf f}_{in}(\Lambda_d^{-\frac{1}{2}}{\bf A}_d\Lambda_d^{-\frac{1}{2}}\otimes{\bf M}_d) fout=∑d=0DWdfin(Λd−21AdΛd−21⊗Md),其中D是预定义的最大距离, A d {\bf A}_d Ad是距离d的邻接矩阵, Λ d i i = ∑ k A d i k + α \Lambda_d^{ii}=\sum_k A_d^{ik}+\alpha Λdii=∑kAdik+α是归一化对角矩阵。
空间图卷积块后是一个1×L的卷积层来从输出图 f o u t {\bf f}_{out} fout中提取时间信息,L是时间窗口的大小。时间和空间卷积层后面是BN层和一个relu层,整个ST-GCN层包含一个残差连接。在每个空间卷积层和时间卷积层中间加dropout层drop率0.5来避免过拟合。
2)激活模块:
RA-GCN中的激活模块来区分每个流的激活关节,然后通过积累前面流激活图来指导新流的学习过程。主要通过将CAM技术扩展到GCN领域来实现。原始CAM技术将CNN中特定类图像区域本地化,c类所有像素的分数 s c o r e c ( x , y ) = ∑ k w k c f k ( x , y ) score_c(x,y)=\sum_kw_k^cf_k(x,y) scorec(x,y)=∑kwkcfk(x,y), f k ( ⋅ , ⋅ ) f_k(·,·) fk(⋅,⋅)表示全局平均池化前的特征图,w是权重。文章中,用骨骼序列中t帧和i关节的特征图替换坐标(x,y),能够定位激活的关节。
激活图 m a p c s = ε ( s c o r e c s m a x ( s c o r e c s ) − δ ) map_c^s=\varepsilon(\frac{score_c^s}{max(score_c^s)}-\delta ) mapcs=ε(max(scorecs)scorecs−δ)。sth流的掩码矩阵 m a s k s = ( ∏ i = 1 s − 1 m a s k i ) ⊗ ( 1 − m a p c s − 1 ) mask_s=(\prod_{i=1}^{s-1}mask_i)\otimes(1-map_c^{s-1}) masks=(∏i=1s−1maski)⊗(1−mapcs−1),矩阵主元素相乘,在第一个流中掩码矩阵是一个全1矩阵,sth流的输入 x s = x ′ ⊗ m a s k s {\bf x}_s={\bf x}'\otimes mask_s xs=x′⊗masks,sth流的输入只包括前面流未激活的关节,因此RA-GCN将充分探索所有关节的可区分性的特征。
3)损失函数:
之前的文章中损失函数只监督总网络,本文中为每个单独的流扩展了许多额外的损耗,从而可以更有效的学习该特征。损失函数 L = − y log y ^ − ∑ s = 1 S y log y ^ s L=-{\bf y}\log\hat{\bf y}-\sum_{s=1}^S{\bf y}\log\hat{\bf y}_s L=−ylogy^−∑s=1Sylogy^s, y ^ s \hat{\bf y}_s y^s是sth流的输出, y ^ \hat{\bf y} y^是整个模型的输出,y是ground truth,C是类数量,S是流的数量。
发现骨架关节丰富特征RA-GCN,减少嘈杂或不完整骨骼的影响,提高鲁棒性。baseline ST-GCN。