关于 STC(时空上下文) 跟踪算法的理解

o o 0 o o
欢迎想步入目标跟踪领域的小伙伴与我交流学习、共同进步丫 *|+ +|)* ...
最近一直在学习机器学习理论部分,研一还有几个大作业要搞,已经拖更N天了,现在终于有点时间开始写点自己的东西了==

注:本文也是在看了几个大佬写的东西、硕士论文以及咨询师兄大佬才得出的一点想法。

参考1:https://eason.blog.csdn.net/article/details/52217114
参考2:https://www.cnblogs.com/xiaojianliu/p/8705653.html
参考3:师兄大佬的论文,放这镇压一切妖魔鬼怪 (+ +|)
郭志翼,王欢欢.基于嵌入式平台的低时间复杂度目标跟踪算法[J/OL].红外与激光工程:1-9[2019-10-23].http://kns.cnki.net/kcms/detail/12.1261.TN.20191008.1545.020.html.

本文目录

1. STC 跟踪思想

《Fast Tracking via Spatio-Temporal Context Learning》是Kaihua Zhang等人于2014年(传闻好像是2012年投的,14年才发出来 ±+)发表的一篇文章,文中提到了通过利用时空上下文进行视觉跟踪,具有很好的实时性和鲁棒性。该算法基于贝叶斯框架,建立了目标与周围内容的时空关系,在低阶特征上(如图像灰度和位置)对目标与附近区域进行了统计关系建模。

该过程不仅使用了目标的时间信息和空间信息,同时在追踪进程中
又充分考虑到运动物体的大小变化,使得跟踪的结果较为准确,且跟踪速度也非常快。

通过计算置信图(confidence map),找到似然概率最大的位置,即为下一帧的跟踪结果。

本论文官方主页:http://www4.comp.polyu.edu.hk/~cslzhang/STC/STC.htm

其实从发表时间和算法理论来看,该算法深受 MOSSE 算法的影响,看原理部分发现更新模板或是在频域加速计算部分,都有着MOSSE 的影子。师兄大佬说,两算法差不多,但STC 考虑了上下文部分,加大了计算量,但跟踪精度显著提升。。。

2.准备工作

2.1 贝叶斯理论

刚开始搞贝叶斯的时候,以为会用到很高深的理论知识,还查了几天的资料以及西瓜书中的 贝叶斯分类器,但后来发现二者不是一回事(摊手.jpg),用的原理很简-单,就是高中学的贝叶斯基础的东西,只要明白几个新名词即可。。。

贝叶斯公式:
P(BA)=P(BA)P(A)=P(B)P(AB)P(A)P(B|A)=\frac{P(BA)}{P(A)}=\frac{P(B)\cdot P(A|B)}{P(A)}P(B∣A)=P(A)P(BA)​=P(A)P(B)⋅P(A∣B)​
P(B)P(B)P(B):先验概率。最初认为事件 B 发生的概率。
P(BA)P(B|A)P(B∣A):后验概率。当事件A发生后,事件 B 受到了影响,发生了改变后的概率。

2.2 联合概率与边缘概率的关系

P(X=a)=bP(X=a,Y=b)P(X=a)=\sum _b P(X=a,Y=b)P(X=a)=b∑​P(X=a,Y=b)

该公式用于推导置信图概率分布。

还有个小公式是:
P(A,BC)=P(AB,C)P(BC)P(A,B|C)=P(A|B,C)\cdot P(B|C)P(A,B∣C)=P(A∣B,C)⋅P(B∣C)

乘开得证。

2.2 时空上下文

时间信息:邻近帧间目标变化不会很大。位置也不会发生突变。
空间信息:目标和目标周围的背景存在某种特定的关系,当目标的外观发生很大变化时,这种关系可以帮助区分目标和背景。

对目标这两个信息的组合就是时空上下文信息,该论文就是利用这两个信息来进行对阻挡等鲁棒并且快速的跟踪。

3. STC 理论

该算法将跟踪过程转化为一系列寻找置信图(Confidence map)极值 的过程。类比于 MOSSE 算法中的响应图 G 的最大值。
关于 STC(时空上下文) 跟踪算法的理解
置信图表达式:表示目标位于位置 x 的可能性。
c(x)=P(xo)c(x)=P(x|o)c(x)=P(x∣o)

式中, xR2x\in R^2x∈R2 即为上下文区域里的一个点,o表示运动物体存在的场景区域。

