视频行为理解

六眼飞鱼酱① 提交于 2020-08-10 08:02:01

from:https://x-algo.cn/index.php/2019/08/31/3220/
行为识别是用来识别“人自身”、“人和人”、“人和物”的“行为”。比如“抽烟”,“打架”。这个任务有好几个数据集,接下来先介绍一下各个数据集。
数据集

HMDB-51(2011)

  • 其中包含51 action,7k clips;
  • 这个数据集合包含不同种类的视频(camera motion, viewpoint, video quality and occlusion)
  • 和以往的数据集比较,这个视频数据更加真实,并且会有遮挡机位变化等。
  • 当前数据集通过静态的人体关节变化不能识别对应的行为
  • 51个action中,每一个至少包含101个clip

下图为和其他数据集的对比:

WeChat Screenshot_20190817121011

和其他数据集合的对比

数据样例:点击我

包含的行为种类有:

  1. 面部表情:微笑,大笑,咀嚼,交谈
  2. 面部和物体行为:吸烟,吃,喝
  3. 身体动作:车轮翻,鼓掌,爬
  4. 身体和物体之间行为:梳头发,抓东西,击剑
WeChat Screenshot_20190817122506

51个种类的分组

论文:H. Kuehne, et al. HMDB: A large video database for human motion recognition. In ICCV, pages 2556-2563, 2011.

UCF-101(2012)

  • 101类别,13k样本,27小时时长
  • 整个数据可以分为五类,每一类数据都会有25个元数据(不同的 background or actors ):

    1. 人物交互:呼啦圈,杂耍球,跳绳
    2. 单人行为:开合跳:弓步压腿,引体向上
    3. 多人行为 :军事游行,双人舞蹈,乐队前进
    4. 演奏乐器:吉他,钢琴
    5. 运动:棒球投球,篮球投球
WeChat Screenshot_20190817231623

数据整体情况

论文:K. Soomro, et al. UCF101: A dataset of 101 human action classes from videos in the wild. CoRR, abs/1212.0402, 2012.

Sports-1M(2014)

  • 487 classes,1 millionYouTube videos
  • 数据并不是通过人工标注的,而是通过视频的文本信息标注,会有一定的错误率

论文:A. Karpathy, G. Toderici, S. Shetty, T. Leung, R. Sukthankar, and F.-F. Li. Large-scale video classification with convolutional neural networks. In CVPR, pages 1725-1732, 2014.

ActivityNet v1.3(2015)

  • 203类,28k个视频,平均每个类有137个untrimmed视频,每个视频平均1.41个行为
  • 提供三个场景的行为理解:
    1. 没有剪辑的视频分类
    2. 剪辑之后的行为分类
    3. 剪辑之后的行为检测(detection)
  • 层级结构标注,例如: /家庭行为/家务/内部清洁/擦窗,别的数据集一般是两层结构,后期不好维护和扩展
  • 样本为覆盖人们日常高频行为而设计
WeChat Screenshot_20190820230736

一个四层的例子

论文:B. G. F. C. Heilbron, V. Escorcia, B. Ghanem, J. C. Niebles. ActivityNet: A large-scale video benchmark for human activity understanding. In CVPR, pages 961-970, 2015.

Charades(2016)

  • 157 类action,46类object,15个场景,9848个视频,平均长度12秒,2.7w描述
  • Charades是非常真实的生活化的视频,这些视频往往不会出现在movie、TV、YouTuBe上面,尝试用关键词搜索在网上也不会找到这些视频,因为这些视频多数都是生活中非常“无聊”的场景
  • Hollywood in Homes,其实就是在自己家里“演戏”,然后采集样本。数据集主打 daily activities
  • 数据集地址:https://allenai.org/plato/charades/

看书、喝水、开冰箱的动作在生活中,和在youtube上面的差异非常大,youtube上面多数是娱乐类的非典型的视频,如下图:

WeChat Screenshot_20190818220714

和其他的数据集的比较:

WeChat Screenshot_20190818223250

Charades和其他数据集的比较

论文:Hollywood in Homes: Crowdsourcing Data Collection  for Activity Understanding
Gunnar Sigurdsson, Gül Varol, Xiaolong Wang, Ali Farhadi, Ivan Laptev,  Abhinav Gupta

