基于光流法与分块思想的目标跟踪算法
2020-07-20夏斯维
夏斯维,陈 迅
(江苏科技大学 电子信息学院,江苏 镇江 212003)
0 引 言
目前,主流的目标跟踪算法[1]主要是判别式算法,随着深度学习的火热发展主要可以分为两种,分别为基于传统方法的算法和基于深度学习的算法。传统算法重要分支就是以相关滤波器算法为基础的各类跟踪算法,最先Bolme等[2]提出使用相关滤波器(MOSSE)处理跟踪问题,后续针对跟踪过程中的各类问题,CSK[3]、KCF[4]、CN[5]、DSST[6]、SAMF[7]以及CF+AT[8]等算法均被提出;深度学习算法主要分为两类,一类是利用深度神经网络在ROI(感兴趣的区域)中提取相对较鲁棒的深度特征来代替图像灰度特征、HOG等手工特征[9],再利用传统的支持向量机(SVM[10])或相关滤波等方法进行目标的位置判别;另一类是构建适用于目标跟踪的深度网络,提供端到端的解决方案,该方法对跟踪精度有明显提高,但网络结构相对复杂,训练运算代价相对较高。
引入目标跟踪失败判别机制是本文实现目标跟踪的重要环节,针对跟踪环境复杂性,对跟踪结果进行判别,根据判别结果,改善后续的跟踪过程以提高跟踪准确性。基于上述目的,本文主要完成了以下两个任务:引入一种基于光流的跟踪失败判别机制,用于判断跟踪过程中的目标漂移或者目标丢失;在判断出跟踪失败时,本文通过分块训练思想,改进模型更新机制以修正目标后续的跟踪过程。
1 目标跟踪判别机制
有效的判别机制,对于视频目标跟踪是非常必要的。在缺乏判别机制的情况下,一旦跟踪过程出现误差,这个误差就会积累的越来越大,直至目标消失。所以本文在原有的相关滤波器算法的基础上加以改进,增加了基于光流法的跟踪失败判别机制。
以往大部分的跟踪算法仅仅关注外观特征来区分目标,而忽略了视频帧与帧之间的时序性信息,本文通过计算前后帧之间的光流信息作为时序性信息,提高算法的跟踪精度。
1.1 相关滤波算法
常规相关滤波器(CF)的主要原理就是通过最小化输入样本与真实值之间的误差,训练滤波器问题被转换为下面的损失函数优化问题,如式(1)所示
(1)
其中,yn=[y1,y2,…,yn]∈Rk×1表示高斯形状响应,xn∈Rk×1是第n个输入向量通道,λ是正则项系数,w是需要求解的滤波器模板参数。计算上述公式的最优解w*是整个问题的关键。利用循环结构的特殊性质和核函数,能够在傅里叶域中快速找到合适的封闭解析解。
1.2 光流法
光流法使用的关键在于光流场[11],光流场是指图像灰度模式下的表观运动,它是一种像素级运动。在光流场中可以通过计算每个像素的速度矢量,从而实现对图像的运动状态的掌握和分析。其基本原理是,如果图像中存在移动物体,则目标和背景之间就是相对运动,此时,可以通过对比移动物体和背景形成的运动矢量,发现目标位置变化。
具体的光流计算就是假设t时刻的像素(x,y)的灰度值是I(x,y,t)。 在t+td时刻,像素移动到一个新位置。相应的灰度值为I(x+dx,y+dy,t+dt)。 如果图像的灰度 (x,y) 变化缓慢,则当前灰度的泰勒级数扩展如式(2)所示
(2)
进一步有
(3)
其中,Ix,Iy是参考点的灰度值变化率;u和v是x和y方向的速度矢量。式(3)是所有基于梯度的光流计算方法的基础。
1.3 基于光流法的判别机制
本文基于光流法提出跟踪判别机制,值得注意的是,在传统的应用中,基于光流法的目标跟踪算法直接依赖光流矢量来确定目标位置,这种方法可靠度低且计算量大。而本文对传统光流法做出了必要的裁剪和简化,仅用于判别目标跟踪是否失败,一定程度上减少了计算量。
本文使用的梯度算法是Horn-Schunck光流算法。Horn-Schunck算法是一种全局约束方法,该算法提出了光流平滑约束的概念,即图像上任何点处的光流不是独立的,并且光流在整个图像范围内平滑地变化。
考虑到光流计算误差,Horn-Schunck算法将光流解决方案转换为式(4)中的极值求解问题
(4)
式中:Ix,Iy是参考点的灰度值变化率;u和v是x和y方向的速度矢量;λ是控制平滑度;并且是u和v的平均值。求式(4)对于u和v的导数,当导数为零时,该式取极值,本文采用松弛迭代方程对极值进行求解,如式(5)和式(6)所示
(5)
(6)
即前后两帧的一阶差分结果的平均值来近似灰度对的时间和空间微分,以此求得视频帧中像素点的光流值。
该机制具体流程如图1所示。
图1 失败判别机制流程
首先计算当前帧图像的平均光流量作为阈值;接着计算当前帧的目标预测框中每个像素的光流值;将目标预测框中的像素光流值与阈值进行比较,当一定比例的像素光流值超过阈值时,预测帧被认为是正确的,否则认为目标预测框是不准确的并且判定当前帧目标跟踪是失败的。
在算法实现中,为了减少计算量,压缩图像后计算光流值。
2 基于分块训练的模板更新
在引入光流法判别机制后,需要对模板更新机制进行改进,完成整个算法的改进。
这里分块训练是在发现目标跟踪失败时引入的新的模板更新策略。简而言之,将当前视频帧分解为m个块,然后分别为m个子块训练对应的子滤波器模板,然后根据权重αi加权得到最终的滤波器模板,用于后续视频帧的跟踪,其中权重是通过计算各个子块的中心偏移量来获得的,具体流程如图2所示。
图2 分块训练流程
2.1 计算中心偏移量
由于相位相关的计算也是在频域中进行的,这不会给实时跟踪的要求带来过多的计算负担。故本文选用相位相关的方法来获取中心偏移量。相位相关算法主要是指图像之间的转换。图像f2(x,y) 是通过对图像f1(x,y) 傅里叶变换 (x0,y0) 得到的图像。对应于f1(x,y) 和f2(x,y) 的傅里叶变换为F1(x,y) 和F2(x,y), 其时移属性如式(7)所示
F2(x,y)=exp(-j*2*pi(x*x0+y*y0))*F1(x,y)
(7)
计算频域交叉功率谱如式(8)所示
(8)
最后,可以将交叉功率谱通过逆傅里叶变换来获得冲击函数。该函数仅在 (x0,y0) 处具有最大值,并且在其它位置几乎为零。
2.2 计算子块权重值
根据前一节,获得的偏移量用于计算每个子模块的权重。本文中,权重通过每个子块的偏移量进行归一化,如式(9)、式(10)所示。xi,yi是每个子块的水平和垂直方向的偏移,Xi是每个子块的偏移,αi是为每个子块h*训练的模板的权重
(9)
(10)
最后,新模板H*按权重αi加权,如式(11)所示
(11)
3 实验结果与分析
因为OTB100数据集包含的视频种类较多,故本文主要在OTB100数据集上对本文算法进行了性能测试,具体实验是在Intel 4.0 GHZ CPU上使用MATLAB2016b实现的。实验采用一次通过标准(OPE),具体结果主要表现为在不同的标准误差阈值下的精确度,这里的标准误差阈值范围设定为0-50像素,同时将本文算法与经典的几个相关滤波器算法(KCF、DSST、CSK)进行了性能对比实验。
3.1 有效性实验
首先为了验证算法的有效性,给出了OTB100数据集中girl、Girl2、Bird1以及couple这样几个视频序列在不同的跟踪算法下的跟踪结果,如图3所示。视频每帧上都标注了对应的帧数,在girl的视频序列中当第458出现遮挡问题时,KCF算法、DSST算法以及CSK算法都直接丢失了目标,而本文算法能够较好的跟踪目标,表明本文算法能更好地处理遮挡问题;在Girl2视频序列中,在第411帧左右,目标发生遮挡问题后,KCF算法和CSK算法丢失目标,DSST算法则跟错了目标,而本文算法在丢失目标后能够找回目标并继续能跟踪,表明本文算法对于遮挡和目标形变问题有一定的改善效果;在Bird1视频序列中,第116帧到第119帧,目标快速移动的情况下,KCF以及CSK算法丢失目标,DSST跟错目标,本文算法相比几种经典算法,能更好处理目标速移动问题;在Couple视频序列中,在第41帧出现平面内旋转和目标快速移动问题时,3种经典算法都丢失了目标,而本文算法依旧能确定目标位置,从而体现本文算法对于平面内旋转和目标快速移动问题具有一定的鲁棒性。
3.2 性能对比实验
为了验证上述跟踪结果比较中,本文算法对于目标遮挡、目标快速移动以及平面内旋转3个问题的跟踪鲁棒性,在OTB100的视频数据集进行算法性能测试,并与KCF算法、DSST算法以及CSK算法进行了比较,本文也展示了部分视频序列的跟踪精确度数据,这里的数据都是在标准误差阈值为20像素的条件下获得,见表1。
图3 跟踪结果比较
表1 各算法精确度对比
从表1可以看出本文算法面对目标被遮挡、目标快速移动以及目标平面内旋转的问题,跟踪精度都有一定的提高。
为了进一步验证本文算法对目标遮挡、目标快速移动以及目标平面内旋转的问题性能,分别针对具有目标遮挡、目标快速移动或者目标平面内旋转问题的视频集进行性能测试,仍然与KCF算法、DSST算法以及CSK算法进行比较,比较结果如图4(a)~图4(c)所示,视频集均来自OTB100数据集。
图4 性能比较结果
由图4(a)~图4(c)可知,本文算法对目标跟踪、目标平面内旋转以及目标快速移动问题有一定的效果,跟踪精度有3.8%-2.5%的增长。有这样的提高关键在于本文在跟踪过程中设置了基于光流法的跟踪失败判别机制,在出现目标形变、遮挡、快速移动以及平面内旋转时,通过光流的变化协助跟踪器确定目标位置,从而提升跟踪精确度。
不同的标准误差阈值下各算法在OTB100数据集下总的性能对比如图5所示,可以看到本文算法的整体性能相对于其它算法来说,跟踪精确度也有所提升。
图5 总体性能比较结果
4 结束语
针对传统目标跟踪算法无法处理目标被遮挡、目标快速运动以及平面内旋转的问题。首先,本文提出了基于光流法的失败判别机制提高跟踪精度的新思路;其次,本文在得到判别机制的跟踪失败结果时,采用分块训练思想修正滤波器模板更新的策略,在判断出目标跟踪失败时,修正跟踪结果以提高跟踪精度。
实验结果表明,本文算法在目标被遮挡、目标快速运动以及平面内旋转3种复杂跟踪情况下相比于其它几个主流的相关滤波器算法,能够较为鲁棒的实现目标跟踪;同时在OTB100整个数据集上跟踪效果也有所改进。