管中窥“视频”,“理解”一斑 —— 视频理解概览

本文通过对视频理解/分类(Video Understanding / Classification)的基础和经典论文进行梳理,帮助把握整体发展走向。

  1. 背景  

随着通信技术的发展,目前已进入全民视频&音频时代,各种短视频、中视频应用崛起,占据了大部分生活时间;深度学习视觉技术的研究焦点,也从单纯的图片向视频、多模态领域倾斜。
  2. 视频理解基础  
2.1 3D卷积 
  • 3D 卷积和 2D 卷积的区别:3D 卷积核多了一层深度的维度,用以提取时间序列信息(包含光流变化等) 
  • 2D 卷积核 shape:(channels,k_height,k_width) 
  • 3D 卷积核 shape:(channels,k_depth,k_height,k_width) ,与 2D 卷积核的本质区别在于是否在 depth 维度进行滑动(可以把 2D 卷积看作 3D 卷积的特殊形式) 
2.2 模型评价标准 
视频分类 metric:和图片分类类似,使用 top1,top5 accuracy 评价。
2.3 常用数据集

图片

2.4 经典模型 
2.4.1 DT及iDT算法(手工提特征,非深度学习方法) 
DT算法 

流程:密集采样特征点,特征点轨迹跟踪,轨迹特征提取。 

1. 密集采样特征点:使用网格划分的方法,在二维图像上进行特征点采样。同时设置阈值,去除缺乏变化区域的采样点(缺乏变化区域的特征点后续难以在时间序列上进行跟踪,e.g. 白色墙壁中心的点)。 
2. 特征点轨迹跟踪:通过计算特征点运动方向,得到轨迹向量。特征点运动方向计算公式:,其中  和 代表光流方向,M 为中值滤波。即运动方向是以特征点领域内光流中值确定的。
3. 轨迹特征提取:对每帧图像中特征点领域进一步进行网络划分,提取 HOG, HOF, MBH 特征,并对特征归一化后进行编码。
4. 使用 SVM 对编码后的视频特征进行分类。
iDT算法 

在 DT 算法上进行改进:光流图像优化,特征归一化方式改进,特征编码方式改进(目前一些深度学习方法 ensamble iDT 后会有提升)。

1. 光流图像优化:由于相机运动,背景也存在很多轨迹信息,会对前景的特征采样造成影响。因此 iDT 专门去除了背景上的特征点。(通过估计相机运动,来消除背景区域的光流); 

2. 特征归一化方式改进:使用 L1 正则后再开方,提升约0.5%。(DT 算法使用 L2 范式进行归一化); 

3. 特征编码方式改进:使用 Fisher Vector 方式编码(DT 算法使用 Bag of Features)。

2.4.2 P3D模型
图片
论文标题:
Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks
论文来源:
ICCV 2017
论文链接:
https://arxiv.org/abs/1711.10305
代码链接:
https://github.com/ZhaofanQiu/pseudo-3d-residual-networks
提出了 3 种 3d 残差卷积块,将 3x3x3 的 3D conv 解耦成 1x3x3 的空间卷积(即“S”)以及3x3x1的时间卷积(即“T”),便于减少计算量和使用预训练模型。 

图片

2.4.3 R(2+1)D模型 

图片

论文标题:
A Closer Look at Spatiotemporal Convolutions for Action Recognition
论文来源:
CVPR 2018
论文链接:
https://arxiv.org/abs/1711.11248
代码链接:
https://github.com/facebookresearch/VMZ
证明了在残差网络结构中,3D 卷积优于 2D 卷积(对于动作识别任务而言);证明了分解 3D conv 为 spatial conv 和 temporal conv 能显著提升准确率。 

图片

  • R2D:4 维张量 reshape 成 3 维张量处理; 

  • MCx:认为动作建模在浅层更必要; 

  • rMCx:认为动作建模在深层更必要; 

  • R3D:在所有层都使用 3D conv 进行动作建模; 

  • R(2+1)D:3D conv 解耦为 2D conv 和 1D conv。

    好处:(a) 解耦后增加 relu 层,增加了非线性操作,提升网络表达能力 (b)解耦之后更容易优化,loss 更低。

图片

图片

  3. 视频理解-经典论文梳理  

3.1 ICCV 2015

图片

论文标题:

Unsupervised Learning of Visual Representations using Videos

所属领域:

无监督学习(利用视频数据,ICCV 2015) 

论文链接:

https://xiaolonw.github.io/papers/unsupervised_video
代码链接:

https://github.com/xiaolonw/caffe-video_triplet

Background

大量视觉任务使用监督学习或者半监督的方法来提取特征,并且大部分基于 image。 

Motivation

1. 目前无监督学习无法赶超监督学习, 瓶颈在哪里?
2. 人类视觉是从动态的感知信息而不是静态图片中获取信息的,CNN 能否也从对动态感知(即视频数据)的学习中得到提升? 

Method