YouTube-8M(2016)

  • 4800类(visual entity),8百万视频,500k小时,一个视频可以有多个类别实体
  • 尝试使用实体标签对视频主要内容描述
  • 机器打的分类,通过元信息和点击数据校验,类别均为图谱中的实体且视觉可识别,实体包括:
    1. 活动(体育运动,游戏)
    2. 物体(汽车,食物,产品)
    3. 场景(旅行)
    4. 事件
  • 提供1.9 billion frame feature下载,特征提取器是Inception网络
  • Sports-1M专注于运动,ActivityNet专注于行为,不够多样性和通用;在迁移学习场景YouTube-8M比前两者更加具有优势

WeChat Screenshot_20190824130528

数据级别的分布:

WeChat Screenshot_20190824123621

S. Abu-El-Haija, N. Kothari, J. Lee, P. Natsev, G. Toderici, B. Varadarajan, and S. Vijayanarasimhan. YouTube-8M: A large-scale video classification benchmark. CoRR, abs/1609.08675, 2016.

Kinetics (2017)

  •  动机:构造large scale、high quality、challenging enough的数据集
  • 仅仅用于分类,每一个片段大概10秒,包含语音信息,都是剪辑过的视频。不能用于temporal localization
  • 自称为HMDB-51和UCF-101的继任者,前两者类别少、样本少、多样性少
  • 类别是一个两层结构,包括下面几类行为:
    1. 单人:画图、喝水、笑、压腿
    2. 人和人之间:接吻、握手、拥抱
    3. 人和物:打开盒子、洗盘子、修剪草坪
  • 一个clip只会有一个action分类,但是实际中会有多个行为(一边刷牙一边跳舞、一边发短信一边开车)
QQ截图20190823081403

Kinetics数据对比

W. Kay, J. Carreira, K. Simonyan, B. Zhang, C. Hillier, S. Vijayanarasimhan, F. Viola, T. Green, T. Back, P. Natsev, M. Suleyman, and A. Zisserman. The Kinetics human action video dataset. CoRR, abs/1705.06950, 2017.

常用模型

深度学习之前常用模型

一般是三步走:

  1. 局部特征提取,一般是特征点的提取
  2. 定长处理,一般是直方图统计
  3. 词袋模型的分类器,例如SVM

QQ截图20190831140908

DT:https://hal.inria.fr/hal-00725627v2/document

iDT:https://hal.inria.fr/hal-00873267v2/document

3D卷积和2D卷积

如下图:来自知乎我不坏

v2-61e8d9577583fd2b12a15a35006a5985_hd

2D卷积

v2-30aec2d80aca0fadd2bd6a0282a1e2ca_hd

3D卷积

 

 

 

 

 

 

 

 最初的探索(2014)

文章尝试在时序维度做不同的组合,所有的模型最后都是通过加权平均进行分类:

  • 探索目标:
    1. 什么样的时序cnn结构可以更好的对局部动作建模
    2. 什么样的动作信息会影响性能,以及影响的量
  • 加速方法:两路处理
    1. 一路在低分辨率处理;
    2. 一路在高分辨率处理,但是只处理中间一部分

提出时序模型Fusion的集中方式:

WeChat Screenshot_20190818163332

两路融合:

输入是178*178的大小,一路是全局的89*89,一路是中心的89*89,输入像素个数是原来的一半。具体如下图:

WeChat Screenshot_20190818192852

双路采样

并未在视频行为识别的任务上打败手工设计特征的方法

Large-scale Video Classification with Convolutional Neural Networks(2014)

Two-Stream ConvNet(2014)

  • 使用RGB+光流作为模型输入
    1. RGB对场景、物体建模
    2. 光流对相机运动、物体运动建模
  • 尝试对光流的加工:
    • 原始光流
    • 轨迹(累计求和)
    • 双向光流
    • 平均光流(相机运动)
  • 网络并未对时序建模

模型的整体结构如下图,两路模型最后的输出都是softmax

WeChat Screenshot_20190825043943

在第二路的输入中是光流的信息,那么输入的光流其实是可以有不同的形式的,一种就是两帧之间的位移,一种是多帧之间的位移,也就是从开始帧到t帧之间的轨迹,如下图:

WeChat Screenshot_20190825055203

左边为两帧之间光流,右边为轨迹

Two-Stream Convolutional Networks for Action Recognition in Videos

LRCN(2014)

