本文主要是介绍SRDCF公式推导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1 标准DCF
- 滤波器 f f f与样本 x x x的输出响应可 (1) S f ( x ) = ∑ l = 1 d x l ∗ f l S_f(x)=\sum_{l=1}^{d}{x^l}*{f^l}\tag{1} Sf(x)=l=1∑dxl∗fl(1) 1.
*
表示循环卷积
2. l ∈ { 1 , . . . , d } l \in \lbrace1,...,d\rbrace l∈{1,...,d}, d d d表示样本 x x x的特征维数
3. x k l x_k^l xkl表示样本 x k x_k xk的第 l l l 维特征
4.每个样本每个特征通道 x l x^l xl和每个通道对应的滤波器 f l f^l fl大小均为为 M M Mx N N N - L 2 L^2 L2误差可表示为: (2) ε t ( f ) = ∑ k = 1 t α k ∣ ∣ S f ( x k ) − y k ∣ ∣ 2 + λ ∑ l = 1 d ∣ ∣ f l ∣ ∣ 2 \varepsilon_t(f)=\sum_{k=1}^t\alpha_k||S_f(x_k)-y_k||^2+\lambda\sum_{l=1}^d||f^l||^2\tag{2} εt(f)=k=1∑tαk∣∣Sf(xk)−yk∣∣2+λl=1∑d∣∣fl∣∣2(2) 1. α k ≥ 0 \alpha _k \ge 0 αk≥0 决定每个训练样本的影响(权重衰减因子,于学习率有类似作用)
2. λ ≥ 0 \lambda\ge 0 λ≥0 是正则化项的权重
3.训练样本表示为 { ( x k , y k ) } k = 1 t \lbrace(x_k,y_k)\rbrace_{k=1}^t {(xk,yk)}k=1t, t t t表示历史样本数 - 快速检测表示为: (3) S f ( z ) = F − 1 { ∑ l = 1 d z ^ l ⋅ f ^ l } S_f(z)=\mathcal F^{-1}\lbrace\sum_{l=1}^d\widehat z^l \cdot {\widehat f^l}\rbrace \tag{3} Sf(z)=F−1{l=1∑dz l⋅f l}(3) 1. z z z表示目标区域提取的特征图
2. f ^ l = F { f l } \widehat f^l=\mathcal F\lbrace {f^l}\rbrace f l=F{fl}表示滤波器的傅里叶变换
2 SRDCF
2.1 空间正则化
-
为抑制边界区域的影响,给滤波器加上一个相同大小 ( M (M (Mx N ) N) N)的正则项 w w w,则式(2)可表示为: (4) ε t ( f ) = ∑ k = 1 t α k ∣ ∣ S f ( x k ) − y k ∣ ∣ 2 + ∑ l = 1 d ∣ ∣ w ⋅ f l ∣ ∣ 2 \varepsilon_t(f)=\sum_{k=1}^t\alpha_k||S_f(x_k)-y_k||^2+\sum_{l=1}^d||w\cdot f^l||^2\tag{4} εt(f)=k=1∑tαk∣∣Sf(xk)−yk∣∣2+l=1∑d∣∣w⋅fl∣∣2(4) 1. w w w 为空间正则化项,离目标区域越远越大,表示处罚越大(如:倒置的高斯分布)
2.当 w ( m , n ) = λ w(m,n)=\sqrt \lambda w(m,n)=λ 时,则变为标准DCF
3. w ^ \widehat w w 具有稀疏特性(后面推导有用到这一性质)
4. w ⋅ f l w\cdot f^l w⋅fl 表明正则项 w w w 和滤波器 f f f 是进行点乘运算的 -
正则项 w w w 可视化如下图所示
-
为加速计算,基于帕斯瓦尔定理,将 ( 4 ) (4) (4)式转换到频率为: (5) ε t ( f ^ ) = ∑ k = 1 t α k ∣ ∣ ∑ l = 1 d x ^ k l ⋅ f ^ l − y ^ k ∣ ∣ 2 + ∑ l = 1 d ∣ ∣ w ^ M N ∗ f ^ l ∣ ∣ 2 \varepsilon_t(\widehat f)=\sum_{k=1}^t\alpha_k||\sum_{l=1}^d\widehat x_k ^l \cdot {\widehat f ^ l}-\widehat y_k||^2+\sum_{l=1}^d||\frac {\widehat w}{MN}\ast \widehat f^l||^2\tag{5} εt(f )=k=1∑tαk∣∣l=1∑dx kl⋅f l−y k∣∣2+l=1∑d∣∣MNw ∗f l∣∣2(5) 1.时域的点乘 w ⋅ f l w\cdot f^l w⋅fl 转换到频率变为卷积 w ^ ∗ f ^ l \widehat w \ast \widehat f^l w ∗f l
2. w ⋅ f l ⟺ w ^ M N ∗ f ^ l w\cdot f^l \Longleftrightarrow\frac {\widehat w}{MN}\ast \widehat f^l w⋅fl⟺MNw ∗f l, M N MN MN 相当于周期 -
为方便实际计算,将 ( 5 ) (5) (5)式全部向量化为: (6) ε t ( f ^ ) = ∑ k = 1 t α k ∣ ∣ ∑ l = 1 d D ( x ^ k l ) f ^ l − y ^ k ∣ ∣ 2 + ∑ l = 1 d ∣ ∣ C ( w ^ ) M N f ^ l ∣ ∣ 2 \varepsilon_t(\widehat f)=\sum_{k=1}^t\alpha_k||\sum_{l=1}^d\mathcal D(\widehat \boldsymbol x_k ^l){\widehat \boldsymbol f ^ l}-\widehat \boldsymbol y_k||^2+\sum_{l=1}^d||\frac {\mathcal C(\widehat \boldsymbol w)}{MN}\widehat \boldsymbol f^l||^2\tag{6} εt(f )=k=1∑tαk∣∣l=1∑dD(x kl)f l−y k∣∣2+l=1∑d∣∣MNC(w )f l∣∣2(6) 1. D ( v ) \mathcal D(\boldsymbol v) D(v) 表示对角线上元素为 v \boldsymbol v v 的对角阵, 大小为 M N × M N MN \times MN MN×MN
2. C ( w ^ ) \mathcal C(\widehat \boldsymbol w) C(w ) 表示从 w ^ \widehat \boldsymbol w w 得到的循环矩阵, w ^ \widehat \boldsymbol w w 大小为 M N × 1 MN\times1 MN×1, C ( w ^ ) \mathcal C(\widehat \boldsymbol w) C(w ) 大小为 M N × M N MN \times MN MN×MN
3. f ^ l \widehat \boldsymbol f^l f l 和 y ^ k \widehat \boldsymbol y_k y k 的大小为 M N × 1 MN \times 1 MN×1
4. C ( w ^ ) f ^ l \mathcal C(\widehat \boldsymbol w) \widehat \boldsymbol f^l C(w )f l 是 w ^ ∗ f ^ l \widehat \boldsymbol w \ast \widehat \boldsymbol f^l w ∗f l的向量化(通过循环操作可以去掉卷积符号,因为卷积的本质就是移位相乘相加) -
为将所有变量转到实域来求解,作者构造了一个大小为 M N × M N MN \times MN MN×MN 的转换矩阵 B B B(具体构造见论文中式 ( 7 ) (7) (7)),如实数向量 f ~ l = B f ^ l \widetilde \boldsymbol f^l=B\widehat \boldsymbol f^l f l=Bf l ,对 ( 6 ) (6) (6)式全部左乘 B B B 可得: (7) ε t ( f ^ ) = ∑ k = 1 t α k ∣ ∣ ∑ l = 1 d B D ( x ^ k l ) f ^ l − B y ^ k ∣ ∣ 2 + ∑ l = 1 d ∣ ∣ B C ( w ^ ) M N f ^ l ∣ ∣ 2 = ∑ k = 1 t α k ∣ ∣ ∑ l = 1 d B D ( x ^ k l ) B H B f ^ l − B y ^ k ∣ ∣ 2 + ∑ l = 1 d ∣ ∣ B C ( w ^ ) B H M N B f ^ l ∣ ∣ 2 = ∑ k = 1 t α k ∣ ∣ ∑ l = 1 d D k l f ~ l − y ~ k ∣ ∣ 2 + ∑ l = 1 d ∣ ∣ C f ~ l ∣ ∣ 2 \begin{aligned} \varepsilon_t(\widehat f)&=\sum_{k=1}^t\alpha_k||\sum_{l=1}^d B\mathcal D(\widehat \boldsymbol x_k ^l){\widehat \boldsymbol f ^ l}-B\widehat \boldsymbol y_k||^2+\sum_{l=1}^d||\frac {B\mathcal C(\widehat \boldsymbol w)}{MN}\widehat \boldsymbol f^l||^2\\ &=\sum_{k=1}^t\alpha_k||\sum_{l=1}^d B\mathcal D(\widehat \boldsymbol x_k ^l)B^HB{\widehat \boldsymbol f ^ l}-B\widehat \boldsymbol y_k||^2+\sum_{l=1}^d||\frac {B\mathcal C(\widehat \boldsymbol w)B^H}{MN}B\widehat \boldsymbol f^l||^2\\ &=\sum_{k=1}^t\alpha_k||\sum_{l=1}^d D_k ^l{\widetilde \boldsymbol f ^ l}-\widetilde \boldsymbol y_k||^2+\sum_{l=1}^d||C\widetilde \boldsymbol f^l||^2\\ \end{aligned}\tag{7} εt(f )=k=1∑tαk∣∣l=1∑dBD(x kl)f l−By k∣∣2+l=1∑d∣∣MNBC(w )f l∣∣2=k=1∑tαk∣∣l=1∑dBD(x kl)BHBf l−By k∣∣2+l=1∑d∣∣MNBC(w )BHBf l∣∣2=k=1∑tαk∣∣l=1∑dDklf l−y k∣∣2+l=1∑d∣∣Cf l∣∣2(7) 1. B B B 是稀疏的酉矩阵,满足 B H B = I B^HB=I BHB=I
2. B D ( x ^ k l ) B H ⟺ D k l B\mathcal D(\widehat \boldsymbol x_k ^l)B^H \Longleftrightarrow D_k ^l BD(x kl)BH⟺Dkl
3. B f ^ l ⟺ f ~ l B\widehat \boldsymbol f^l \Longleftrightarrow \widetilde \boldsymbol f^l Bf l⟺f l
4. B y ^ k ⟺ y ~ k B\widehat \boldsymbol y_k \Longleftrightarrow \widetilde \boldsymbol y_k By k⟺y k
5. B C ( w ^ ) B H M N ⟺ C \frac {B\mathcal C(\widehat \boldsymbol w)B^H}{MN} \Longleftrightarrow C MNBC(w )BH⟺C -
将 ( 7 ) (7) (7) 式进一步简化可得: (8) ε t ( f ~ ) = ∑ k = 1 t α k ∣ ∣ D k f ~ − y ~ k ∣ ∣ 2 + ∣ ∣ W f ~ ∣ ∣ 2 \varepsilon_t(\widetilde \boldsymbol f)=\sum_{k=1}^t\alpha_k||D_k{\widetilde \boldsymbol f}-\widetilde \boldsymbol y_k||^2+||W\widetilde \boldsymbol f||^2\tag{8} εt(f )=k=1∑tαk∣∣Dkf −y k∣∣2+∣∣Wf ∣∣2(8) 1. D k = ( D k 1 ⋅ ⋅ ⋅ D k d ) D_k=(D_k^1 \cdot \cdot \cdot D_k^d) Dk=(Dk1⋅⋅⋅Dkd),大小为 M N × d M N MN\times dMN MN×dMN
2. f ~ = ( ( f ~ 1 ) T ⋅ ⋅ ⋅ ( f ~ d ) T ) T \widetilde \boldsymbol f=((\widetilde \boldsymbol f^1)^T\cdot \cdot \cdot (\widetilde \boldsymbol f^d)^T)^T f =((f 1)T⋅⋅⋅(f d)T)T,大小为 d M N × 1 dMN\times 1 dMN×1
3. W W W 的大小为 d M N × d M N dMN\times dMN dMN×dMN 对角块矩阵,每个对角块等于 C C C -
( 8 ) (8) (8) 式与岭回归求解类似,求解得 A t f ~ = b ~ t A_t\widetilde \boldsymbol f=\widetilde \boldsymbol b_t Atf =b t(具体求解参考KCF算法推导中的岭回归求解)其中: (9) A t = ∑ k = 1 t α k D k T D k + W T W b ~ t = ∑ k = 1 t α k D k T y ~ k \begin{aligned} &A_t=\sum_{k=1}^t\alpha_kD_k^TD_k+W^TW\\ &\widetilde \boldsymbol b_t=\sum_{k=1}^t\alpha_kD_k^T\widetilde \boldsymbol y_k \tag{9} \end{aligned} At=k=1∑tαkDkTDk+WTWb t=k=1∑tαkDkTy k(9)
2.2 优化
- 由于正则化项 W T W W^TW WTW,破坏了标准DCF的对角块结构。直接对上式求解(需要求逆)非常耗时,作者利用 A t A_t At的稀疏性(较少的迭代次数内到达一个收敛值)等性质,采用Gauss-Seidel方法迭代求解得到 f ~ \widetilde \boldsymbol f f 。
- 参考Gauss–Seidel迭代, A t A_t At 可分解成下三角矩阵 L t L_t Lt 和严格上三角矩阵 U t U_t Ut(不包括对角线),即 A t = L t + U t A_t=L_t+U_t At=Lt+Ut。则 A t f ~ = b ~ t A_t\widetilde \boldsymbol f=\widetilde \boldsymbol b_t Atf =b t可变形为: (10) L t f ~ = b ~ t − U t f ~ L_t \widetilde \boldsymbol f=\widetilde \boldsymbol b_t-U_t\widetilde \boldsymbol f\tag{10} Ltf =b t−Utf (10)
- 迭代公式如下式: (11) L t f ~ ( j ) = b ~ t − U t f ~ ( j − 1 ) L_t \widetilde \boldsymbol f^{(j)}=\widetilde \boldsymbol b_t-U_t\widetilde \boldsymbol f^{(j-1)}\tag{11} Ltf (j)=b t−Utf (j−1)(11)
2.3 训练
- A t A_t At 和 b ~ t \widetilde \boldsymbol b_t b t 更新方式: (12) A t = ( 1 − γ ) A t − 1 + γ ( D t T D t + W T W ) b ~ t = ( 1 − γ ) b ~ t − 1 + γ D t T y ~ t \begin{aligned} &A_t=(1-\gamma)A_{t-1}+\gamma(D_t^TD_t+W^TW)\\ &\widetilde \boldsymbol b_t=(1-\gamma)\widetilde \boldsymbol b_{t-1}+\gamma D_t^T \widetilde \boldsymbol y_t \tag{12} \end{aligned} At=(1−γ)At−1+γ(DtTDt+WTW)b t=(1−γ)b t−1+γDtTy t(12) 1. γ ≥ 0 \gamma \ge 0 γ≥0 表示学习率
2.第1帧: A 1 = D 1 T D 1 + W T W A_1=D_1^TD_1+W^TW A1=D1TD1+WTW, b ~ t = D 1 T y ~ 1 \widetilde \boldsymbol b_t=D_1^T \widetilde \boldsymbol y_1 b t=D1Ty 1 作为初始值
3.正则化项 W T W W^TW WTW 可在整个跟踪过程中预先计算好
4.采用上式这种momentum更新方式由于不需要存储所有样本 x k x_k xk,可有效节省内存
5.采用固定的迭代次数 N G S N_{GS} NGS
6.上述更新方式与指数衰减权重 α k \alpha _k αk 效果类似
7.第 t t t 帧的初始值 f ~ t ( 0 ) = f ~ t − 1 ( N G S ) \widetilde \boldsymbol f_t^{(0)}=\widetilde \boldsymbol f_{t-1}^{(N_{GS})} f t(0)=f t−1(NGS) - 对于第1帧的初始值 f ~ 1 ( 0 ) \widetilde \boldsymbol f_1^{(0)} f 1(0) 通过求解 M N × M N MN \times MN MN×MN线性方程得到: (13) ( ∑ p = 1 d ( D 1 P ) T D 1 P + d C T C ) f ~ 1 l , ( 0 ) = ( D 1 l ) T y ~ 1 ( l = 1 , . . . , d ) (\sum_{p=1}^d(D_1^P)^TD_1^P+dC^TC)\widetilde \boldsymbol f_1^{l,(0)}=(D_1^l)^T\widetilde \boldsymbol y_1(l = 1,...,d)\tag{13} (p=1∑d(D1P)TD1P+dCTC)f 1l,(0)=(D1l)Ty 1(l=1,...,d)(13)
2.4 检测—Fast Sub-grid Detection
- 用 ( 3 ) (3) (3)式来粗略估计所有网格位置的得分 s ( m , n ) s(m,n) s(m,n) ( m , n m,n m,n并不是以像素为单位的,如一般HOG特征提取 cell=4 pixels)
- 将最大得分位置 ( u ( 0 ) , v ( 0 ) ) (u^{(0)},v^{(0)}) (u(0),v(0)) 作为初始估计
- 连续位置 ( u , v ) (u,v) (u,v)的得分 s ( u , v ) s(u, v) s(u,v)按下式插值,用牛顿法进行迭代,使下式最小 (14) s ( u , v ) = 1 M N ∑ m = 0 M − 1 ∑ n = 0 N − 1 s ^ ( m , n ) e i 2 π ( m M u + n N v ) s(u,v)=\frac{1}{MN}\sum_{m=0}^{M-1}\sum_{n=0}^{N-1}\widehat s(m,n)e^{i2\pi(\frac{m}{M}u+\frac{n}{N}v)}\tag{14} s(u,v)=MN1m=0∑M−1n=0∑N−1s (m,n)ei2π(Mmu+Nnv)(14) 1. i i i表示虚部
2.连续位置 ( u , v ) ∈ [ 0 , M ) × [ 0 , N ) (u,v)\in[0,M)\times[0,N) (u,v)∈[0,M)×[0,N)通过DFT系数的三角多项式插值得到(不太明白!!!) - 每次迭代的梯度和Hessian通过分析 ( 14 ) (14) (14)式的微分得到,发现只要几次迭代就可以收敛
- 对于每个尺度单独进行迭代,使用最大的检测得分来更新目标的位置和尺度
2.5 实验
- 正则项 w w w 用二次函数来构造: w ( m , n ) = μ + η ( m / P ) 2 + η ( n / Q ) 2 w(m,n)=\mu+\eta(m/P)^2+\eta(n/Q)^2 w(m,n)=μ+η(m/P)2+η(n/Q)2 1. P × Q P\times Q P×Q 表示目标尺寸
2. w w w 的最小值 μ = 0.1 \mu=0.1 μ=0.1
3.正则化影响因子 η = 3 \eta=3 η=3
4.实际上频域下的 w w w 只有几个值有较大的幅值,如下图所示。为保证 w ^ \widehat w w 的稀疏特性,设置阈值来移除较小的值,结果包含约10个非零值。
5.HOG特征,cell大小为 4 × 4 4\times 4 4×4,特征大小为 M × N ( M = N ) M \times N(M=N) M×N(M=N)
6.样本区域是目标区域的 4 2 4^2 42 倍
7.初始尺度的样本 M = 50 M=50 M=50
8.学习率 γ = 0.025 \gamma=0.025 γ=0.025,Gauss-Seidel迭代次数 N G S = 4 N_{GS}=4 NGS=4
9.在普通台式机matlab环境下5FPS
这篇关于SRDCF公式推导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!