视频理解研究

相比较于视频研究,基于深度学习的图像这块,已经取得很不错的成果。目前,在基于深度学习的视频研究这块,有一下几种方式:
(1)逐帧处理融合
思想:逐帧提取图像特征,然后融合深度特征图。
弊端:简单粗暴带来的弊端有:前后帧之间存在大量信息冗余,冗余计算量太大。
(2)ConvLSTM
这种方法主要依赖于LSTM挖掘每帧之间的时序关系,计算量很大,很难训练,不常用在视频分析中。
(3)主流的研究方向基本是围绕C3D网络和Two-Stream网络这两大块。
一:C3D这块
①C3D
论文题目:《Learning Spatiotemporal Features with 3D Convolutional Networks》
论文链接:https://arxiv.org/abs/1412.0767
代码:https://github.com/facebook/C3D
论文看点:
1,提出一种3D卷积方法。实验表明,3D卷积比2D卷积更适合时空特征的学习,且论文还表示,整个网络结构中,所以卷积核都取333的结果是最好的,如果在做视频分类任务时,分4类是最优的结果。
3D卷积过程为下图©:
在这里插入图片描述
相比以前普通的2D卷积,3D卷积主要是在卷积核中增加了深度这个维度,由原来的2维变成现在的3维结构,卷积过程由卷积核在原来的一张图上的遍历,变成现在在一个矩形体中遍历,卷积结果,由原来一个面出一个结果,到现在由一个体出一个结果。
2,网络结构:
在这里插入图片描述
整个网络结构,包括最后输出层,一共11层。
Input: [50,3,16,128,171],表示batch_size: 50, 通道数:3,视频连续帧数(bag):16帧,图片大小:128*171.原图进入网络之后,先进行随机裁剪,最后裁剪的结果是:50 * 3 * 16 * 112 * 112.
Con1a: [50,64,16,112,112], 第一层的卷积输出num:64,kernel_size:[3,3,3]
Pool1:[50,64,16,56,56], pool_size:[1,2,2]
后面的卷积,卷积核均为[3,3,3],池化大小均为[2,2,2].
损失函数:SOFTMAX_LOSS
可视化结果
视频理解研究_第1张图片
通过反卷积可视化结果,可以看出,C3D起初学习到了视频的外观特征,然后学习后续图像帧中的显著性特征。
4,特征嵌入化对比
使用t-SNE对fc6层中的特征可视化。t-SNE是将数据点之间的相似度转化为概率的一种方法,如下图所示,颜色相同的点,表示相似度很高的点,与Imagenet相比,C3D特征在语义上可分离,表明对于视频它具有更好的特征表示。 每个片段可视化为一个点,属于同一动作的片段具有相同的颜色。
视频理解研究_第2张图片
②P3D-ResNet
论文题目:《Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks》
论文链接:
http://openaccess.thecvf.com/content_ICCV_2017/papers/Qiu_Learning_Spatio-Temporal_Representation_ICCV_2017_paper.pdf
作者公布的代码:
https://github.com/ZhaofanQiu/pseudo-3d-residual-networks#models
论文看点:
1,网络层数加深,模型大小减少。
视频理解研究_第3张图片
本文,将C3D与ResNet相结合,提出一种新的P3D ResNet网络,其中不仅加深了网络的层数,还压缩了模型的大小,节约计算成本以及存储成本。
因为3D conv消耗的内存太大,本文从用2D+1D代替3D的角度优化C3D网络,即后面要提到的用1 * 3 * 3卷积核+3 * 1 * 1卷积核代替3 * 3 *3的卷积核,然后,作者采用残差网络的链接方式,完美的将2D+1D组合起来,也就是后面提到的P3D-A,P3D-B以及P3D-C结构。
2,网络结构
整个P3D ResNet网络架构如下图所示,由多个blocks组成。
在这里插入图片描述
其中,P3D-A,P3D-B以及P3D-C分别如下图所示。
视频理解研究_第4张图片
具体内部结构为:
视频理解研究_第5张图片
此文中的改进,不仅融合了resnet思想,还融合了inception思想。首先在P3D-A,P3D-B以及P3D-C block结构中,参照了resnet的残差思想。block内部结构,1 * 3 * 3 conv表示深度维度为1,这就其实跟2D conv差不多意思,3 * 1 *1表示只在深度维度上做卷积,这就跟1D conv差不多意思。
二:双流这块
①Tow-Stream
论文题目:《Two-Stream Convolutional Networks for Action Recognition in Videos》
论文链接:https://arxiv.org/pdf/1406.2199.pdf
代码:
论文看点:
1,文中提出一种新的用于视频多任务分类的网络:two-stream ConvNet。这种网络包含了时间网络(temporal networks)和空间网络(spatial networks),可以看做是这两个网络的并行结合。
2,网络结构
视频理解研究_第6张图片
从figure 1中,可以很直观的看出,文中提出的Two-Stream网络即为Spatial Stream+Temporal Stream.其中Spatial Stream与Temporal Stream 两种网络的网络结构是一样的,区别在于输入。
Spatial Stream:用静态视频帧作为输入,一般用ImageNet作为预训练模型。
Temporal Stream:用多帧光流作为输入。主要是构建Optical flow ConvNets,输入为 连续帧之间堆叠的光流场(stacking optical flow displacement fields between several consecutive frames)。
下图中(a)(b)为连续的两帧,其中具有运动场的手臂被蓝色框框出来了。( c)图为(a)(b)图中蓝色框中的光流场,(d)为位移矢量场的水平分量dx,(e)图为位移矢量场的水平分量dy。
视频理解研究_第7张图片
Optical flow ConvNets输入形式有两种,分别为光流堆叠(optical flow stacking)和轨迹堆叠(trajectory stacking),用一种就行。
光流堆叠,存储的是位置(u,v)的位移矢量;:
公式:
在这里插入图片描述
其中,
在这里插入图片描述
表示从t帧到t+1帧,视频帧中点(u, v)的位移矢量。
轨迹堆叠:在运动轨迹方向上进行采样抽取,存储的是在顺着轨迹线位于位置的向量。
视频理解研究_第8张图片
②TSN
论文:《Temporal Segment Networks: Towards Good Practices for Deep Action Recognition》
论文链接:https://arxiv.org/abs/1608.00859
作者公布的代码:
https://github.com/yjxiong/temporal-segment-networks#temporal-segment-networks-tsn
论文看点:
1,TSN可以看做是Two-Stream的改进。Two-Stream是以RGB image与Stacked optical flow field 为输入,TSN是除了这两,还增加了Stacked RGB difference和Stacked warped optical flow field 两种输入。
【未完,待续…】
总结:双流法训练路线,其实就是相当于将空间特征(图像RGB)和时序特征(光流)分别使用深度学习单独训练,最后再融合。这种方法相比较于时空特征混在一起,用3D卷积同时对待训练的C3D训练路线,效果要好。毕竟光流对动作的捕获能力是很显著的。
个人觉得,这种方法对工程应用不适合,首先相较与C3D特征提取,Two-Stream需要逐帧计算并保存光流,计算开销不可估量,其次,空间特征(图像RGB)和时序特征(光流)并行训练,最后融合这个过程,并行训练不好控制,并且,将不相干的两种特征融合在一个,合适的融合方法不好确定。
3D卷积路线,C3D网络效率还是可以的,提升准确率的方法可以从两点入手:①关键帧确定。每帧图像发生事件的权重是不一样的,应该区别对待。②C3D网络优化。C3D网络可以参照现有的普通卷积网络进行优化,优化空间很大。

你可能感兴趣的:(深度学习)