在第一帧,先根据初始公式,以目标中心 xx^*x∗ 为原点,计算出一个理想置信图(和MOSSE一样,也是个理想的二维高斯图像)。

在当前帧:定义目标的上下文特征集(灰色特征):
Xc={c(z)=(I(z),z)zΩc(x)}X^c = \{ c(z) = (I(z),z ) | z \in \Omega _c(x^*) \} Xc={c(z)=(I(z),z)∣z∈Ωc​(x∗)}其中,I(z)I(z)I(z) 表示位置 z 处的灰度强度,Ωc\Omega _cΩc​ 表示 xx^*x∗ 邻域。结合边缘联合概率P(x,c(z)o)P(x,c(z)|o)P(x,c(z)∣o) ,置信图公式表示为:
c(x)=P(xo)=c(z)XcP(x,c(z)o)=c(z)XcP(xc(z),o)P(c(z)o) \begin{aligned} c(x) &=P(x|o) \\ &=\sum_{c(z) \in X^c} P(x,c(z)|o) \\ &=\sum_{c(z) \in X^c} P(x|c(z),o) P(c(z)|o) \\ \end{aligned} c(x)​=P(x∣o)=c(z)∈Xc∑​P(x,c(z)∣o)=c(z)∈Xc∑​P(x∣c(z),o)P(c(z)∣o)​

由于条件概率 P(xc(z),o)P(x|c(z),o)P(x∣c(z),o) 建立起了目标位置和空间上下文之间的桥梁,因此该算法的关键是学习条件概率 P(xc(z),o)P(x|c(z),o)P(x∣c(z),o) 。

在刚开始看公式的时候,总有个 o 感觉怪怪的,后来想着可以把它当做不存在,因为我们本来就是潜意识中是对目标在当前帧中是存在的。那要是不存在的话,嗯。。。 who cares = _=)

3.1 空间上下文模型 hsch^{sc}hsc

条件概率 P(xc(z),o)P(x|c(z),o)P(x∣c(z),o) 反映的是目标位置与周围北京的上下文关系,可以建立空间上下文模型:
P(xc(z),o)=hsc(xz)P(x|c(z),o)=h^{sc}(x-z)P(x∣c(z),o)=hsc(x−z)

代表关于被跟踪物体的位置与其上下文的位置 z 之间的相对距离与方向
的函数。这个函数是非径向对称的,即:
hsc(xz)hsc(xz)h^{sc}(x-z) \neq h^{sc}(|x-z|)hsc(x−z)​=hsc(∣x−z∣)

3.2 上下文先验模型

P(c(z)o)P(c(z)|o)P(c(z)∣o) 反映了目标的背景信息,可以建立上下文先验概率模型:
P(c(z)o)=I(z)wσ(zx)P(c(z)|o)=I(z) \cdot w_{\sigma}(z-x^*)P(c(z)∣o)=I(z)⋅wσ​(z−x∗)
其中,I(z)I(z)I(z) 是 z 处对应的灰度值。wσw_{\sigma}wσ​ 是权重函数,由生物视觉系统的focus of attention 启发得到的。意义是距离目标越近的地方,权重越大,对于跟踪目标越重要。
wσ=aez2)δ2w_{\sigma}=ae^{-{ \frac{|z|^2)}{\delta ^2} } }wσ​=ae−δ2∣z∣2)​

式中,a 是归一化常数,δ\deltaδ 是尺度参数。

3.3 置信图模型

对象位置的置信图建模为:
c(x)=bexxαβc(x)=be^{-|{ \frac{x-x^*}{\alpha }| ^\beta }}c(x)=be−∣αx−x∗​∣β
式中,b 是归一化常数,αβ\alpha、\betaα、β 是模型参数。

其实,这里类似于 MOSSE 的理想响应模型。

3.4 空间上下文模型求解

c(x)=bexxαβ=c(z)XcP(xc(z),o)P(c(z)o)=c(z)Xchsc(xz)I(z)wσ(zx)=hsc[I(z)wσ(zx)] \begin{aligned} c(x) & =be^{-|{ \frac{x-x^*}{\alpha }| ^\beta }}=\sum_{c(z) \in X^c} P(x|c(z),o) P(c(z)|o) \\ & = \sum_{c(z) \in X^c} h^{sc}(x-z) \cdot I(z) \cdot w_{\sigma}(z-x^*) \\ & = h^{sc} \bigotimes [ I(z) \cdot w_{\sigma}(z-x^*) ] \end{aligned} c(x)​=be−∣αx−x∗​∣β=c(z)∈Xc∑​P(x∣c(z),o)P(c(z)∣o)=c(z)∈Xc∑​hsc(x−z)⋅I(z)⋅wσ​(z−x∗)=hsc⨂[I(z)⋅wσ​(z−x∗)]​