提出了 siamese network,三个子网络共享权重,和 AlexNet 结构类似,在 pool5 后面接了 4096 和 1024 维的全连接层,即每个视频 patch 最终被映射为 1024 维的向量。 


图片

Input:pair of patches(size:227x227,从视频帧中提取) 

Output:3 个 1024 维向量 

Loss Function:正则化项 +cos 距离项 

图片
其中,W:权重 weight,:track 的起始两个 patch,:从其他 video 中随机选取的 patch(用来 triplet),:两个 patch 的 cos 距离,M:两个距离的 gap 超参,设置为 0.5。
图片
Details

1. 提取感兴趣的 patch(即包含我们想要的 motion 的部分),并跟踪这些patches,以此来创建 train instances。

● 提取 patch:采用 two-step approach:

(1) 获取 SURF 特征点,然后使用 IDT [1] 中单应性估计方法获取每个 SURF 特征点的轨迹。

说明:之所以使用这个方法,是因为 youtube 视频包含很多相机移动的噪声IDT 这一步专门去除了相机运动信息。 

(2) 获取了 SURF 点的轨迹后,将移动幅度大于 0.5 像素的点归类为 “moving” 。

(3) 帧过滤:过滤掉(a)包含 moving 类的 SURF 点低于 25%(可能这些是噪声点) 和(b)包含 moving 类的 SURF 点高于 75% 的帧(可能都是相机的运动)。 

(4) 用 227x227 的 bbox 做 sliding window,提取包含最多 moving 点的 bbox 作为该帧的 patch。

● tracking: 

使用 KDF tracker [2] 对前面获得的 patch 进行跟踪,track 的第一帧和最后一帧会作为 pair of patches 进行训练。

2. 如何选择 negative 样本 

(1) 先随机选择:对每个 pair of patches,在同一个 batch 中随机选择 K 个 patch 作为 negative patch,得到 K 个 triplet。每个 epoch 都进行 shuffle,确保每 个pair of patches 都能和不同的 negative patch 组合。

(2) 训练大概 10 个 epoch 后,进行 hard negative mining。对每个 pair of patches,将它们和同一个 batch 中其他的 patches 过网络前向计算,根据 loss (下图 loss)的大小进行排序,选取 loss 最大的前 K 个(此处 K=4)patch 作为 negative patch。使用这 K 个 patches 进行后续的训练。

图片
3. 如何将这个网络应用到监督学习的任务 
(1) 方法一:直接将 triplet network 作为预训练网络,修改输出层适应不同任务。
(2) 方法二:迭代式训练。先用 triplet 做预训练,再将 finetuned network 拿来跑 triplet,最后再对应的任务上做 finetune。 
4. 训练设置 
Dataset: Youtube, 100K videos。提取出 8million 的 patches,后续做 finetune 实验分别使用 1.5M / 5M / 8M 的数据;Batchsize:100 ;初始 LR rate:0.001。
Results

1. 直接使用 VOC 训练,mAP 44.0%;ensemble 3 个模型后,mAP 47.3%(+3.3)。

2. 无监督方法的预训练模型 +VOC finetune, mAP 46.2%;增加无监督训练数据后,mAP 47.0%(+0.8)以及 47.5%(+1.3),证明无监督模型对特征提取有益。 

3. 在 VOC 上 retrieval rate 40%(ImageNet 预训练模型:62%,但是它已经学习过 semantics 了)。

图片
可视化结果:使用 VOC 2012 val 做 query,然后从训练数据中找 cos 距离最近的 5 张图。 
图片
3.2 ECCV 2016
图片

论文标题:

TSN-Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

所属领域:

