转载至:http://blog.csdn.net/yuhq3/article/details/78197703
原文下载地址:
https://www.tugraz.at/fileadmin/user_upload/Institute/ICG/Documents/lrs/pubs/possegger_cvpr15.pdf
C++代码下载:
https://github.com/foolwood/DAT
摘要:
这是15年CVPR的一篇paper,它使用的跟踪方法是
统计颜色特征
,最大的亮点是
distractor-aware tracking(DAT)
,即在跟踪过程中预先探测出与目标相似的干扰区域,与正确的目标区域结合表示(加权结合)。这样的做法能够有效降低传统颜色特征方法常出现的“漂移”现象。同时,在支持尺度变换的前提下仍然能有较高的FPS,在原文中就提到了该算法可供实时在线目标跟踪使用。接下来就将我认为的一些tricks及文章中的主要内容大致介绍下。
一、介绍及相关工作:
1、曾经颜色分布直方图是常用的方法,然而后来被一些卓越的特征所取代,例如HOG,相关滤波和更复杂的颜色特征。作者大概不服输,觉得我单纯的颜色特征仍有作为,于是才有下文。
2、初始化的矩形框中存在部分背景信息,导致跟踪算子常常缺乏分辨目标与背景的判别能力。文章中就提到这样一句话,我认为这也是颜色特征吃亏的地方,它不像纹理特征、形状特征等等其他能够在初始化阶段有效分辨出目标与背景,而需要连同不需要的框内多余背景信息一起计算。可能这也是江湖吧,总要融合其他门派的武功才能日益壮大,一枝独秀是不符合“合久必分,分久必合”的观念的。
3、产生式模型混合判别式方法通常有惊人的效果。与上一点提到的一样,融合起来的功夫才会更加强大,例如加入SVM,多实例学习等等的跟踪算法将会与其他单打独斗的算法拉开差距。
二、干扰感知的在线跟踪(主体内容):
作者基于以下两个主要需求来提出后面的内容:
a)对于连续帧,有用的模型必须能从背景中区分出目标。(前后景分离)
b)干扰区域需要被预先检测出来并被抑制。
1、判别式目标模型表示法:
对于作者提出的a),实现的方法有很多,例如帧间差分法、混合高斯模型、光影法等等,但又基于(一)中提到的产生式混合判别式的模型具有高准确性的原因,作者使用了
基于贝叶斯定理的颜色直方图
,因此首先可以得到每一帧图像中每个像素点对应的颜色区间,(在文中没有提到使用的颜色空间是哪一种,这里默认为RGB颜色空间,即256维。)
然后再根据贝叶斯公式得到在搜索区域内属于目标区域的概率:
其中,
,
则公式(1)可以被简化为:
下图(a)就是由(2)式得到的分离目标与背景的概率图。
值得注意的是,原文中提到(2)式可以由
查找表
来实现,可以节省许多时间开销的同时,预先识别出潜在的干扰区域(如同上图(a)的其他运动员)。我还没有从代码上求证是否将公式转换成了查找表,但理论上应该行得通。
同样的,可以得到类似(2)的干扰等式(3):
由(2)(3)可得:
这也是两者(目标区域和干扰区域)结合后的公式,如上图(c)所示。
最后,
为了适应形变和光照
,有:
2、目标定位
原文中作者使用了被广泛使用的
tracking-by-detection
去定位目标,得到如下公式:
其中,(6)是用于
惩罚
帧间移动距离过大的搜索框,与高斯、余弦等其他度量方法类似。
在本节中,原文还有这样一段话,我认为也是目标定位的重要步骤之一:
“We densely sample overlapping candidate hypotheses Ot,i within the search region and compute both the vote and distance scores for each candidate. This allows us to efficiently obtain the new object location O* t as well as visually similar distractors, as such regions yield a high vote score, too. We consider a candidate Ot,i to be a distractor if
. To prevent selecting ambiguous distractors (e.g. located on the object itself due to increased scale) we follow an iterative nonmaximum suppression strategy, i.e. after selecting a candidate (either O* t or a distractor) overlapping hypotheses are discarded. After obtaining both the new object location and the set of distractors, the object model is updated according to Eqs. (2) and (3) to suppress the background and identified distracting regions and thus reduce the risk of drifting at a later time step.”
“我们在搜索区域里密集地采样候选Ot,i(目标区域),并且计算每个候选区域的模型得分和相似性度量。因为干扰区域必然也会获得高分(与目标区域相似),所以使得我们可以高效地同时得到新的目标区域和视觉相似的干扰区域。我们认为一个候选Ot,i如果满足
,那么它属于干扰区域。为了防止选择了具有二义性的干扰区域(由于目标尺度增大而导致干扰区域与目标部分重叠),我们采用迭代非最大值抑制策略,例如选择了一个候选之后(O* t或干扰区域),与之重叠的其他假设(区域)都舍弃。在获得了新的目标区域和一系列干扰区域后,需要根据等式(2)(3)更新目标模型,这样可以抑制背景和识别出的干扰区域,从而减小了在下一帧或之后漂移的几率。”
3、尺度估计
和其他state-of-the-art(当时)相似,为了尺度估计,原文将目标模型按阈值进行分段。然而,预定义好的阈值可能会由于复杂的背景或剧烈的光照变化而对尺度变化造成不好的影响。所以作者需要自适应的一种阈值。
如上图所示,L表示通过融合干扰感知公式得到的概率图,然后分别计算目标区域O和周围区域S的累计直方图:
,
使用以上累计直方图得到新的自适应分段阈值:
在式(7)后紧接着描述其作用的这样一段话:
This formulation penalizes thresholds within flat regions of the cumulative object histogram cL O, e.g. thresholds within the range [0:2; 0:3].
结合图表,我认为这段话的意思是:
“得到的阈值需要在减少背景噪声的同时得到足够多的目标像素,但要避开那些‘平滑’的区域,如上背景与目标接近的区域。”
为了适应新的假设目标区域O* t,定义一个安全前景区域(O* t中的80%),然后使用得到的阈值做连通域分段分析,与目标概率图极相似的连通域与安全区域相交的部分即作为目标区域。
最后计算当前尺度大小,与上一帧尺度做对比,若超过合理值则舍弃,否则则更新目标的维度(这里不是很清楚维度代表的意思,或许是目标区域框的大小?)
最后的最后,作者特意在原文中提出,该方法的尺度是没有固定的宽高比的,即不会有多余的背景信息被强制框进来,这样就减小了冗余信息。
三、实验结果与评价:
这里就不赘述了,直接放原文截图对比吧。
可以看到DAT算法是非常优越的,在当时VOT测试用例上与Struck、KCF等多个著名的跟踪算法不相上下,也体现了干扰感知算法的强大,即使是配合单纯的颜色直方图特征也能有不错的跟踪效果。同时,在本机上我使用VOT2015的测试用例,跑出来平均每一组测试用例(大概100~200帧图像)的FPS是15左右,比之前跑过的粒子滤波算法、MeanShift、CamShift等传统算法都提升了许多(平均5,6帧)。
然而,它仍有许多可以改进的地方,待研究了源码后再仔细讨论。如有谬处,请多指教。