简介
- 论文地址:Parallel Tracking and Verifying: A Framework for Real-Time and High
Accuracy Visual Tracking - 论文是单目标跟踪,输出为跟踪物体的bounding box。
Abstract
- 之前的很多方法都是要么精度很高,要么速度很快,难以在精度和实时性方面同时做得很好
- 模型提出了一个基于tracking和verifying的目标跟踪方法,tracking结果送给verifying,对于置信度不高的结果,verifying会对反馈给tracking。此时tracking可以重新做检测,然后确定新的bounding box;verifying并非每一帧都会work,对于置信度
- 模型tracking和verifying放在两个独立的线程,提升了模型的速度。
Contribution
- 论文模型为PTAV,是一种实时高精度的tracker,主要tracking和verifying组成
- 论文的tracking是基于fDSST的,verifying是基于
Siamese networks。 - 作者在4个数据集上跑了实验,是所有实时算法(>25fps)中精度最好的,同时比很多深度学习跟踪算法的精度都要好。
related work
tracking
- 主要有判别与生成的方法,判别的方法是将tracking视为一个分类任务,将目标从变化的背景中区分出来;生成的方法是在上一帧的附近生成与被跟踪物体最相似的region。
- 相关滤波的方法最近很火,因为它的速度很快(>100fps),衍生出狠毒版本:MOOSE、CSK、KCF等。
- 基于tracking的验证:之前就有这方面的工作。TLD对每一个帧的跟踪结果做验证,如果效果不好,则使用检测的方法更新bounding box。本文的PTAV则不是每一帧都执行verifying,而是每个N帧进行一次verifying(即采样,这是基于tracking在大部分时间里都是稳定的),这个改进提升了tracking的速度。
- 基于DNN的tracking其实也就是在所有可能的结果中找到一个最好的,也相当于一个verifying的过程(可以给出某个tracking结果对应的score)。但是计算量太大,难以做到实时,因此作者在论文中将
Siamese networks作为verifying,每隔若干帧执行一次,使用快速的tracking方法做tracking,因而可以保证实时性的同时使用verifying提升跟踪的精度(我感觉就是使用2个tracking的方法,但是把速度较慢、精度较高的作为verifying)
论文具体过程
算法流程
tracking
- 在tracking的过程中,使用
fDSST,不同的是,本文中的tracker会保存所有的中间结果(即每一帧的跟踪结果),这是为了能够对verifying过程返回的结果做快速地追溯。tracking每V帧发送一次验证结果(V是可变的)。
verifying
- 在verifying过程中, 其实是使用
Siamese networks做detection。 - 论文中,在CNN中借鉴了VGGNet架构,然后加上区域池化的部分。这是因为在检测的过程中,有很多候选区域需要进行处理,区域池化在一张图像中可以同时处理很多region。
- 将所有的候选区域与跟踪的结果进行对比,找到最匹配的一个候选区域作为检测结果,并计算得分,如果得分小于设定的阈值,我们不对tracking的结果进行处理,而是减小verifying的间隔V,并增加用于搜索目标的区域,重复这个过程,直到重新找到一个可靠的检测目标(在减小这个V的过程中,之前存储的那些跟踪结果就起到作用了,因为这里需要使用小于V帧间隔的跟踪结果,并重新做检测。)。找到之后,保存这个verifying的间隔V以及搜索区域的面积。用于之后的迭代。
其他的一些tips
- 为了使tracker能够适应尺度变换,使用一个尺度滤波器来估计目标的尺度,同时使用PCA对特征向量进行降维,减少计算量。
一些实验与比较
- 相对于CF相关的tracker,PTAV在有遮挡、背景杂乱、分辨率较低的环境中的跟踪效果更加鲁棒(tracker与verifier结合的效果)。
- 定性分析:CF相关的tracker在变形、光照变换或者有部分遮挡的环境下表现很好;但是当完全遮挡时,效果都很差。PTAV可以对物体进行更加精准地定位,即使有少量的漂移,PTAV也会在感知到漂移,然后在之后的tracking中进行正确跟踪。
SINT算法可以处理有遮挡的情况,但是难以处理运动模糊的情况。MEEM使用多个分类器进行目标跟踪,但是在有严重遮挡或者尺寸变化的情况下,性能也不好。