【论文笔记】视频物体检测(VID)系列 FGFA:Flow-Guided Feature Aggregation for Video Object Detection
论文链接:https://arxiv.org/abs/1703.10025
代码链接:https://github.com/msracver/Flow-Guided-Feature-Aggregation
该论文由MSRA于ICCV 2017年发布,并专注于VID领域的研究工作。它可被视为基于Deep Feature Flow的研究成果的发展方向之一。其主要创新点在于通过前后帧信息提升当前帧特征的质量,并最终实现了较高的识别精度水平。然而,在速度方面存在一定的瓶颈限制了其实际应用效果。
让我们从头开始吧。
1.Abstract
在视频检测中所关注的目标物体可能会受到运动模糊、视图模糊以及独特姿势等因素的影响。
现有研究主要在box级引入时空信息,并未能实现端到端的学习。
我们提出了一种名为FGFA的方法,在帧级别上利用时空信息。
通过将相邻帧在运动路径上的特征整合到当前帧的特征中, 我们的实验结果表明该方法显著提升了视频识别精度。
与现有基准相比, 在ImageNet VID数据集上实现了单帧基准水平的进步。
特别地, 在快速移动物体检测方面与Deep feature flow协同工作时表现出色, 并获得了ImageNet 2017年的优秀成绩。
2.Introduction
物体检测一般都是二阶段结构,首先CNN提取feature map,然后检测特定的网络用于从feature maps 中生成检测结果。
这些方法对于still image效果很好,但是直接用到vedio上效果会恶化很多,例如state-of-the-art RFCN+ResNet-101在对快速运动中的物体进行识别的时候效果恶化得很厉害
然后,视频中拥有丰富的对于单个物体实例的信息,通常会在一小段时间中的多个snapshots看到,这些时间信息用在现有的视频物体检测的方法中,则表现为:首先用物体检测器在单帧上进行检测,然后通过专用的后处理方法将这些bbox组合起来,后处理通常是通过现在的motion estimation的方法,例如光流,物体跟踪等。这些方法不会提高检测质量,性能的提升是来自启发式的后处理而不是有原则的学习过程。对于这类方法没有端到端的学习过程。我们把这些方法叫做box level methods
我们希望能够利用时间信息提升检测或识别的质量,以一种有原则的方式。受图像识别的启发,特征很重要,因此我们利用时间域的聚合提升单帧特征的学习。注意,同一物体的特征用于视频运动的原因,在不同帧是空间不对齐的。盲目的特征聚合可能会使性能变差,这说明在学习过程中对运动进行良好的建模很重要。
在此工作中,我们提出了FGFA,如图1所示,特征提取的网络在单帧上提取单帧的feature maps,然后为了加强当前帧的特征,一个光流网络用于估计相邻帧和当前帧的运动。相邻帧的feature maps再根据光流运动中warp到当前帧,warp后的feature map以及它自己的feature map一起通过适应权重网络进行聚合。(在当前帧)然后聚合得到的feature map再被送到检测网络中输出当前帧的检测结果。所有模块,包括特征提取,光流估计,特征聚合,检测都是端到端进行训练的,对于快速运动中的物体,普通的方法效果很差,但我们的方法有效地利用了不同snapshot间的丰富表现信息,这也是我们的方法取得VID冠军的致胜点(对于快速运动物体识别好)

3.Flow Guided Feature Aggregation
3.1 Baseline and Motivation
给定输入的视频帧{I_i}, 我们的任务是输出所有帧上的物体框{Y_i}。作为基准方法, Baseline 是在每个视频帧上分别应用现成的物体检测器。现有基于CNN 的物体检测器结构相似于现有技术;当输入图片 I 时, CNN 提取特征得到 Nfeat(I)=f 个 feature maps。值得注意的是, 视频帧表现出显著的变化趋势, 如图2所示, 当画面质量较差时, 单个帧的检测效果往往不稳定且容易出错。图1展示了一个典型案例: 在t时刻, 由于运动模糊导致猫类特征响应较低, 引发单个框架的失败检测现象。观察到邻近时刻如t-10和t+10的响应较高且具有相关性, 因此我们引入了跨帧特征融合技术来辅助当前时刻的检测过程。通过这种方式可以有效提升当前框架下物体框识别的效果。

实现特征传递与增强功能需要两个核心模块的支持:其中第1步是运动引导的空间变形技术。该技术首先是在帧间估计运动参数后,再对feature map进行空间变形处理。第2步是特征聚合模块的作用:通过融合不同时间帧的特征信息来提升整体性能。将其与基于深度学习的特征提取与目标检测网络相结合后,则构成了我们系统完整的四个功能模块。
3.2 Model Design
Flow-guided warping. 给定一帧I_i及其前后帧{I_{i-1}, I_{i+1}}的光流场M_{i→j}=F(·,·),可以通过光流网络F参与FlowNet[8]进行估计。
相邻帧中的特征图通过光流映射被 warp 到当前帧位置,并根据双线性 warp 函数定义为:
W_{j→i}=W(f_j, ·)=W(输入特征图f_j)
其中W是一个双线性的 warp 函数,在所有位置上的每个通道中对特征图进行操作,表示从目标帧j向源帧i warp 的过程。
Feature aggregation. 完成 feature warping 后,在当前帧上从各相邻帧累积 feature map集合。这些 feature map集合提供了物体实例的不同属性信息如光照条件、视角变化、姿态以及非刚性形变等细节特征信息。随后将这些 feature map集合进行聚合操作时,在不同空间位置采用不同的权重系数,并让所有 feature通道共享此空间权重分布结果;这一二维权重分布结果定义为W_{j→i}矩阵,则最终得到的聚合后特征图即为:

