动作识别(Action Recognition),就是从视频片段(可视为2D帧序列)中分辨人的动作类型,常用数据库包括UCF101,HMDB51等。相当于对视频进行分类。常用的方法有Two Stream,SlowFast,TSN,C3D,I3D等等
时序动作定位(Temporal Action Localization),不仅要知道一个动作在视频中是否发生,还需要知道动作发生在视频的哪段时间(包括开始和结束时间)。特点是需要处理较长的,未分割的视频。且视频通常有较多干扰,目标动作一般只占视频的一小部分。常用数据库包括HUMOS2014/2015, ActivityNet等。相当于对视频进行指定行为的检测。
时空动作检测(Spatial-temporal Action Detection),类似目标检测,不仅需要定位视频中可能存在行为动作的视频段,还需要将其分类,即:localization+recognition。而定位存在行为动作的视频段是一个更加艰巨的任务。常用的方法有SlowFast,SlowOnly等等。
K i n e t i c s − 400 数 据 集 上 的 动 作 识 别 Kinetics-400数据集上的动作识别 Kinetics−400数据集上的动作识别
A V A 数 据 集 上 的 时 空 动 作 检 测 AVA数据集上的时空动作检测 AVA数据集上的时空动作检测
N T U − R G B + D − 120 数 据 集 上 的 基 于 骨 骼 点 检 测 的 动 作 识 别 NTU-RGB+D-120数据集上的基于骨骼点检测的动作识别 NTU−RGB+D−120数据集上的基于骨骼点检测的动作识别
图像识别的四类任务:
动作识别vs姿态估计:姿态估计是在RGB图像或视频中描绘出人体的形状,包括关键点的检测,如下图所示。使用姿态估计的骨骼点数据也可作为动作识别的输入。
动作识别vs目标检测(Object Detection):目标检测是识别图片或者视频中有哪些物体以及物体的位置,也就是进行目标定位加上分类。如果用目标检测算法进行行为识别的弊端是缺乏前后语义相关性,假如摔倒的判断是由一个从"站立-滑倒-倒下"的过程,我们才能判断为摔倒,不能凭借目标检测算法检测到人是倒下的就判断为摔倒。
光流(optical flow):
当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流。
光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。
光流的物理意义
光流场
计算量大,耗时大。
需要考虑上下文。
网络结构的设计。
光流问题。
其他视觉任务的通病。
人 体 动 作 识 别 系 统 人体动作识别系统 人体动作识别系统
人体动作识别系统的流程为:首先捕获一段视频,并处理成动作表征的数据集,接着提取动作表征的特征,例如骨骼点(Pose-based),兴趣点(Interest Point-based)等等,然后进行特征降维,并分割为训练、检测、验证数据集。得到数据集后,在训练阶段,使用传统/深度学习方法,进行动作识别的模型训练,在检测阶段,将测试集数据输入到训练好的模型中,得到相应的行为识别检测结果。
在传统的行为识别模型中,通常都是先提取手工特征(HOG,HOF,Dense Trajectories等),然后使用分类器进行分类。其中iDT (improved dense trajectories) 是深度学习进入该领域前传统方法中效果最好,稳定性最好,可靠性最高的方法,不过算法速度很慢(在于计算光流速度很慢)。
iDT的基本思路为利用光流场来获得视频序列中的一些轨迹,再沿着轨迹提取HOF,HOG,MBH,trajectory4种特征,其中HOF基于灰度图计算,另外几个均基于dense optical flow(密集光流)计算。最后利用FV(Fisher Vector)方法对特征进行编码,再基于编码结果训练SVM分类器。
Dense Trajectories and Motion Boundary Descriptors for Action Recognition
Action Recognition with Improved Trajectories
双流架构的开山之作:Two Stream CNN,如图所示。
将视频分成空间域和时间域,空间域以单帧RGB作为输入,携带有关视频中描绘的场景和对象的信息。时间域以多帧密度光流场为输入,能够描述多帧之间的动作变化。因此,Two Streams网络分为两个分支:
Two-stream convolutional networks for action recognition in videos.
类似Two Stream,SlowFast Stream也是由双流构成,一条为快速流 (Fast Stream),一条为慢速流 (Slow Stream), 而传统的双流架构中每条数据流代表不同的模态(RGB+光流)。
Two-stream convolutional networks for action recognition in videos
3D convolution 直接将2D卷积扩展到3D(添加了时间维度),直接提取包含时间和空间两方面的特征。可直接使用单RBG视频流进行3D卷积输出结果,属于端到端网络,方法较快,但是精度会比双流网络稍差一点。为了提升精度,可以加入双流架构。该方法的开山之作是C3D。
Learning Spatiotemporal Features with 3D Convolutional Networks
因为视频除了空间维度外,最大的痛点是时间序列问题。而众所周知,RNN网络在NLP方向取得了傲人的成绩,非常适合处理序列。所以除了上述两大类方法以外,另外还有一大批的研究学者希望使用RNN网络思想来解决动作识别问题。
该类框架的思想是使用CNN处理空间信息,使用LSTM处理时序信息。LCRN为代表之作,如图所示。
也可以进一步加入双流架构提升精度。
Long-term Recurrent Convolutional Networks for Visual Recognition and Description
人体的骨骼图本身就是一个拓扑图,因此将GCN运用到动作识别上是一个非常合理的想法。但不同于传统的图结构数据,人体运动数据是一连串的时间序列,在每个时间点上具有空间特征,而在帧于帧之间则具有时间特征,如何通过图卷积网络来综合性的发掘运动的时空特征,是目前的行为识别领域的研究热点。例如ST-GCN。
Spatial Temporal Graph Convolutional Networks for Skeleton Based Action Recognition
待续