美文网首页
基于深度学习的视频行为分析总结

基于深度学习的视频行为分析总结

作者: 加油11dd23 | 来源:发表于2020-09-05 19:47 被阅读0次

一、什么是视频行为分析?

基于视频的行为识别包括两个主要问题,即行为定位和行为识别。行为定位即找到有行为的视频片段,与2D图像的目标定位任务相似。而行为识别即对该视频片段的行为进行分类识别,与2D图像的分类任务相似。

这里有一些概念要区分开
1.Hand gesture, Action, Activity
Hand gesture:集中于处理视频片段中单人的手势

Action:短时间的行为动作,场景往往是短视频片段的单人行为,比如Throw,catch,clap等

Activity:持续时间较长的行为,场景往往是较长视频中的单人或多人行为,例如Reading a book,making a phone call, eating, talking to each other, hugging,palying basketball等

这里提一句,Action和Activity的主要区别在于Action是指动作,Activity是指行为,可以认为Action的粒度更细,而Activity的粒度更粗,也可以说Action是Activity的子集。但其实在实际的算法中,有时候也没必要将二者完全区分开。

2.Classification,Detection
Classification:给定预先裁剪好的视频片段,预测其所属的行为类别

Detection:视频是未经过裁剪的,需要先进行人的检测where和行为定位(分析行为的始末时间)when,再进行行为的分类what。

我们这里所涉及到的行为识别Action Recignition可能是Hand gesture/Action/Activity和Classification/Detection任意组合情况,不做太绝对的区分。但是通常所说的行为识别更偏向于对时域预先分割好的序列进行行为动作的分类,即 Trimmed Video Action Classification。

二、视频行为分析常用的数据集

1、HMDB-51

51个类别,6766个短视频

2、UCF=101

101个类别,13320个短视频
目前动作类别数、样本数最多的数据集之一

3、Kinetics-700 dataset

650000个视频,700个类别。
2019年的数据集

三、传统方法

传统的方法通过提取关键点的特征来对视频进行描述,以时空关键点,密集轨迹方法等为代表。

在传统的行为识别模型中,通常都是先提取手工特征(HOG,HOF,Dense Trajectories等),然后使用分类器进行分类,iDT是传统方法中最经典、最优的模型,iDT的主要论文包括《Dense Trajectories and Motion Boundary Descriptors for Action Recognition》和《Action Recognition with Improved Trajectories》。

1、时空关键点(space-time interest points)

基于时空关键点的核心思想是:视频图像中的关键点通常是在时空维度上发生强烈变化的数据,这些数据反应了目标运动的重要信息。

比如一个人挥舞手掌,手掌一定会在前后帧中发生最大移动,其周围图像数据发生变化最大。而这个人的身体其他部位却变化很小,数据几乎保持不变。如果能将这个变化数据提取出来,并且进一步分析其位置信息,那么可以用于区分其他动作。

时空关键点的提取方法是对空间关键点方法的扩展,空间关键点的提取则是基于多尺度的图像表达,这里的时空关键点就是将2D Harris角点的检测方法拓展到了3D。

得到了这些点之后,基于点的一次到四次偏导数,组合成一个34维的特征向量,使用k-means对这些特征向量进行了聚类。

除了harris,经典的2D描述子SIFT被拓展到3D空间,示意图如下:


2D-sift+3D-sift.png

上图从左至右分别展示了2D SIFT特征,多个时间片的2D SIFT特征,以及3D SIFT特征,后两者的区别在于计算区域的不同,3D SIFT的每一个关键点包含3个值(幅度和2个角度)

统计关键点时空周围的梯度直方图就可以形成特征描述子,然后对所有的特征描述子进行k-means聚类,划分类别,形成词汇“word”。所有不同word就构成了一个vocabulary,每个视频就可以通过出现在这个vocabulary中词汇的数量来进行描述,最后训练一个SVM或者感知器来进行动作识别。

除了以上的两种特征,还有HOG3D等特征生成方法

2、密集轨迹(dense-trajectories)

时空关键点是编码时空坐标中的视频信息,而轨迹法iDT(improved Dense Trajectories)是另一种非常经典的方法,它追踪给定坐标图像沿时间的变化。

DT、iDT算法包含三个步骤:密集采样特征点,特征轨迹跟踪和基于轨迹的特征提取,后续再进行特征编码和分类。

iDT算法.png
密集采样是对不同尺度下的图像进行规则采样,不过真正被用于跟踪等不是所有点,因为平滑区域的点没有跟踪意义,通过计算每个像素点自相关矩阵的特征值,并设置阈值去除低于阈值的特征点来实现这个选择。

对轨迹的追踪是通过光流,首先计算图像光流速率(ut, vt),然后通过这个速率来描述图像运动轨迹:


image.png

wt是密集光流场,M是中值滤波器,得到的一系列点形成了一个轨迹。由于轨迹会随着时间漂移,可能会从初始位置移动到很远的地方。所以论文对轨迹追踪距离做了限制,首先将帧数限制在L内,而且轨迹空间范围限制在WxW范围,如果被追踪点不在这个范围,就重新采样进行追踪,这样可以保证轨迹的密度不会稀疏。

除了轨迹形状特征,还提取了HOG,HOF(histogram of flow)以及MBH(motion boundary histogram)等特征。其中HOG特征计算的是灰度图像梯度的直方图,HOF计算的是光流的直方图,MBH计算的是光流梯度的直方图,也可以理解为在光流图像上计算的HOG特征,它反应了不同像素之间的相对运动。

以HOG特征为例,在一个长度为L的轨迹的各帧图像上取特征点周围大小为N×N的区域,将其在空间和时间上进行划分。假如空间划分为22,时间划分为3份,bins为8,则HOG特征维度为2238=96,HOF特征和MBH特征计算类似。

提取出HOG等信息后,接下来具体的分类与上面基于时空关键点的方法类似,不再赘述。

四、视频行为识别深度学习方法

当前基于CNN的方法不需要手动提取特征,性能已经完全超越传统方法,以3D卷积,RNN/LSTM时序模型,双流法等模型为代表。

1、3D卷积

有直接用2D卷积的方法,还有一些3D卷积的方法,比如早期的C3D(这个工作就是把二维卷积推广到三维。把VGG的网络中33的卷积核变成了33*3), res-C3D等等,还有2D和3D结合的ECO等等。

image.png

视频相对于图像多出了一个维度,而3D卷积正好可以用于处理这个维度,因此也非常适合视频分类任务,缺点是计算量比较大,下图展示了一个简单的3D模型。


image.png

2、RNN/LSTM

有利用逐帧的RGB,抽特征,输入到RNN里的分类,也有抽取姿态,再用RNN分类的方法。


image.png

在序列建模的时候,视频是分段的,不同段有各自不同的语义,一个工作叫Deep Segmental Model,就是把视频分成很多段,针对每一段抽取特征,当然该工作也注意到很重要的一点:不同段的特征的重要性是不一样的,然后需要把重要性考虑到识别模型。


Deep Segmental Network.png
下面的工作把TSN网络推广到弱监督的识别和检测,视频中许多时间段并不包括我们感兴趣的行为,这个方法把注意机制用于非截断视频行为的识别与检测。
UntrimmedNet.png

视频和语音信号都是时序信号,而RNN和LSTM正是处理时序信号的模型。如下图所示,通过CNN对每一个视频帧提取特征,使用LSTM建模时序关系。


image.png

3、双流法(two-stream)

结合2D/3D卷积与光流,2D卷积捕捉一些appearance,3D卷积捕捉appearance和时序的关系,光流主要捕捉运动和时序的变化,这里面I3D比较典型。


image.png

双流法包含两个通道,一个是RGB图像通道,用于建模空间信息。一个是光流通道,用于建模时序信息。两者联合训练,并进行信息融合。


image.png

双流模型是视频分类中非常重要的一类模型,在特征的融合方式,光流的提取等方向都有非常多的研究,关于更多模型的解读如果感兴趣可以移步有三AI知识星球中的模型结构1000变板块。

4、非端到端方法

先做分割,之后提取出关键点或指标,再依靠关键点序列或指标序列做分类。

5、基于轨迹的方法

深度学习以前的SOTA就是基于轨迹的iDT方法,最近一个比较典型的是商汤出的一篇基于deformable 卷积和轨迹的方法。

通过光流跟踪的运动轨迹,使用运动轨迹的好处是,可以比较好的在运动比较显著的区域进行特征的集中提取,然后对传统方法沿着运动轨迹提取的一些卷积特征做下采样操作


image.png
image.png
image.png

处理视频的时候数据量比较大,但很多视频应用对实时性有要求。提出了一种用运动向量代替光流的方法,运动向量只存在于压缩视频MPEG或者h.264中,无需计算就可获得;当然直接用运动向量会造成识别率很大的降低。事实上,该文章是把光流训练出来的网络作为一个老师来教运动向量的网络。通过这样的方法,在识别率没有下降太大的情况下,可以每秒钟用GPU做到400帧,也就是使用一个GPU可以支撑大概10路视频。


image.png

6、skeleton-based

包含ST-NBNN,Deformable Pose Traversal Convolution,以及最近比较火热的图卷积方法(例如ST-GCN)
ST-NBNN:Spatio-Temporal Naive-Bayes Nearest-Neighbor (ST-NBNN) for Skeleton-Based Action Recognition 2017cvpr

Deformable pose traversal convolution+LSTM:Deformable Pose Traversal Convolution for 3D Action and Gesture Recognition 2018ECCV

ST-GCN:Spatial Temporal Graph Convolutional Networks for Skeleton Based Action Recognition AAAI2018

五、视频行为检测传统方法

较早的时候,就是伯克利的一个组把RCNN也运用到视频检测中,通过动态规划的方法把RCNN检测的框连接起来。


image.png

后面,法国国家信息与自动化研究所(INRIA)改进了这个工作,一个是改进了提proposal的方法,另外一个是加了跟踪的环节。


image.png
后面又有研究人员把时空的特征联合起来形成proposal,在跟踪的时候还加入了一些框的合并机制来进一步提高精度。
image.png

17年的一个工作是,香港中文大学研究组将视频的结构信息,以及上下文信息用到行为的检测中去,取得了很好的效果。


image.png

六、一些具体的工作介绍

基于LSTMs的无监督学习视频表征(ICML 2015)

摘要:本文主要研究利用LSTM来学习视频的表征,利用LSTM Encoder将输入的视频序列映射到一个固定长度的表征,然后利用单层/多层的LSTM Decoder对得到的表征进行解码,以应用到各种不同的任务当中,例如重构输入视频序列或者预测未来的视频序列。本文主要在两种输入序列上进行了实验,其一是图像像素组成的视频帧patch序列,其二则是视频帧通过预训练的卷积神经网络得到的高阶表征。本文探索了各种不同的网络设计方法,例如LSTM Decoder是否应以生成的输出为条件,同时通过定性分析的方法探索了模型如何利用学习到的视频表征来推断过往/未来视频帧。同时,本文尝试对学习到的表征进行可视化分析和解释,并且利用更长时长的视频和领域外的数据对模型进行压力测试。同时本文通过对表征模型进行微调,应用到监督学习任务--human action recognition on UCF101/HMDB-51数据集当中,通过实验证明,表征学习可以提升分类的准确率,特别是当用于监督学习任务的样本很少的时候,即便模型在关联性不大的数据集(YouTube视频)上面进行预训练也能提升动作识别的表现。

image.png

《SlowFast Networks for Video Recognition(ICCV 2019)

摘要:我们提出了SlowFast网络用于视频识别,我们的模型包含两部分

(1)一个低帧率运行的Slow pathway,用来捕获空间语义信息。

(2)一个高帧率运行的Fast pathway,以精细的时间分辨率捕获运动信息。

通过减少通道容量把Fast pathway设计的非常轻量级,但可以学习到有用的时域信息用于视频识别。我们的模型在视频action classification和detection上都取得了strong表现,且我们的SlowFast概念明确指出了重大改进之处。我们的模型在主要的视频识别benchmarks(包括Kinetics, Charades和AVA)上都取去了SOTA精度。代码开源~

七、总结

image.png

1、RGB行为识别目前的主流基本上就是Two-Stream和3D conv的方法

2、虽然在UCF-101数据集上评测指标已经达到了98.5%,但是视频的分类目前远没有图像分类成熟,面临着巨大的类内方差,相机运动和背景干扰,数据不足等难题。

1、多模态信息融合。即不只是采用图像信息,还可以融合语音等信息。
2、多标签视频分类。与多标签图像分类类似,现实生活中的视频可能有多个标签。
3、行为定位。一段视频中的行为有开始和结束,如何定位到真正有效的片段是之后的视频分类的重要前提。

八、附录

附录-术语表

Video classification:视频分类

Video captioning:视频描述生成

Clip:片段

Volume:域

Frame:帧

spatial-temporal:时空

sequence:序列

appearance:表观

video representations:视频描述

feature representation:特征描述

descriptor:描述符

frame-level:帧层

video-level:视频层

segmentation:分割

hand-crafted feature:人工设计的特征

state-of-the-art:最高水平

off-the-shelf:现有

Untrimmed Video Classification:videos can
contain more than one activity 暂未找到合适的中译文

Trimmed Activity Classification:a trimmed video
clip that contains a single activity instance暂未找到合适的中译文

图像表示:Image Representation

运动检测与跟踪:Motion Detection and Tracking

边缘:edge

图像分割:Image segmentation

纹理特征提取:feature extraction

局部特征:local features

人工标注:Ground-truth

自动标注:Automatic Annotation

运动检测与跟踪:Motion Detection and Tracking

九、参考:

https://zhuanlan.zhihu.com/p/79521655
https://zhuanlan.zhihu.com/p/27415472 https://zhuanlan.zhihu.com/p/103566134
https://zhuanlan.zhihu.com/p/28179049
对目前网上的资料的汇总,如有侵权,非常抱歉,私聊修改。

相关文章

  • 基于深度学习的视频行为分析总结

    一、什么是视频行为分析? 基于视频的行为识别包括两个主要问题,即行为定位和行为识别。行为定位即找到有行为的视频片段...

  • 研究方向

    研究方向:航拍视频智能分析/基于深度学习的故障分析/航拍遥感图像识别 项目:航路项目组

  • 明景车辆大数据智能分析识别系统

    明景车辆大数据分析检索系统基于视频流、图片流的智能车辆分析研判产品,基于国际领先的深度学习与大数据挖掘技术,将海量...

  • 明景车辆大数据智能分析系统

    产品简介 明景车辆大数据分析检索系统基于视频流、图片流的智能车辆分析研判产品,基于国际领先的深度学习与大数据挖掘技...

  • 基于深度学习的视频检测分类综述(1)

    视频检测分类常用于视频分类,目标行为检测。本博客详细的介绍目前常用的基于深度学习的视频检测分类方法,分别从不同的方...

  • 新书:PyTorch深度学习入门与实战

    本书主要内容如下: 《PyTorch 深度学习入门与实战(案例视频精讲)》是基于 PyTorch 的深度学习入门和...

  • 基于深度学习的视频推荐

    一、引言 最近看了一篇有关深度学习在 google YouTube 视频推荐上的应用,现在将该文章的主要思路整理一...

  • 《人工智能基础》13/91天阅读

    光流->光流直方图 基于深度学习的视频行为识别 双流卷积神经网络: 水平和垂直光流灰度图,可以作为卷积神经网络的输...

  • SpringMVC源码分析总结JDK源码分析

    SpringMVC源码分析总结JDK源码分析15套java框架源码深度剖析视频教程(spring5,mybatis...

  • 60-R语言中的神经网络

    《深度学习精要(基于R语言)》学习笔记 1、什么是深度学习 机器学习主要用于开发和使用那些从原始数据中学习、总结出...

网友评论

      本文标题:基于深度学习的视频行为分析总结

      本文链接:https://www.haomeiwen.com/subject/lnpfektx.html