写作理由:看了网上各种版本的kcf原理,都不是特别理解(主要是不能特别说服我,哈哈)。详细琢磨了下,谈谈自己的理解,本人水平有限,难免有理解不到位的地方,请大家批评指正
本文主要会从下面几个方面讲:目标跟踪背景情况介绍
跟踪数学建模
模型优化
KCF工程实现目标跟踪背景情况介绍
视觉目标跟踪是计算机视觉中的一个重要研究方向,有着广泛的应用,如:视频监控,人机交互, 无人驾驶等。但同时又是一个很混乱的方向,也是一个工程占主导的研究方向,在相关滤波和深度学习方法出现之前,大家更多的是各自为战,提出工程性的方法解决跟踪问题
但是在14年KCF相关滤波算法出来之后,基本就相当于alexnet之于深度学习的地位。下图是KCF系列算法(KCF、DCF、MOSSE,其中MOSSE是目标跟踪领域的第一篇相关滤波类方法,真正第一次显示了相关滤波的潜力,只是由于选取特征过于简单,效果并不是最好的)在OTB50上的实验结果,Precision和FPS碾压了OTB50上最好的Struck
从此目标跟踪就只有两大方向,一个是实时性的相关滤波方向,另一个当然是随主流的深度学习方向了,但目前在速度方面,还是相关滤波碾压一切算法,是当前工业界目标跟踪领域使用的主要算法框架两大方向发展脉络
2. 跟踪数学建模
首先我们看下跟踪的一般过程:
跟踪里,由于目标和周围环境实时变化,一般需要
。下图所示,在当前帧目标区域及周围随机采样,生成正负样本,训练分类器。然后在下一帧对应位置随机采样,通过分类器得到输出响应,选择响应最大的采样作为跟踪到的目标
然后利用样本循环移位代替采样窗口:
(这里先不要问为什么要这么做,这是KCF算法建模的过程,有了这些前提,KCF算法才能优化,从而实现加速)
把向量
变化到
的过程,叫做向量
右移一位
并且有:任意循环移位的向量,都可由排列矩阵P乘以向量
生成,推广到二维一样的成立:
对当前目标区域进行循环移位,可以近似滑窗产生样本的效果:
注意,这里必须要加pad,且框周围区域要平滑(可以通过cosine window加权),避免目标被分解重组合,以及由于边界移位导致图像不光滑。
循环移位产生的图像当作分类器的训练样本,生成训练样本矩阵:
注意:如果将当前帧的目标样本放入矩阵的中心,记为(0,0),那么左上角点(-1,-1)的样本中心相当于目标样本中心往左边上边移动了(-1,-1)
最后,建立模型,求解分类器
设我们需要学习的分类器为
,要实现的分类目标如下图所示,图中,
(base)=0.3表示下一帧目标移动到左上角的概率是0.3,
(x)=1.0表示下一帧目标还是当前目标位置的概率是1.0,
是回归概率矩阵,数值可以采用高斯分布。
假设
是
的线性函数,有:
可以通过岭回归,得到损失最小的最优解:岭回归
这里
的展开形式为:
假设向量
的长度也为
,那么计算
的运算次数为
,
矩阵求逆的时间复杂度为
,显然这样的计算量是无法
的。
同时,分类器
通常不是特征向量
的线性表达。但是通过核函数技巧,可以将非线性问题通过特征的非线性映射,在映射后的特征空间满足线性关系。于是有了核空间的岭回归
至此,已经完成了利用循环样本近似滑动扫描窗进行样本采集,以及利用核空间的岭回归算法求解分类器
的建模过程。
3. 模型优化
这里通过核函数映射,解决了回归的非线性问题,但是时间复杂度的问题依然没有得到解决,同样无法
,可以利用特殊矩阵的性质优化回归参数
的求解。遵循此思路,下面先摆出结论:
讲解到这里,有必要普及一下数学知识了,讲讲什么是循环矩阵,以及循环矩阵有哪些性质:
由上可知,
是循环矩阵,是优化的关键,现在就来分析,怎样让
是循环矩阵,如下:
注意,推导到这里,其实我们还是不知道核函数
的形式,也不知道特征
非线性映射
的形式,但是只要
满足条件,
就是循环矩阵!!!还要注意的是,这里要求
也是循环移位向量,而这里的
就是训练样本,所以就回答了为什么要用循环样本采样替代滑窗采样的原因!!!
以上我们不但求解了
而且优化了
的计算,这样
也就出来了。下面就是测试阶段了。跟踪的测试过程是通过对下一帧在前一帧目标位置的滑窗产生一系列测试样本,
同样的,用目标位置的循环移位产生的样本代替需要滑窗产生的测试样本,完整的测试过程如下:
注意,这里的
分别是训练和测试的循环移位样本。
是所有测试样本的全部输出,每个输出点的值表示该位置循环移位样本的响应,也是对应窗口滑动样本的响应,显然找到最大响应值,其所在位置与当前帧的位置差就表示目标移动的距离了。
那么现在问题的关键就是求核函数生成向量
和
的表达了,直接摘抄论文片段如下:(同时再次注意,核函数必须满足的条件!!!)
至此,模型优化的全部过程分析已经完毕!!!(哈哈哈,确实不容易啊,给自己一个赞)
4. KCF工程实现
KCF是典型的原理复杂,实现简单的代表作(一般特别经典的论文和算法,好像都有这个特质),是当前工业界目标跟踪领域使用的主要算法框架。根据模型优化后得到的最终公式,
可知,在工程上,利用这个公式(框架),可以做的就是特征提取的选择(比如样本
的像素特征,颜色特征,HOG特征,卷积特征等),以及核函数的选择。下面给出简单的算法实现过程
注意:这里采用了高斯核函数,显然指数的计算会影响计算速度,再给出速度最快的MOSSE算法采用的核函数技巧:
工程上,还需要注意的一些问题: