目标跟踪之ADMM求解简介

近两年,基于相关滤波的目标跟踪开始大量利用ADMM进行求解,从BACF、STRCF、ARCF、ASRCF到AutoTrack,基本上是一脉相承。SRDCF虽然采用高斯塞尔德进行迭代求解,但效率低下,但其实SRDCF也是可以利用ADMM求解的,速度还快很多。
通过观察近两年的论文公式推导,比如BACF、STRCF,AutoTrack我发现论文中给的公式与代码的公式略有差异,主要是表现在系数上多了个1/T。本文主要是以BACF、SRDCF求解为例,简要分析一下ADMM的求解思路,有很多不足之处,仅供参考,共同学习,欢迎指正。

一、ADMM基本原理

ADMM的基本形式如下:
a r g m i n x , y f ( x ) + g ( y ) arg \underset{x,y}{min} f(x)+g(y) argx,yminf(x)+g(y)
s . t A x + B y = C s.t Ax+By=C s.tAx+By=C
要是换成以前的思路,我肯定是利用x,y的关系,求出x等于多少y,然后消去y变量,对 f ( x ) + g ( y ) f(x)+g(y) f(x)+g(y)进行求导,转为对变量x的求解,但ADMM的思路主要是将两个变量的约束条件(Ax+By=C)引入问题求解,将大问题的最优求解变为两个子问题,即对x,y分开求解,迭代数次,得到最优解。
首先构造增广拉格朗日公式:
L ρ ( x , z , y ) = f ( x ) + g ( z ) + ζ T ( A x + B z − C ) + ρ 2 ∥ A x + B y − C ∥ 2 2 L_{\rho }(x,z,y)=f(x)+g(z)+\zeta^{T}(Ax+Bz-C)+\frac{\rho }{2}\left \| Ax+By-C \right \|_{2}^{2} Lρ(x,z,y)=f(x)+g(z)+ζT(Ax+BzC)+2ρAx+ByC22
ρ 2 ∥ A x + B y − C ∥ 2 2 \frac{\rho }{2}\left \| Ax+By-C \right \|_{2}^{2} 2ρAx+ByC22的引入主要是为了使上诉凸函数变得更凸,可以这么理解,越凸越好,也因为该项的存在,所以叫增广拉格朗日。接下来,将问题分为子问题进行迭代求解:
x k + 1 = a r g m i n x , y L ρ ( x k , y k , ς k ) = f ( x ) + ζ T ( A x + B z − C ) + ρ 2 ∥ A x + B y − C ∥ 2 2 x^{k+1}=arg \underset{x,y}{min} L_{\rho }(x^{k},y^{k},\varsigma^{k})=f(x)+\zeta^{T}(Ax+Bz-C)+\frac{\rho }{2}\left \| Ax+By-C \right \|_{2}^{2} xk+1=argx,yminLρ(xk,yk,ςk)=f(x)+ζT(Ax+BzC)+2ρAx+ByC22
y k + 1 = a r g m i n x , y L ρ ( x k + 1 , y k , ς k ) = g ( y ) + ζ T ( A x k + 1 + B y − C ) + ρ 2 ∥ A x k + 1 + B y − C ∥ 2 2 y^{k+1}=arg \underset{x,y}{min} L_{\rho }(x^{k+1},y^{k},\varsigma^{k})=g(y)+\zeta^{T}(Ax^{k+1}+By-C)+\frac{\rho }{2}\left \| Ax^{k+1}+By-C \right \|_{2}^{2} yk+1=argx,yminLρ(xk+1,yk,ςk)=g(y)+ζT(Axk+1+ByC)+2ρAxk+1+ByC22
ς k + 1 = ς k + ρ ( A x k + 1 + B y k + 1 − C ) \varsigma^{k+1}=\varsigma^{k}+\rho (Ax^{k+1}+By^{k+1}-C) ςk+1=ςk+ρ(Axk+1+Byk+1C)
注:
x k + 1 x^{k+1} xk+1第k+1次迭代得到的x
x k x^{k} xk第k次迭代得到的x
通过事先设定好迭代次数,既可以求出最优解

二、ADMM与相关滤波的求解

相关滤波是一种利用图像连续两帧相关程度来进行目标跟踪的方法,近年来,相关滤波主要面临的问题是边界效应,解决方法主要有两种主流:一是以SRDCF为代表的正则项约束,另一个是以BACF为代表的区域约束,其他方法大都是以这两个算法为baseline进行修改。
这两种方法都可以使用ADMM进行求解,详情可以参阅下面两篇博客,介绍的很详细。
BACF跟踪算法与代码一致的推导
SRDCF相关滤波跟踪算法中ADMM的使用

经典的相关滤波误差函数如下:
E ( f ) = 1 2 ∥ y − ∑ k = 1 K f k ∗ x k ∥ 2 2 + λ 2 ∑ k = 1 K ∥ f k ∥ 2 2 E(f)=\frac{1}{2}\left \|y- \sum_{k=1}^{K}f_{k}*x_{k}\right \|_{2}^{2}+\frac{\lambda }{2}\sum_{k=1}^{K}\left \| f_{k} \right \|_{2}^{2} E(f)=21yk=1Kfkxk22+2λk=1Kfk22
f:滤波器模板, f k f_{k} fk第k维特征对应的滤波器模板
K:总共有K维特征
但是该方法为解决训练样本不足的缺点,引入循环矩阵产生大量样本,但也带来边界效应,主要是因为循环矩阵的拼接引入的,解决方法主要有:

2.1 BACF

BACF缩小训练样本尺寸,保证尽可能多的真实样本
主要体现在剪切矩阵P,使用矩阵P来对有边界效应的大图像进行剪切,产生小样本但是真实的训练图像
误差函数:
E ( f ) = 1 2 ∑ j = 1 T ∥ y ( j ) − ∑ k = 1 K f k T ∗ P x k [ Δ τ j ] ∥ 2 2 + λ 2 ∑ k = 1 K ∥ f k ∥ 2 2 E(f)=\frac{1}{2} \sum_{j=1}^{T} \left \|y(j)- \sum_{k=1}^{K}f_{k}^{T}*Px_{k}[\Delta \tau_{j }] \right \|_{2}^{2}+\frac{\lambda }{2}\sum_{k=1}^{K}\left \| f_{k} \right \|_{2}^{2} E(f)=21j=1Ty(j)k=1KfkTPxk[Δτj]22+2λk=1Kfk22
T:样本x的尺寸大小,可以理解为有多少像素
P:D×T的矩阵,使样本x的尺寸从T变为D(T>>D)
Δ τ j \Delta \tau_{j } Δτj:循环矩阵的第j个样本
由于误差函数只有一个变量f,实际可以直接求解,在KCF、CSK当中,就是直接对f求导,计算最佳的f使得误差函数最小,但从SRDCF开始,不再这么简单粗暴,而是通过构造辅助变量,引入g,将问题求解变成两个子问题
辅助变量的构造主要有两种:
1、 g − f = 0 g-f=0 gf=0
对应的增广拉格朗日:
E ( f , g ) = 1 2 ∑ j = 1 T ∥ y ( j ) − ∑ k = 1 K g k T ∗ P x k [ Δ τ j ] ∥ 2 2 + λ 2 ∑ k = 1 K ∥ f k ∥ 2 2 + ς T ∑ k = 1 K ( f k − g k ) + ρ 2 ∑ k = 1 K ∥ f k − g k ∥ 2 2 E(f,g)=\frac{1}{2} \sum_{j=1}^{T} \left \|y(j)- \sum_{k=1}^{K}g_{k}^{T}*Px_{k}[\Delta \tau_{j }] \right \|_{2}^{2}+\frac{\lambda }{2}\sum_{k=1}^{K}\left \| f_{k} \right \|_{2}^{2}+\varsigma ^{T}\sum_{k=1}^{K}(f_{k}-g_{k})+\frac{\rho }{2}\sum_{k=1}^{K}\left \| f_{k}-g_{k}\right \|_{2}^{2} E(f,g)=21j=1Ty(j)k=1KgkTPxk[Δτj]22+2λk=1Kfk22+ςTk=1K(fkgk)+2ρk=1Kfkgk22
2、 g ^ − T F f \hat{g}-\sqrt{T}Ff g^T Ff
注意F与f不一样,F是正交矩阵, F F T = I FF^{T}=I FFT=I,而f是滤波器该辅助变量我个人认为更加适合相关滤波的求解,直接将涉及到卷积的子问题抛到频域,而没有卷积操作的子问题留在空域求解
对应的增广拉格朗日:
L ( f , g ^ ) = 1 2 T ∑ j = 1 T ∥ y ( j ) − ∑ k = 1 K g ^ k T P x k [ Δ τ j ] ∥ 2 2 + λ 2 ∑ k = 1 K ∥ f k ∥ 2 2 + ς ^ T ∑ k = 1 K ( g ^ − T ( F P T ⊗ I K ) f ) + ρ 2 ∑ k = 1 K ∥ g ^ − T ( F P T ⊗ I K ) f ∥ 2 2 L(f,\hat{g})=\frac{1}{2T} \sum_{j=1}^{T} \left \|y(j)- \sum_{k=1}^{K}\hat{g}_{k}^{T}Px_{k}[\Delta \tau_{j }] \right \|_{2}^{2}+\frac{\lambda }{2}\sum_{k=1}^{K}\left \| f_{k} \right \|_{2}^{2}+\hat{\varsigma} ^{T}\sum_{k=1}^{K}(\hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f)+\frac{\rho }{2}\sum_{k=1}^{K}\left \| \hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f\right \|_{2}^{2} L(f,g^)=2T1j=1Ty(j)k=1Kg^kTPxk[Δτj]22+2λk=1Kfk22+ς^Tk=1K(g^T (FPTIK)f)+2ρk=1Kg^T (FPTIK)f22
注意,第一项系数为 1 2 T \frac{1}{2T} 2T1 很多论文推导公式的时候都没有1/T,但在代码中又无缘无故多出了1/T,主要是在这里少了1/T
另外ADMM还有一种重要形式(scale form)(ASRCF、AutoTrack、STRCF均采用这种形式):
引入变量 v T = ς T ρ v^{T}=\frac{\varsigma ^{T}}{\rho} vT=ρςT
增广拉格朗日变为:
L ( f , g ^ ) = 1 2 T ∑ j = 1 T ∥ y ( j ) − ∑ k = 1 K g ^ k T P x k [ Δ τ j ] ∥ 2 2 + λ 2 ∑ k = 1 K ∥ f k ∥ 2 2 + ρ 2 ∑ k = 1 K ∥ g ^ − T ( F P T ⊗ I K ) f + v ^ T ∥ 2 2 − ρ 2 ∥ v ^ T ∥ 2 2 L(f,\hat{g})=\frac{1}{2T} \sum_{j=1}^{T} \left \|y(j)- \sum_{k=1}^{K}\hat{g}_{k}^{T}Px_{k}[\Delta \tau_{j }] \right \|_{2}^{2}+\frac{\lambda }{2}\sum_{k=1}^{K}\left \| f_{k} \right \|_{2}^{2}+\frac{\rho }{2}\sum_{k=1}^{K}\left \| \hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f +\hat{v}^{T}\right \|_{2}^{2}-\frac{\rho }{2}\left \| \hat{v}^{T} \right \|_{2}^{2} L(f,g^)=2T1j=1Ty(j)k=1Kg^kTPxk[Δτj]22+2λk=1Kfk22+2ρk=1Kg^T (FPTIK)f+v^T222ρv^T22
但因为最后一项 ρ 2 ∥ v ^ T ∥ 2 2 \frac{\rho }{2}\left \| \hat{v}^{T} \right \|_{2}^{2} 2ρv^T22即不包含 g ^ \hat{g} g^,也不包含 h h h,所以论文中通常将其舍去。
这两种形式都可以得到最优解,实际使用没有谁优谁劣之说
接下来采用形式1进行求解,先将求和求掉:
E ( f , g ^ ) = 1 2 T ∥ y ^ − g ^ X ^ ∥ 2 2 + λ 2 ∥ f ∥ 2 2 + ς ^ T ( g ^ − T ( F P T ⊗ I K ) f ) + ρ 2 ∥ g ^ − T ( F P T ⊗ I K ) f ∥ 2 2 E(f,\hat{g})=\frac{1}{2T}\left \|\hat{y}- \hat{g}\hat{X} \right \|_{2}^{2}+\frac{\lambda }{2}\left \| f \right \|_{2}^{2}+\hat{\varsigma} ^{T}(\hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f)+\frac{\rho }{2}\left \| \hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f\right \|_{2}^{2} E(f,g^)=2T1y^g^X^22+2λf22+ς^T(g^T (FPTIK)f)+2ρg^T (FPTIK)f22
其实和原式子是一样的,只不过这里的 g ^ X ^ \hat{g}\hat{X} g^X^相当于是K维的集合,换个方式写-----(在matlab代码里面都不需要考虑这么多)
子问题 g ^ \hat{g} g^的求解
g ^ = a r g m i n g ^ 1 2 T ∥ y ^ − g ^ X ^ ∥ 2 2 + ς ^ T ( g ^ − T ( F P T ⊗ I K ) f ) + ρ 2 ∥ g ^ − T ( F P T ⊗ I K ) f ∥ 2 2 \hat{g}=arg \underset{\hat{g}}{min} \frac{1}{2T}\left \|\hat{y}- \hat{g}\hat{X} \right \|_{2}^{2}+\hat{\varsigma} ^{T}(\hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f)+\frac{\rho }{2}\left \| \hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f\right \|_{2}^{2} g^=argg^min2T1y^g^X^22+ς^T(g^T (FPTIK)f)+2ρg^T (FPTIK)f22
g ^ \hat{g} g^求导并使其为0,解得:
g ^ = y ^ X ^ T − T ς ^ T + T ρ f ^ X ^ X ^ T + T ρ I K \hat{g}=\frac{\hat{y}\hat{X}^{T}-T\hat{\varsigma} ^{T}+T\rho\hat{f}}{\hat{X}\hat{X}^T+T\rho I_{K}} g^=X^X^T+TρIKy^X^TTς^T+Tρf^
注: f ^ = T ( F P T ⊗ I K ) f \hat{f}=\sqrt{T}(FP^{T}\otimes I_{K})f f^=T (FPTIK)f
但该公式在matlab中的计算量仍然庞大,可以使用Sherman-Morrison公式进一步化简:
( A + u v T ) − 1 = A − 1 − A − 1 u v T A − 1 1 + v T A − 1 u (A+uv^{T})^{-1}=A^{-1}-\frac{A^{-1}uv^{T}A^{-1}}{1+v^{T}A^{-1}u} (A+uvT)1=A11+vTA1uA1uvTA1
在此处 A = T ρ , u = X ^ , v T = X ^ T A=T\rho,u=\hat{X},v^{T}=\hat{X}^{T} A=Tρ,u=X^,vT=X^T解得:
g ^ = 1 ρ T ( I − X ^ X ^ T ρ T + X ^ X ^ T ) ( y ^ X ^ T − T ς ^ T + T ρ f ^ ) \hat{g}=\frac{1}{\rho T}(I-\frac{\hat{X}\hat{X}^{T}}{\rho T+\hat{X}\hat{X}^{T}})(\hat{y}\hat{X}^{T}-T\hat{\varsigma} ^{T}+T\rho\hat{f}) g^=ρT1(IρT+X^X^TX^X^T)(y^X^TTς^T+Tρf^)
子问题f的求解:
f = a r g m i n f λ 2 ∥ f ∥ 2 2 + ς ^ T ( g ^ − T ( F P T ⊗ I K ) f ) + ρ 2 ∥ g ^ − T ( F P T ⊗ I K ) f ∥ 2 2 f=arg \underset{f}{min} \frac{\lambda }{2}\left \| f \right \|_{2}^{2}+\hat{\varsigma} ^{T}(\hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f)+\frac{\rho }{2}\left \| \hat{g}-\sqrt{T}(FP^{T}\otimes I_{K})f\right \|_{2}^{2} f=argfmin2λf22+ς^T(g^T (FPTIK)f)+2ρg^T (FPTIK)f22
同样对f求导并使其为零,解得:
f = ρ T g + ς ^ T T λ + ρ T f=\frac{\rho Tg+\hat{\varsigma} ^{T}T}{\lambda+\rho T} f=λ+ρTρTg+ς^TT
之后进行多次迭代完成求解,代码如下:

 %迭代次数为2
 while (i <= params.admm_iterations)
        %   solve for G- please refer to the paper for more details
        B = S_xx + (T * mu);
        S_lx = sum(conj(model_xf) .* l_f, 3);
        S_hx = sum(conj(model_xf) .* h_f, 3);
        g_f = (((1/(T*mu)) * bsxfun(@times, yf, model_xf)) - ((1/mu) * l_f)  + h_f) - ...
            bsxfun(@rdivide,(((1/(T*mu)) * bsxfun(@times, model_xf, (S_xx .* yf))) ...
            - ((1/mu) * bsxfun(@times, model_xf, S_lx)) + (bsxfun(@times, model_xf, S_hx))), B);
        
        %   solve for H
        h = (T/((mu*T)+ params.admm_lambda))  *   ifft2((mu*g_f) + l_f);     
        [sx,sy,h] = get_subwindow_no_window(h, floor(use_sz/2) , small_filter_sz);
        t = single(zeros(use_sz(1), use_sz(2), size(h,3)));
        t(sx,sy,:) = h;
        h_f = fft2(t);
        
        %   update L
        l_f = l_f + (mu * (g_f - h_f));
        
        %   update mu- betha = 10.
        mu = min(betha * mu, mumax);
        i = i+1;
    end

