第四课.图时空网络

行为识别与分析

行为识别与分析即 Human Activity Recognition 或 Human Behavior Recognition,简称HAR或HBR, HAR 旨在从未知视频序列中自动检测和识别某个对象的动作;分析和理解一个人的行为从根本上来说是一种广泛需要的应用,如视频索引、生物识别、监视和安全(比如无人超市);下面分别是10个短视频,通过网络可以得到这10个视频对应的行为类型:
fig1
一般,行为识别分析的框架为:
fig2

框架反映了,获取到数据后,再进行预处理,提取特征,特征提取机制是从图像或视频帧中计算数字或符号信息;然后,标签也相应地受到分类器对这些提取特征的影响;一般来说,人类的行动可以从外观、深度、光流和身体骨架等多种模式来识别;在这些模式中,动态的人体骨骼通常传递着与他人互补的重要信息;

总体看来,HAR的处理过程一般如下:

第一步,首先需要传感器采集数据,最常见的是用摄像头获取数据,摄像头可以分为4类:

  • 比如早期手机上使用的单目RGB摄像头,这是最广泛使用的摄像头;
  • 由两个单目摄像头组成的双目摄像头,并列排放,双目摄像头模仿了人的双眼,当人只使用一只眼睛时,不能有效理解被观测物体的距离信息,如果使用两只眼睛,则可以准确定位被测物体的距离;
  • RGBD摄像头,RGBD = RGB + Depth Map,Depth Map(深度图)是包含与视点的场景对象的表面的距离有关信息的图像或图像通道。其中,Depth Map 类似于灰度图像,只是它的每个像素值是传感器(通常为红外传感器)距离物体的实际距离;
  • 热感应摄像头;

第二步,人体姿态估计( Human Pose Estimation,HPE )定义为图像或视频中人体关节(又称关键点——肘关节、腕关节等)的定位问题;对视频里的每一帧图像进行姿态估计计算,得到每张图像中各个对象的关键点集合;

第三步,通过姿态估计的结果,结合时间变化下的姿态,与已有"知识"进行对比,得到视频中某个对象的行为类型;


以前一般摄像头通常30fps(帧每秒),现在已经达到60fps;

姿态估计常用数据集为微软的MSCOCO,未来的姿态估计 HPE 应用场景:

  • 自动驾驶
  • 自动导航
  • VR体验
  • 行为检测
  • 行为分析
  • 人机交互

时空图卷积网络

ST-GCN计算过程

时空图卷积网络 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 )是在图序列之上建立的:
fig3
输入连续几帧图像,分别进行姿态估计,获取每张图像的关键点,处理关键点作为图数据输入 ST-GCN,得到分类结果为 “Running”;


目前常用于行为识别的数据集:

  • 微软的Kinetics human action dataset (Kinetics) 包含从YouTube检索到的大约30万个视频片段;这些视频涵盖了多达400个人类行为类型,从日常活动、运动场景,到复杂的互动行为,数据集中的每个片段持续10s左右;
  • NTU RGB+D 包含60个动作类型和56880个视频样本;
  • NTU RGB+D120 通过增加另外60个类和另外57600个视频样本来扩展 NTU RGB+D,即 NTU RGB+D120 共有120个类和114480个样本;这两个数据集都包含每个样本的RGB视频、深度图序列、三维骨骼数据和红外视频。每个视频由3台Kinect V2摄像头同时采集;

使用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"这类行为中,腿部的关键点应该比其他关键点更重要;
fig4

图(a)中,假设有一个输入骨架的示例,关键点用蓝色圆点绘制,对感受野为1的滤波器,可以用红线画出其感受野,常用分区策略有3种:

  • 图b.单标记分区策略(uni-labeling),感受野中的所有节点具有相同的标记(绿色),感受野内不区分子集,相当于原始GCN输入;
  • 图c.距离划分(distance partitioning),将一个感受野分为两个子集,即节点本身子集(绿色)与邻节点子集(蓝色),引入基于距离的划分会加强GCN分析感受野内关键点之间的性质;
  • 图d.空间配置分区(spatial configuration partitioning),这种划分规则将一个感受野划分为 3 个子集,第一个子集为节点本身(绿色),第二个为空间位置上比本节点更靠近整个骨架重心(黑色,一帧图像中,所有关键点的平均坐标即为当前骨架的重心)的邻节点集合(蓝色),第三个为空间位置上比本节点更远离重心的邻节点集合(黄色);建立这种划分规则源于动力学分析中的相对静止,向心运动与离心运动定义;

