[行为识别]论文翻译-Hidden Two-Stream Convolutional Networks for Action Recognition

论文地址
代码地址(pytorch)
代码地址(caffe)

Abstract

在本文中,我们提出了一种新颖的CNN体系结构,隐式捕获相邻帧之间的运动信息。 我们将其命名为Hidden Two-Stream Convolutional Networks,因为它仅将原始视频帧作为输入并直接预测动作类别,而无需明确计算光流。

1 Introduction

当前最新的CNN结构仍然难以直接从视频帧捕获运动信息,所以一般使用传统的局部光流估计方法来为CNN预先计算运动信息。 这个首先计算光流,然后学习从光流到动作标签的映射的两阶段流水线,拥有以下缺点:

  • 与CNN步骤相比,光流的预计算既费时又需要存储 。
  • 传统的光流估计完全独立于诸如动作识别之类的最终任务。
  • 不可以端到端学习

我们采用端到端CNN方法来学习光流,可以避免昂贵的计算和存储并获得特定任务的运动表示。 但是,要学习这样的运动估计模型,我们面临许多挑战:

  • 需要在没有监督的情况下训练模型。 除了有限的综合数据[34,36,37],通常没有监督训练所需的ground truth流。
  • 需要从头开始训练我们的光流估算模型。 从光流估算任务中学习的模型(过滤器)与从其他视觉任务中学习的模型(过滤器)有很大的不同[6、14、29]。
  • 不能简单地使用传统的光流估计loss函数。 我们主要关注如何学习视频动作识别的最佳运动表示

为了解决这些挑战,我们首先训练CNN,其目标是从一组连续的帧中生成光流。 通过一组经过特殊设计的算子和不受监督的损耗函数,我们的新训练步骤可以产生与通过TV-L1[32]产生的光流相似的光流。 如图1底部所示,我们将此网络称为MotionNet
[行为识别]论文翻译-Hidden Two-Stream Convolutional Networks for Action Recognition_第1张图片
给定MotionNet,我们将其与时间流CNN连接起来,该时间流CNN将估计的光流映射到目标动作标签。 然后,我们以端到端的方式微调此堆叠的时间流CNN,以预测输入帧的动作类别。我们称这种新方法为Hidden Two-Stream Networks,因为它隐式生成用于动作识别的运动信息。

  • 在计算和存储方面都非常有效。 它比两阶段baseline快大约10倍,且不需要存储预先计算的光流。
  • 在四个具有挑战性的动作识别数据集上大大优于以前的实时方法。
  • MotionNet是灵活的,可以与其他视频动作识别框架[1,16,22,35]直接连接提高效率。
  • 通过在四个光流benchmark上显示出优秀的结果而无需进行微调,我们证明了端到端学习光流的可推广性。

2 Related work

3 Hidden Two-Stream Networks

3.1节:介绍用于光流估计的无监督网络(MotionNet)
3.2节:将时间流网络堆叠在MotionNet上,以允许进行端到端训练
3.3节:介绍了结合堆叠时间流和空间流的Hidden Two-Stream CNN

3.1 Unsupervised Optical Flow Learning

我们将光流估计视为图像重建问题[31]。

给定一个帧对,我们希望生成光流,从而使我们可以从另一个帧重建一个帧。形式上,我们以一对相邻的帧 I 1 I_1 I1 I 2 I_2 I2作为输入,我们的CNN生成一个流场 V V V。然后,使用预测的流场 V V V I 2 I_2 I2,我们使用向后弯曲获得重构帧 I 1 ′ I_1' I1,即 I 1 ′ = τ [ I 2 , V ] I_1'= \tau[I_2,V] I1=τ[I2,V] ,其中 τ \tau τ是反扭曲函数。

我们的目标是使 I 1 I_1 I1 I 1 ’ I_1’ I1之间的光度误差最小。 如果可以将估计的流和下一帧用于重建当前帧,则网络应该已经学习了基本运动的有效表示。

