MOSSE(DSST)類和KCF類中濾波器推導結果不一致的解釋


首先要說明,DSST//BMVC2014類的CF是從MOSSE//CVPR2010模型得到的,是從信號的角度考慮問題,該類CF直接認為信號和濾波器之間存在相關的關系

而KCF//TPAMI2015類CF並不默認這一關系,其依然是從傳統的分類器(嶺回歸)角度去求解一個分類器的權重,但是由於其強制訓練樣本為循環矩陣形式,從而內嵌了權重w有一個類似於相關濾波器的作用。

這兩種是不同的,所以最后的檢測結果實際上也是有區別的。

而MOSSE(DSST)類的濾波器h和KCF類的權重w實際上有比較大的區別。因為在檢測時,在時域上一個是相關運算,另一個是內積運算。明顯不同。

 

問題的提出:

  有兩個問題:

 問題1: 在DSST和KCF論文最后的推導上,他們的結果是不一樣的,DSST是將最后分子中的共軛放在理想輸出G上,如上面的公式,而KCF中的共軛是放在特征上的。

DSST:

 

 

KCF:

                         

同樣的差異也存在於CSR-DCF//CVPR2017,該論文最后的推導依然是把共軛放在輸出G上的

 

 

 

 問題2: 在DSST中的代碼處理,卻和論文是不一樣的,他依然是在特征上取的共軛,而不是在G上取共軛,給人的感覺是DSST的代碼實現似乎和KCF論文推導是一致的

 

 

 

問題的解釋:

  下面分幾點來做該問題解釋 

1、公式推導是否正確

(1)MOSSE、DSST等論文的推導結果是沒有問題

以DSST為例,推導如下:

這里H是/hat{h}的二維形式,同理F和G也是/hat{f}和/hat{g}的二維形式,都是在頻域中的表示。

可以看出和DSST論文的結論一致。

  另外,MOSSE論文中的結論如下:

DSST論文中的結論如上文,這兩個濾波器,一個表示成H^*,一個表示H,實際上是一回事,都是正確的

(2)KCF公式的推導是有問題,這個已經被討論過了:

https://zhuanlan.zhihu.com/p/26766703

所以正確的KCF中的權重w(這里不適合在KCF中也把這個叫做濾波器)應該是:

 

  所以問題1中,DSST和KCF推導之間的差異實際上並不是原問題中共軛是放在特征上還是放在理想輸出上的差異

而是MOSSE類的濾波器表示上是有共軛的,而且共軛是放在特征上,而KCF的w則根本就不應該有共軛符號

 

2、兩者之間的差異

在MOSSE(DSST)類出現濾波器h的公式表示和KCF的權重w有差異是很正常的。

因為KCF的w並不是濾波器,它和MOSSE類的濾波器h有本質上的區別

在檢測實現上,MOSSE是在時域上由濾波器h和檢測樣本z的相關運算計算得到,即,f(z)=h★z,這里的★表示相關,而在頻域上相當於去計算/hat{h}^*/hat{z}。(注意:相關不是卷積,所以轉換到頻域,相當去前者頻域的共軛和后者頻域去做元素乘)

而KCF的檢測,在時域上由樣本z構成的循環矩陣和權重w做乘法計算得到的,即f(z)=Zw,這里循環矩陣的構成形式如KCF論文所示(注意:並不是所有文獻對循環矩陣都是按照KCF論文這樣按行構成的,諸如CFNET//CVPR2017這樣的論文就是按列構成循環矩陣)

綜上,這兩者出現差異是沒有問題的

 

3、DSST論文中的代碼實現是否有誤

DSST的代碼實現是沒有問題,分兩步討論:

(1)在濾波器學習上,我們可以看出,其代碼實現是這樣的

所以,其代碼中所學的濾波器,並不是學習了/hat{h},而是學習了/hat{h}^*

(2)在檢測上,按照前面的討論,應該是在頻域計算濾波器共軛和樣本之間的元素乘。所以DSST的代碼實現直接將這里學習的hf(PS.實際上是conj(hf))去和樣本的頻域xf做元素乘

所以,代碼的實現和論文中公式的推導完全一致,沒有問題

 

4、按這兩個模型實現的tracker性能是否有差異

按照上面的討論,MOSSE(DSST)類的濾波器和KCF中的權重根本就不一樣,那么最后的檢測結果是否一樣,換言之,對於一個CF類的tracker,如果我們應用MOSSE模型或者KCF模型去實現tracker的基本核心組件,實驗結果上是否一樣?

回答是一樣的,盡管從出發點上,兩者的區別很大,但是歸根到最后檢測上,即f(z)的表達完全一樣(如果不考慮其時態更新方式,詳見第6點的討論),證明如下:

 

首先我們對於DSST和KCF分別計算其f(z),這里的KCF我們首先以/alpha去計算(P.S.CF論文關於對偶變量/alpha的推導都是正確的)

可以看出兩者是完全一樣的,另外這里需要說明一點的是,相關運算是不能前后交換的,即h★z≠z★h,不過它們在頻域上也就差一個共軛。

所以我們在MOSSE(DSST)類CF是去計算f(z)=h★z還是f(z)=z★h是有區別的。

但是這個在代碼實現上是沒有差異的,因為代碼實現上都是會在response的計算時加一個real。共軛復數的實部是相同的。

 

另外對於KCF,如果我們按照w去推導,也依然能推導出相同的結果

 

5、其他的一些討論

在其他的一些文獻中也有類似的問題,以CVPR2017的oral:CA為例 (這里感謝和@YuKi的交流)

Mueller M, Smith N, Ghanem B. Context-Aware Correlation Filter Tracking// CVPR 2017.

 

該論文在推導實現上都是從KCF模型出發的,但是其代碼實現上確實按照MOSSE(DSST)模型去實現的,從上面第4點的討論,這樣的實現是沒有問題的。

首先說明CA論文中的推導的錯誤,在其supplemenary material中,有以下的推導過程:

這里的推導出現了好幾處錯誤,正確的推導如下:

可以看到這里/hat{w}的的形式和KCF中的/hat{w}是完全類似的。

而在其代碼實現上(以DCF-CA為例)

濾波器學習:

可以看着這里學習的就是濾波器,而不是像KCF類那樣的權重

檢測輸出:

其代碼實現和DSST的實現完全一致。

 

6.時態更新方式上的一些討論

在第4點的討論上,我們認為KCF和MOSSE的最終實驗性能完全一樣,是不考慮濾波器的更新的。實際上由於采取了不同的時態更新方式,他們之間還是有細微的區別的

KCF:對alpha和x同時采用時態插值更新

MOSSE:對分子和分母同時采用時態插值更新

CA:對分子和分母相除得到的濾波器采用時態插值更新

 

具體結果如下:

OVER

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM