行为检测调研

背景

视频理解是目前计算机视觉领域非常热,也是极具挑战力的一个方向。视频理解方向包含众多的子研究方向,以CVPR组织的ACTIVITYNET为例,2017年总共有5个Task被提出。

  • Task1:未修剪视频分类(Untrimmed Video Classification)。这个有点类似于图像的分类,未修剪的视频中通常含有多个动作,而且视频很长。有许多动作或许都不是我们所关注的。所以这里提出的Task就是希望通过对输入的长视频进行全局分析,然后软分类到多个类别。

  • Task2:修剪视频识别(Trimmed Action Recognition)。这个在计算机视觉领域已经研究多年,给出一段只包含一个动作的修剪视频,要求给视频分类。

  • Task3:时序行为提名(Temporal Action Proposal)。这个同样类似于图像目标检测任务中的候选框提取。在一段长视频中通常含有很多动作,这个任务就是从视频中找出可能含有动作的视频段。

  • Task4:时序行为定位(Temporal Action Localization)。相比于上面的时序行为提名而言,时序行为定位于我们常说的目标检测一致。要求从视频中找到可能存在行为的视频段,并且给视频段分类。

  • Task5:密集行为描述(Dense-Captioning Events)。之所以称为密集行为描述,主要是因为该任务要求在时序行为定位(检测)的基础上进行视频行为描述。也就是说,该任务需要将一段未修剪的视频进行时序行为定位得到许多包含行为的视频段后,对该视频段进行行为描述。比如:man playing a piano

而该调研报告主要聚焦于行为识别和行为检测。也就是上述任务描述中的Task2和Task4.

行为分类

行为分类(Trimmed Action Recognition)是视频理解方向很重要的一个问题,至今为止已经研究多年。深度学习出来后,该问题被逐步解决,现在在数据集上已经达到了比较满意的效果。如第2章所述 。行为分类问题简单的来说就是:对于给定的分割好的视频片段,按照其中的人类行为进行分类。比如女孩化妆、男生打球、跑步等等。该任务不需要确定视频中行为的开始时间和结束时间。

在深度学习出现之前,表现最好的算法是iDT[1][2],之后的工作基本上都是在iDT方法上进行改进。IDT的思路是利用光流场来获得视频序列中的一些轨迹,再沿着轨迹提取HOF,HOG,MBH,trajectory4中特征,其中HOF基于灰度图计算,另外几个均基于dense optical flow(密集光流计算)。最后利用FV(Fisher Vector)方法对特征进行编码,再基于编码训练结果训练SVM分类器。深度学习出来后,陆续出来多种方式来尝试解决这个问题,包含:Two-Stream[3][4]、C3D(Convolution 3 Dimension)[6],还有RNN[7]

 

传统的行为识别方法:

1、IDT(improved dense trajectories)特征:“Action recognition with improved trajectories”

  • IDT方法(2013)是深度学习进入该领域钱效果最好,稳定性最好,可靠性最高的方法。这个方法是之前(Dense Trajectories and Motion Boundary Descriptors for Action Recognition)的改进。该方法解释见:https://blog.csdn.net/wzmsltw/article/details/53023363  算法代码解析见:https://blog.csdn.net/wzmsltw/article/details/53221179

  • 基本思路:DT算法的基本思路为利用光流场来获得视频序列中的一些轨迹,再沿着轨迹提取HOF,HOG,MBH,trajectory 4种特征,其中HOF基于灰度图像计算,另外几个均基于dense optical flow计算。最后利用FV(Fisher Vector)方法对特征进行编码,再基于编码结果训练SVM分类器,而IDT改进的地方在于利用前后两帧视频之间的光流以及SURF关键点进行匹配,从而消除/减弱相机带来的影响,改进后的光流图像被称为warp optical flow

深度学习中行为识别方法:

1、TWO STREAM方法

Two-Stream方法是深度学习在该方向的一大主流方向。最早是VGG团队在NIPS上提出来的[3]。其实在这之前也有人尝试用深度学习来处理行为识别,例如李飞飞团队[8],通过叠加视频多帧输入到网络中进行学习,但是不幸的是这种方法比手动提取特征更加糟糕。当Two-Stream CNN出来后才意味着深度学习在行为识别中迈出了重大的一步。

Two-Stream CNN网络顾名思义分为两个部分,一部分处理RGB图像,一部分处理光流图像。最终联合训练,并分类。这篇文章主要有以下三个贡献点。

  • 首先,论文提出了two-stream结构的CNN网络,由空间(RGB)和时间(光流)两个维度的网络组成
  • 其次,作者提出了利用网络训练多帧密度光流,以此作为输入能在有限训练数据的情况下取得不错的结果。
  • 最后,采用多任务训练的方法将两个行为分类的数据集联合起来,增加训练数据,最终在两个数据集上都取得了更好的效果(作者提到,联合训练也可以去除过拟合的可能)。

网络结构:

(1)、14年Two-stream convolutional networks for action recognition in videos

  •  首次提出two stream网络,主要分为两个流,空间流处理静止图像帧,得到形状信息,时间流处理连续多帧稠密光流,得到运动信息。两个流最后经过softmax后,做分类分数的融合,可以采用平均法或者是SVM。不过这两个流都是二维卷积操作。
  • 论文没有公开源代码。

 (2)、15年Towards Good Practices for Very Deep Two-Stream ConvNets

同样是two stream网络,空间流是224x224x3,时间流是224x224x10。最后在训练时做了几个策略:

  • 预训练:空间流在ImageNet上预训练,时间流中的光流转换为0-255灰度图,在ImageNet上预训练。
  • 更小的learning_rate:时间为0.005,每1万次迭代减少1/10,3万次停止。空间为0.001,每4000次迭代减少1/10,1万次停止。
  • more data—data argumentation:由于数据集过小的原因,采用裁剪增加数据集,4个角和1个中心,还有各种尺度的裁剪。从{26,224,192,168}中选择尺度与纵横比进行裁剪。
  • high dropout rate
  • GPU训练
  1. 此论文有公开源代码,用的是pytorch写的。

 (3)、16年Temporal Segment Networks Towards Good Practices for Deep Action Recognition

提出两点贡献:

  • 提出一个temporal segment network(TSN)网络,基于视频的动作识别网络,结合了稀疏时间采样策略,和大规模时间结构建模。(将视频分成K个序列,随机抽取一个,网络在所有的序列上共享参数)
  • 一系列优化的策略,估计跟上一篇差不太多。

(4)、16年Convolutional Two-Stream Network Fusion for Video Action Recognition

 (5)、17年Hidden Two-Stream Convolutional Networks for Action Recognition

2、C3D(3-Dimensional Convolution)

C3D(3-Dimensional Convolution)[6]是除了Two-Stream后的另外一大主流方法,但是目前来看C3D的方法得到的效果普遍比Two-Stream方法低好几个百分点。但是C3D任然是目前研究的热点,主要原因是该方法比Two-Stream方法快很多,而且基本上都是端到端的训练,网络结构更加简洁。该方法思想非常简单,图像是二维,所以使用二维的卷积核。视频是三维信息,那么可以使用三维的卷积核。所以C3D的意思是:用三维的卷积核处理视频。

3、CDC网络

CDC网络是在C3D网络基础上,借鉴了FCN的思想。在C3D网络的后面增加了时间维度的上采样操作,做到了帧预测(frame level labeling)。以下是文章主要贡献点。

网络步骤如下所示。

输入的视频段是112x112xL,连续L帧112x112的图像 经过C3D网络后,时间域上L下采样到 L/8, 空间上图像的大小由 112x112下采样到了4x4 CDC6: 时间域上上采样到 L/4, 空间上继续下采样到 1x1

