目标跟踪一直是计算机视觉中的经典问题,它广泛应用于自动驾驶、人机交互和交通监控等领域[1-3]。目标跟踪[4]要求对输入的图像序列准确地标识出目标位置和大小等信息。Bolme等[5]首次将相关滤波思想引入到目标跟踪,提出了基于误差最小二乘[6]的MOSSE滤波器跟踪。Zhang等[7]提出了时空上下文跟踪(spatio-temporal context,STC)算法,利用深度时空上下文信息,把背景融入到卷积滤波器去训练,具有一定的抗遮挡性。Danelljan等[8]提出了自适应的颜色属性(color name,CN),他将颜色的属性集成到(circulant structure of tracking-by-detection with kernels,CSK)跟踪器上,对形变有较好的自适应性。Henriques等[9]改进CSK算法,提出KCF算法[10-13],采用梯度直方图(histogram of oriented gradient,HOG)[14]特征, 相比于灰度特征具有更好的跟踪性能。
本文在KCF算法的基础上,加入尺度框与目标跟踪质量检测,并应用到自航模的动态目标跟踪上。在实验中将改进的KCF算法与原始KCF算法进行对比,验证了改进算法的优缺点。
1 KCF算法与改进 1.1 KCF算法基本原理1) 构造样本
设x=[x1, x2, …, xn]为基础样本, 通过循环采样得到样本矩阵:
$ \mathit{\boldsymbol{X}} = \mathit{\boldsymbol{C}}\left( {\rm{x}} \right) = \left( {\begin{array}{*{20}{c}} {{x_1}}&{{x_2}}&{{x_3}}& \cdots &{{x_n}}\\ {{x_n}}&{{x_1}}&{{x_2}}& \cdots &{{x_{n - 1}}}\\ {{x_{n - 1}}}&{{x_n}}&{{x_1}}& \cdots &{{x_{n - 2}}}\\ \vdots &{}& \cdots &{}& \vdots \\ {{x_2}}&{{x_3}}&{{x_4}}& \cdots &{{x_1}} \end{array}} \right) $ |
由文献[6]可知循环矩阵可以由离散傅里叶变换进行对角化:
$ X = \mathit{\boldsymbol{F}}{\rm{diag}}\left( {\hat x} \right){\mathit{\boldsymbol{F}}^{\rm{H}}} $ | (1) |
式中:^为离散傅里叶变换,F为离散傅里叶矩阵。
2) 训练样本
KCF算法引入核函数来解决线性不可分的问题,提高了目标识别度,并用岭回归训练分类器:
$ \left\{ \begin{array}{l} f\left( {{x_i}} \right) = {\mathit{\boldsymbol{w}}^{\rm{T}}}\varphi \left( {{x_i}} \right)\\ w = \sum\limits_i {{\alpha _i}\varphi \left( {{x_i}} \right)} \\ \mathop {\min }\limits_\alpha {\left\| {\mathit{\boldsymbol{\varphi }}\left( X \right)\mathit{\boldsymbol{\varphi }}{{\left( X \right)}^{\rm{T}}} - \mathit{\boldsymbol{y}}} \right\|^2} + \lambda \left\| {\mathit{\boldsymbol{\varphi }}{{\left( X \right)}^{\rm{T}}}\mathit{\boldsymbol{\alpha }}} \right\| \end{array} \right. $ | (2) |
式中:f(xi)为样本xi的分类值,αi为待定的分类系数,φ(x)为核函数对应的映射函数,λ为正则化系数,y为样本的标签矩阵,式(2)为岭回归目标函数。解得
$ \mathit{\boldsymbol{\alpha }} = {\left( {\mathit{\boldsymbol{K}} + \mathit{\boldsymbol{\lambda I}}} \right)^{ - 1}}\mathit{\boldsymbol{y}} $ |
其中K=C(kxx),同式(1)的性质可对α进行快速地计算:
$ \hat \alpha = \frac{{\hat y}}{{{k^{\hat xx}} + \lambda }} $ |
3) 检测目标
当下一帧图像到来时,以目标框位置的图像作循环采样,获得检测样本集z,则目标的位置响应公式如式(3)。
$ \mathit{\boldsymbol{f}}\left( z \right) = {\mathit{\boldsymbol{w}}^{\rm{T}}}\mathit{\boldsymbol{z}} = \sum\limits_{i = 1}^n {{\alpha _i}k\left( {z,{x_i}} \right)} $ | (3) |
式中k(z, xi)为核函数。设Kz为检测样本和训练样本的核矩阵,由文献[11]可知Kz为循环矩阵,令KZ=C(kxz),根据循环矩阵性质并对其傅里叶对角化得
$ f\left( {\hat z} \right) = {{\mathit{\boldsymbol{\hat K}}}^{xz}}\Theta \alpha $ |
式中Θ表示元素相乘。通过计算
$ \max f\left( z \right) = f\left( {{z_t}} \right) $ |
则样本zt(zt∈z)的移位坐标为目标框的移动坐标,即目标新位置。
4) 更新分类器
$ {\alpha _n} = \left( {1 - \beta } \right){\alpha _{n - 1}} + \beta {\rm{ne}}{{\rm{w}}_{{\alpha _n}}} $ |
$ {\hat x_n} = \left( {1 - \beta } \right)\mathop {{x_{n - 1}}}\limits^{\widehat {}} + \beta {\rm{ne}}{{\rm{w}}_{{x_{\hat n}}}} $ |
式中:β为更新系数,αn和αn-1表示当前帧与上一帧的分类系数,xn和xn-1表示当前帧与上一帧获得的x。
1.2 改进KCF算法当摄像头与目标距离的改变时,目标在图像中呈现的大小也将改变,为了使目标跟踪具有尺度变换稳定性,我们在检测到目标的新位置后,会更换不同尺度的2个目标框去重新检测目标位置,比较3次检测的目标响应最大值f(zt),取最大的一个作为目标新的位置和目标框大小。
具体目标框的变换大小比例为原始框的1.1倍和0.9倍,其效果如图 1~3所示。
Download:
|
|
Download:
|
|
Download:
|
|
由1.1节可知,KCF算法是在检测样本中选取f(z)最大的点作为目标新的坐标,那么在运动目标不是特别快的时候,通过实验发现,在目标被遮挡的过程中,f(zt)出现了如下变化:
Download:
|
|
Download:
|
|
Download:
|
|
从40帧开始目标被水桶遮住,在这之前,KCF算法还是能够准确地找到目标的位置。然而,目标的f(zt)却差别很大。图 4~6对应的f(zt) =0.84、0.24和0.66。通过记录此过程的f(zt),绘制出了如图 7所示曲线。
Download:
|
|
从图 7可以发现,在目标没有被遮挡、也没有干扰的时候,目标的跟踪状态较好,f(zt)始终在0.7以上;在目标被遮挡的第40帧的时候,目标的f(zt)出现了大幅下降,通过不断更新的模板和参数,它开始学习了错误的目标,如图 3第110帧画面,f(zt)又回到了0.65以上,对遮挡物进行跟踪,从而丢失原先目标。因此,在f(zt)出现急剧下降时,可以认为目标被障碍物遮挡或者目标离开视野,此时应该中断目标的继续跟踪,保护之前的参数不再继续修改。
本设计采用的目标遮挡的判定准则为:
$ \left\{ \begin{array}{l} u = \sum\limits_{i = 1}^n {\frac{{{V_i}}}{n}} \\ {\sigma ^2} = \sum\limits_{i = 1}^n {\frac{{{{\left( {{V_i} = u} \right)}^2}}}{n}} \\ {V_p} < u - \lambda \sigma \end{array} \right. $ | (4) |
式中:u为丢失目标以前n帧画面的最大响应值f(zt)平均值;σ表示标准差;本设计的n为30时效果良好;Vp表示当前帧的响应值,当它比平均值还小λσ时,则认为目标丢失。
通过式(4)可知,如果λ设置得过大,那么对于目标丢失的检测则更加苛刻,在部分遮挡的情况下可能发生漏检;同理,如果设置得过小,容易造成误测,在船舶抖动或者目标形变的情况下,很有可能发生误检。
为了进一步地确定λ的值,进行了如下试验:对不同值的λ,去检验目标遮挡检测效果,在满足式(4)时停止跟踪,也不再画框,并在水池对目标船进行了试验,图 8为框取目标图,图 9为目标框消失图。
Download:
|
|
Download:
|
|
首先,如图 8所示,先在水面上框取了目标船(此时λ =2),然后让目标航行到障碍物后。目标船被遮挡时,目标框消失,λ =2可以检测到目标的被遮挡,此过程的f(zt)曲线如图 10所示。
Download:
|
|
然而,当目标船转向发生形变时,程序也判定为目标丢失,目标框消失,即发生了误检。其f(zt)曲线如图 11所示。
Download:
|
|
从图 11可以看出,曲线虽然发生了下降,但是没有在目标遮挡情况下降的幅度大,所以无法满足式(4),λ =2显然过小,无法满足设计要求。
取λ =5,再次进行上述试验,具体如图 12所示。
Download:
|
|
在目标船被遮挡的时候,目标框没有消失,此时为漏检,它将会错误学习到障碍物信息。绘制f(zt)曲线如图 13所示。
Download:
|
|
从图 13就可以发现,目标船被遮挡时,f(zt)发生了明显的下降,由于λ =5条件过于苛刻,算法无法判定为遮挡,所以无法满足设计要求。
通过多次试验,并选取了岩石、木桩、灌木丛、塑料瓶等20个障碍物对不同λ值进行试验。绘制检测率与误检率曲线,如图 14所示。
Download:
|
|
图 14中实线曲线表示误检率,即没有发生遮挡而被判定为遮挡;虚线曲线表示检测率,即发生了遮挡而被成功检测到了。显然,对于目标跟踪,误检与检测失败两者的代价是不同的:误检时,参数不再更新,仍然可以利用此参数检测出目标;而检测失败时,参数依照遮挡物更新,则不会再检测出目标。
所以,本设计必须保证检测率100%,由图 14可知,在λ =2.4时检测率仍然是100%,但是为了保留一定余量,本设计取λ =2.2。
在检测到目标遮挡后,停止更新分类器参数,然后根据上一帧目标框的高度,在图中构建一个扫描通道,如图 15。在这个通道中,以原目标框尺寸,利用滑窗法,滑动步长为目标框整数倍宽度像素,如式(3)继续计算目标框中的响应值f(z),当不满足式(4)时即认为找回目标,并继续进行跟踪。
Download:
|
|
Download:
|
|
Download:
|
|
本设计假定为恒速运动,所以只要进行舵角的控制即可达到航向的控制。在航速一定条件下,舵角δ与航向变化速度和航向变化加速度的关系为
$ {T_1}{T_2}\ddot r + \left( {{T_1} + {T_2}} \right)\dot r + r = K\delta + K{T_3}\delta $ | (5) |
式中r为航向角速度。对式(5)进行简化,得出一阶KT方程[15],即
$ T\dot r + r = K\delta $ |
针对本设计的自航模,通过船舶回转试验和“Z”型试验,计算出了自航模的KT参数分别为:K=0.584 6,T =0.134 8,航速u =0.25 m/s。自航模的控制模型传递函数为
$ G\left( s \right) = \frac{{0.584\;6}}{{0.134\;8{s^2} + s}} $ |
设计PID航向控制器Kp =10.35,Ki =0.89,Kd=0.25对自航模进行航向控制。摄像头传回的图像为宽度W =640 pix的画面。那么
$ p - \frac{W}{2} = ka $ |
式中:p为在图像上目标中心位置像素横坐标,k =9.143为比例系数,a为航向偏差角,当a为正时表示目标在目标在自航模的右前方。
当满足式(4)目标丢失时:
1) 若目标丢失位置在图像边缘,则为目标脱离视野,自航模保持转向舵角,直至找回目标;
2) 若目标丢失位置不在图像边缘,则认为目标被遮挡,此时保持航向不变,直至找回目标。
3 实验 3.1 改进KCF后稳定性为验证本文改进算法的稳定性,本文选取了VIVID Tracking Evaluation Web Site上的目标跟踪图片序列作为验证,λ =2.2,n=30, 与本设计保持一致,结果如表 1。
目标遮挡检测率为88.8%, 目标遮挡后找回率为44.4%;对于目标的遮挡,KCF算法全部跟踪失败。
3.2 自航模目标跟踪由于场地等条件限制,本实验在一个4 m×4 m的水池进行,自航模初始为静止状态,位于水池的一角,以另一艘自航模为目标,开始跟踪时立即加速到最大速度(u=0.25 m/s)并匀速航行。通过在水池正上方安装的摄像头,观察自航模跟踪目标情况,并绘制了如下的航迹。试验开始时,先使目标船处于自航模视野边缘,手动操作目标船向另一个方向航行。
实验一 目标移动且脱离视野范围,无障碍物进行跟踪,比较KCF算法与本文算法,如图 18、19所示。
Download:
|
|
Download:
|
|
在目标移动自航模开始前进并向目标方向转舵,目标过快脱离视野后,KCF算法的自航模以背景为目标跟踪,几乎不再进行转向,如图 18;本文算法的自航模则向目标船消失方向最大限度转舵,在目标重新出现在视野时,搜索到了目标并重新跟踪,如图 19。
实验二 目标移动,有障碍物遮挡进行跟踪,比较KCF算法与本文算法,如图 20、21所示。
Download:
|
|
Download:
|
|
开始时自航模朝目标前进,目标经过障碍物时,KCF算法自航模则以障碍物为新目标进行跟踪,如图 20;本文算法自航模则识别出目标丢失,继续转向,并重新找回目标继续跟踪,如图 21。
4 结论1) 本文改进的算法,在一般视频的目标遮挡检测效果良好,但是为了节约计算资源,目标找回只是在水平方向上进行搜寻,所以无法在一般视频中的目标找回取得较好结果。读者可根据实际情况增加全图的目标搜索;也可根据实际跟踪目标与机器计算速度,调整式(4)的参数。
2) 本设计在KCF算法上进行改进,针对目标跟踪效果不佳时进行及时停止跟踪,实验表明:在目标被遮挡或者脱离视野后,仍然能找回目标继续跟踪。而原始KCF算法由于学习了错误背景,无法继续跟踪。
3) 读者可根据实际情况增加全图扫描窗口进行目标搜索;也可根据实际跟踪目标与机器计算速度,调整式(4)的参数,以取得更好的跟踪效果与稳定性。
[1] | SMEULDERS A W M, CHU D M, CUCCHIARA R, et al. Visual tracking:an experimental survey[J]. IEEE transactions on pattern analysis and machine intelligence, 2014, 36(7): 1442-1468. DOI:10.1109/TPAMI.2013.230 (0) |
[2] | KWON J, LEE K M. Tracking by sampling trackers[C]//Proceedings of 2011 International Conference on Computer Vision. Barcelona, Spain: IEEE, 2011: 1195-1202. (0) |
[3] | 侯志强, 韩崇昭. 视觉跟踪技术综述[J]. 自动化报, 2006, 32(4): 603-617. (0) |
[4] | 曾巧玲, 文贡坚. 运动目标跟踪综述[J]. 重庆理工大学学报(自然科学版), 2016, 30(7): 103-111. DOI:10.3969/j.issn.1674-8425(z).2016.07.018 (0) |
[5] | BOLME D S, BEVERIDGE J R, DRAPER B A, et al. Visual object tracking using adaptive correlation filters[C]//Proceedings of 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Francisco, USA: IEEE, 2010: 2544-2550. (0) |
[6] | ZHANG B, MAKRAM-EBEID S, PREVOST R, et al. Fast solver for some computational imaging problems:a regularized weighted least-squares approach[J]. Digital signal processing, 2014, 27: 107-118. DOI:10.1016/j.dsp.2014.01.007 (0) |
[7] | ZHANG Kaihua, ZHANG Lei, YANG M H. Real-time compressive tracking[C]//Proceedings of the 12th European Conference on Computer Vision. Florence, Italy: Springer, 2012. (0) |
[8] | DANELLJAN M, KHAN F S, FELSBERG M, et al. Adaptive color attributes for real-time visual tracking[C]//Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus, USA: IEEE, 2014: 1090-1097. (0) |
[9] | HENRIQUES J F, CASEIRO R, MARTINS P, et al. High-speed tracking with kernelized correlation filters[J]. IEEE transactions on pattern analysis and machine intelligence, 2015, 37(3): 583-596. DOI:10.1109/TPAMI.2014.2345390 (0) |
[10] | 尹宏鹏, 陈波, 柴毅, 等. 基于视觉的目标检测与跟踪综述[J]. 自动化学报, 2016, 42(10): 1466-1489. (0) |
[11] | 潘振福, 朱永利. 多尺度估计的核相关滤波器目标跟踪方法[J]. 激光与光电子学进展, 2016, 53(10): 101501. (0) |
[12] | GRAY R M. Toeplitz and circulant matrices:a review[J]. Communications and information theory, 2005, 2(3): 155-239. (0) |
[13] | 包晓安, 詹秀娟, 王强, 等. 基于KCF和SIFT特征的抗遮挡目标跟踪算法[J]. 计算机测量与控制, 2018, 26(5): 148-152. (0) |
[14] | DALAL N, TRIGGS B. Histograms of oriented gradients for human detection[C]//Proceedings of 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR). San Diego, USA: IEEE, 2005: 886-893. (0) |
[15] | 孙建刚, 邓德衡, 黄国樑. 水面船舶操纵性敏感性分析[J]. 中国航海, 2006(1): 49-52. (0) |