在保证分类效果的前提下,提高网络的运行速度是当前一个很重要的研究课题。
AI 科技评论按:本文为上海交通大学林天威为 AI 科技评论撰写的独家稿件,未经AI科技评论许可不得转载。
视频理解算法有很多的应用场景,包括视频推荐、监控分析、人机交互等等。在这些真实的应用场景中,通常对算法的实时性有很高的要求。现有的行为识别方法还未能在分类的准确性和运行速度都达到比较好的效果(双流类的方法效果较好,但光流等步骤使得速度很受限;3D 网络类的方法目前的精度和速度也都还不够理想)。所以在保证分类效果的前提下,提高网络的运行速度是当前一个很重要的研究课题。
针对这个问题,这篇论文笔记主要介绍近期放到 arXiv 上(应该是 ECCV-2018 的投稿文章),来自弗莱堡大学 Thomas Brox 教授实验室的一篇文章「 ECO: Efficient Convolutional Network for Online Video Understanding 」 [1],算法的代码预期开源在 mzolfaghari/ECO-efficient-video-understanding 。ECO 网络仅采用 RGB 图像输入,其基本思路为:对视频均匀采样得到 N 帧图像,对这些图像使用共享的 2D CNN 网络获得一个 2D feature map,再堆叠这些 feature map,用一个 3D CNN 网络得到最后的分类结果。在获得了相近的性能的前提下,ECO 网络比 SOTA 方法要快 10-80 倍。需要注意的是,虽然这篇文章的标题是 online video understanding,但其主要还是在设计一个足够快且好的 action recognition 方法(足够快且好所以就可以用于 online 场景啦)。下面开始介绍文章内容,如有不足烦请指正。
这篇文章在 introduction 部分主要提出了两点 motivation:
使用单帧的图像,在很多情况下已经可以获得一个不错的初始分类结果了,而相邻帧间的很多信息都是冗余的。因此,ECO 中在一个时序邻域内仅使用单帧图像。
为了获得长时程的图像帧间的上下文关系,仅仅使用简单的分数融合(aggregation) 是不足够的。因此,ECO 中对较远帧之间采取对 feature map 进行 3D 卷积的方式进行 end-2-end 的融合。
大部分 2stream 类方法和所有 3D 卷积类型方法 都是在学习短时程的时序信息,即输入一个连续的 video clip,输出一个分类结果。在 video-level 上,通常是对 video 中选取多个 clip 分别得到分类结果,再进行平均得到最后的分类结果,这样会带来较大的计算开销。
一些方法(比如去年 deepmind 的 i3d [2] ) 选择增大输入 clip 的时序长度来获得更长时程的信息,但这样一方面会带来计算开销的提高,另外一方面则还是不能处理较长的视频。
一些方法[3][4]采用编码方法来获得 video-level 的表示,但作者表示这样忽略了帧间的信息。
与 ECO 最相似的是目前被广泛使用的 TSN [5]网络:
ECO 和 TSN 的相似点:两者都是从 video 中均匀采样固定数量的视频帧,从而来覆盖长时程的时序结构。两者都是end-to-end训练的。
ECO 和 TSN 的不同点:TSN 中直接用 late-fusion 的方式对每个 segment 的结果做融合,而 ECO 中则是进行了 feature map 层面的融合(文中除了 3D 卷积,也采用了 2D 卷积)。此外 ECO 的速度要远快于 TSN。
网络结构
ECO 网络的基本结构如上图所示,S1-SN 是从视频中采样得到的 N 个 RGB 的 segment。
对于每个 segment,采用共享的 2D 卷积子网络 来得到 96 个 28*28 大小的 feature map,堆叠后得到一个 N*28*28*96 大小的特征 volume。此处 使用的是 BN-Inception 网络中的第一部分(到 inception-3c 层前)。
对于得到的特征 volume,采用一个 3D 子网络进行处理,直接输出对应动作类别数目的一维向量。此处采用了 3D-Resnet18 [6]中的部分层。
如上的两部分,就构建了这篇文章中构建的第一种网络结果 ECO-Lite。除了用 3D 卷积进行融合,还可以同时使用2D卷积,如下图所示,即为 ECO-Full 网络结构。此处多的一个 2D 网络分支采用的是 BN-Inception 网络中 inception-4a 到最后一个 pooling 层间的部分,最后再采用average-pooling得到video-level的表示,与3D net的结果 concat 后再得到最后的action分类结果。
介绍完网络结构后,再回过头来介绍一下视频帧的采样方法。在 ECO 中,作者先将一个视频等分为 N 份,再在每份中随机选取一帧作为输入。作者认为这样的随机采样策略可以在训练中引入更多的多样性,并提高泛化能力。
在 TSN 或是 ARTNet 等方法中,测试时通常都会对每段视频进行多次的 cropping 采样以及水平翻转等数据增强,从而增强测试的效果。这使得计算的效率较低,从而难以用于实时场景。
与之相反,ECO 中对于一个视频,只需要计算一次前向就可以获得很好的效果,而不需要进行任何额外的融合或是增强,在效率上面有更好的保证。
因此,作者基于 ECO 提出了以下的 online 处理框架。这个框架中主要维护了两个图像组,分别是存放较旧图像的工作记忆组和存放新的未处理图像的新收图像组。每次预测时,从两组视频中各采样一半来更新工作记忆组,并将其作为网络的输入得到当前的预测结果,将当前的预测结果和平均预测结果进行平均后得到最终的输出。这个框架在工作记忆组和平均输出两个层面保存了较长时程的信息,但同时依旧是以当前的图像为主。可以说是设计的很精巧的一个框架了。
下图则可视化的展现了这个过程。
ECO 在实验中的表现也非常出色,下面选取一些实验内容进行介绍。
首先是在行为分类的两个常用数据集上进行比较,此处限定了只使用 RGB 图像。可以看出 ECO 在用 Kinetics 预训练的前提下,获得了最好的效果。此外在 Kinetics 和 Something-Something 数据集上,ECO 也获得了很好的效果。
ECO 的一个主要卖点就是速度快,上表就展示了 ECO 和其他方法的速度/精度性能比较(基于单卡 Tesla P100)。ECO 的右下标表示的是 ECO 的输入帧数 N。可以看出,在获得相近精度的前提下,ECO 的速度要远远快于现有方法。需要注意的是,此处作者使用的是 VPS,即每秒处理的视频数量。很多方法为了获得 video-level 的结果,对于每个视频需要进行多次 inference,而 ECO 只需要进行一次。下图则可视化地展示了速度-精度的效果,ECO 的优势还是很大的。
在线视频分类问题通常以 early action recognition 的形式来评估。如上图所示,横轴显示的是可以看到的视频的前百分之几,纵轴则是对应的精度。基于上图的在 J-HMDB 数据集上的实验,可以看出 ECO 在精度上有明显的优势,并且只需要很小一部分视频就可以达到不错的精度。
为了展现 ECO 可以被广泛应用于视频理解领域,作者还用 ECO 提取的特征在 video captioning 任务上做了实验(在 MSVD 数据集上)。将 SOTA 方法(即表中的 SCN)的特征换为 ECO,立马获得了非常显著的效果提升,这也表明了 ECO 的有效性。
下面写一些自己的看法。写了这么多,其实 ECO 的核心点其实就是两块:一是与 TSN 方法类似的视频帧采样方法,二是用 3D 卷积来做融合,这点实际上在几年前的一篇 two-stream 网络文章[7]中就采用过(不过[7]中是用于 video clip 内的融合)。所以这篇工作可以说是 直观的 motivation + 简单有效的框架设计 相结合的一篇精彩的工作。优秀的效果同时也离不开没有写出来的大量网络设计方面的工作(从网络结构看,参数量和计算量应该都比较小,不是很深的网络)。文章的写作和绘图等方面也蛮值得自己学习。
ECO 在速度/精度上的良好性能(并且只需要 RGB 图像)应该会使得它之后获得广泛的应用,就像之前的 TSN 和 C3D 一样。期待作者能尽快开源了。
参考文献:
[1] Zolfaghari M, Singh K, Brox T. ECO: Efficient Convolutional Network for Online Video Understanding[J]. arXiv preprint arXiv:1804.09066, 2018.
[2] Carreira J, Zisserman A. Quo vadis, action recognition? a new model and the kinetics dataset[C]//2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2017: 4724-4733.
[3] Xu Z, Yang Y, Hauptmann A G. A discriminative CNN video representation for event detection[C]//Computer Vision and Pattern Recognition (CVPR), 2015 IEEE Conference on. IEEE, 2015: 1798-1807.
[4] Qiu Z, Yao T, Mei T. Deep quantization: Encoding convolutional activations with deep generative model[C]//CVPR. 2017, 1(3): 4.
[5] Wang L, Xiong Y, Wang Z, et al. Temporal Segment Networks for Action Recognition in Videos[J]. arXiv preprint arXiv:1705.02953, 2017.
[6] Tran D, Ray J, Shou Z, et al. Convnet architecture search for spatiotemporal feature learning[J]. arXiv preprint arXiv:1708.05038, 2017.
[7] Feichtenhofer C, Pinz A, Zisserman A P. Convolutional two-stream network fusion for video action recognition[J]. 2016.
从Python入门-如何成为AI工程师
BAT资深算法工程师独家研发课程
最贴近生活与工作的好玩实操项目
班级管理助学搭配专业的助教答疑
学以致用拿offer,学完即推荐就业
新人福利
关注 AI 研习社(okweiwu),回复 1 领取
【超过 1000G 神经网络 / AI / 大数据资料】
百度 PaddlePaddle AI 大赛冠军林天威专访:如何准确识别综艺视频中的「精彩片段」?
▼▼▼