使用LSTM进行上层的融合,LRCN( LONG-TERM RECURRENT CONVOLUTIONAL NETWORK)属于late-fusion,论文中output为分类结果,后面在加一层求平均就可以得到最终输出,模型的缺点是采样不够的话会导致区分不出来开门还是关门:

QQ截图20190826082336

基础结构

QQ截图20190826082517

可以用到的更多的场景

Long-term recurrent convolutional networks for visual recognition and description

Pooling位置探索(2015)

  • 更多的上层融合方式的探索
  • 更长的融合长度(120帧)
  • RGB和光流分别预测,然后融合
  • Feature Pooling都使用Max-pooling,效果较好的原因是对分类影响比较大的是几个稀疏的关键帧

QQ截图20190827080145

QQ截图20190827081819

对各种Pooling的探索,maxpooling/蓝色,全连接/黄色,3d卷积/绿色

20190827125930

不同的pooling方式效果

Beyond Short Snippets: Deep Networks for Video Classification

Rank-Pooling (2016)

  • 在最后一层融合的时候,采用pooling的方式直接融合
  • 增加后面帧的重要性

 

20190827171326

20190827173543

Learning End-to-end Video Classification with Rank-Pooling

TSN(2016)

TSN(Temporal Segments Network)特点:

  • 长序列建模的框架
  • Two-Stream的处理的是单帧输入+多帧光流,无法对长视频很好建模
  • 模型流程:
    1. 长视频均匀切为K段
    2. 从每一段选择一个子片段送入模型
    3. 模型进行前向传播,每一个片段得到自己对应的分类结果
    4. 对分类结果融合(本论文是求平均)并输出结果

WeChat Screenshot_20190825083843

TRN(2018)

Temporal Relation Network

  •  不同粒度抽帧,不同采样步长模型的ensemble,是对TSN的一种升级版
  • 多帧融合采用两层的MLP,不同的步长的模型MLP不共享

QQ截图20190829223821

Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

C3D(2015)

模型简称为C3D,提出了一个结构简单的end2end的处理视频的模型

  • 对各种超参数的探索,3D卷积更加适合捕获时序特征
  • 所有层都是可用3x3x3 kernel和 2x2的pooling可以得到最好性能
  • C3D可以对视频提取好特征,然后使用线性分类器就可以得到很好的性能
  • 训练速度快,容易收敛,训练Sports-1M的时候抽取5个2秒的视频片段

WeChat Screenshot_20190824225859

Learning Spatiotemporal Features with 3D Convolutional Networks(2015)

P3D(2017)

  • C3D太耗费资源,尝试分解3x3x3卷积进行加速
  • 在时间维度进行分解下图中S=1x3x3,T=3x1x1
  • 把层数扩展到199层
WeChat Screenshot_20190825131932

P3D 不同种类的block

Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks

I3D(2017)

 Inflated 3D ConvNet :
  • 本文惊艳之处在于提出一种将2D卷积膨胀为3D的方法,可以更好的利用ImageNet模型积累
  • 通过对膨胀的卷积权重除以膨胀长度,实现从2D到3D权重的初始化且等同训练boring视频,boring视频的定义是在时间维度重复一张图片生成的视频,这里还是为了更好的继承InceptionV1
  • 下图中,前三种是已有的模型,后两种(主要是最后一种)是提出来的I3D模型
  • 膨胀之后三个维度的感受野计算如下图
  • e方案是最优的方案,分别对RGB和光流进行3D卷积。然后bagging到一起

20190826151850

 下图为InceptionV1的结构:

InceptionV1

QQ截图20190826231336

左图为膨胀之后的结构

Quo Vadis, Action Recognition? A New Model and the Kinetics Dataset

SlowFast Network(2018)

  • Slow 一秒采2帧,侧重单帧理解
  • Fast 一秒采8帧,侧重时序理解
  • Fast部分虽然处理的图片多,但是计算量只有整体的20%,减少模型的参数量(卷积个数)
  • 不在时间维度进行pooling,time维度的卷积stride=1
  • HW维度卷积大小和stride都一致,SlowFast融合的时候就是在T和C之间转换
  • Fast的作用类似光流,好处是不用以来外部方法提取特征了

a

QQ截图20190831091434
SlowFast Networks for Video Recognition

参考

 https://zhuanlan.zhihu.com/p/36330561
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!