摘要:
本文针对视频目标检测问题提出时空记忆网络(STMN)。它的核心是时空记忆模块,作为一种递归计算单元去建模长时间目标外观和运动信息。STMN可以用一个预训练的CNN backbone进行初始化,这对提高检测精度非常重要。本文为了建模目标运动提出匹配变换去对齐帧到帧的特征。本文的方法在VID数据集上获得了state-of-the-art的结果,我们的消融学习清楚地证明了本文设计架构的有效性,代码和模型都公开在:http://fanyix.cs._ucdavis.edu/project/stmn/project.html._
1.简介
视频目标检测的问题在于视频中的运动模糊、遮挡和极端视角等情况会使得静态图像检测器出问题,但是视频提供了丰富的时空和运动信息,应当学习去利用这些信息,使得视频目标检测器更加鲁棒。
从Fig1可以看出图像检测器在模糊、遮挡和极端视角下出现了误检,但是本文模型会聚合前两帧质量较好的图像所以检测成功率会高一些。最近,很多研究者开始研究视频目标检测问题,比较有名的微软的DFF和FGFA,商汤的T-CNN,2016年代的SEQ-NMS,牛津VGG组的D&T,其实视频目标检测的研究最早约在2015年左右,ImageNet用VID数据集进行比赛。其中有很多工作是通过后处理的方式,不能避免单帧检测器所存在的问题,D&T,FGFA,THPVOD等开在在模型的训练中,通过预测帧间的平移,将帧与帧之间的特征聚合起来。然而这些方法处理的是固定长度窗口的图像,不能建模较长的依耐性,Tubelet Proposal Network开始考虑建模长时间的信息,但是速度较慢,对tubelet的初始化依赖严重。
为了解决这些问题,本文提出Spatial-Temporal memory Network(STMN),用一个网络统一建模长时间的外观和运动。它的核心为Spatial-Temporal Memory Module(STMM),一种卷积递归计算单元,可以集成到从静态图像训练得到的预训练模型中。这种设计在实际应用中是有用的,因为一个一百万张图像的图片数据集多样性要比一百万张图片的视频数据集好很多。本文显示这种设计比标准的ConvGRU要好。考虑到图像数据的二维特性,STMN中保留了每帧图像的二维空间信息。为了实现帧间的像素级对齐,本文提出了MatchTrans模块显式建模帧间的平移。由于将每帧图像做了对齐聚合,这样的得到的特征对于区域的定位是有好处的,而且包含多帧信息也有助于识别。同时,每个区域的特征可以用ROI pooling从记忆模块中提取。
基于以上的工作,本文在VID数据集中用不同的backbone和检测器均获得了state-of-the-art的效果。
3.方法
3.1. 概述
系统框架如Fig2所示,假设视频序列的长度为T,每一帧图像首先各自提取其卷积特征得到\(F_1,F_2,\cdots,F_T\)作为表观特征,为了沿时间轴集成这些特征,每一帧的表观特征都被送入STMM。STMM在时间t得到当前帧的表观特征\(F_t\)以及在时间步t-1得到的带有之前所有帧信息的时空记忆\(M_{t-1}^{\to}\),然后更新得到当前时间步的时空记忆单元\(M_t^{\to}\)。为了同时捕获过去帧和之后帧的信息,我们使用了两个STMM,进行双向特征聚合,同时聚合\(M^{\to}\)和\(M^{\gets}\)。将包含了时间信息的\(M_t\)送到卷积/全连接层进行分类和回归。这种做法的提升在于,如Fig2,图像检测器往往只看过自行车的俯视图,所以看到前视图的时候会识别不出来,但是本文的方法,因为模型已经看过了两边的侧视图,所以识别出前视图会容易一些。
3.2. STMM
在每一帧输入\(F_t\)和\(M_{t-1}\),按下面的式子更新\(M_t\):
这里圈表示按元素相乘,*表示卷积,\(U,W,U_r,W_r,U_z,W_z\)是2D卷积核,\(r_t\)是更新门,表示\(M_{t-1}\)有多少需要丢掉,从而生成暂态记忆\(\widetilde{M}_{t-1}\),\(z_t\)为重置门决定了之前的状态\(M_{t-1}\)和暂时的状态\(\widetilde{M}_{t-1}\)的融合权重。为了得到\(r_t\)和\(z_t\),STMM首先对\(M_{t-1}\)和\(F_t\)做仿射变换,再进行relu操作。因为\(r_t\)和\(z_t\)为门,因此它们的值应当处于[0,1]。这里针对标准的batch normalization做了两个改变得到\(BN^*\),这样将输入正则化到[0,1],而不是均值为零的,方差为1 的标准正态分布。
第一个改变,计算输入batch X的均值\(\mu(X)\)和标准差\(\sigma(X)\),利用线性挤压函数\(S(X;\mu,\sigma)\)(如Fig 3所示)进行正则化。
第二个改变,对每个batch单独计算均值和方差,而不是在训练过程中持续计算所有training batch的均值方差。用这种方式不用在不同时间步存储不同的统计量,这使得我们在测试的时候不用试训练长度而定。
与ConvGRU的不同。视频目标检测训练的过程中的一个现实的问题就是,由于视频具有冗余性,使得数据的多样化和图像数据集没法比,所以希望能够迁移图像数据集中的训练结果。本文用R-FCN初始化网络,将Position-Sensitive ROI pooling的前一个卷积层替换为本文的STMM,由于R-FCN的激活函数ReLU的输出均为非负,而传统ConvGRU的sigmoid和tanh函数的输出为[-1,1],这样是不匹配的,所以这里将GRU的激活函数改为ReLU,同时STMM的卷积层用替换出去的卷积层的参数进行初始化。
3.3. 时空信息对齐
由于目标的运动,如果特征不进行对齐的话,会造成融合的特征图长时间不能忘记之前目标的信息,造成虚影,而且和其他特征图重叠之后会降低特征图的质量,如Fig4所示。
为了解决这个问题,对于\(F_t(x,y)\)的领域,本文在\(F_{t-1}\)图的(x,y)处的(2k+1)*(2k+1)的领域使用余弦距离计算相似性,公式如下所示:
使用系数\(Gamma\),本文将非对齐的\(M_{t-1}\)变化到对齐的\(M_{t-1}\),对齐公式如下:
相当于用2k+1领域内的\(F_{t-1}\)与\(F_t\)的相关系数,对\(M_{t-1}\)的特征图的值进行加权重构。对齐后的\(M_{t-1}\)才是最终的公式(4)中的值。对齐的示意图如Fig5,
k的选择涉及到性能和速度的权衡,在本文实验中选择k=2。用光流进行对齐的问题在于计算比较慢,而且存储光流也占用了内存。对于FlowNet,它的速度是24.3ms,MatchTrans的速度是2.9ms,有数量级的优势。
4. 结果
检测器采用R-FCN,训练并初始化STMN,训练时长度为7,测试时序列长度为11,STMM特征图的通道数为512,考虑到视频的冗余性,每10帧采样一帧。ResNet-101为backbone,在imagenet vid验证集上达到了80.5的mAP,在TiTan X上每帧0.83 秒的处理时间。