至于为啥这里是卷积呢,还有待解决。。。

经频域傅里叶变换加速计算得到:
hsc=F1F[bexxαβ]F[I(z)wσ(zx)]h^{sc}=ℱ^{-1} { \frac{ℱ[ b\cdot e^{-|{ \frac{x-x^*}{\alpha }| ^\beta }} ] } {ℱ[ I(z) \cdot w_{\sigma}(z-x^*) ] } }hsc=F−1F[I(z)⋅wσ​(z−x∗)]F[b⋅e−∣αx−x∗​∣β]​

3.5 时空上下文模型 HscH^{sc}Hsc

很明显,时空上下文要结合空间模型+时间模型,且第一帧是没有时空上下文模型滴,一开始就是 H2scH^{sc}_2H2sc​ 。

假设要跟踪第 t+1 帧时,此处的时空上下文模型 Ht+1scH^{sc}_{t+1}Ht+1sc​ ,由它之前的每帧的时空上下文模型通过在线更新的方式得到,公式为:
Ht+1sc=(1ρ)Htsc(x)+ρhtsc(x)H^{sc}_{t+1}=(1-\rho) \cdot H^{sc}_{t}(x)+\rho \cdot h^{sc}_{t}(x)Ht+1sc​=(1−ρ)⋅Htsc​(x)+ρ⋅htsc​(x)

  • 此处放上草稿纸的那个模板更新图
    主要是缕清楚时空上下文模型 HtscH^{sc}_tHtsc​ 与跟踪的更新流程 …

3.6 目标检测跟踪

设在 t+1 帧,

3.7 模板自适应更新

3.1 空间上下文模型

条件概率 P(xc(z),o)P(x|c(z),o)P(x∣c(z),o) 反映的是目标位置与周围北京的上下文关系,可以建立空间上下文模型:
P(xc(z),o)=hsc(xz)P(x|c(z),o)=h^{sc}(x-z)P(x∣c(z),o)=hsc(x−z)

代表关于被跟踪物体的位置与其上下文的位置 z 之间的相对距离与方向
的函数。这个函数是非径向对称的,即:
hsc(xz)hsc(xz)h^{sc}(x-z) \neq h^{sc}(|x-z|)hsc(x−z)​=hsc(∣x−z∣)

3.1 空间上下文模型

条件概率 P(xc(z),o)P(x|c(z),o)P(x∣c(z),o) 反映的是目标位置与周围北京的上下文关系,可以建立空间上下文模型:
P(xc(z),o)=hsc(xz)P(x|c(z),o)=h^{sc}(x-z)P(x∣c(z),o)=hsc(x−z)

代表关于被跟踪物体的位置与其上下文的位置 z 之间的相对距离与方向
的函数。这个函数是非径向对称的,即:
hsc(xz)hsc(xz)h^{sc}(x-z) \neq h^{sc}(|x-z|)hsc(x−z)​=hsc(∣x−z∣)

4 整体思路图

最后,放上作者论文中的整体路线图,现在应该好理解 HscH^{sc}Hsc 与各种模型的变换关系了。。。
关于 STC(时空上下文) 跟踪算法的理解

5 STC优势

当用在小型嵌入式平台上的话,该算法可以很好的实现实时跟踪效果,相比 MOSSE 有着更好的精度,相比其他更复杂的算法又有着较高的帧率,所以 ,研究一下该方法的移植还是比较好的。。 师兄大佬就是这方面的大嘎。。。。

写在最后:看论文的一点想法

现在好些硕士论文感觉对原理分析的不是很透彻,有的数学符号或公式等比较乱,也可能是由于该领域没有一个统一的教科书,尤其是对工科来说,反正看的比较糊涂。。(不禁感慨秦始皇大佬的车同轨、书同文… 高瞻远瞩。。),并且有的理论分析部分感觉像是一个模子里出来的,哎, 科研 真他喵的 太难了,如果只是简单的运用的话,相对简单;要想搞明白每一点原理部分,真是路漫漫其修远兮……

上一篇:stc单片机学习要解决那些基本问题?粤嵌


下一篇:STC 设置端口电平并编写驱动-流水灯(1)