The value of knowledge lies not in possession, but in share.

0%

目标跟踪算法汇总

目标视觉跟踪(Visual Object Tracking),大家比较公认分为两大类:生成(generative)模型方法和判别(discriminative)模型方法,目前比较流行的是判别类方法,也叫检测跟踪tracking-by-detection,以下简单介绍。

生成类方法

在当前帧对目标区域建模,下一帧寻找与模型最相似的区域就是预测位置,比较著名的有卡尔曼滤波,粒子滤波,mean-shift等。举个例子,从当前帧知道了目标区域80%是红色,20%是绿色,然后在下一帧,搜索算法就像无头苍蝇,到处去找最符合这个颜色比例的区域。

  1. Camshift 算法全称为 Continuiusly Adaptive Mean-SHIFT,主要通过视频图像中运动目标的颜色特征达到跟踪目的。首先,利用鼠标响应函数手动选择出目标物体,然后提取目标物体的颜色直方图特征,再通过反向投影将目标颜色直方图转换为颜色概率分布图,初始化一个搜索窗大小和位置,并根据上一帧得到的结果自适应调整搜索窗口,进而求解目标在视频图像中的位置。

  2. 粒子滤波算法主要利用目标物体的颜色直方图特征,通过粒子预估、校正、重采样等步骤,最终提高目标跟踪算法的抗干扰能力,并保证目标跟踪的实时性。

    粒子滤波又称为条件概率密度传播算法和序列蒙特卡罗方法,从本质上讲,粒子滤波是一种基于蒙特卡罗仿真的最优回归贝叶斯滤波算法,它将状态向量表示为一组带有相应权值的随机样本,并通过这些样本和权值计算出状态的估值。

  3. 光流指运动的物体经过相机成像后获得的像素在运动时的瞬时速度,光流的计算是通过图像序列中的像素灰度在相邻帧间的变化和相关性,来确定各像素位置的运动情况,即研究图像灰度在时间上的变化与空间上的运动关系。

判别类方法

CV中的经典套路图像特征+机器学习, 当前帧以目标区域为正样本,背景区域为负样本,机器学习方法训练分类器,下一帧用训练好的分类器找最优区域。举个例子,在训练时告诉tracker目标80%是红色,20%是绿色,还告诉它背景中有橘红色,要格外注意别搞错了,这样的分类器知道更多信息,效果也相对更好。

  1. 经典判别类方法推荐StruckTLD,都能实时性能还行,Struck是2012年之前最好的方法,TLD是经典long-term的代表,思想非常值得借鉴。

  2. tracking-by-detection检测算法非常相似,如经典行人检测用HOG+SVM,Struck用到了haar+structured output SVM,跟踪中为了尺度自适应也需要多尺度遍历搜索,区别仅在于跟踪算法对特征和在线机器学习的速度要求更高,检测范围和尺度更小而已。

  3. 相关滤波类方法correlation filter简称CF,最经典的高速相关滤波类跟踪算法CSK, KCF/DCF, CN。

🍭支持一根棒棒糖吧!