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
下图为和其他数据集的对比:
数据样例:点击我;
包含的行为种类有:
- 面部表情:微笑,大笑,咀嚼,交谈
- 面部和物体行为:吸烟,吃,喝
- 身体动作:车轮翻,鼓掌,爬
- 身体和物体之间行为:梳头发,抓东西,击剑
论文: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上面多数是娱乐类的非典型的视频,如下图:
和其他的数据集的比较:
YouTube-8M(2016)
- 4800类(visual entity),8百万视频,500k小时,一个视频可以有多个类别实体
- 尝试使用实体标签对视频主要内容描述
- 机器打的分类,通过元信息和点击数据校验,类别均为图谱中的实体且视觉可识别,实体包括:
- 活动(体育运动,游戏)
- 物体(汽车,食物,产品)
- 场景(旅行)
- 事件
- 提供1.9 billion frame feature下载,特征提取器是Inception网络
- Sports-1M专注于运动,ActivityNet专注于行为,不够多样性和通用;在迁移学习场景YouTube-8M比前两者更加具有优势
数据级别的分布:
Kinetics (2017)
- 动机:构造large scale、high quality、challenging enough的数据集
- 仅仅用于分类,每一个片段大概10秒,包含语音信息,都是剪辑过的视频。不能用于temporal localization
- 自称为HMDB-51和UCF-101的继任者,前两者类别少、样本少、多样性少
- 类别是一个两层结构,包括下面几类行为:
- 单人:画图、喝水、笑、压腿
- 人和人之间:接吻、握手、拥抱
- 人和物:打开盒子、洗盘子、修剪草坪
- 一个clip只会有一个action分类,但是实际中会有多个行为(一边刷牙一边跳舞、一边发短信一边开车)
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卷积
如下图:来自知乎我不坏
最初的探索(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,效果较好的原因是对分类影响比较大的是几个稀疏的关键帧
Beyond Short Snippets: Deep Networks for Video Classification
Rank-Pooling (2016)
- 在最后一层融合的时候,采用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层
I3D(2017)
- 本文惊艳之处在于提出一种将2D卷积膨胀为3D的方法,可以更好的利用ImageNet模型积累
- 通过对膨胀的卷积权重除以膨胀长度,实现从2D到3D权重的初始化且等同训练boring视频,boring视频的定义是在时间维度重复一张图片生成的视频,这里还是为了更好的继承InceptionV1
- 下图中,前三种是已有的模型,后两种(主要是最后一种)是提出来的I3D模型
- 膨胀之后三个维度的感受野计算如下图
- e方案是最优的方案,分别对RGB和光流进行3D卷积。然后bagging到一起
SlowFast Network(2018)
- Slow 一秒采2帧,侧重单帧理解
- Fast 一秒采8帧,侧重时序理解
- Fast部分虽然处理的图片多,但是计算量只有整体的20%,减少模型的参数量(卷积个数)
- 不在时间维度进行pooling,time维度的卷积stride=1
- HW维度卷积大小和stride都一致,SlowFast融合的时候就是在T和C之间转换
- Fast的作用类似光流,好处是不用以来外部方法提取特征了