视频物体检测(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发表在ICCV2017上的VID方面的论文,算是之前的工作Deep Feature Flow的一个延续。这篇文章的亮点在于利用了前后帧的信息加强当前帧的特征,从而得到较好的识别精度。但是速度上会比较慢。那我们开始吧。

1.Abstract

视频中的物体检测会受到诸如运动模糊、视频散焦、奇特姿态等的影响。现有的工作尝试从box-level使用temporal信息,但是这种方法不能端到端地进行训练。我们提出了FGFA,在frame-level使用temporal信息。它将相邻帧在motion paths上的特征聚合到当前帧的特征中,因此提高了视频识别的精度。我们的方法极大地提升了ImageNet VID上的single-frame baselines。特别是在识别快速移动的物体方面,此方法和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

给定输入的视频帧{IiIi},我们的目标是输出所有帧上的物体框{YiYi}。Baseline就是在每帧上单独使用现有的物体检测器。 
现有的CNN-based物体检测器结构相似,输入图片I,CNN提取特征得到Nfeat(II)=f feature maps,然后一个专用于detection的子网络用于生成检测结果yy=Ndet(ff)。 
视频帧会有很剧烈的表现变化,如图2所示,当画面很差的时候,单帧的检测结果很不稳定,易出错。图1给出了一个例子,在tt时刻,由于运动模糊,猫这个类的特征响应会很低。这导致单帧检测的失败,观察到邻近的帧tt-10和tt+10有比较高的响应,它们的特征可以被传递给当前的tt帧,当tt帧的特征加强后,检测成功。 
这里写图片描述 
特征传递和加强需要两个模块实现:(1)motion-guided spatial warping.在帧间估计运动然后将feature map进行warp。(2)feature aggregation module.它用于正确地将不同帧的特征进行融合,再加上特征提取和检测网络,共同组成了我们方法的四个模块。

3.2 Model Design

Flow-guided warping.给定一帧{IiIi}和其相邻帧{IjIj}光流场Mi>jMi−>j=F(IiIi,IjIj)可以通过光流网络F参加FlowNet[8]估计。 
相邻帧的feature maps被warp到当前帧,根据光流warping function定义为: 
fj>ifj−>i=W(fjfj,Mi>jMi−>j)=W(fjfj,Mi>jMi−>j
其中W是一个双线性的warping function,用于feature maps上所有位置的每个channel,fj>ifj−>i表示从jj warp到ii帧的feature map。 
Feature aggregation.做完feature warping以后,当前帧从相邻帧累积feature map。这些feature map提供了物体实例的不同信息,例如光照、视角、姿态、非刚体变形等。聚合特征是,我们在不同空间位置使用不同的权重,并且让所有特征通道共享此空间权重,这一2D权重map定义为Wj>iWj−>i。则聚合后的特征为 
这里写图片描述 
其中kk表示相邻帧的数量,默认kk=10。上式和attention模型的公式很像,不用的权重用于memory buffer中的不同特征。 
聚合后的特征这里写图片描述最后被送到检测子网络中得到最终的结果:yiyi=Ndet(这里写图片描述)。 
和baseline以及box-line method相比,我们的方法在输入到最后的检测之前就进行了多帧信息聚合。 
Adaptive weight.权重用于表示所有buffer frames[IikIi−k,…,Ii+kIi+k]对于IiIi在每个空间位置上的重要程度。 
特别地,在位置PP,如果warped features fj>i(P)fj−>i(P)fi(P)fi(P)很相近,则它会被赋予一个大的权重,反之则相反这里我们使用余弦相近矩阵来衡量warped features和从当前帧得到的features之间的相似度。另外,我们不直接使用卷积特征Nfeat(II),而是使用一个小的全卷积网络这里写图片描述,将特征f(i)f(i)fj>ifj−>i映射到新的embedding进行相似度度量。 
我们估计权重为: 
这里写图片描述 
其中fefe=这里写图片描述表示相似度度量的embedding features。权重Wj>iWj−>i对于所有空间位置PP,在相似帧做了归一化,这里写图片描述=1。估计权重的过程可以看做是利用embedding features计算余弦相似度的过程。

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。最后随机初始化3*3卷积用在最后将特征维度降为1024。 
Embedding network.有三层,1*1*512 conv,3*3*512 conv,1*1*2048 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是7*7group。

4.Experiment

4.1 Experiment Setup

**ImageNet VID dataset.**3862个video snippets用于训练,555个snippets用于验证,这些snippets全部标注好。每个视频的frame rates在25和30左右。共有30个物体分类,是ImageNet DET数据集的子类别。 
slow,medium和fast运动中分别测试了不同运动速度的map。 
Implementation Details.在训练时,和[18,23]一样,ImageNet DET和VID训练集都用于训练。两阶段的训练:第一阶段:特征网络和检测网络在ImageNet DET上进行训练,使用和VID一样的30个类,SGD,每个batch一张图进行训练,4GPU,120K iterations。lr在前80K和后40K iters分别为10310−310410−4。第二阶段,整个FGFA模型在VID上进行训练,4GPU,60K iter。lr在前40K和后20K iters分别是10310−310410−4。在训练和推理中,图片都被resize到短边600用于feature network,resize到短边300用于flow network。

4.2 Ablation Study

Table 1比较了单帧baseline 和FGFA以及其变种figure 6是单帧方法和FGFA的直观对比。 
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u012426298/article/details/80487453