一文看懂如何将深度学习应用于视频动做识别

做者 | Rohit Ghosh
编译 | 张健欣
编辑 | Debra
AI 前线导读:在本文中,做者会总结视频动做识别相关的文献,依次介绍动做识别是什么、它为何这么难、解决方案概览以及相关论文总结。

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

MRI、CT(三维图像)之类的医疗图像和视频很是相似——它们都是在第三个维度上对二维空间信息进行编码。与从三维图像中进行异常诊断很像,从视频中进行动做识别须要从整个视频中捕捉上下文信息而不仅是从每一帧中捕捉信息。php


图 1: 左图:头部 CT 扫描示例。右图:来自动做识别数据集的示例视频。CT 容积图中的 Z 维和视频中的时间维度类同。算法

在本文中,我会总结视频动做识别相关的文献。这篇博文分为三个章节——api

  • 动做识别是什么以及它为何很难微信

  • 解决方案概览网络

  • 论文总结架构

什么是动做识别?

动做识别任务涉及从视频剪辑(一串二维帧序列)中识别不一样的动做,其中的动做可能贯穿整个视频,也可能不会。这有点儿像图像分类任务的一种天然扩展,即在多帧视频中进行图像识别,而后从每个帧中汇集预测结果。尽管深度学习框架在图像分类(ImageNet)领域取得了成功,可是视频分类和表示学习领域的架构进展缓慢。框架

为何动做识别这么难?

1. 巨大的计算成本 一个简单的 101 分类的二维卷积网络只有大约 5M 参数,而相同架构扩展到一个三维结构就会增加为大约 33M 参数。在 UCF101 上训练一个三维卷积网络(3DConvNet)须要 3 到 4 天时间,而在 Sports-1M 上须要大约 2 个月时间,这使得外延框架探索变得困难并且可能过分拟合 [1]。ide

2. 捕捉长期的上下文 动做识别涉及捕捉跨帧的时空上下文。另外,捕捉的空间信息必须针对摄像头移动进行补偿。即便有很强的空间对象检测能力也不能知足须要,由于运动信息还携带更详细的细节。为了稳健的预测,须要在捕捉局部上下文 w.r.t 的同时捕捉全局的 w.r.t 运动信息上下文。以图 2 所演示的视频为例。一个强大的图像分类器可以识别两个视频中的人类、水体,可是识别不出自由泳与蛙泳的时间周期性的动做特征的区别。性能





图 2: 上图为自由泳。下图为蛙泳。捕捉时间性运动是区分这两种看起来很类似的状况的关键。另外,还须要注意,相机角度在自由泳视频中段如何忽然改变。学习

3. 设计分类架构 设计可以捕捉时空信息的架构涉及评估多个不一样寻常且代价很大的选项。例如,一些可选的策略有:

  • 一个同时捕捉时空信息的网络 vs 两个网络,一个捕捉时间信息,一个捕捉空间信息。

  • 跨多个剪辑的融合预测

  • 端到端训练 vs 分别进行特征提取和分类

4. 没有标准的基准 长期以来,UCF101 和 Sports1M 都是最流行的基准数据集。探索基于 Sports1M 的合理架构代价很是大。对于 UCF101,尽管帧数与 ImageNet 至关,可是视频之间的空间高关联性让训练中的实际多样性小得多。此外,考虑到类似的主题(运动)在数据集、基准框架向其它任务的推广方面仍然是一个问题。这点最近已经随着 Kinetics 数据集的引入而被解决 [2]。


