单目标跟踪之PTAV

简介

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)中精度最好的,同时比很多深度学习跟踪算法的精度都要好。

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使用多个分类器进行目标跟踪,但是在有严重遮挡或者尺寸变化的情况下,性能也不好。