3.1.1 MotionNet

我们的MotionNet是一个全卷积网络,由收缩部分和扩展部分组成。 收缩部分是卷积层的堆叠,扩展部分由卷积层和反卷积层组合而成。 我们网络的详细信息可以在补充材料中找到。

  • 首先,设计一个专注于小位移运动的网络。 对于诸如YouTube视频之类的真实数据,我们经常遇到前景运动(人类感兴趣的动作)较小而背景运动(相机运动)占主导的问题。 因此,我们在整个网络中采用3×3卷积核来检测局部的微小运动。 此外,我们保留高频出现的图像细节供以后使用。 我们的前两个卷积层不使用stride。 我们使用stride卷积代替池化来进行图像下采样,因为池化对密集的每像素预测任务有影响。

  • 其次,MotionNet在多尺度上计算多个loss。 由于收缩部分和膨胀部分之间的跳过连接,中间损失可以使彼此规则化,并引导较早的层更快地收敛到最终目标。 我们探索了三种损耗函数,可帮助我们产生更好的光流。 这些损失函数如下。

    • 标准的逐像素重建误差公式:在这里插入图片描述
      V x , V y V^x,V^y Vx,Vy是水平和垂直方向上的估计光流。 使用空间变换器模块[9]执行反扭曲 τ \tau τ。 在这里,我们使用鲁棒的凸误差函数,即广义的Charbonnier 惩罚 ρ ( x ) = ( x 2 + ε 2 ) α ρ(x)=(x^2+\varepsilon 2)^α ρ(x)=(x2+ε2)α,来减少outliers的影响。 h , w h,w h,w表示图像 I 1 , I 2 I_1,I_2 I1,I2的高度和宽度.

    • 解决了孔径问题的平滑度损失,该孔径问题导致在非纹理化区域中估计运动时造成歧义。 计算公式为:
      在这里插入图片描述
      ∇ V x x , ∇ V y x ∇V_x^x,∇V_y^x Vxx,Vyx是在每个方向上的估计流场 V x V^x Vx的梯度。 同样, ∇ V x y , ∇ V y y ∇V_x^y,∇V_y^y Vxy,Vyy V y V^y Vy的梯度。 广义Charbonnier惩罚 ρ ( x ) ρ(x) ρ(x)与像素级loss相同。

    • 结构相似度(SSIM)loss函数[26],可帮助我们学习帧的结构。 SSIM是一种感知质量度量。 给定两个 K × K K×K K×K图像块 I p 1 I_{p1} Ip1 I p 2 I_{p2} Ip2,其计算公式为
      在这里插入图片描述
      在此, μ p 1 , μ p 2 μ_{p1},μ_{p2} μp1,μp2是图像块 I p 1 I_{p1} Ip1 I p 2 I_{p2} Ip2的平均值, σ p 1 σ_{p1} σp1 σ p 2 σ_{p2} σp2是图像块 I p 1 I_{p1} Ip1 I p 2 I_{p2} Ip2的方差,而 σ p 1 p 2 σ_{p1p2} σp1p2是这两个图像块的协方差。 c 1 c1 c1 c 2 c2 c2是两个常数,用于稳定小分母的除法。 在我们的实验中, K K K设置为8,而 c 1 c1 c1 c 2 c2 c2分别为0.0001和0.001。
      为了比较两个图像 I 1 I_1 I1 I 1 ’ I_1’ I1之间的相似性,我们采用滑动窗口方法将图像划分为局部块。 滑动窗口的步幅在水平和垂直方向上均设置为8。 因此,我们的SSIM损失函数定义为:
      [行为识别]论文翻译-Hidden Two-Stream Convolutional Networks for Action Recognition_第2张图片
      其中N是在滑动步幅为8的情况下我们可以从图像中提取的补丁数量,n是补丁索引。 I 1 n I_{1n} I1n I 1 n ’ I_{1n}’ I1n是来自原始图像 I 1 I_1 I1和重构图像 I 1 ’ I_1’ I1的两个对应的块。 我们的实验表明,这种简单的策略可以显着提高估算流的质量。 它迫使我们的MotionNet产生具有清晰运动边界的流场。

  • 因此,每个scale s上的loss是像素级重建loss,分段平滑度loss和基于区域的SSIM loss的加权和
    在这里插入图片描述
    其中权重 λ 1 , λ 2 , λ 3 λ1,λ2,λ3 λ1,λ2,λ3表示训练过程中不同指标的相对重要性。我们可以在五个尺度(flow2到flow6)上进行预测,因此MotionNet的总loss是loss L s L_s Ls的加权和:
    在这里插入图片描述
    其中设置 δ s δ_s δs来平衡每个标度上的loss,并且阶数相同。

  • 第三,由于违反了亮度假设,无监督学习光流会在均匀区域引入伪影。 我们在扩展部分的反卷积层之间插入其他卷积层,以产生更平滑的运动估计。 我们还探索了文献中的其他技术,例如在扩展过程中增加流量置信度并乘以原始彩色图像[8]。 但是,我们没有观察到任何改进。