文章的还有一大贡献点是反卷积的设计,因为经过C3D网络输出后,存在时间和空间两个维度,文章中的CDC6完成了时序上采样,空间下采样的同时操作。

  • 第一次将卷积、反卷积操作应用到行为检测领域,CDC同时在空间下采样,在时间域上上采样。
  • 利用CDC网络结构可以做到端到端的学习。
  • 通过反卷积操作可以做到帧预测(Per-frame action labeling)。
  • CDC7: 时间域上上采样到 L/2
  • CDC8:时间域上上采样到 L,而且全连接层用的是 4096xK+1, K是类别数
  • softmax层

4、R-C3D网络

R-C3D(Region 3-Dimensional Convolution)网络[10]是基于Faster R-CNN和C3D网络思想。对于任意的输入视频L,先进行Proposal,然后用3D-pooling,最后进行分类和回归操作。文章主要贡献点有以下3个。

可以针对任意长度视频、任意长度行为进行端到端的检测 速度很快(是目前网络的5倍),通过共享Progposal generation 和Classification网络的C3D参数 作者测试了3个不同的数据集,效果都很好,显示了通用性。

R-C3D网络可以分为4个部分。

  • 特征提取网络:对于输入任意长度的视频进行特征提取
  • Temporal Proposal Subnet: 用来提取可能存在行为的时序片段(Proposal Segments)
  • Activity Classification Subnet: 行为分类子网络
  • Loss Function

5、RPAN:An End-to-End Recurrent Pose-Attention Network for Action Recognition in Videos

因为视频除了空间维度外,最大的痛点是时间序列问题。如果能很好的处理这个维度,那么效果是不是会显著提升呢?而众所周知,RNN网络在NLP方向取得了傲人的成绩,非常适合处理序列。所以除了上述两大类方法以外,另外还有一大批的研究学者希望使用RNN网络思想来解决这个问题。目前最新的进展是中科院深圳先进院乔宇老师的工作:《RPAN:An End-to-End Recurrent Pose-Attention Network for Action Recognition in Videos》[7]。这篇文章是ICCV2017年的oral文章。但是与传统的Video-level category训练RNN不同,这篇文章还提出了Pose-attention的机制。

这篇文章主要有以下几个贡献点。

  • 不同于之前的pose-related action recognition,这篇文章是端到端的RNN,而且是spatial-temporal evolutionos of human pose
  • 不同于独立的学习关节点特征(human-joint features),这篇文章引入的pose-attention机制通过不同语义相关的关节点(semantically-related human joints)分享attention参数,然后将这些通过human-part pooling层联合起来
  • 视频姿态估计,通过文章的方法可以给视频进行粗糙的姿态标记。(这个方法还挺不错)。

RPAN网络框架可以分为三个大的部分。

  • 特征生成部分:用Two-Stream的方法生成
  • 姿态注意机制
  • LSTM时序处理网络 

行为检测

行为检测也是目前视频理解方向的研究主要热点,因为该任务更加贴近生活,在监控安防中有潜在的巨大价值。但是相比于行为分类,行为检测难度更高,不仅需要定位视频中可能存在行为动作的视频段,还需要将其分类。而定位存在行为动作的视频段是一个更加艰巨的任务。

因为行为检测任务有点类似于目标检测任务,都是需要先定位目标,然后识别目标。所以目前很多行为检测方法都是借鉴于目标检测,主要思想基本上是Temporal Proposal提取,然后进行分类与回归操作。这类方法包含,利用Faster R-CNN框架[9][10]

思路,利用SSD框架思路[11],还有基于TAG网络[12]等等。还有一类方法是基于C3D做帧分类(Frame Label),然后预测存在行为的视频段并分类,例如2017年ICCV的CDC网络[13]。

研究难点

上面简单阐述了行为检测的难点,这里总结一下主要有以下三点。

