来源: ECCV 2020
代码: mxnet
Abstract
由于帧间质量问题,比如部件遮挡、特殊姿势以及运动模糊问题,导致基于图像的检测器用于视频是往往很难取得较好的性能。之前方法往往利用光流补偿进行特征的传递和聚合进行基于视频的目标检测。但是在高层语义特征上使用基于图像的光流可能很难建立精确的空间依赖。因此本文提出了一种称为 可学习的时空采样(Learnable Spatio-Temporal Sampling, LSTS) 模块 用于学习相邻帧特征之间语义层次的依赖关系。采样的位置首先进行随机的初始化,然后利用检测监督信号迭代的更新模型以找到更好空间依赖。另外,本文还提出了一种稀疏递归特征更新(Sparsely Recursive Feature Updating, SRFU)以及 密集特征聚合(Dense Feature Aggregation (DFA))以建模时序信息和增强每一帧的特征。不吹不擂,提出的方法在ImageNet VID数据集上使用了少量了计算代价和实时速度获得SOTA的检测性能。
Introduction
视频目标检测中直接使用逐帧目标检测经常受制于不见遮挡、怪异姿势和运动模糊。而作为运动线索,视频中的时序信息能够提升目标检测的性能。
之前使用时序信息的方法可以分为两种:1.用于后处理,使得检测结果更加连贯。比如检测结束后使用tracker或者光流进行box层次的匹配;2.另一种是特征层面的时序信息的处理。主要思路是融合相邻帧的特征以提升检测精度或者传递特征以避免密集的特征抽取过程以提升速度。
当使用帧间特征传递时。往往需要光流补偿。光流补偿就会有如下几个问题:
- 光流会极大增加模型的参数量,对嵌入式设备不友好;
- 光流法难以精确表示高层语义特征的依赖性。因为高层特征的感受野比较大,较小的位移都会对应着图像层次的大范围内的偏差;
- 光流法计算耗时严重。
本文的贡献点:
- Learnable Spatio-Temporal Sampling (LSTS)模块,用于刻画高层特征跨帧传递;
- Sparsely Recursive Feature Updating (SRFU)模块用于建模时序关系, Dense Feature Aggregation(DFA)用于增强特征表示;
- 在VID数据集上获得SOTA的性能和速度平衡结果。
Related Work
Self-attention for feature propagation.
这两年attention机制被广泛使用,self-attention和non-local被用于刻画语言序列和抓取长时依赖。attention可以看作是将一个query和一组key对映射成一个输出的过程。利用attention的形式,可以很容易扩展于建模帧间特征关系。但帧间的运动往往集中的局部邻域内,而不是整个区域,因此MatchTrans提出以local non-local的方式传递帧间特征。但MatchTrans需要精心设计数据集的motion分布。本文提出的LSTS模块能够自适应的学习采样位置。能够更精确的估计帧间特征依赖。
Methodology
Learnable Spatio-Temporal Sampling
这个操作还是很清晰的。给定两帧图像的高层特征,
对两个特征进行进一步的特征变换, 对于中的任意位置P在的位置P周围以DCN的方式学习若干偏移量,使用线性插值的方式计算偏移后位置的特征,其中表示双线性插值, 然后计算每个位置的特征与query特征的相似度作为每个特征的权重,然后归一化权重进行特征的加权:
于是在p0处的特征为:
注意这里只是特征的融合,没有non-local结构中的skip connection。
梯度反传过程和DCN原理一样,都依赖于双线性插值对位置的操作。
Sparsely Recursive Feature Updating
SRFU是用来传递和融合video中稀有的关键帧的高层特征,这是sparsely这个词的原因。具体而言,如上图a,Fmemory类似于LSTM中的历史信息,是更新变化的。于是对于关键帧需要与历史信息进行融合,即采用LSTS结构进行融合,这里的即使上一节中的, 然后通过skip connection将当前帧特征和对齐特征通过一个aggregation unit单元进行再次融合。值得注意的是,这里aggregation unit采用了spatial attention的形式,即由生成了位置权重, 所以更新后的memory特征为:
And the memory feature Fmemory together with Ft1 would be aggregated to generate the task feature for the keyframes.
这句如何计算的描述过于模糊,只看论文不知道如何计算的。
Dense Feature Aggregation
SRFU处理的是key frame的高层特征,而从计算资源考虑,non-keyframes一般考虑使用轻量的特征抽取网络提取low-level特征,然后结合Fmemory特征进行变换到task feature。如上图b所示,对于non-keyframes的low-level特征先通过一个transform单元获得粗糙的高层次语义特征,然后和SRFU一样,使用memory特征去融合当前高层予以特征,同样获得task feature map。 不同点在于non-keyframes不用于更新memory feature。
Experiments
details
- 检测器框架 R-FCN with ResNet-101, 其中conv4_3的特征认为是low-level特征, 整个ResNet特征认为是high-level特征
- Aggregration Unit。 随机初始化的卷积层: 3x3x256, 1x1x16,1x1x1
- Transform: 随机初始化卷积层: 3x3x256, 3x3x512, 3x3x1024
对VID不了解,所以不看与SOTA方法的对比了,看下ablation study结果吧。
网络结构配置描述的不是很清楚,好多不知道怎么做的。。。那就值来对比部分模块的作用吧。
- keyframe memory update和quality-aware memory update相比,本文方法只有0.1的差距,表明公式7中的spatial attention的作用并不明显
- non-keyframe transformer 使用与否只是0.1的变化,表示底层特征也能很好的用memory feature进行对齐?
- non-keyframe aggregration使用与否性能差距明显,但不知道不适用non-keyframe aggregration的话 non-keyframe特征怎么计算的,指利用吗?
- 有一个地方需要注意,对于non-keyframe, spatial attention的作用比较明显,性能提升了0.7个点((e),(f)列), 不适用transformer时,spatial attention后map提升0.4个点(d,f). 说明对于non-keyframe的特征融合,自适应的权重会更好。(原因在于non-keyframe相对于memory特征更coarse吧,不知道作者有没有尝试fix权重不设置为0.5,而是侧重memory试一试)
和non-local的对比,验证了时序关系更侧重于邻域之间的元素变化。
使用不同的初始化位置点,发现使用可学习方式的性能都会提升,使用gaussian的方式提升更明显。(个人觉得背后原因在于gaussian初始化的点更聚焦在中心,初始特征更充分。)
Conclusion
本文的主要贡献点是LSTS的构造,是一种可学习的跨帧 local attention设计,个人感觉可以应用的图像分割上。在LSTS基础上构建了SRFU和DFA模块分别处理keyframe和non-keyframe的特征融合。其实按重要性而言, SRFU主要是利用keyframe更新memory特征,而non-keyframe则是在memory特征上进行细节的修正。