在第5.1节中,我们进行了消融研究,以证明每种策略的贡献。尽管我们的网络结构类似于[8],但是MotionNet从根本上不同于FlowNet2。

首先,我们进行无监督学习,而[8]则对光流预测进行监督学习。无监督学习使我们能够避免合成数据和真实数据之间的巨大差别。无监督学习还使我们能够以端到端的方式针对目标任务(如动作识别)训练模型,即使目标应用程序的数据集没有地面真实的光流。

其次,我们的网络架构经过精心设计以平衡效率和准确性。例如,MotionNet仅具有一个网络,而FlowNet2具有5个类似的子网。

MotionNet和FlowNet2 [8]的模型足迹分别为170M和654M,预测速度分别为370fps和25fps。我们还将在补充材料中进行架构搜索,以获取关于准确性和效率之间的模型权衡的深刻见解。

3.2 Projecting Motion Features to Actions

鉴于MotionNet和时间流都是CNN,我们希望将这两个模块组合为一个阶段并进行端到端训练。 有多种方法可以设计这样的组合,将动作特征投射到动作标签上。 在这里,我们探索两种方式,即堆叠和分支。

  • 堆叠是最直接的方法,只是将MotionNet放在时间流的前面,将MotionNet视为现成的流量估计器。
  • 在体系结构设计方面,分支更加优雅。 它使用单个网络进行运动特征提取和动作分类。 卷积特征在两个任务之间共享。

由于篇幅所限,我们在补充材料中证明,堆叠比分支更有效。 它在保持与空间流互补的同时,实现了更好的动作识别性能。 从现在开始,我们选择堆叠以将运动特征投影到动作标签。

对于堆栈,我们首先需要对估计的流进行归一化,然后再将其送到encoding CNN。 更具体地说,如[19]中所建议,我们首先将大于20像素的运动裁剪为20像素。 然后,我们对裁剪后的流进行归一化和量化以使其范围介于0到255之间。我们发现这种归一化非常重要,并为此设计一个新的归一化层。

其次,我们需要确定如何微调网络,包括在微调期间要使用哪些loss。 我们探索了不同的设置。
(a)修复MotionNet,这意味着我们不使用action loss来微调光流量估算器。
(b)对MotionNet和时间流CNN都进行微调,但仅计算了动作分类损失函数。 不涉及无监督的目标(5)。
(c)对MotionNet和时间流CNN进行微调,并计算所有损失函数。

由于运动很大程度上与动作有关,因此我们希望通过这种多任务学习方法来学习更好的运动估计器。 如第4.2节稍后所述,模型(c)实现了最佳的动作识别性能。