时序信息。与行为识别/分类一样,视频理解的通用难点就是时序信息的处理。所以针对这一点目前的主要方法基本上都是使用RNN读入CNN提取的特征,或者直接使用C3D一样的时序卷积。 边界不明确。不同于行为识别的是,行为检测要求做精确的动作区间检测,而生活中一个动作的产生往往边界不是十分确定的,所以这也是导致目前行为检测mAP偏低的原因。 时间跨度大。在生活中,一个行为动作往往跨度非常大,短的动作几秒左右,比如挥手。长的动作有的持续数十分钟,比如攀岩、骑行等等。这使得我们在提取Proposal的时候变得异常的艰难。

 

MEXaction2:MEXaction2数据集中包含两类动作:骑马和斗牛。该数据集由三个部分组成:YouTube视频,UCF101中的骑马视频以及INA视频。其中YouTube视频片段和UCF101中的骑马视频是分割好的短视频片段,被用于训练集。而INA视频为多段长的未分割的视频,时长共计77小时,且被分为训练,验证和测试集三部分。训练集中共有1336个行为片段,验证集中有310个行为片段,测试集中有329个行为片断。且MEXaction2数据集的特点是其中的未分割视频长度都非常长,被标注的行为片段仅占视频总长的很低比例。

ActivityNet: 目前最大的数据库,同样包含分类和检测两个任务。这个数据集仅提供视频的youtube链接,而不能直接下载视频,所以还需要用python中的youtube下载工具来自动下载。该数据集包含200个动作类别,20000(训练+验证+测试集)左右的视频,视频时长共计约700小时。由于这个数据集实在太大了,我的实验条件下很难完成对其的实验,所以我之前主要还是在THUMOS14和MEXaction2上进行实验。

数据集介绍

行为检测方向常用的数据集主要是THUMOS 2014和ActivityNet。THUMOS 2014来自于THUMOS Challenge 2014,。它的训练集为UCF101数据集,验证集和测试集分别包括1010和1574个未分割的视频片段。在行为检测任务中只有20类动作的未分割视频是有时序行为片段标注的,包括200个验证集(3007个行为片段)和213个测试集视频(包含3358个行为片段)。

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以提供一些有关Python脚本设计的建议:1.调研现有的课堂异常行为检测系统,收集有价值的信息;2.仔细研究Python语言的特性,熟悉其语法;3.搭建实验环境,测试可行的解决方案;4.针对获得的数据分析,确定最优的解决方案;5.编写完善的Python脚本,使其能够满足课堂异常行为检测系统的需求。 ### 回答2: 课堂异常行为检测系统是一种基于Python脚本设计的系统,用于识别和记录学生在课堂上的异常行为。这个系统可以帮助教师及时发现问题,并采取相应的措施来解决这些问题。 在设计这个系统时,我们可以首先采集学生在课堂上的行为数据。这些数据可以包括学生的言语交流、手势举止、面部表情以及出勤情况等。通过使用Python中的音频和视频处理库,我们可以实现对学生的语音和图像的实时获取和处理。 接下来,我们可以使用Python中的机器学习算法来对学生的行为进行分类和识别。可以使用监督学习算法,将学生的行为数据与已知的正常和异常行为进行训练和分类。可以采用常见的分类算法,如支持向量机(SVM)和决策树算法等来构建分类模型。 在实时监测学生行为时,可以使用Python的实时数据流处理库将学生的行为数据传输给算法模型进行分类。如果模型检测到学生的行为异常,可以通过Python的通知系统发送警报给教师,提醒他们注意该学生的行为。 此外,我们还可以使用Python的数据可视化库来进行数据的可视化呈现。通过将学生的行为数据以图表或图像的形式展示,教师可以更直观地了解学生在课堂上的表现情况,并更好地调整教学策略。 总体而言,课堂异常行为检测系统的设计在Python的支持下可以实现学生行为数据的获取、分类和监测,并能够提供实时的警报和数据可视化功能。这样的系统能够帮助教师更好地了解学生的表现,并及时采取措施解决问题,提高课堂教学效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值