基于改进KCF的室内人体追踪方法
2020-09-01李昌顺李闻达
石 强,葛 源,李昌顺,唐 豪,李闻达
(中国核动力研究设计院,成都 610005)
0 引言
室内场景中的人体追踪是目标追踪算法的具体应用,通常应用于人体的轨迹绘制以及敏感区域报警等。现有学者大多数集中在如何提高目标追踪算法的速度和精度的研究上,对遮挡问题的研究较少。遮挡、模糊,目标丢失问题是室内场景中人体追踪的核心难题,如何处理这些问题应该是室内场景中人体追踪的重要内容。本文以经典KCF(High-Speed Tracking with Kernelized Correlation Filters) 算法为基础,结合场景信息,进行尺度估计,设计异常追踪判据和新的模型更新策略,使改进后的KCF 具有强大的异常追踪处理能力和对模型漂移的免疫能力。
1 KCF简介
KCF 通常在追踪过程中训练一个相关滤波器,利用该相关滤波器可以得到上一帧图片目标附近循环移位采样图像块的响应图,响应图的峰值点即为当前帧跟踪目标[1-3]。接着再使用获得的跟踪结果,去更新样本集和相关滤波器。样本集通常由目标块循环位移得到,循环样本xi相对应的标签值yi相对于基础目标图像的距离服从高斯分布。KCF充分利用了循环矩阵在傅里叶空间可对角化的性质,利用循环矩阵的性质,显著地降低了样本训练和相关滤波的运算复杂度[6-7]。
图 1 室内场景抽象图Fig.1 Abstract image of indoor scene
2 KCF改进
2.1 尺度估计
在室内场景中,通常地平面是整洁和较为光滑的,因此可以理想地假定地平面与头顶的平面平行。人体在室内场景中运动的时候,由于人体的身高并没有发生剧烈的变化,可以假定人体目标为刚体(实际人体并非刚体)。基于以上分析,本文可以给出3 个假设。
假设1:室内场景的地面可以当做是平面。
假设2:图像平面近似地垂直于地面。
假设3:每一个人体目标在运动的时候,近似地看做高度不发生变化的刚体。
本文将室内场景的环境模型抽象成如图1 所示的模型。利用大写的(X,Y,Z)代表世界坐标系;利用小写粗体的(u,v)代表像素坐标系;利用P0和Q0代表人体的脚部和头部的位置,其在图像上对应的位置为p0,q0。给定初始的人体在图像上的位置高度,本小节的目标就是给出一种方法,估计出在图像其他位置的高度h。
根据假设3,当人体发生运动的时候,可以近似地看做不发生变化的刚体,因此当人体目标从初始位置P0运动到P1的时候,由于人体在室内场景中的高度没有发生变化,所以在世界坐标系中,Lq和Lp相互平行。与此同时,他们在图像坐标系中的投影点q0、p0、q1、p1相交于l 线上的一点v,本文定义l 为灭线。
设灭线l:
其中,θ=(a,b,c)T,p=(u,v,1)T,根据三角形相似定理,可以得到:
根据公式(2),可以得到v:
由于v 输入灭线l 上的点,可以解算出λ:
如果知道了灭线的参数,可以根据初始位置h0,p0来估计出任何位置P 的尺度h,令,,得:
其中,p0,h0为初始位置,p 为图像上的位置,h 为人体在图像上的高度,w 与h 的求法类似。显然,β 最终由初始位置和高度以及θ 决定,因此只需要求出θ 即可。首先,通过实验获n 对人体在场景平面的位置和高度值然后利用最小二乘法估计出最终需要的参数η=βθ,使得平均方差最小。
由于采集单个人体在场景的位置和高度,可能会由于测量噪声导致最终得到的η 不可靠。解决办法是采集K 个不同的人体目标在场景中的位置和高度,仍定义那么重新定义式(5),有:
2.2 异常追踪判据及模型更新策略
在室内场景中,人体目标相互遮挡或者被物体遮挡时,会导致人体追踪失败。实际上,严重的遮挡和目标丢失是视觉追踪的一大挑战,KCF 追踪算法和部分现有的追踪器一样,每一帧不考虑追踪结果是否准确。一旦当前帧的目标追踪错误,产生遮挡,或者丢失,都会导致追踪的失败。在本小节,针对遮挡和目标丢失问题,在目标检测的过程中,利用追踪结果反馈来确定模型更新的必要性,同时根据QlT 的变化来解决异常追踪情况下的模型更新问题。
KCF 通过循环采样得到的整张响应图可以通过式(9)计算:
图2 异常追踪响应图Fig.2 Exception tracking response diagram
响应图的峰值和波动在一定程度上揭示了追踪效果的置信程度。理想响应图在当前帧检测到的目标与目标非常匹配的时候,在匹配区域应该只有一个尖峰而其他区域则比较平顺。响应图的峰值越高越清晰,那么目标定位精度越好,否则响应图则波动剧烈和正常的响应图有着明显的不同。
如图2 所示,蓝色框为正确的人体追踪结果,红色框是错误的人体追踪结果。正确人体目标在响应图上的响应值低于错误追踪红色目标框的位置,KCF 中定义响应值最大的为正确追踪目标,因此会导致追踪错误。根据上述分析,本文定义了两条判据来判断当前追踪是否正常。第一个判据是利用响应图的峰值,定位为响应图的最大响应值:
第二个判据为QlT:
其中,Fmax,Fmin,Fw,h,分别代表响应图的峰值、谷值以及w,h 处的值,QlT 可以用于反映响应图的震荡程度以及追踪结果的置信度。当目标在检测范围内的时候,其响应图由于只存在一个尖锐的尖峰并且周围区域十分平滑而且噪声较小,因此QlT 的值较大。而当目标被遮挡或者出现丢失的时候,此时响应图震荡的厉害,QlT 显著变小。
综合上述分析,本文给出了目标追踪结果可靠性的判断条件:
当前,帧Fmax和QlT 的值都大于各自历史平均水平乘以一定的比例时,本文认为当前的追踪结果是可靠的,可以用当前帧的追踪结果去更新模型,否则判断当前的追踪结果由于遮挡、模糊或者丢失的原因导致追踪结果不可靠,因此需要舍弃当前帧重新选择以往的帧进行模型更新。
图3 KCF改进算法流程图Fig.3 KCF Improved algorithm flow chart
当判断出目标发生遮挡、模糊以及丢失的现象的时候,文献[4]提出了利用FarnBack 光流算法对运动物体进行测速的方法,并结合模板池的策略解决以往的帧的选择问题。但是光流计算比较复杂,会大大降低追踪的实时性。因此,本文利用QlT 来设计一种简单的异常追踪情况下的取帧策略。设检测到异常帧的帧数为xi,那么假定处于异常连续追踪的帧总共有K 帧,那么定义d 有式(12):
图4 发生遮挡两种算法效果对比Fig.4 Comparison of the effects of the two algorithms when occlusion occurs
3 KCF改进算法流程图
改进的KCF 算法流程图如图3 所示。当输入视频后,选定目标,利用尺度估计出目标的尺度,然后运行KCF 算法,得到目标的位置和大小,然后判断是否是最后一帧,若是最后一帧,则结束算法;否则利用异常追踪判据判断追踪结果是否正常,若追踪正常,则利用当前帧检测下一帧,否则计算取样间隔d,然后在模板池中选择以往的模板用于下一帧的追踪。
4 实验及结果分析
本文实验的仿真软件为matlab R2013B。首先,是对遮挡产生其QlT 和Fmax的实验,实验步骤如下:选定一个追踪人体目标,然后利用response 函数绘制响应图,同时观察改进后的目标追踪算法和KCF 算法的QlT 及Fmax。
图5 实验结果Fig.5 Experimental results
图4 中,第一行是在321 帧给定人体目标后的追踪效果及其响应图,红色框为改进后的KCF 算法的追踪效果,蓝色框为KCF 目标追踪算法的追踪效果,从图中可以看出红色框要比蓝色框更能很好地包裹住人体目标,而不过多地引进背景信息,这是因为本文的改进算法引入尺度估计,这样根据人体在场景中的位置对尺度进行调整。在454 帧,人体目标被遮挡,此时Fmax和QlT 都减小,利用异常追踪判据可以判断此时的追踪结果可能会发生异常。此时,改进的KCF 算法会根据本文的模型更新策略,丢弃当前追踪结果,在模板池中选定合适的模板重新追踪,而KCF 由于没有异常追踪判据,而对追踪结果不检查,采用逐帧追踪的结果进行更新。在511 帧,人体目标不再被遮挡。可以发现,改进后的KCF 人体追踪结果仍然准确,而KCF 追踪失败。
本文实验利用几种较为成熟的目标追踪算法与本文的算法进行对比,其测试数据集为OTB-100 数据库中的JOgging 和girl 数据集,测试5 种算法的Overlap threshold-Success Rate 和Location error threshold-Precision 曲线图。实验结果如图5 所示。
实验结果显示,改进后的KCF 在速度上比KCF 有所降低,但是仍然达到了124FPS/s。在相同的Overlap 阈值上,改进KCF 的追踪成功率都比其他算法较高。在相同的Location error 阈值上,改进的KCF 也有很好的Precison 表现,但是综合其在速度上的优势,改进的KCF 具有强大的异常追踪处理能力,同时也能够很好地解决模型漂移问题。