第三,我们需要捕获相对长期的运动依赖。 我们通过输入多个连续流场的堆叠来完成此操作。 Simonyan和Zisserman [19]发现,与仅使用单个流场相比,包含10个流场的堆栈可以获得更高的精度。 为了进行公平的比较,我们还将输入的长度固定为11帧,以允许我们生成10个光流

3.3 Hidden Two-Stream Networks

我们还展示了将堆叠的时间流与空间流相结合的结果。 这些结果非常重要,因为它们是我们堆积的时间流确实是在学习互补运动信息还是仅仅是在学习外观信息的有力指标。

按照[19,24]的测试方案,我们为每个视频平均采样25帧/片段。 对于每个帧/片段,我们通过裁剪4个角和1个中心,将它们水平翻转并平均样本所有作物的预测得分(在softmax操作之前)来执行10倍数据增强。 最后,我们以空间与时间流之比为1:1.5融合两条流的分数。

4 Experiments

4.1 Evaluation Datasets

我们在UCF101 [20],HMDB51 [12],THUMOS14 [5]和ActivityNet [7]进行了实验。

4.2 Results

在本节中,我们将根据UCF101的first split评估我们提出的框架。 我们以每秒帧数为单位报告推理步骤的准确性和处理速度。 结果如表1所示。实施细节在补充材料中。
[行为识别]论文翻译-Hidden Two-Stream Convolutional Networks for Action Recognition_第3张图片
表1的顶部:这里我们比较两阶段方法的性能。 两阶段的意思是光流被预先计算,缓存,然后馈送到CNN分类器以将流投影到动作标签。 为公平起见,此处的MotionNet在UCF101上进行了预训练,但未使用动作分类损失对其进行微调。 它仅以帧对作为输入,并估计一个流。 结果表明,在此设置下,我们的MotionNet在精度和速度之间实现了良好的平衡。

在准确性方面,我们的无监督MotionNet相对于TV-L1更具竞争力,同时比其他生成流的方法(包括使用合成数据的有监督训练(FlowNet [4]和FlowNet2 [8])要好得多(绝对改善4%〜12%)。 ),并直接从压缩视频中获取流(增强运动矢量[33])。 这些改进在UCF101等数据集中非常重要。 在速度方面,我们也是基于CNN的最佳方法之一,并且比最快的传统方法之一TV-L1快得多。

表1的中间部分:在这里,我们研究了基于端到端CNN的方法的性能。 这些方法都没有存储中间流信息,因此运行速度比两阶段方法快得多。 如果将这些方法的平均运行时间与两阶段方法的运行时间进行比较,可以看到,编写和读取中间结果所花费的时间几乎是所有其他步骤所花费时间的3倍。 因此,从效率的角度来看,进行端到端训练并预测动态光流非常重要

我们将ActionFlowNet [15]称为分支时间流。 这是一个多任务学习模型,可以共同估计光流并识别动作。卷积特征被共享,从而可以提高速度。 但是,即使是16帧ActionFlowNet的性能也比我们堆叠的时间流差1%。 此外,ActionFlowNet使用来自传统方法的光流作为标签来执行监督训练。 这表明在训练阶段,它仍然需要缓存流估计,这对于大规模视频数据集而言是计算和存储需求。

如果我们比较微调堆叠的时间流CNN的方式,我们可以看到包含所有损失函数以进行端到端训练的模型(c)优于其他模型,包括固定MotionNet权重( 模型(a)),并且仅使用动作分类损失函数(模型(b))。 这些结果表明,端到端的微调和具有超导损失函数的微调对于堆叠式时间流CNN训练都非常重要。

表1的底部:在这里,我们通过将时间流CNN的预测分数与空间流CNN的预测分数融合来比较两流网络的性能。 这些比较主要用于表明,堆叠的时间流CNN确实可以学习运动信息,而运动信息与在外观流中学习的信息是互补的。

