ECO: Efficient Convolutional Network for Online Video Understanding论文笔记(飞桨)

存在两个问题:

(1)推理的主要部分是在视频中局部执行的,因此它错过了跨越几秒钟的动作中的重要关系,只关注局部信息,忽略了横跨一定时间间隔的动作联系。

(2)尽管存在采用快速逐帧处理的局部方法,但整个视频的处理效率不高,并且妨碍了快速视频检索或长期活动的在线分类。

相关工作:

与ECO最相似的是TSN,TSN方法是

1.输入视频划分成K个片段,每个片段随机取帧
2.两个卷积网络分别提取空间和时序特征( RGB图像和光流图像)
3.通过片段共识函数 ,分别融蛤两个分支不同片段结果
4.两类共识再次融合

网络结构如下:

TSN的优势是相比与3D卷积不需要密集地取帧,缺点是共识函数比较简单,只是求均值之后再融合,特征学习可能不充分。 

 ECO在三个主要方面与先前的方法有所不同:

1)与TSN相似,首先从整个视频中采样固定数量的帧,以覆盖用于理解视频的远程时间结构。以此方式,采样帧跨越了整个视频,而与视频的长度无关。

2)与TSN相比,我们使用3D网络来学习帧之间的关系并在整个视频中对其进行跟踪。对网络进行了端到端的培训以学习这种关系。

3)网络直接提供视频级别的分数,而无需事后特征聚合。因此,即使在小型计算设备上,它也可以联机模式实时运行。

 论文方法

      上图为ECO Lite的体系结构。提供具有可变帧数的整个视频作为网络的输入。视频被分成N个大小相等的子区域Si,i = 1,...,N,并且在每个子区域中,随机地采样一帧。这些帧中的每一个都由单个2D卷积网络(权重共享)处理,这会产生对帧外观进行编码的特征表示。通过联合处理覆盖整个视频的时间段中的帧,可以确保捕获一段时间内动作最相关的部分以及这些部分之间的关​​系,考虑到了时间关系对动作进行分类。相对于始终使用相同的位置,随机采样帧的位置会导致训练过程中的多样性,并使网络适应动作实例的变化。并且这种处理会在训练过程中利用视频的所有帧来对变化进行建模。同时,网络在运行时只处理N个帧,这使得该方法非常快。还考虑了更聪明的分区策略,这些策略考虑了小节的内容。视频的每一帧必须在运行时被处理以获得分区,并且这种更智能的分区的实际改进是有限的,因为大部分变化已经被训练期间的随机采样捕获。为了了解随着时间的推移,动作是如何由场景的不同外观组成的,将所有帧的表示堆叠在一起,并将它们送到3D卷积网络中。该网络产生最终动作类标签。该体系结构非常简单,显然可以直接在操作类标签和大型数据集上进行端到端的高效训练。

       ECO Lite中的3D架构针对学习帧之间的关系进行了优化,但在仅通过静态图像内容识别简单短期动作的情况时往往会浪费容量。因此,建议通过并行使用2D网络来扩展该体系结构,如上图(B)所示。对于简单的动作,2D网络体系结构可以简化处理,并确保静态图像特征获得必要的重要性,而3D网络体系结构负责处理依赖于帧之间关系的更复杂的动作。2D网络接收所有样本的特征图并产生N个特征表示。然后,采用平均汇集的方法得到代表静态场景语义的特征向量。

网络细节

2D-NET:对于分析单帧的2D网络(H2D),使用BN-Inception架构的第一部分(直到Initiation-3c层)。它具有2D过滤器和具有批归一化的池化内核。选择这个架构是因为它的效率。每一帧的H2D输出由96个大小为28×28的特征图组成。

3D-Net:对于3D网络H3D,采用了多层3D-Resnet18,这是许多视频分类工作中使用的一种有效的架构。H3D的输出是不同类别标签的一个one-hot向量。

2D-Nets:在ECO Full 设计中,将2D-Nets与3D-Net并行使用,直接提供视频的静态视觉语义。对于此网络,使用从Initiation-4a层到最后一个池层的BN-Inception体系结构。最后一个池化层将为每帧生成1024维特征向量。采用平均池化方法生成视频级特征,并将其与3D-Net得到的特征进行拼接。

训练细节

使用带有Nesterov momentum的mini-batch SGD 来训练我们的网络,并在每个全连接层中使用dropout 。我们将每个视频分割成N个片段,并从每个片段中随机选择一帧。此采样提供了对变化的鲁棒性,并使网络能够充分利用所有帧。此外还应用了数据增强技术:将输入帧的大小调整为240×320,并使用水平翻转的固定角裁剪和缩放抖动(由采样提供的时间抖动)。然后,我们运行每个像素的均值减法,并将裁剪区域的大小调整为224×224。初始学习率为0.001,当验证误差饱和4个epochs时,学习率降低10倍。我们用0.9%的动量,0.0005的权重衰减,32个大小的小批量来训练网络。

使用预先训练好的BN-Inception体系结构来初始化2D-Net权重。同样,使用3D-ResNet18的预训练模型来初始化3D-Net的权重。之后,在Kinetics数据集上对ECO和ECO Lite进行了10个epochs的训练。

在线视频理解的采样策略方案

在一般情况(offline)下,我们是获得了一整段视频后再做分析处理的。而在online情况下,视频是以视频流的形式呈现的,即我们只能获得当前时刻过去的视频。

      将ECO调整为在在线模式下非常高效地运行,修改只影响采样部分,保持网络架构不变。为此,我们将传入的视频内容划分为N个帧的片段,其中N也是进入网络的帧数。我们使用工作存储器SN,工作存储器中包含两个图像组,分别是存放较旧图像的工作记忆组和存放新的未处理图像的新收图像组。当视频开始时,即仅有N个帧可用时,所有N个帧被密集采样并存储在工作存储器SN中。对于每个新的时间段,N个额外的帧进入,我们用来自该时间段的样本替换SN中一半的样本,来更新工作记忆组,并将其作为网络的输入得到当前的预测结果,确保了可以实时预测变化,同时考虑了时间上下文,将当前的预测结果和平均预测结果进行平均后得到最终的输出。这个框架在工作记忆组和平均输出两个层面保存了较长时程的信息,但同时依旧是以当前的图像为主。在特斯拉P100 GPU上,采用ECO的在线方法运行速度为675 fps(使用ECO Lite的速度为970 fps)。此外,该模型只保留精确的N个帧,从而提高了内存效率。这使得还可以在小得多的硬件(如移动设备)上实施。

实验结果

在Kinetics数据集上的实验结果比较

下图是模型预测运行速度的比较。同时该表附带在UCF101和HMDB51两个数据集上的分类结果。

 不同采样帧数的ECO和ECO Lite的准确性和运行时间。

 

 

 各模型计算量-准确率比较图。各种版本的ECO和其他最先进的方法在UCF101上的运行时间权衡。ECO比任何其他方法都更接近右上角。

 

代码解读

程度入口main.py,网络定义models.py,定义数据dataset.py ,其中数据读入方式基本与TSN相同。

课程链接:https://aistudio.baidu.com/aistudio/course/introduce/1340

©️2020 CSDN 皮肤主题: 游动-白 设计师:上身试试 返回首页