视频理解算法有很多的应用场景,包括视频推荐、监控分析、人机交互等等。在这些真实的应用场景中,通常对算法的实时性有很高的要求。现有的行为识别方法还未能在分类的准确性和运行速度都达到比较好的效果(双流类的方法效果较好,但光流等步骤使得速度很受限;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场景啦)。下面开始介绍文章内容,如有不足烦请指正。
Motivation
这篇文章在introduction部分主要提出了两点motivation:
- 使用单帧的图像,在很多情况下已经可以获得一个不错的初始分类结果了,而相邻帧间的很多信息都是冗余的。因此,ECO中在一个时序邻域内仅使用单帧图像。
- 为了获得长时程的图像帧间的上下文关系,仅仅使用简单的分数融合(aggregation) 是不足够的。因此,ECO中对较远帧之间采取对feature map 进行3D 卷积的方式进行end-2-end的融合。
相关工作
可以看出,ECO的motivation还是非常简单直接的,在此基础上设计出来网络也不复杂。那么ECO和之前的行为识别方法有什么区别呢,作者在相关工作一节进行了讨论。
- 大部分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卷积子网络 Θ2