行为识别与分析即 Human Activity Recognition 或 Human Behavior Recognition,简称HAR或HBR, HAR 旨在从未知视频序列中自动检测和识别某个对象的动作;分析和理解一个人的行为从根本上来说是一种广泛需要的应用,如视频索引、生物识别、监视和安全(比如无人超市);下面分别是10个短视频,通过网络可以得到这10个视频对应的行为类型:
一般,行为识别分析的框架为:
框架反映了,获取到数据后,再进行预处理,提取特征,特征提取机制是从图像或视频帧中计算数字或符号信息;然后,标签也相应地受到分类器对这些提取特征的影响;一般来说,人类的行动可以从外观、深度、光流和身体骨架等多种模式来识别;在这些模式中,动态的人体骨骼通常传递着与他人互补的重要信息;
总体看来,HAR的处理过程一般如下:
第一步,首先需要传感器采集数据,最常见的是用摄像头获取数据,摄像头可以分为4类:
第二步,人体姿态估计( Human Pose Estimation,HPE )定义为图像或视频中人体关节(又称关键点——肘关节、腕关节等)的定位问题;对视频里的每一帧图像进行姿态估计计算,得到每张图像中各个对象的关键点集合;
第三步,通过姿态估计的结果,结合时间变化下的姿态,与已有"知识"进行对比,得到视频中某个对象的行为类型;
以前一般摄像头通常30fps(帧每秒),现在已经达到60fps;
姿态估计常用数据集为微软的MSCOCO,未来的姿态估计 HPE 应用场景:
时空图卷积网络 Spatial Temporal Graph Convolution Networks,简称 ST-GCN,由2018年的一篇论文提出,指出使用GNN处理行为识别问题,论文名为:Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition,在 ST-GCN 出现之前,行为识别的方法大部分基于传统的RNN结合Mask-RCNN或RNN结合OpenPose方法;
时空图卷积网络( ST-GCN )是在图序列之上建立的:
输入连续几帧图像,分别进行姿态估计,获取每张图像的关键点,处理关键点作为图数据输入 ST-GCN,得到分类结果为 “Running”;
目前常用于行为识别的数据集:
使用GNN处理行为识别问题时,图数据: G ( V , E ) G(V,E) G(V,E),其节点表示人体的关节,当使用基础模型完成HPE时,可以得到图像中的关键点,每个关键点有各自的较高层语义信息(比如头部,手掌,腰部对应的特征张量)+ 所在图像中的位置,用这两部分信息组成节点的特征;
每帧图像,节点间的边符合人体的自然连通性,比如手部与肘部相连接,腿关节部与腰部相连接;特别之处在于:相邻两帧图像,相同的关键点会进行连接,整体看来,就构成了时间维度;注意,现在的一个视频中的目标对象,对应着一个图,这个图不仅包含了各帧图像的姿态信息,还包含了时间维度上,关键点之间的变化信息;
将以上的图(邻接矩阵与特征矩阵 A , D , X A,D,X A,D,X)输入GCN:
X o u t = R e L U ( D ~ − 1 2 ( A + λ I ) D ~ − 1 2 X W ) X_{out}=ReLU(\widetilde{D}^{-\frac{1}{2}}(A+\lambda I)\widetilde{D}^{-\frac{1}{2}}XW) Xout=ReLU(D −21(A+λI)D −21XW)
将GCN的输出传给分类器,即得到图的类型
ST-GCN引入了一个新概念:分区策略 Partitioning Strategies;
分区策略可以更好地帮助GCN计算,其本质是希望达到一种类似注意力的作用,比如在"Playing football"这类行为中,腿部的关键点应该比其他关键点更重要;
图(a)中,假设有一个输入骨架的示例,关键点用蓝色圆点绘制,对感受野为1的滤波器,可以用红线画出其感受野,常用分区策略有3种:
其中 r i r_{i} ri是图像中的重心到关节 i i i的距离, l t i ( v t j ) l_{ti}(v_{tj}) lti(vtj)代表一种空间度量的类型,假设当前感受野的中心是节点 v t i v_{ti} vti( v t i v_{ti} vti:第 t t t帧图像中的关键点 i i i), l t i ( v t j ) l_{ti}(v_{tj}) lti(vtj)即区分了感受野中的其他关键点 v t j v_{tj} vtj与当前关键点 v t i v_{ti} vti,到重心的远近类型(相对静止,向心,离心);
将分区策略与GCN融合,其本质是对不同的子集采用不同的变换,这个变换是可学习的,即可以称之为是GNN的一种注意力;
假设采用 spatial configuration partitioning 策略,ST-GCN变成:
X o u t = R e L U ( ∑ s = 0 2 D s − 1 2 A s D s − 1 2 X W s ) X_{out}=ReLU(\sum_{s=0}^{2}D_{s}^{-\frac{1}{2}}A_{s}D_{s}^{-\frac{1}{2}}XW_{s}) Xout=ReLU(s=0∑2Ds−21AsDs−21XWs)
其中, A s A_{s} As为只考虑子集 s s s下的邻接矩阵, D s D_{s} Ds为 A s A_{s} As对应图的度矩阵,不同的子集对应着不同的线性变换 W s W_{s} Ws;由于 spatial configuration partitioning 策略可以得到3个子集,因此 s ∈ { 0 , 1 , 2 } s\in\left\{0,1,2\right\} s∈{0,1,2};
分析GCN形式上的变化:
2019年论文"Actional-Structural Graph Convolutional Networks for Skeleton-based Action Recognition"提出动作-结构图卷积网络,即Actional-Structural Graph Convolutional Networks(AS-GCN),在ST-GCN后作出较大改进;
AS-GCN通过动作连接和结构连接捕获了节点之间的依赖关系,半透明红色的区域代表关键点活动的强烈程度;对比AS-GCN与ST-GCN,已知是一个"Walking"的视频,ST-GCN得到的脚部与手部的响应程度没有AS-GCN强烈;
在AS-GCN中,S指的是Structural Links,比如人体的骨架连接,注重动作的局部信息;A指的是Actional Links,反映了在某动作下,人体各个关键点之间的联系程度,注重全局信息;
AS-GCN的计算流程,即 Pipeline 为:
模型把推断的动作图A-links和扩展的结构图S-links反馈给AS-GCN块来学习空间特征,最后一个AS-GCN块连接到两个并行分支,分别用于识别动作和预测动作;加入预测动作的分支可以加强网络对于整体行为的认知能力;
图b更多考虑的是与当前关键点距离较近的信息,关注的是局部信息;图c则会广泛连接,可以考虑到整体信息;不同动作下的A-Links可视化实例:
AS-GCN中有一个模块 A-links Inference Module (AIM);为了推断两个关节之间的A-link,将关节特征串接后送入AIM的编码器-解码器中:
编码器生成推断的A-Links,解码器根据A-Links和以前的动作生成未来的动作;从总体上大致看来,AS-GCN是在ST-GCN处理时空图的基础上加入A-Links分支,让网络感知整体关键点之间的联系