单流空间CNN的准确性为80.97%。从表1中我们观察到,通过将堆叠的时间流CNN与空间流CNN融合以创建隐藏的两流CNN,可以实现显着的改进。这些结果表明,我们堆叠的时间流CNN能够直接从帧中学习运动信息,并且比单独的空间流CNN可以获得更好的准确性。即使在仅使用动作损失来微调整个网络的情况下(模型(b)),该观察结果也是正确的。这个结果非常重要,因为它表明我们的无监督预训练确实为CNN提供了一条更好的路径来学习识别动作,并且在微调过程中不会忘记该路径。如果将隐藏的两流CNN与堆叠的时间流CNN进行比较,我们可以看到模型(c)与模型(a)/(b)之间的差距越来越大。原因可能是因为,在没有对无监督丢失进行归一化的情况下,网络开始学习外观信息。因此,它们与空间CNN的互补性降低了。

最后,我们可以看到我们的模型与原始的两流CNN的准确性非常相似。 在我们展示的两份代表性作品中,两流CNN [19]是最早的两流工作,而甚深两流CNN [24]是我们改进的工作。 因此,非常深的两流CNN [24]是最可比的工作。 我们可以看到我们的方法在准确性方面比甚深两流CNN [24]差1%,但在速度方面要快10倍。

5 Discussion

5.1 Ablation Studies for MotionNet

由于我们专门设计了损失函数和运算符,因此我们建议的MotionNet可以产生高质量的运动估计,这使我们能够获得有希望的动作识别精度。 在这里,我们进行了消融研究,以了解这些成分的贡献。 结果显示在表2中。Small Disp表示使用的网络侧重于小位移。 CDC意味着在MotionNet的扩展部分的反卷积之间添加额外的卷积。 MultiScale表示多种规模的计算损失。

[行为识别]论文翻译-Hidden Two-Stream Convolutional Networks for Action Recognition_第4张图片
首先,我们研究使用专注于小位移运动的网络结构的重要性。 我们将实现的其他方面保持不变,但是使用更大的内核大小,并跨入网络的开始。 准确性从82.71%降低到82.22%。 该下降表明,使用较小的内核和更深的网络确实有助于检测微小的运动。

其次,我们研究增加SSIM损耗的重要性。 如果没有SSIM,动作识别精度将下降到81.58%。 超过1%的性能下降表明,重点在于发现帧对的结构非常重要。

第三,我们研究了消除MotionNet扩展部分中反卷积之间的卷积的效果。 该策略旨在平滑运动估计。 如表2所示,消除额外的卷积会使性能显着下降,从82.71%下降到81.25%。

第四,我们研究了结合平滑度目标的优势。没有平滑度损失,我们得到80.14%的差得多的结果。结果表明,我们的真实数据非常嘈杂。添加平滑度正则化有助于通过抑制噪声来生成更平滑的流场。这种抑制对于随后的时间流CNN学习更好的运动表示以进行动作识别很重要。

第五,我们研究了在反卷积过程中在多个尺度上计算损失的必要性。如果没有多尺度方案,则动作识别精度将下降至80.63%。性能下降表明,对每个规模的输出进行正规化以最终产生最佳流量估算非常重要。否则,我们发现反卷积过程中的中间表示可能会漂移以适合动作识别任务,而不是预测光流。

最后,我们探索了一个不采用任何这些实践的模型。不出所料,性能是最差的,比我们完整的MotionNet低4.94%。

5.2 Learned Optical Flow

在本节中,我们系统地研究了不同运动估计模型对动作识别的影响,以及它们的流量估计质量。 我们还显示了一些直观的示例,以发现可能的改进方向。 在这里,我们比较了三种光流模型:TV-L1,MotionNet和FlowNet2。 为了定量评估学习流程的质量,我们在四个受到好评的基准上测试了这三个模型,这些基准是MPI-Sintel,KITTI 2012,KITTI 2015和Middlebury。 为了提高动作识别的准确性,我们报告了它们在UCF101 split1上的性能。 结果可以在表3中看到。我们使用EPE(端点误差)来评估MPI-Sintel,KITTI 2012和Middlebury,较低者为佳。 我们使用Fl(光流离群值的百分比)来评估KITTI 2015,越低越好。 我们使用分类精度来评估UCF101,越高越好。

