1.Abstract
本文提出了一种新的方法,用于长时间未修剪视频序列中人体动作的时间检测。我们引入单流时序动作提案( SST ),这是一种新的有效且高效的生成时序动作提案的深度架构。我们的网络可以在很长的输入视频序列上以单个流连续运行,而不需要将输入分割成短的重叠片段或时间窗口进行批处理。我们在实验中证明了我们的模型在时间动作提议生成任务上的表现优于当前最先进的模型,同时达到了一些文献中最快的处理速度。最后,我们证明了将SST建议与现有的动作分类器结合使用,可以提高最先进的速度。
本论文主要提出了一个新进的Proposals方法,用于目标检测和动作识别。
2.Introduction
视频中记录了大量关于人类行为动作的信息,要想处理这些数据,计算机视觉算法需要能够进行人类动作识别和检测的能力。
先前的方法:
- 一开始动作识别被简单的看作是视频分割,也就是把原本的长视频分割成包含单个动作的小片段,但是由于相机记录人类动作是持续不断进行的,所以如果要实现这种想法,算法必须在识别发生动作的起止时间的同时识别动作的种类。但是动作的数量和持续时间可能会有很大的变化,与视频长度相比,动作间隔可以很短。
- 利用滑动的时间窗口在多个时间尺度上把视频分割成大量重叠内容包含动作的Proposal(提案)的片段,然后再用分类器进行分类。该方法计算量大,需要重复多次处理重叠窗口。
本文的方法:
- 提出了长视频序列中进行时序动作建议的框架,该框架只需要在单个通道中处理整个视频。这代表着这个框架可以分析任意长度的视频,不需要单独处理重叠的时间窗口。
主要贡献:
- 引入一个新的架构(SST)用于时序动作提案的生成,该架构可以在单遍视频中运行。可以一次性处理长视频序列,只向前传播一次就能处理完整个video,而不需要使用重叠的时序滑动窗口。框架是基于RNN构建的网络。
- 可以处理long video sequence,只需要向前传播一次就能处理完整个video,可以处理任意长度的video,不需要处理重叠的时间窗口。
- 在proposal generation task上取得了顶尖成果。
3.Related Work
回顾了与视频动作分类、时空动作检测以及循环网络在序列建模中的应用相关的研究。在动作分类方面,大量研究关注于从短视频片段中分类动作。然而,这些方法通常无法很好地处理长视频序列,其中动作的时间跨度相对较小,大部分视觉输入被视为背景。
在时空动作检测方面,已有的方法主要通过滑动窗口的方式密集地应用动作分类器。最近,时空动作提议(Temporal Action Proposals)被引入,以更有效地对少量的时间窗口应用动作分类器。这些提议通常是通过学习方法生成的,例如使用字典学习或循环神经网络架构。
此外,论文还讨论了物体检测领域的相关工作,特别是如何通过深度网络架构直接输出提议,而不是通过多次传递来实现。最后,文章探讨了循环神经网络(RNN)在长序列处理方面的应用和性能,这对于视频分析尤为重要。
关键:
4.Model
SST模型(Single-Stream Temporal Action Proposals)运作具体细节:
输入:
- 输入:长未剪辑视频序列
,L代表帧数。 - 视觉编码:通过3D-卷积(C3D:能在小的时间分辨率δ内有效地捕捉视觉和运动信息)网络处理视频输入,获取每个时间步的C3D特征向量
。
序列编码:
- 使用门控循环单元(GRU)架构,比传统LSTM单元更高效。
- 每个时间步
,序列编码器接收对应的编码C3D特征向量 作为输入。 - GRU更新规则:
- 重置门
- 更新门
- 新状态
- 最终状态
- 重置门
随着视频序列编码的进行逐步确定视频到底做了什么动作,这里接受的是降维后的C3D特征信息,到这一步,收集信息直到确定某个动作已经发生了,与此同时,扔掉不相关的背景信息。从流程上可以看出每一个time step所接收的信息包括两部分,一部分是来自visual encoding的经过降维的C3D特征,一部分是上一步的time step,输出也是两部分,proposal和下一个time step,这里使用的是GRU进行处理
输出:
- 目标:每个时间步
生成多个提议的置信度分数。 - 输出层设计:在每个时间步考虑多种时间尺度的提议,这些提议都以时间
结束。 - 提议置信度得分:
。 - 所有考虑的提议在时间
有固定的结束边界,模型考虑时间步长为 的提议,对应 帧。
每一个time step都会输出一个confidence score 这些score对应着k组从
但是这里其实相当于输出了一系列的概率值,并没有确定哪一个是真正的proposal,所以还需要一个groudtruth来评定哪一个是最好的。
训练:
- 使用加权二值交叉熵目标进行训练。
- 训练目标:
- 通过密集抽样重叠训练视频段来模拟测试操作条件,提高模型的鲁棒性。
训练数据的生成:
- 对于每个训练视频,通过以长度为
的滑动窗口方式提取片段,其中 ,步长为 。 - 设置
,以模拟长序列的操作,避免隐藏状态饱和。
训练过程:
- 训练实例与视频中的时间间隔对应的真值标签相关联,网络将每个时间间隔分类为正面或负面的动作提议。
- 使用加权二值交叉熵目标进行训练,对于训练视频
,在时间 的损失由下式给出:
其中,和 是根据训练集中每个尺度 的正负提议的频率计算出来的权重, 是网络的输出。 - 在所有训练实例
上的总损失为:
关键点:
- 训练时,通过密集采样重叠的训练视频段来模拟测试操作条件,使网络对非修剪视频中的背景内容不敏感,同时保留相关上下文。
- 在每个时间步中,通过不同的上下文多次考虑原始视频序列的每个时间步,以增强预测和编码对隐藏状态初始值的鲁棒性。
- 每一次取样都使用label来进行标记,把这些已经选出来的
分为 和 ,比如说在上图的 ,此时此刻计算他的 值,如果超过0.5:label为1,低于0.5:label为0,做一个二分类。
上述所提到的训练过程是有监督学习
5.Experiment
接着把
对比可以看出
另外相比其他的方法来说,因为不需要重复添加大量的窗口,
模型鲁棒性来讲,
网络扩展性上,作者提出了可以和各种分类器配合一起使用,表现的也比较好。
6.Conclusion
作者提出了一种新的架构:
模型在动作提议(Proposals)任务上达到了最先进的性能,并且当作为一个完整的检测架构的一部分时,以更少的提议提供了有效的动作定位性能。
7.相关链接
论文地址
作者源码地址
Pytorch版