Parallel Tracking and Verifying: A Framework for Real-Time and High Accuracy Visual Tracking
原文链接:http://www.dabi.temple.edu/~hbling/code/PTAV/PTAV_ICCV17.pdf
本文从一个新的视角,提出了一个平行跟踪和验证的框架。发表于ICCV2017
最近,跟踪算法无论是在速度还是准确度方面都取得了很大的进展。本文,作者从一个新的角度研究跟踪问题,提出了一个新颖的平行跟踪与检测框架(paralleal tracking and verifying framework)。这个框架包括两个部分,1、跟踪器T;2、验证器V,这两个部分在两个单独的线程上并行工作。跟踪器T致力于提供一个很好的实时更新推断,验证器V用来检测跟踪结果,并在需要的时候更新跟踪器T。需要注意的是验证器V并不是每一帧都对跟踪结果进行检测,而是在跟踪器有需要时才对跟踪结果进行检测,另外跟踪器T也会根据验证器的反馈来调整跟踪。
动机:
大多时候,被跟踪目标移动缓慢,且其表观变化不大。这种情况下,简单有效的算法通常都能很好的工作。但是呢,偶尔的会出现一些艰难的情况(hard case)(比如遮挡、快速移动等),如果没有正确的处理,就会造成严重的后果(比如跟丢或者错跟)。可以用验证器对这些hard case进行处理。而且,直观上,我们不需要每帧都进行处理。
借鉴已经让计算机视觉系统取得收益的多线程计算(比如SLAM),将跟踪分开,映射进两个并行的线程中。
Tracker T:使用fDSST(当然使用其他的跟踪器也是可以的),每帧对目标进行跟踪。
Verifier V:使用Siamese networks,每10帧验证一次检测结果。
两者的关系:T以一定的频率将跟踪结果传给V,如果V发现了不可信的结果,V执行检测,并将检测结果传给T进行校正。T和V异步工作。
fDSST:
考虑某个输入信号具有d维特征,为了构建最佳的相关滤波器h,可以通过最小化以下代价函数得到:
其中g是训练样本的期望相关输出,\lambda是平衡参数,*是循环卷积算子。
根据parseval定理可得,可在频域中求得:
其中,H,F,G分别是h,f,g在频域中的对应表示。
由于patch中的每个像素点需要求解d*d维的线性方程,计算复杂度高,为了得到鲁棒的近似结果,对上式中的分子和分母分别进行更新:
为了让跟踪器适应尺度变化,用一个尺度滤波器来估计目标的尺度,同时为了降低计算量,采用PCA对其进行降维处理。
ps:其他的跟踪算法也可以被用于PTAV中的跟踪部分。
验证器:
作者采用包含两个CNNs分支的Siamese network来构建验证器。采用VGGNet的结构来构建CNNs部分,同时添加了额外的区域pooling层(region pooling layer),这是因为验证器要处理图像中的多个区域。
对于某个跟踪结果,如果它的验证得分小于,验证器V则认为跟踪失败。在这种情况下,V需要检测目标。如果检测结果得分小于
,则仍旧保留跟踪结果;反之,检测结果替代跟踪结果,同时减小验证间隔,增加局部搜索的大小。
实验:
Comparisons on OTB2013
Comparisons on OTB2015
跟踪器和验证器的合作使得跟踪效果有很大的提升。
即便经历短暂的跟踪漂移,因为验证器可以感受到跟踪漂移,并检测到正确的目标。
不同的验证间隔:
如果验证间隔太短,则会增加计算量;
如果验证间隔太长,则跟踪器会跟丢目标,导致表观模型学习到大量的背景信息,即便有验证器的重新检测,仍旧不能解决目标的表观模型有很大变化的问题。
所以作者每隔十帧验证一次。
两个分支还是一个分支:
通过实验验证,两个分支比一个分支速度更快。
不同的跟踪器V:
fDSST vs. KCF
虽然KCF相比fDSST速度更快,但是fDSST的效果更好,综合考虑速度和效果,在PTAV框架中,fDSST作为跟踪器比KCF作为跟踪器能够取得更好的跟踪效果。