LMCF算法(Large Margin Object Tracking with Circulant Feature Maps)是2017年发表在CVPR上的,属于相关滤波类的算法。这篇文章的创新点主要有三个:(1)结构化SVM与传统SVM相比有着强大的判别力,而相关滤波有着速度上惊人的优势,作者将结构化SVM与相关滤波算法相结合;(2)多峰前向检测。这一点是用来解决相似物体干扰的。在目标周围有特征相似的干扰物体时,响应图会有多个峰值,且最高的那一个有可能是干扰物体的,这时候可能就会引起误判;(3)如何判断跟踪器跟踪的不好,或者说如何判断当前帧出现了遮挡、甚至目标丢失?一旦能够判断这一点,模型更新的准确性就可以有较大提升。
这篇文章第一次从模型更新方面入手对KCF算法进行改进,这是这篇文章最大的创新点:
(1)使用结构化的SVM:
在基于相关滤波(Correlation Filter)算法出现之后,通过循环采样大大增加了样本数量,为一直以来困扰跟踪领域的稀疏采样问题提供了新的解决思路,并且可以用快速傅里叶变换FFT快速求解,因此可以在保证速度的前提下用一些维度较高的特征来做跟踪,比如KCF用到了HOG特征。KCF用简单的岭回归作为分类器,但是由于用到了高维的HOG特征以及稠密采样,使得它的效果还是非常好的,并且速度在170FPS左右,这也使得KCF变成了大量算法的baseline。到这里就出现了LMCF的第一个最重要的motivation了,我们想用循环矩阵来突破结构化SVM的稀疏采样问题,更想借助CF来突破结构化SVM的跟踪速度。
(2)多峰值检测:
先前的目标跟踪算法在每一帧结束都会对目标进行更新, 然而却没有考虑到跟踪结果是否精准的问题。 当出现目标的尺度变大或变小,发生形变或被其他物体所遮挡时。跟踪模型需要尽快学习目标的变化特点; 当环境复杂时,出现遮挡, 目标消失在视野,光照变化以及背景杂乱等情况时, 如果分类器将跟踪结果进行更新,会学习得到大量的干扰信息, 可能大致后续帧中跟踪的失败;目标跟踪算法中除了初始帧外,其他位置都包含一定的预测机制。 因此,为了让跟踪模型在复杂条件下进行自适应更新,LMCF提出多峰值检测这一个概念。在跟踪过程中,如果没有干扰并且跟踪准确,大多出现单一明显的峰值, 在有干扰
的情况下会出现多个峰值。 我们和其他相关滤波算法之间的区别在于,只有当检测到的结果具有单峰时,才会进行模型更新。大多数现有的跟踪器在每帧更新跟踪模型,而不考虑检测是否准确。实际上,一旦在当前帧中检测到目标不准确,严重遮挡或完全丢失,这可能导致跟踪出现错误。
(3) 高置信度模型更新策略:
如何判断跟踪结果是否准确是一个没有定论的问题,但又是一个非常重要的问题。因为这决定着模型的更新策略。KCF,DSST,DSSVM,Staple等许多算法是不进行跟踪结果可靠性的判定的,每一帧的结果都用来更新,或者像MDNet或者TCNN那样每隔N帧更新一次。这样是有风险的,特别是当目标被遮挡,或者跟踪器已经跟的不好的时候,再去更新模型,只会使得跟踪器越来越无法识别目标,这就是模型漂移问题,model drift。由于想要保证跟踪速度,我们就需要一种简单有效的模型更新策略,最好能够通过已经获得的一些资源来进行判断,而不需要进行太多复杂的计算。首先最容易想到的就是response map的最高点的值,一般来说这个值越大说明跟踪的结果越好,但也有例外,比如图三中第一行第三列,在目标被几乎完全遮挡的时候最高响应值是0.94,这个值是高于整个视频最高响应值的均值的,如果只用这一个判据进行了模型的更新,就会让模型漂移到遮挡物体上,如图三第二行第三列,最后丢失了目标。
响应最高点并不能反映响应图的振荡程度。在图三中,虽然最高点的值依然高,但是响应图在被遮挡时振荡剧烈,是可以通过振荡程度来避免错误更新的。因此我们提出了一个新的判据APCE:
其中分别表示响应最高、最低和位置上的响应。这个判据可以反映响应图的振荡程度,当APCE突然减小时,就是目标被遮挡,或者目标丢失的情况,如图三第一行中目标被遮挡后,APCE相对于这段视频APCE的历史均值就减小的很明显,因此在这种情况下我们选择不更新模型,从而避免了模型的漂移。只有当APCE和都以一定比例大于历史均值的时候,模型才进行更新,这样一来大大减少了模型漂移的情况,二来减少了模型更新的次数,达到了加速的效果。