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
下图为和其他数据集的对比:
和其他数据集合的对比
数据样例:点击我;
包含的行为种类有:
- 面部表情:微笑,大笑,咀嚼,交谈
- 面部和物体行为:吸烟,吃,喝
- 身体动作:车轮翻,鼓掌,爬
- 身体和物体之间行为:梳头发,抓东西,击剑
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 ):
- 人物交互:呼啦圈,杂耍球,跳绳
- 单人行为:开合跳:弓步压腿,引体向上
- 多人行为 :军事游行,双人舞蹈,乐队前进
- 演奏乐器:吉他,钢琴
- 运动:棒球投球,篮球投球
数据整体情况
论文: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个行为
- 提供三个场景的行为理解:
- 没有剪辑的视频分类
- 剪辑之后的行为分类
- 剪辑之后的行为检测(detection)
- 层级结构标注,例如: /家庭行为/家务/内部清洁/擦窗,别的数据集一般是两层结构,后期不好维护和扩展
- 样本为覆盖人们日常高频行为而设计
一个四层的例子
论文: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上面多数是娱乐类的非典型的视频,如下图:
和其他的数据集的比较:
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.9 billion frame feature下载,特征提取器是Inception网络
- Sports-1M专注于运动,ActivityNet专注于行为,不够多样性和通用;在迁移学习场景YouTube-8M比前两者更加具有优势
数据级别的分布:
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的继任者,前两者类别少、样本少、多样性少
- 类别是一个两层结构,包括下面几类行为:
- 单人:画图、喝水、笑、压腿
- 人和人之间:接吻、握手、拥抱
- 人和物:打开盒子、洗盘子、修剪草坪
- 一个clip只会有一个action分类,但是实际中会有多个行为(一边刷牙一边跳舞、一边发短信一边开车)
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.
常用模型
深度学习之前常用模型
一般是三步走:
- 局部特征提取,一般是特征点的提取
- 定长处理,一般是直方图统计
- 词袋模型的分类器,例如SVM
DT:https://hal.inria.fr/hal-00725627v2/document
iDT:https://hal.inria.fr/hal-00873267v2/document
3D卷积和2D卷积
如下图:来自知乎我不坏
2D卷积
3D卷积
最初的探索(2014)
文章尝试在时序维度做不同的组合,所有的模型最后都是通过加权平均进行分类:
- 探索目标:
- 什么样的时序cnn结构可以更好的对局部动作建模
- 什么样的动作信息会影响性能,以及影响的量
- 加速方法:两路处理
- 一路在低分辨率处理;
- 一路在高分辨率处理,但是只处理中间一部分
提出时序模型Fusion的集中方式:
两路融合:
输入是178*178的大小,一路是全局的89*89,一路是中心的89*89,输入像素个数是原来的一半。具体如下图:
双路采样
并未在视频行为识别的任务上打败手工设计特征的方法
Large-scale Video Classification with Convolutional Neural Networks(2014)
Two-Stream ConvNet(2014)
- 使用RGB+光流作为模型输入
- RGB对场景、物体建模
- 光流对相机运动、物体运动建模
- 尝试对光流的加工:
- 原始光流
- 轨迹(累计求和)
- 双向光流
- 平均光流(相机运动)
- 网络并未对时序建模
模型的整体结构如下图,两路模型最后的输出都是softmax
在第二路的输入中是光流的信息,那么输入的光流其实是可以有不同的形式的,一种就是两帧之间的位移,一种是多帧之间的位移,也就是从开始帧到t帧之间的轨迹,如下图:
左边为两帧之间光流,右边为轨迹
Two-Stream Convolutional Networks for Action Recognition in Videos
LRCN(2014)
使用LSTM进行上层的融合,LRCN( LONG-TERM RECURRENT CONVOLUTIONAL NETWORK)属于late-fusion,论文中output为分类结果,后面在加一层求平均就可以得到最终输出,模型的缺点是采样不够的话会导致区分不出来开门还是关门:
基础结构
可以用到的更多的场景
Long-term recurrent convolutional networks for visual recognition and description
Pooling位置探索(2015)
- 更多的上层融合方式的探索
- 更长的融合长度(120帧)
- RGB和光流分别预测,然后融合
- Feature Pooling都使用Max-pooling,效果较好的原因是对分类影响比较大的是几个稀疏的关键帧
对各种Pooling的探索,maxpooling/蓝色,全连接/黄色,3d卷积/绿色
不同的pooling方式效果
Beyond Short Snippets: Deep Networks for Video Classification
Rank-Pooling (2016)
- 在最后一层融合的时候,采用pooling的方式直接融合
- 增加后面帧的重要性
Learning
End-to-end
Video
Classification
with
Rank-Pooling
TSN(2016)
TSN(Temporal Segments Network)特点:
- 长序列建模的框架
- Two-Stream的处理的是单帧输入+多帧光流,无法对长视频很好建模
- 模型流程:
- 长视频均匀切为K段
- 从每一段选择一个子片段送入模型
- 模型进行前向传播,每一个片段得到自己对应的分类结果
- 对分类结果融合(本论文是求平均)并输出结果
TRN(2018)
Temporal Relation Network
- 不同粒度抽帧,不同采样步长模型的ensemble,是对TSN的一种升级版
- 多帧融合采用两层的MLP,不同的步长的模型MLP不共享
Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
C3D(2015)
模型简称为C3D,提出了一个结构简单的end2end的处理视频的模型
- 对各种超参数的探索,3D卷积更加适合捕获时序特征
- 所有层都是可用3x3x3 kernel和 2x2的pooling可以得到最好性能
- C3D可以对视频提取好特征,然后使用线性分类器就可以得到很好的性能
- 训练速度快,容易收敛,训练Sports-1M的时候抽取5个2秒的视频片段
Learning Spatiotemporal Features with 3D Convolutional Networks(2015)
P3D(2017)
- C3D太耗费资源,尝试分解3x3x3卷积进行加速
- 在时间维度进行分解下图中S=1x3x3,T=3x1x1
- 把层数扩展到199层
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到一起
下图为InceptionV1的结构:
InceptionV1
左图为膨胀之后的结构
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的作用类似光流,好处是不用以来外部方法提取特征了
SlowFast
Networks
for
Video
Recognition
参考
https://zhuanlan.zhihu.com/p/36330561