对于流动质量,除了在Middlebury上,FlowNet2通常表现更好,因为它主要包含较小的位移。 我们的MotionNet在Sintel和Middlebury上具有与TV-L1类似的性能,在KITTI 2012和KITTI 2015上具有优于TV-L1的性能。结果令人鼓舞,因为KITTI基准包含真实数据(非合成),这表明流量估算 MotionNet的强大功能和通用性。 此外,尽管FlowNet2在光流基准测试中排名较高,但在动作识别任务上却表现最差。 这种有趣的观察结果表明,较低的EPE并不总是导致较高的动作识别精度。 这是因为EPE是基于L2距离的非常简单的方法,它不考虑运动边界保留或背景运动消除。 但是,这对于识别复杂的人类行为至关重要。
[行为识别]论文翻译-Hidden Two-Stream Convolutional Networks for Action Recognition_第5张图片
我们还在图2中显示了一些视觉样本,以帮助了解估计的流场质量对动作识别的影响。 颜色方案遵循[8]中的标准流场颜色编码。 通常,所有三个模型的估计流场看起来都是合理的。 由于其全球学习能力,与TV-L1相比,MotionNet具有许多背景噪音。 这也许就是为什么它的动作识别性能不如TV-L1的原因。 FlowNet2在均匀区域具有非常清晰的运动边界,精细的结构和平滑度。 就EPE和外观检查而言,这确实是一个很好的流量估算器。 但是,它的动作识别效果要差得多,比TV-L1低3.5%,比MotionNet低2.9%。 因此,哪种动作表示最适合动作识别仍然是一个悬而未决的问题。

6 Comparison to State-of-the-Art Real-Time Approaches

[行为识别]论文翻译-Hidden Two-Stream Convolutional Networks for Action Recognition_第6张图片
在本节中,我们将建议的方法与最新的实时最新技术方法进行比较,如表4所示。在所有实时方法中,我们的隐藏式两流网络在四个基准测试中均实现了最高的准确性。 我们还通过将MotionNet连接到具有不同主干CNN架构的时间流(例如VGG16 [24],TSN [25]和I3D [1])来显示其灵活性。 借助更深的网络,我们可以实现更高的识别精度,并且仍然是实时的。 与以前的最新技术相比,我们在UCF101上提高了6.1%,在HMDB51上提高了14.2%,在THUMOS14上提高了8.5%,在ActivityNet上提高了7.8%。 这表明,就动作识别任务而言,我们堆叠的端到端学习框架可以比运动矢量[10,33]和RGB差异[25]更好地隐式学习更好的运动表示。

7 Conclusion

我们提出了一个称为隐藏两流网络的新框架,以识别视频中的人为行为。 它解决了捕获当前CNN体系结构难以解决的视频帧之间的时间关系的问题。 与当前使用传统的局部光流估计方法来预先计算CNN的运动信息的常规做法不同,我们使用了无监督的预训练方法。 我们的MotionNet具有高效的计算能力和端到端的可培训性。 它非常灵活,可以直接应用于其他框架中以用于各种视频理解应用程序。 四个具有挑战性的基准的实验结果证明了我们方法的有效性。

将来,我们将朝以下方向改进隐藏的两流网络。 首先,我们希望基于观察到的平滑度损失对用于动作识别的运动估计质量有重大影响的观察,来改进光流预测。 第二,我们希望结合其他最佳实践来改善网络的整体性能。 例如,联合训练两个流而不是简单的后期融合。 第三,看到解决标签分配错误问题如何帮助改善我们的整体绩效将是很有趣的。 最后,在CNN框架内删除全局摄像机运动和部分遮挡将有助于光流估计和动作识别。

你可能感兴趣的:(行为识别,深度学习,光流,论文)