其中k代表相邻帧的数量,默认值为10。与基于注意力机制的模型公式极为相似,在计算过程中,未使用的权重将被用于区分memory buffer中的各个特征。经过融合后的特征向量即为最终输出结果。

最后被送到检测子网络中得到最终的结果:y_i=Ndet(

)。
与 baseline 和 box-line 方法相比,在检测流程之前我们的方法实现了多帧信息整合。
可自适应权重用于表示所有 buffer frames [I_{i−k},…,I_{i+k}] 在每个空间位置上的重要程度。
特别地,在位置 P, 如果 warped 特征 f_{j→i}(P) 和 f_i(P) 高度相似,则该位置会被赋予较大的权重;反之则不。
为此, 我们采用了余弦相似度矩阵来评估 warped 特征与当前帧特征之间的相关性。
此外,在计算特征时,并未直接采用 Nfeat() 的结果。

,将特征f(i)和映射到新的embedding进行相似度度量。
我们估计权重为:

其中f^e=

衡量嵌入特征在相似性评估中的重要性。对所有空间位置而言,在相似帧上进行了归一化处理。

评估权重的步骤相当于通过嵌入特征计算余弦相似度的过程
3.3 Training and Inference
Inference. 算法1归纳了inference的过程。

Training. 整个FGFA结构是可微的,可以端到端地进行训练。唯一需要注意的地方是特征warping的模块是通过双线性插值得到的,也是可微的,对于feature maps和光流场都是可微的。
*Temporal dropout. 在SGD训练中,聚合范围K受到内存的限制,我们在inference的时候使用一个大的K,而在训练的时候用小的K(默认为2),这是没关系的,因为adaptive weight可以在许梿和推理的时候分别进行正确的归一化。注意在训练时,相邻帧是从一个大的range中随机采样的,这个大range等于推理时用的range,这就相当于在时域上用了个dropout,用table 3可以看出,temporal dropout效果不错。

3.4 Network Architecture
Flow network. 我们用了在flying chairs数据集上预训练的Flownet(简易版)。它被使用到一半分辨率的图片上。输出stride=4。由于feature network的输出stride=16(下文有解释)。flow field再次下采样得到和feature map一样的分辨率。
Feature network. 我们使用Resnet-50,Resnet-101。Inception-Resnet作为feature network。初始的Inception-Resnet是用于图像识别的,为了解决特征不一致的问题,使其能够正确运用到物体检测中,我们使用一个modified的版本叫做Aligned-Inception Resnet[6]、Resnet50,Resnet101,Aligned-Inception-Resnet都是在ImageNet分类上预测训练的。
预测训练的模型用于FGFA的feature network。我们稍微调整了一下这三个模型的结构用于物体检测。我们将最后的average pooling和fc层去掉,保留其他卷积层。为了提高特征分辨率,根据[4,5]的实践,将最后一个block的stride从32改为16,特别地,在最后一个block的开始(conv5),stride从2变为1。为了保持感受野的大小。最后一个block的卷积层的dilation(kernel size>1)设为2。最后随机初始化33卷积用在最后将特征维度降为1024。
Embedding network. 有三层,11512 conv,33512 conv,112048 conv,随机初始化。
Detection network. 我们使用R-FCN,并且按照[49]的设计,在1024-d feature maps的后面。RPN sub-network和R-FCN sub-network分别接前512和后512维,RPN使用9个anchor(3 scale, 3 aspect)。每张图产生300个proposals,R-FCN中的position-sensitive score maps是77group。
4.Experiment
4.1 Experiment Setup
**ImageNet VID dataset.**该数据集包含3862个视频片段用于训练模型以及555个片段用于验证模型性能。所有视频片段都经过人工标注完成目标检测任务。每个视频的帧率主要集中在25到30帧/秒之间变化。该数据集属于ImageNet DET数据集的一个细分领域。
在不同运动速度场景下评估了对应的MAP性能,在慢速(slow)、中速(medium)和快速(fast)运动情况下均取得了令人满意的实验结果。
具体实施细节如下:在训练过程中参考了[18,23]的研究方法,在ImageNet DET和VID数据集上进行了联合训练以优化模型参数。整个训练过程分为两个阶段:第一阶段是特征提取网络与目标检测网络在ImageNet DET数据集上完成参数优化,在相同的分类类别数量(共30个类别)下采用SGD算法进行迭代优化操作。具体来说,在前8万次迭代过程中每批次处理单张图片进行特征提取网络与检测网络的联合优化操作,在后4万次迭代中将学习率降低至10^{-4}以进一步优化模型参数并提升预测精度。第二阶段则是基于完整的FGFA模型框架对VID数据集进行进一步优化以提升模型泛化能力,在这一阶段采用了4个GPU并行计算的方式完成后续迭代工作,并最终达到了预期的实验目标
4.2 Ablation Study
Table 1展示了对比分析单帧方法与FGFA及其变体之间的差异。具体比较了基于单帧方法与FGFA的表现,并对其变体形式进行了详细的对比研究。