UCF-101 插图示例。来源(http://www.thumos.info/)

这里必须一提的是,三维医疗图像异常检测并不涉及这里提到的全部挑战。动做识别与医疗图像的区别以下:

就医疗成像来讲,时间上下文可能不如动做识别那样重要。例如,头部大出血 CT 扫描检测应该较少涉及跨片断的时间上下文。颅内大出血可以从单个片断中检测出来。与之相反的是,从胸部 CT 扫描中进行肺结节检测会涉及捕捉时间上下文,由于结节与支气管和血管在二维扫描中看起来都像圆形物体。只有捕捉三维上下文,球形物体的结节才能与圆柱形物体的血管区分开。

就动做识别来讲,大部分研究理念都借助于使用预训练的二维卷积神经网络做为起点来获取更好的收敛结果。就医疗图像来讲,没有这样可用的预训练网络。

解决方案概览

在深度学习以前,大部分用于动做识别的传统 CV(计算机视觉,computer vision)算法变体能够分为如下 3 个广义步骤:

  1. 描述视频区的局部高维可视化特征是提取自密集的 [3] 或者稀疏的特征点(intereset points)集 [4][5]。

  2. 提取的特征组成固定规格的视频级别描述。这个步骤的一个流行变体是将视觉词汇打包来在视频级别编码特征。

  3. 基于视觉词汇包对 SVM 或 RF 之类的分类器进行训练来获得最终预测。

在步骤 1 使用表面人工特征的这些算法中,使用密集采样轨迹特征的 iDT 算法(improved Dense Trajectories[6],改进型密集轨迹算法)是最早进的。同时,在 2013 年用于动做识别的三维卷积算法也没有带来多少帮助 [7]。2014 年以后不久,两篇突破性的研究论文前后发表,它们构成了咱们在本文中将要讨论的全部论文的主干。它们的主要区别是围绕组合时空信息的设计选择。

方案 1:单流网络

在这篇论文【2014 年 6 月 https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/42455.pdf 】中,其做者——Karpathy et al.——探索了多种方法来使用预训练的二维卷积网络从连续帧中融合时间信息。[8]


图 3: 融合理念。来源

如图 3 所示,视频的连续帧是全部设置中的输入。Single frame 使用单个架构,在最后阶段融合来自全部帧的信息。Late fusion 使用共享参数的两个网络,间隔 15 帧,而后在最后组合预测。Early fusion 经过卷积 10 多帧在第一层进行组合。Slow fusion 涉及在多个阶段的融合,是 early fusion 与 late fusion 的一种平衡。为了最终预测,从整个视频中采样多个剪辑并在最后平均化它们的预测分数。

尽管进行了大量实验,做者发现,与现有的基于人工特征的算法相比,结果明显更差。形成这一失败的缘由有不少:

学习的时空特征没有捕捉运动特征

数据集多样化相对较少,学习这种详细特征比较困难。

方案 2: 双流网络

在 Simmoyan 和 Zisserman 的这个开拓性论文【2014 年 6 月 https://arxiv.org/pdf/1406.2199.pdf】 中,做者吸收了先前 Karpathy et al. 的论文的失败教训。考虑到学习运动特征的深度框架的困难度,做者明确以堆积光流向量的形式建模运动特征。所以,这个框架有 2 个单独的网络——一个用于空间上下文(预训练的),一个用于运动上下文,而不是只有单个用于空间上下文的网络。空间网络的输入是视频中的一个单帧。做者对时间网络的输入进行了实验,发现跨 10 个连续帧堆积的双向光流表现最好。这两个流分别进行训练,而后使用 SVM 进行组合。最终预测和先前的论文同样,平均化多个采样帧的预测得分。


图 4: 双流架构。来源(https://arxiv.org/pdf/1406.2199.pdf)

尽管这种方法经过明显捕捉局部时间运动提高了单流方法的性能,但仍然存在一些缺点:

  1. 因为视频层级预测是经过平均采样剪辑的预测得分得到,所以在学习的特征中长期的时间信息仍然是丢失的。

  2. 因为训练的剪辑是从视频中均匀采样的,所以它们存在错误标签分配问题。每一个剪辑都相同的基本假设与动做可能只发生在整个视频的很小一个时间段的基本状况不符。

  3. 这个方法涉及预计算光流向量并分别存储它们。另外,针对两个流的训练是分离的,意味着端到端训练落地还有很长的一段路要走。

总结

下列论文是基于这两篇论文(单流与双流)的某种方式的演化:

  1. LRCN

  2. C3D

  3. Conv3D & Attention

  4. TwoStreamFusion

  5. TSN

  6. ActionVlad

  7. HiddenTwoStream

  8. I3D

  9. T3D

这些论文中常常出现的主题能够概括以下。全部论文都是基于这些基本理念的即兴创做。


论文中常常出现的主题。来源 https://arxiv.org/pdf/1705.07750.pdf

对于每一份论文,我列举出它们的主要贡献并进行解释。我还展现了它们在 UCF101-split1(http://crcv.ucf.edu/data/UCF101.php) 上的基准得分。

LRCN

用于视觉识别和描述的长期递归卷积网络(Long-term Recurrent Convolutional Networks)

Donahue et al.提交于 2014 年 11 月 17 日

Arxiv 连接:https://arxiv.org/abs/1411.4389

主要贡献:
  • 基于先前的工做构建,使用递归神经网络(RNN,recurrent neural network)而不是基于流的设计

  • 面向视频展现的编码 - 解码架构扩展

  • 提出用于动做识别的端到端可训练架构

解释:

在先前 Ng et al 的论文中 [9],做者已经探索了在分离训练的特征图上使用 LSTM 来看看它是否能够从剪辑中捕捉时间信息的想法。使人遗憾的是,他们得出结论,卷积特征的时间汇集(temporal pooling)证实比对训练的特征图进行 LSTM 堆积更有效。在这篇论文中,做者基于在卷积块(编码器)以后使用 LSTM 块(解码器)的相同想法,可是整个架构使用端到端训练。他们还对 RGB 和光流做为输入选项进行了比较,发现基于两种输入的加权预测得分是最好的。


图 5: 左边为面向动做识别的 LRCN。右边为面向全部任务的通用 LRCN 架构。来源(https://arxiv.org/pdf/1411.4389.pdf)

算法:

在训练期间,从视频中采样了 16 帧剪辑。这个架构用 RGB 或 16 帧剪辑的光流做为输入进行端到端训练。每一个剪辑的最终预测是每一个时间步长的预测平均值。视频级别的最终预测是每一个剪辑的预测平均值。

基准(UCF101-split1):


点评:

尽管做者提出了端到端训练框架,但仍然有一些缺点:

  • 因为视频进行了剪辑而形成的错误标签分配

  • 不能捕捉长期时间信息

  • 使用光流意味着分别预计算流特征

Varol et al. 在他们的论文 [10] 中尝试经过使用更小的视频空间分辨率和更长的剪辑(60 帧)来补救有缺陷的时间范围问题,这明显提高了性能。

C3D


用三维卷积网络学习时空特征

Du Tran et al.

提交于 2014 年 12 月 02 日

Arxiv 连接:https://arxiv.org/pdf/1412.0767


主要贡献:
  • 将三维卷积网络用做特征提取器

  • 最佳三维卷积核心和架构的普遍探索

  • 使用反卷积层来解释建模决策

解释:

做者基于 Karpathy et al. 的论文(single stream)构建了这篇论文。然而,他们在视频音量上使用三维卷积算法,而不是跨帧使用二维卷积算法。其理念是在 Sports1M 上训练这些网络,而后使用它们(或者一套拥有不一样时间深度的网络)做为其它数据集的特征提取器。他们的发现是一种相似 SVM 的基于全套提取特征的简单线性分类器,比现有最好的算法更有效。若是使用相似 iDT 的人工特征,这个模型会表现得更好。


C3D 论文和单流论文的区别。来源(https://arxiv.org/pdf/1412.0767)

这篇论文的另一个有意思的部分是使用反卷积层(解释连接http://blog.qure.ai/notes/visualizing_deep_learning) 来解释决策。他们发现,网络在前几帧聚焦于空间外观,并在后续帧中跟踪运动。

算法:

在训练期间,假设已知动做在整个视频中的分布,则从每一个视频随机提取 5 个 2 秒剪辑。在测试期间,随机采样 10 个剪辑,最终对他们的预测得分进行平均从而获得最终预测。


卷积应用在一个时空立方体上的三维卷积。

基准 (UCF101-split1):


点评:

长期时间建模仍然是一个问题。此外,训练如此巨大的网络在计算上是一个难题——特别是对于医疗成像来讲,天然图像的预训练没有多大帮助。

备注:

几乎与此同时,Sun et al. [11] 提出了因式分解三维卷积网络(FSTCN)的理念,其中做者探索了将三维卷积分解成空间二维卷积和时间一维卷积。这个一维卷积放在二维卷积层后面,实现为一个在时间和信道维度上的二维卷积。因式分解三维卷积(FSTCN)在 UCF101 split 上的结果也很可观。


论文和三维因式分解。来源(https://arxiv.org/pdf/1510.00562.pdf)

Conv3D & Attention


利用时间结构来描述视频

Yao et al.

提交于 2015 年 4 月 25 日

Arxiv 连接:https://arxiv.org/abs/1502.08029


主要贡献:
  • 捕捉局部时空信息的新型 3D CNN-RNN 编码 - 解码架构

  • 使用 attention 机制和 CNN-RNN 编码 - 解码框架来捕捉全局上下文

解释:

尽管这篇论文与动做识别没有直接关联,可是这是一篇视频表示相关的具备重大意义的论文。在这篇论文中,做者使用了一种 3D CNN+LSTM 架构做为视频描述任务的基础架构。在这个基础之上,做者使用了一个预训练的 3D CNN 来改进结果。

算法:

其设置与在 LRCN 中描述的编码 - 解码架构几乎相同,只有 2 点不一样:

  1. 剪辑的 3D CNN 特征图用同帧集的 2D 特征堆积图级联来丰富每一帧 i 的表达式{v1, v2, ..., vn},而不是将特征从 3D CNN 传给 LSTM。备注:使用的 2D & 3D CNN 是预训练的,而不是像 LRCN 那样的端到端训练。

  2. 使用加权平均来组合时间特征,而不是对全部帧的时间向量进行平均。其中 attention 权重基于每一个时间步长的 LSTM 输出决定。


动做识别的 attention 机制。来源(https://arxiv.org/abs/1502.08029)

基准:


点评:

这是 2015 年的一篇具备重大意义的论文,首次提出了面向视频表示的 attention 机制。

TwoStreamFusion


面向视频动做识别的双流卷积网络融合

Feichtenhofer et al.

提交于 2016 年 4 月 22 日

Arxiv 连接:https://arxiv.org/abs/1604.06573


主要贡献:
  • 经过长期损失进行长期时间建模

  • 新型多级融合架构

解释:

在这篇论文中,做者使用基础的双流架构以及 2 种新型方案,在不显著增长参数规模的状况下提高了性能。做者探索了这两种想法的功效。

  1. 空间流和时间流的融合(如何融合、何时融合)——对于洗头和刷牙之间的任务识别,空间网络可以捕捉视频中的空间依赖(好比头发或牙齿),而时间网络可以捕捉视频中每一个空间位置的周期性运行的存在。所以,将对应于特定面部区域的空间特征图映射到时间特征图的对应区域是很是重要的。为了实现一样目的,2 个网络须要在早期进行融合,使得在相同像素位置的响应被置于相应的位置,而不是(像在基础双流架构中那样)最后才融合。

  2. 跨时间帧来组合时间网络输出,从而对长期依赖也进行建模。

算法:与双流架构几乎保持一致,除了:

  1. 以下图所示,来自两个流的 conv_5 层输出经过 conv+pooling 融合。在最后一层还有另一次融合。最终融合的输出用于时空损失评估。


用于融合空间流和时间流的可能策略。右边的策略表现更好。来源(https://arxiv.org/abs/1604.06573)

2. 对于时间融合来讲,来自时间网络的输出,跨时间堆叠,而后经过 conv+pooling 的融合,是用于时间损失的。融合架构。



双流有两种路径,一种是第一步,另外一种是第二步。来源(https://arxiv.org/abs/1604.06573)

基准(UCF101-split):


点评:

做者奠基了 TwoStreamFusion 方法的优越性,由于它的性能超越了 C3D 却没有 C3D 中使用的额外参数。

TSN


时间段网络:面向深度动做识别的良好实践

Wang et al.

提交于 2016 年 8 月 02 日

Arxiv 连接:https://arxiv.org/abs/1608.00859


主要贡献:

  • 面向长期时间建模的有效解决方案

将使用批量标准化(batch normalization)、dropout(译者注:dropout 是指在深度学习网络的训练过程当中,对于神经网络单元,按照必定的几率将其暂时从网络中丢弃)和预训练创建为良好实践

解释:

在这篇论文中,做者对双流架构进行了优化,从而产生最好的结果。与原论文相比,有两个主要的区别:

  1. 他们建议从视频中稀疏地采样剪辑从而获取更好的长期时间信号建模,而不是在整个视频中随机采样。

  2. 针对视频等级的最终预测,做者探索了多种策略。最佳策略是:

    1. 经过平均每一个片断,分别组合空间流和时间流(和其它流,若是涉及其它输入形式)的得分

    2. 对最终的空间得分和时间得分使用加权平均方法得到融合得分,在全部类上应用 softmax。

论文的另一个重要部分是,创建了过分拟合问题(因为数据集规模较小)并演示了如今流行的批量标准化、dropout、预训练等技术。做者还评估了光流以外的两种新的输入形式——即扭曲光流(warped optical flow)和 RGB 差值。

算法:

在训练和预测过程当中,一个视频被分割成 K 个时间段相同的片断。在那以后,从 K 个片断中随机取样一些片断。其他步骤与双流构架类似,除了上述的一些变化。


时间段网络构架。来源(https://arxiv.org/pdf/1608.00859.pdf)

基准(UCF101-split1):


点评:

这篇论文尝试处理动做识别领域的 2 个巨大挑战——因为数据集规模较小的过分拟合和长期时间建模,并且其结果很是不错。然而,预计算光流问题和相关的输入形式仍然是一个问题。

ActionVLAD


ActionVLAD: 面向动做分类的时空聚合学习

Girdhar et al.

提交于 2017 年 4 月 10 日

Arxiv 连接:https://arxiv.org/pdf/1704.02895.pdf


解主要贡献:

  • 可学习的视频级别特征聚合

  • 具备视频聚合特征的端到端可训练模型来捕捉长期依赖

解释:

在这篇论文中,做者最突出的贡献是,相对于使用 maxpool 后者 avgpool 的普通聚合来讲,对可学习的特征聚合(VLAD)的使用。这个聚合技术相似于视觉词汇包。以多个学到的锚点(好比 c1, ...ck)为基础的词汇表示 k 个典型动做(或者子动做)相关的时空特征。在双流架构中的每一个流的输出是用 k 个“动做词汇”相关特征编码的——针对任何给定的空间或时间位置,每一个特征与对应锚点的输出都是不一样的。


ActionVLAD——基于动做包的视觉“词汇”。来源(https://arxiv.org/pdf/1704.02895.pdf)

平均或最大池化(译者注:max-pooling,是指将输入的图像划分为若干个矩形区域,对每一个子区域输出最大值。)表示特征点的完整分布,由于单个描述符对于表示多个子动做组合而成的完整视频来讲多是次优的。相反地,论文中提出的视频聚合,经过将描述符空间分红 k 个单元而且在每一个单元中聚合(pooling),从而将一个完整描述符的分布表示为多个子动做。


尽管最大池化或者平均池化对于类似的特征表现良好,但它们并无充分地捕捉到完整的分布特征。ActionVLAD 汇集了外观和运动特征,并从最近的集群中心汇集其他特征。来源(https://arxiv.org/pdf/1704.02895.pdf)

算法:

除了 ActionVLAD 层的使用,一切与双流架构都几乎保持类似。做者尝试了多层架构,将 ActionVLAD 层和 late fusion 放在 conv 层以后做为最佳策略。

基准(UCF101-split1):


个人评论:

使用 VLAD 做为一种有效的汇集(pooling)方法已经被证实好久了。在 2017 年初,端到端框架中的相同扩展,使得这项技术对于大多数动做识别任务来讲很是健壮和先进。

HiddenTwoStream


面向动做识别的隐双流卷积网络

Zhu et al.

提交于 2017 年 4 月 2 日

Arxiv 连接:https://arxiv.org/abs/1704.00389


主要贡献:
  • 利用隔离网络生成动态光流输入的新型架构

解释:

在双流架构中对光流的使用使得须要强制预计算每一个采样帧以前的光流,从而对存储和速度产生不利影响。这篇论文提倡使用一种无监督架构来针对帧堆栈生成光流。

光流能够看做是一种图像重构问题。假定一组相邻的帧 I1 和 I2 做为输入,咱们的卷积神经网络生成一个流场 V。而后使用预测的流场 V 和 I2,可使用逆翘曲(inverse wraping)方法将 I1 重构为 I1',使得 I1 和它的重构体之间的差异最小化。

算法:

做者探索了多种策略和架构来生成具备最大 fps 和最少参数且尽量不损伤准确度的光流。最终的架构与双流架构相同,但进行了以下改变:

  1. 时间流如今拥有堆叠在通用时间流架构上的光流生成网(MotionNet)。时间流的输入如今是天然帧而不是预处理过的光流。

  2. 对于 MotionNet 的无监督训练来讲,具备额外的多级损失。做者展示了使用基于 TSN 的融合而不是针对双流方案的卷积架构在性能方面的提高。


HiddenTwoStream——MotionNet 生成动态光流。来源(https://arxiv.org/pdf/1704.00389.pdf)

基准(UCF101-split1):


点评:

这篇论文的主要贡献是改进了预测的速度和相关成本。随着流的自动生成,做者减轻了对较慢的传统生成光流方法的依赖。

I3D


动做识别将何去何从?一种新型模型和 Kinetics 数据集

Carreira et al.

提交于 2017 年 5 月 22 日

Arxiv 连接:https://arxiv.org/abs/1705.07750


主要贡献:
  • 利用预训练将三维模型组合到双流架构中

  • 面向将来基准和改进动做数据集多样性的 Kinetics 数据集

解释:

这篇论文基于 C3D。做者在双流架构中使用了 2 种不一样的三维网络而不是单个三维网络。另外,为了利用预训练二维模型的优点,做者在第三维中重用了二维预训练权重。空间流输入如今包括时间维度堆积的帧而不是基础双流架构中的单种帧。

算法:

除了针对每一个流的三维网络,和基础的双流架构相同。

基准(UCF101-split1):


点评:

这篇论文的主要贡献是展示了使用预训练二维卷积网络的好处的证据。论文中开源的 Kinetics 数据集也是这篇论文的另一个重要贡献。

T3D


时间三维卷积网络(Temporal 3D ConvNets):视频分类的新架构和迁移学习算法

Diba et al.

提交于 2017 年 11 月 22 日

Arxiv 连接:https://arxiv.org/abs/1711.08200


主要贡献:
  • 可变深度的时间信息组合架构

  • 监督二维预训练网络到三维网络的迁移学习的新型训练架构和技术

解释:做者扩展了 I3D 上所作的工做,但建议使用基于单流 3D DesnseNet 的架构和在密集块以后堆积的多深度时间汇集层(Temporal Transition Layer)来捕捉不一样的时间深度。这个多深度汇集(multi depth pooling)是经过变化的时间规模核心的汇集来实现的。


TTL 层和 DenseNet 架构的其他部分。来源(https://arxiv.org/abs/1711.08200)

除上述以外,做者还设计了一种新的介于预训练二维卷积网络和 T3D 之间的有监督迁移学习技术。其中的二维预训练网络和 T3D 都来自视频的帧和剪辑,而这些视频剪辑可能来自相同的视频,也可能不是。这个架构被训练,基于 T3D 网络反向传播的预测的正确和错误来预测 0/1,从而高效迁移知识。


有监督迁移学习。来源(https://arxiv.org/abs/1711.08200)

算法:

这个架构基本上是对 DenseNet[12] 的三维修改,新增了可变时间汇集(variable temporal pooling)。

基准(UCF101-split1):


点评:

尽管最终并无提高 I3D 的结果,但这很大程度上可能归因于相对于 I3D 来讲低得多的模型记录。这个论文的最新贡献是有监督迁移学习技术。

原文做者

Rohit Ghosh

查看英文原文:

http://blog.qure.ai/notes/deep-learning-for-videos-action-recognition-review

[1] ConvNet Architecture Search for Spatiotemporal Feature Learning by Du Tran et al.

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

[3] Action recognition by dense trajectories by Wang et. al.

[4] On space-time interest points by Laptev

[5] Behavior recognition via sparse spatio-temporal features by Dollar et al

[6] Action Recognition with Improved Trajectories by Wang et al.

[7] 3D Convolutional Neural Networks for Human Action Recognition by Ji et al.

[8] Large-scale Video Classification with Convolutional Neural Networks by Karpathy et al.

[9] Beyond Short Snippets: Deep Networks for Video Classification by Ng et al.

[10] Long-term Temporal Convolutions for Action Recognition by Varol et al.

[11] Human Action Recognition using Factorized Spatio-Temporal Convolutional Networks by Sun et al.

[12] Densely Connected Convolutional Networks by Huang et al.

相关文章
相关标签/搜索