fig5
其中 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=02Ds21AsDs21XWs)
其中, 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形式上的变化:

  • uni-labeling 使用的就是一般的GCN,为了体现出自连接性,会用 A + λ I A+\lambda I A+λI代替 A A A
  • distance partitioning 与 spatial configuration partitioning 需要具备类似注意力的机制,为了实现这两类策略,可以在处理不同的子集时,使用子集对应的邻接矩阵;
  • 比如,对于 distance partitioning 策略,distance partitioning 将一个感受野分为两个子集,即节点本身子集与邻节点子集,因此可以得到两个子集对应的邻接矩阵: A 0 = I A_{0}=I A0=I(节点本身), A 1 = A A_{1}=A A1=A(节点的邻节点)
  • 假设采取某个分区策略可以将感受野内节点分成 S S S 类,遍历每个节点的感受野后,可以得到 S S S 类图,因此,把这 S S S 个图( A s , D s , s ∈ S A_{s},D_{s},s\in S As,Ds,sS)与特征矩阵 X X X 输入ST-GCN后,计算为:
    X o u t = R e L U ( ∑ s ∈ S D s − 1 2 A s D s − 1 2 X W s ) X_{out}=ReLU(\sum_{s\in S}D_{s}^{-\frac{1}{2}}A_{s}D_{s}^{-\frac{1}{2}}XW_{s}) Xout=ReLU(sSDs21AsDs21XWs)

动作-结构图卷积网络

2019年论文"Actional-Structural Graph Convolutional Networks for Skeleton-based Action Recognition"提出动作-结构图卷积网络,即Actional-Structural Graph Convolutional Networks(AS-GCN),在ST-GCN后作出较大改进;
fig6

AS-GCN通过动作连接和结构连接捕获了节点之间的依赖关系,半透明红色的区域代表关键点活动的强烈程度;对比AS-GCN与ST-GCN,已知是一个"Walking"的视频,ST-GCN得到的脚部与手部的响应程度没有AS-GCN强烈;

在AS-GCN中,S指的是Structural Links,比如人体的骨架连接,注重动作的局部信息;A指的是Actional Links,反映了在某动作下,人体各个关键点之间的联系程度,注重全局信息;

AS-GCN的计算流程,即 Pipeline 为:
fig7
模型把推断的动作图A-links和扩展的结构图S-links反馈给AS-GCN块来学习空间特征,最后一个AS-GCN块连接到两个并行分支,分别用于识别动作和预测动作;加入预测动作的分支可以加强网络对于整体行为的认知能力;

对于一个动作,比如"Walking":
fig8

  • 1.骨架连接在有限的相邻范围内,如图 a;
  • 2.S-Links,允许"左手"连接到整个手臂,与ST-GCN不同,节点不只与一阶邻居相连,也可以与其他阶邻居相连,如图 b;
  • 3.A-Links,捕捉一定时间内动作间的特性关系,如图 c;

图b更多考虑的是与当前关键点距离较近的信息,关注的是局部信息;图c则会广泛连接,可以考虑到整体信息;不同动作下的A-Links可视化实例:
fig10

AS-GCN中有一个模块 A-links Inference Module (AIM);为了推断两个关节之间的A-link,将关节特征串接后送入AIM的编码器-解码器中:
fig9
编码器生成推断的A-Links,解码器根据A-Links和以前的动作生成未来的动作;从总体上大致看来,AS-GCN是在ST-GCN处理时空图的基础上加入A-Links分支,让网络感知整体关键点之间的联系

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值