Towards High Performance Video Object Detection Xizhou Zhu∗ Jifeng Dai Lu Yuan Yichen Wei CVPR2018
在DFF和FGFA基础上进行了三点改进,在速度和精度上进行了权衡。DFF专注于提高速度,FGFA专注于精度,本文将两者优势结合起来。
(1)
特征的稀疏递归聚合
FGFA是在每一帧上进行特征聚合,而在这里只在稀疏的关键帧上进行聚合。上一个关键帧增强当前关键帧,增强后的关键帧又去增强下一个关键帧。
第一个公式是对两个连续的关键帧k k‘进行递归特征聚合,用上一帧warp过来的特征和当前帧的真实特征进行加权求和,得到聚合的增强特征,聚合后的关键帧包含了之前所有关键帧的特征信息。
2)
空间自适应局部特征更新
与关键帧相邻的非关键帧有部分区域变化较大,如果用光流传播的特征就容易出错,所以在这里引入一个叫特征信息时间一致性的判别矩阵Q,由光流网络生成,大小和特征光流场一样大,每一个位置的值表示这个位置的光流的质量,若在某位置p的值小于阈值,则说明该位置的光流不行,质量不好,需要重新计算p位置的特征
(3)
自适应的关键帧选取
之前的关键帧都是固定间隔选取的,本文采用矩阵Q和is_key()函数计算出那些光流质量不好的点占的比例,如果大于设置的阈值,就说明当前帧与上一关键帧的变化就很大,就设置成新的关键帧
比如这里橙色的点大于阈值则为关键帧,蓝色的小于关键帧表示与之前的关键帧变化不大,则不设为关键帧。
网络结构:
光流网络:使用最简单的版本FlowNet,在Flying chairs数据集上进行预训练,应用于半分辨率图像,输出步长为4,因为下面的特征网络的输出步长为16,光流场需要降低一半规模去匹配特征映射的分辨率,再额外添加一个随意初始化的3*3的卷积层预测feature propagability indicator。
特征网络:采用最先进的ResNet101,在ImageNet分类上进行预训练。去掉最后的平均池化层和fc层,保留卷积层,最后一个块的有效步长由32变成16,最后一个块的开始步长由2变为1,最后一个块中卷积层(内核大小为> 1)的膨胀量设为2。最后再应用一个3*3的卷积层降维。
检测网络:使用的是R-FCN
Ii是第几帧,
第二行设置k=0为初试帧第0帧,
第三行对F0进行Nfeat操作其中Nfeat是用ResNet提取feature map。
第四行是对F0作检测工作,即确定类别及位置等等。初试帧不用采取聚合操作,如果要采取聚合操作的话那第0帧的聚合结果就是F0,
然后第8行开始对随后视频中的所有帧进行操作
第9行是得到当前帧i和上一个关键帧之间的flow结果。
第10行是如果Qk-i达到了某一个值,即确定i为关键帧,(Q的定义应该是根据变化程度设置的一个具体的值,比如0.2,看论文里)
第12行在确定关键帧后Qk-i为负无穷,然后备注的解释是需要从头开始计算特征,这里应该是指的需要重新设置关键帧,并且feature map应该用ResNet重新提取。
第13行14行指的是需要部分更新特征,就是用的论文里提到的第二个技巧,partially updating
第16行指的是,Qk-i时,Nflow的方法达到了很好的效果,就这样就行,不用改动。
17行代表对当前帧的处理结束了
18行Fi最后用第二个技巧,部分更新,所有的帧都要部分更新吗?
第19行看是否采用聚合操作,如果有聚合模块,那么就聚合,而且采用的是第一个技巧:递归连续聚合。然后在检测结果,就是最终结果
第22行,如果没有聚合模块就直接检测结果
第25行判断及更新关键帧
输出结果。
相关工作:
视频目标检测:现存的在视频上结合时间信息进行目标检测的方法可以分为box-level方法和feature-level 方法(都是基于流的)。Box-level主要集中于如何提高准确性。T-CNN首先根据预先计算的光流将预测的边界框传播到相邻帧,然后利用跟踪算法生成tubelets。Tubelet中的boxes都将根据tubelet分类结果重新打分。Seq-NMS沿着连续帧附近高置信度的边界框构建序列,序列的框被重新评分为平均信度,抑制其他接近该序列的框。MCMOT将后续的处理表示为多目标跟踪问题,并且最终跟踪置信度用于重新评分检测置信度。TPN首先在多帧(<=20)上生成tubelet proposals而不是在一个单独帧上生成边界框proposals,然后基于LSTM分类器将每个tubelet proposal分类到不同的类别。D&T用一个卷积神经网络同时输出检测框和基于跟踪框的回归,检测框根据跟踪框连接和重评分。
数据集:ImageNet VID 分别从训练集中选取3862个片段和从验证集中选取555个片段进行训练和评估,片段都是被完全标记的,帧速率在25-30之间,有30个类别,是ImageNet DET数据集中的类别一个子集。
训练细节:SGD训练。每个mini-batch的样本都是来自ImageNet VID或ImageNet DET,比例为1:1.进行12万次迭代,4个GPU,每个GPU持有一个minni-batch。在前8万次迭代和后4万次迭代的学习速率为10-3和10-4,在训练和推理过程中,图像大小被调整为在图像识别网络中600像素,flow网络中300像素。
Ablation 学习:
C1方法:评估了在稀疏关键帧上递归特征聚合和非递归特征聚合。在非递归聚合方法上,当运行速度慢的时候聚合更多的关键帧会更好,当聚合超过2个关键帧时,准确率会迅速下降,原因是关键帧之间的持续时间l大导致传播的特征不一致。但是在递归聚合方法中每次聚合只考虑两个关键帧,而且被聚合的特征包含了之前的关键帧的所有信息。
C2方法:评估了部分更新系数λ和关键帧持续时间l,他们控制了速度和精度的权衡。实验表明l=10的时候权衡效果最好,小的l会导致两个连续帧之间的冗余,会造成小的精度损失,大的l会导致两个连续关键帧之间高度不同的特征响应。λ=2.0是最好的,大的λ表明更小的重计算区域,就不能完全利用部分更新的长处了,小的λ表明要重计算的区域太多,造成运行速度慢。
C3方法:比较不同的γ下的时间自适应关键帧调度,当运行速度慢时不同的γ性能差不多,当运行速度快时γ=0.2结果最好。
https://blog.csdn.net/qq_41298141/article/details/91996831
https://blog.csdn.net/qq_43378685/article/details/88756135