注:
代码中的mu对应公式中的 ρ \rho ρ
代码中的T取值为2500(50×50)
l_f对应公式中的 ς ^ T \hat{\varsigma} ^{T} ς^T
h、h_f对应公式中的 f f f f ^ \hat{f} f^

2.2 SRDCF的ADMM求解如下:

SRDCF解决边界效应主要是引入正则项惩罚w,w是一个倒立的高斯函数(近两年都是使用矩形),边界值比较大,惩罚滤波器边界的系数,即使训练出来的滤波器更加关注图像中心的细节,忽视边缘不真实的细节。
误差函数:
E ( f ) = 1 2 ∥ y − ∑ k = 1 K f k ∗ x k ∥ 2 2 + 1 2 ∑ k = 1 K ∥ w f k ∥ 2 2 E(f)=\frac{1}{2}\left \|y- \sum_{k=1}^{K}f_{k}*x_{k}\right \|_{2}^{2}+\frac{1}{2}\sum_{k=1}^{K}\left \| wf_{k} \right \|_{2}^{2} E(f)=21yk=1Kfkxk22+21k=1Kwfk22
增广拉格朗日:
L ( f , g ^ ) = 1 2 T ∥ y ^ − g ^ X ^ ∥ 2 2 + 1 2 ∥ w f ∥ 2 2 + ς ^ T ( g ^ − T F f ) + ρ 2 ∥ g ^ − T F f ∥ 2 2 L(f,\hat{g})=\frac{1}{2T}\left \|\hat{y}- \hat{g}\hat{X} \right \|_{2}^{2}+\frac{1 }{2}\left \| wf \right \|_{2}^{2}+\hat{\varsigma} ^{T}(\hat{g}-\sqrt{T}Ff)+\frac{\rho }{2}\left \| \hat{g}-\sqrt{T}Ff\right \|_{2}^{2} L(f,g^)=2T1y^g^X^22+21wf22+ς^T(g^T Ff)+2ρg^T Ff22
子问题 g ^ \hat{g} g^
g ^ = a r g m i n g ^ 1 2 T ∥ y ^ − g ^ X ^ ∥ 2 2 + ς ^ T ( g ^ − T F f ) + ρ 2 ∥ g ^ − T F f ∥ 2 2 \hat{g}=arg \underset{\hat{g}}{min}\frac{1}{2T}\left \|\hat{y}- \hat{g}\hat{X} \right \|_{2}^{2}+\hat{\varsigma} ^{T}(\hat{g}-\sqrt{T}Ff)+\frac{\rho }{2}\left \| \hat{g}-\sqrt{T}Ff\right \|_{2}^{2} g^=argg^min2T1y^g^X^22+ς^T(g^T Ff)+2ρg^T Ff22
解得:
g ^ = 1 ρ T ( I − X ^ X ^ T ρ T + X ^ X ^ T ) ( X ^ T y ^ − T ς ^ T + ρ T f ^ ) \hat{g}=\frac{1}{\rho T}(I-\frac{\hat{X}\hat{X}^{T}}{\rho T+\hat{X}\hat{X}^{T}})(\hat{X}^{T}\hat{y}-T\hat{\varsigma} ^{T}+\rho T \hat{f}) g^=ρT1(IρT+X^X^TX^X^T)(X^Ty^Tς^T+ρTf^)
子问题h

h = a r g m i n h 1 2 ∥ w f ∥ 2 2 + ς ^ T ( g ^ − T F f ) + ρ 2 ∥ g ^ − T F f ∥ 2 2 h=arg \underset{h}{min} \frac{1 }{2}\left \| wf \right \|_{2}^{2} +\hat{\varsigma} ^{T}(\hat{g}-\sqrt{T}Ff)+\frac{\rho }{2}\left \| \hat{g}-\sqrt{T}Ff\right \|_{2}^{2} h=arghmin21wf22+ς^T(g^T Ff)+2ρg^T Ff22
解得:
h = T F ς ^ T + ρ T F g ^ w T w + ρ T = T ς T + ρ T g w T w + ρ T h=\frac{\sqrt{T}F\hat{\varsigma} ^{T}+\rho \sqrt{T}F\hat{g}}{w^{T}w+\rho T} =\frac{T{\varsigma} ^{T}+\rho T{g}}{w^{T}w+\rho T} h=wTw+ρTT Fς^T+ρT Fg^=wTw+ρTTςT+ρTg

  • 5
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值