王德培,谢 云
(广东工业大学 自动化学院,广东 广州 510006)
目标跟踪技术一直是计算机视觉研究领域中的热点之一,目前已广泛应用于智能汽车、视频监控、人机交互等方面[1]。多数目标追踪方法针对短视频图像序列,首帧中选取跟踪目标,然后进行实时目标识别与跟踪。
目前比较流行的目标跟踪算法有基于核化的结构化输出(Structured output tracking with kernel,Struck)[2]算法、跟踪-学习-检测(Tracking-Learning-Detection,TLD)[3]算法、多示例学习(Multiple Instance Learning,MIL)[4]算法、核相关滤波(Kernel Correlation Filter,KCF)[5]跟踪算法等。KCF跟踪算法因其在速度和准确性上的优秀表现得到大多数的关注。在目标追踪过程中,目标本身或背景发生较大改变,如目标部分遮挡或全遮挡、目标外观变化、外界光照等,都会对追踪效果产生很大影响。现有算法只能满足于特定的约束条件,并不能在任何条件下满足实时性和鲁棒性的要求。其中,遮挡问题对于目标追踪而言尤为困难。
针对以上问题,本文在KCF算法基础上提出一种融合感知哈希算法和Farneback光流算法的目标追踪算法,利用感知哈希算法求得目标与检测到的目标间的相似度,判定是否发生遮挡。当目标遮挡时,在模板池中取出一帧历史视频画面预测下一帧中目标位置,框出目标并继续进行目标跟踪。
KCF算法[6-7]是一种鉴别式追踪方法,通常在跟踪过程中训练一个目标检测器,使用目标检测器去检测下一帧预测区域是否有目标。之后,用新检测到的目标更新训练集进行下一次的检测。样本训练过程中,通过对检测到的目标循环移位生成大量的训练样本,使用这些样本来训练分类器。目标检测取决于预测区域与目标的相关系数。跟踪算法采用快速傅里叶变换,利用循环矩阵的性质(傅里叶空间可对角化,从而将对矩阵的运算转化为对向量的点乘),显著地降低了样本训练和目标检测的运算复杂度。目标快速检测过程中使用傅里叶反变换标记出目标位置。
KCF跟踪算法样本集通过目标区域样本循环移位产生。假设x是单通道一维数组,P是循环矩阵,Px实现一维数组x移位效果。
x=[x1,x2,…,xn]T
(1)
(2)
(3)
这样实现了x的一个元素移动。同样,使用矩阵Prx实现多元素移动,r为正数时右移,r为负数时反向移动。由{Prx|r=0,…,n-1}可以得到x生成的数据矩阵:
(4)
上式通过离散傅里叶变换(DFT)实现对角化,可写为:
(5)
w=(XHX+λI)-1XHy
(6)
其中XH表示复共轭转置矩阵,向量y的元素是yi。且:
(7)
(8)
其中φ(xi)是将训练样本xi映射到高维特征空间的函数。且
(9)
称κ(xi,xj)=φ(xi)φ(xj)为核函数,则:
(10)
根据参考文献[8]可得:
(11)
其中,kxx是核矩阵K=C(kxx)的第一行,“^”表示向量的DFT变换。
输入新的图像块z,分类器的回归函数为:
(12)
将z进行循环移位生成循环矩阵,进而得到一系列样本集Zi=PrZ,此时待选图像块为f(Z)=αTφ(x)φ(Zi)值最大的样本。目标的移动方向通过Zi确定。定义Kz为训练样本和所有测试样本的核矩阵,由酉不变核函数定理知Kz是循环矩阵。
Kz=C(Kxz)
(13)
其中Kxz是x和z间的核相关运算。且:
(14)
对上式进行DFT变换,有
(15)
其中“⊗”表示点乘。对上式做离散傅里叶逆变换(IDFT),可得到所有测试样本的相关响应系数,系数最大的样本是目标在当前帧的位置。
图1 改进算法流程图
2001年,KALKER T首次提出感知哈希算法,“感知”表明该算法关注的是相似性。利用哈希算法的特性计算目标与检测到的目标间的相似度。感知哈希算法是哈希算法的一个分支,是一种基于认知心理学的信息加工理论,由多媒体数据集到多媒体感知摘要集的一种单向映射,通过将具有相同感知内容和信息的多媒体数据压缩成唯一的一段数字摘要,满足感知安全性要求[9]。
根据感知哈希的特性,其可将数据量较大的对象映射成长度较小的一系列比特位。应用到图像匹配上,根据比特位中相同的位数判定相似性。相同或相似的图片会得到相同或相近的感知哈希值。
记感知哈希函数为PH。由对象I生成的函数值h称为感知哈希值:
h=PH(I)
(16)
两个对象的感知哈希距离pd可以使用多种距离计算方法PM得到:
pdi,j=PM(hi,hj)
(17)
其中,hi,hj分别表示两个对象的图像感知哈希值。感知哈希距离可采用传统的计算距离的方式得到,比如计算汉明距离或欧氏距离。Jogging视频相似度检测如图2所示。
图2 相似度检测
当pdi,j≤0.5时,说明目标识别正常或者部分遮挡。由于遮挡对目标跟踪影响不大,使用当前帧预测下一帧目标。
当pdi,j>0.5时,说明目标严重遮挡,此时需要一个匹配目标移动速度的取样间隔,到模板池中取出一帧画面作为模板预测下一帧中的目标。
(18)
图像一般取灰度图,图像像素点的灰度值可以是一个二维变量的函数f(x,y)。以感兴趣的像素点为中心,构建一个局部坐标系(非整张图像)。对函数进行二项式展开,可以近似为:
f(x,y)≈r1+r2x+r3y+r4x2+r5y2+r6xy
=xTAx+bTx+c
(19)
其中,x为二维向量,A为2×2的对称矩阵,b为2×1的矩阵,两者均与所选点(x,y)有关。
图像中目标由f1到f2,可得位移为:
d=(ATA)-1(ATΔb)
(20)
实际位移中存在大量噪声,可以选取感兴趣像素点领域,然后使用加权的目标函数为[11]:
(21)
光流测速效果图如图3所示。
图3 光流测速
传统的KCF算法本身不能提供处理遮挡的解决方法。本文在传统的KCF跟踪算法基础上增加了历史模板,避免了物体在遮挡情况下目标识别飘移问题,同时可以实现目标遮挡再检测功能。历史模板作为待取帧,当遮挡发生时,丢弃当前帧xi。然后结合光流算法测得的目标速度,在模板池中取得一帧画面作为检测下一帧xi+1中目标的模板。
匹配目标移动速度的取样间隔,即当前帧到取出帧的距离为:
d=t(v)×F
(22)
其中t(v)是一个关于目标移动速度的函数,F是视频帧率。则取出帧帧号为:i-d。当相似度低于阈值时,当前帧xi会被丢弃,使用取出帧xi-d更新KCF算法参数。
采用TB-50数据库中Jogging和girl2数据集对算法进行验证,实验运行环境为Windows 10,Intel(R) Core(TM) i3-2350M CPU 2.30 GHz。本文算法处理遮挡再检测流程如图4所示。在Jogging中检测到63帧发生遮挡。两种算法都能够跟踪到65和66帧。到81帧目标出现时,KCF算法不能继续检测到目标并跟踪见,但目标遮挡再检测算法可以重新检测到目标并进行跟踪。对比图见图5。同样,在girl2数据集上检测到103帧发生遮挡,之后目标遮挡再检测算法可以很好地实现遮挡后再检测。对比图见图6。
图4 遮挡再检测流程
图5 jogging对比图
图6 girl2对比图
KCF算法与目标遮挡再检测算法在跟踪速度上的比较见表1。
表1 算法跟踪速度对比
表1中对于相同的测试视频,KCF算法具有明显的检测速度优势。目标遮挡再检测算法,因增加了相似度与光流计算,检测速度均有明显下降。
本文基于KCF算法框架,加入感知哈希算法得到的相似度和光流算法测得的速度,进行目标识别与跟踪,解决了传统KCF算法遮挡再检测的不足。当遮挡发生时,到模板池中取出一帧历史模板,作为预测下一帧目标的样本送到KCF算法。实验结果显示,抗遮挡算法在遮挡再检测方面,相比于传统的KCF算法效果更好。鉴于融入多个算法,计算速度影响到算法表现力,但仍然能满足实时跟踪。下一步的研究要解决目标跟踪中的自适应尺度问题,同时在不影响算法表现的同时提高计算速度。