动作/行为识别(基于视频ECCV 2016

论文链接:

abs/1608.00859

代码链接:

https://github.com/ZJCV/TSN

Background

基于图片的动作识别已经取得了良好效果,但基于视频的研究并没有太大突破。作者认为主要瓶颈在于以下三个方面: 

1. 长时间段的视频结构包含了丰富的动态行为信息,但目前的主流研究方法,在实际应用中,受限于计算资源的限制,只能基于短时间段的序列,会丢失一些长时间段中的信息。 大部分在这个方面进行的研究,基于密集的时间间隔采样:会带来巨大的计算开销,在实际应用场景中不适合。 

2. 好的网络模型需要大量的训练数据,目前(论文发表时)只有 UCF101, HMDB51 数据集,数据量和类别种类都不够。 

3. 视频的动作分类模型还没有深层网络(相比于图像分类模型来说),训练深层网络容易造成过拟合。 

Motivation

1. 设计一种高效的,适用于长时间段视频的模型; 

2. 在有限的训练数据下实现卷积网络的学习。 

Methods
设计了一种 two-stream architecture 的模型,主要创新点在于对完整视频段进行分割,再对分割段的预测结果进行整合,从而实现了利用少量帧信息即可获取完整视频信息的目的,在满足资源限制的条件下实现对完整视频段特征的学习。 
图片
损失函数: 
图片
图片
将每个 Video 划分为 K 个 segments,然后从每个 segment 里随机挑选帧组成 snippet,对这些 snippet 分类,聚合分类结果作为视频的分类结果。 
Experiment

视频的光流特征使用 OpenCV TVL1 optical flow algorithm 进行提取。

1. 对输入模式和训练策略进行实验,结论

(1)使用 Cross modality 和 partial BN with dropout 的方案可以提升精度

(2)融合光流、wrap 光流、RGB 输入的结果精度最高,92.3%(加 RGB difference 会掉点,如果对计算资源有严格要求的时候可以考虑使用) 。

图片


图片

2. 聚合函数探索,结论:average 最好。

图片

3. 在 UCF101 上精度 94.2%,HMDB51 69.4%。

图片


图片

3.3 ICCV 2019
图片

论文标题:

SlowFast Networks for Video Recognition

所属领域:

视频识别(FAIR,ICCV 2019

论文链接:

https://arxiv.org/abs/1812.03982

代码链接:

https://github.com/facebookresearch/SlowFast

Background
目前视频识别的工作可以分为 3 个方向:利用 3D conv 等来整合时间序列上的信息;使用光流特征来进行学习;two-stream 的网络结构。
Motivation
1. 受启发于生物学结论:人眼对于快慢动作信息有两套不同的 path 进行处理,fast path 聚焦快速动作信息,忽略颜色纹理信息,slow path 聚焦颜色纹理,忽略动作。 
2. 常见的 two-stream 结构需要手工提取光流信息,能否设计一种 end-to-end 的网络结构? 
Methods
设计了一种 end-to-end 的视频分类网络,包含 Slow 和 Fast 两条学习路径,Slow path 的数据是低帧率的,主要学习空间纹理、颜色信息;Fast Path 是高帧率的,负责学习时间维度上的动作信息。最后对两路学习结果进行 fuse。 

图片

设置 Fast Path 有更高的时间帧率,更小的通道数: 

图片

Experiment
Fast path 有助于提升精度 , 可以达到 SOTA。

图片

3.4 CSN, CVPR
图片

论文标题:

Video Classification with Channel-Separated Convolutional Networks

所属领域:

视频分类(FAIR,CVPR 2019

论文链接:

https://arxiv.org/abs/1904.02811

代码链接:

https://github.com/facebookresearch/VMZ
Contributions
探究了 3D group conv 的作用,包括“是否能降低计算开销”,“主要影响因素”,“trade-off 方案” 。
Conclusions
1. 3D group conv 可以有效降低计算开销。
2. 3D channel-separated conv 有正则化效果,能够提升测试准确率。
Methods
irCSN 和 ipCSN 
提出两种 3D 组卷积结构(ip 和 ir): 
(a)resnet 3D conv
(bip block(Interaction-preserved channel-separated bottleneck block)
使用一个 1x1x1 卷积和一个 3x3x3 depth wise 卷积替换原来的一个 3x3x3 卷积,由于新增了一个 1x1x1 卷积,因而保留了 channels 之间的连接信息,所以称为 Interaction-preserved。 
(c)ir block(Interaction-reduced channel-separated bottleneck block)
使用一个 3x3x3 depth wise 卷积替换原来的一个 3x3x3 卷积,由于此处已经丢失了部分连接信息,因而称为 Interaction-reduced。 
图片


Experiments
1. 在 50 和 101 layer 的实验中,可以超过原始 resnet 结构:69.4 -> 70.8,70.6->71.8。

图片

2. ip-CSN 和 resnet 在 kinetics 上 training error 的对比:ip-CSN 有更高的 train error,但是有更低的 test error,证明 ip 结构可以提供正则化效果,防止过拟合。 
图片
3. 在 kinetics 上可以达到 sota: 

图片

简单过了一遍,总体来说分为两大阵营:
  • 以 SlowFast 为首的 3D conv 结构(i3D, P3D, R(2+1)D, SlowFast等);

  • 以 TSM 为首的 2D conv 结构(TSM,TSN,TIN)等;

基本也是 trade-off 问题了,3D conv 精度更高,2D conv 速度更快。相信也会像目标检测一样,忽然有个逆天结构出来改变赛场模式吧(比如 Transformer?)
Illustrastion by Natasha Remarchuk from Icons8
- The End -
图片

扫码观看!

本周上新!

图片


关于我“
将门是一家以专注于发掘、加速及投资技术驱动型创业公司的新型创投机构,旗下涵盖将门创新服务将门技术社群以及将门创投基金

将门成立于2015年底,创始团队由微软创投在中国的创始团队原班人马构建而成,曾为微软优选和深度孵化了126家创新的技术型创业公司。

如果您是技术领域的初创企业,不仅想获得投资,还希望获得一系列持续性、有价值的投后服务,欢迎发送或者推荐项目给我“门”: 
bp@thejiangmen.com
图片    
点击右上角,把文章分享到朋友圈