真真實實的學習tracking也有半年了,tracking的主流趨勢年年改變,每年都有新的突破。從CT、IVT到struck,到TLD、到CF,再到火熱的CNN也應用到了tracking領域。作為初入領域的學習者,需要在打好機器學習各種演算法的基礎上,瞭解每年頂級會議以及期刊中tracking的發展方向,盡力把握前沿動態。

下面是對知乎大神YaqiLYU的年年總結的轉載,對於把握從2013年到2016年tracking領域的發展動態有很好的幫助。另外,作者仍在更新當中,期待YaqiLYU對CVPR2017, ICCV2017和VOT2017的總結。

作者:YaqiLYU
連結:https://www.zhihu.com/question/26493945/answer/156025576
來源:知乎

2017.4.16已更新。相信很多來到這裡的人和我一樣,都是想找一種比較好的目標跟蹤演算法,或者想對目標跟蹤這個領域有個比較深入的瞭解,經典目標跟蹤演算法,可能我們並不需要那些曾經輝煌但已被拍在沙灘上的tracker(目標跟蹤演算法),而是那些即將成為經典的,或者就目前來說最好用、速度和效能都看的過去tracker。我比較關注的是目標跟蹤中的相關濾波方向,這裡儘可能全面的談談相關濾波,給大家分享一些我認為比較好的演算法(並非所有),順便談談我的看法,有可能會寫的比較長,分多次更新和修改。如果對您有用,點贊關注什麼的請不用客氣(技術類話題比較小眾,為了讓更多人交流),如果有錯誤、疏漏或不同看法,評論區或私信也不用客氣。

/*************************************我是分割線**********************************************/

先來混個臉熟,大概瞭解一下目標跟蹤領域。一切都從2013年開始說起,那一年的冬天和往常一樣冷。。如果你問別人近幾年有什麼比較niubility的跟蹤演算法,大部分人都會扔給你吳毅老師的論文,OTB50OTB100(OTB50這裡指OTB-2013,OTB100這裡指OTB-2015,感謝指正):

· Wu Y, Lim J, Yang M H. Online object tracking: A benchmark [C]// CVPR, 2013.

· Wu Y, Lim J, Yang M H. Object tracking benchmark [J]. TPAMI, 2015.

頂會轉頂刊的頂級待遇,在加上引用量1200+200多,影響力不言而喻,已經是做tracking必須跑的資料庫了,測試程式碼和序列都可以下載:Visual Tracker Benchmark,OTB50包括50個序列:


論文在資料庫上對比了包括2012年及之前的29個頂尖的tracker,有大家比較熟悉的OAB, IVT, MIL, CT, TLD, Struck等,都是頂會轉頂刊的神作,由於之前沒有比較公認的資料庫,論文都是自賣自誇,大家也不知道到底哪個好用,所以這個database的意義非常重大,直接促進了跟蹤演算法的發展,後來又擴充套件為OTB100,有100個序列,我們這裡參考OTB100的結果(標出了一些效能速度都比較好的演算法):


接下來再看看結果(建議去看論文比較清晰):


上結論:平均來看Struck, SCM, ASLA等演算法的效能比較高,排在前三,著重強調CSK,第一次向世人展示了相關濾波的潛力,排第四還362FPS簡直逆天了。請注意另一篇速度很快的經典演算法CT(64fps)的排名(這段時間是壓縮感知大熱的時候,這裡能看到很多稀疏相關演算法,滿滿都是歷史的痕跡)。如果對更早期的演算法感興趣,推薦另一篇經典的survey(反正我是沒興趣也沒看過):

· Yilmaz A, Javed O, Shah M. Object tracking: A survey[J]. CSUR, 2006.

自從2012年AlexNet問世以後,CV各個領域都有了很多變化,所以我猜你肯定還想知道2013到2017年發生了什麼,抱歉我也不知道,不過我們可以肯定的是,2013年以後的論文確定以及必定都會引用OTB50這篇論文,藉助谷歌學術中的被引用次數功能,得到如下結果:


這裡僅列舉幾個排名靠前的,依次是Stuck轉PAMI, 三大相關濾波方法KCF, CN, DSST, 和VOT競賽,這裡僅作示範,有興趣可以去試試。(這麼做的理論依據是:一篇論文,在它之前的工作可以看它的引用文獻,之後的工作可以看誰引用了它;雖然引用量並不能說明什麼,但好的方法大家基本都會引用的;之後還可以通過限定時間來檢視某段時間的相關論文,如2016-2017就能找到最新的論文了,至於論文質量需要仔細甄別;其他方向的重要論文也可以這麼用,順藤摸瓜,然後你就知道大牛是哪幾位,接著關注跟蹤一下他們的工作(以上小技巧,如果你不知道,請關注我-_-!)這樣我們就大致就知道目標跟蹤領域的最大發展應該就是相關濾波無疑了,再往後還能看到相關濾波類演算法有SAMF, LCT, HCF, SRDCF等等。引用量也與時間有關,建議分每年來看,這裡就不貼圖了(相關濾波類新論文也可以通過引用KCF的論文去找)。此外,最新版本OPENCV3.2除了TLD,也包括了幾個很新的跟蹤演算法OpenCV: Tracking API


TrackerKCF介面實現了KCF和CN,影響力可見一斑,這一點就可以說明很多問題了,還有個GOTURN是基於深度學習的方法,竊以為太激進了...

/*************************************我是分割線**********************************************/

總體簡單介紹下目標跟蹤。這裡說的目標跟蹤,是通用單目標跟蹤,第一幀給個矩形框,這個框在資料庫裡面是人工標註的,在實際情況下大多是檢測演算法的結果,然後需要跟蹤演算法在後續幀緊跟住這個框,以下是VOT對跟蹤演算法的要求:


通常目標跟蹤面臨由幾大難點(吳毅在VALSE的slides):外觀變形,光照變化,快速運動和運動模糊,背景相似干擾:


平面外旋轉,平面內旋轉,尺度變化,遮擋和出視野等情況:


正因為這些情況才讓tracking變得很難,目前比較常用的資料庫除了OTB,還有谷歌學術找到的VOT競賽資料庫(類比ImageNet),已經舉辦了四年,VOT2015和VOT2016都包括60個序列,所有序列也是免費下載VOT Challenge | Challenges

· Kristan M, Pflugfelder R, Leonardis A, et al. The visual object tracking vot2013 challenge results [C]// ICCV, 2013.

· Kristan M, Pflugfelder R, Leonardis A, et al. The Visual Object Tracking VOT2014 Challenge Results [C]// ECCV, 2014.

· Kristan M, Matas J, Leonardis A, et al. The visual object tracking vot2015 challenge results [C]// ICCV, 2015.

· Kristan M, Ales L, Jiri M, et al. The Visual Object Tracking VOT2016 Challenge Results [C]// ECCV, 2016.

OTB和VOT區別:OTB包括25%的灰度序列,但VOT都是彩色序列,這也是造成很多顏色特徵演算法效能差異的原因;兩個庫的評價指標不一樣,具體請參考論文;VOT庫的序列解析度普遍較高,這一點後面分析會提到。對於一個tracker,如果兩個庫(最好是OTB100和VOT2016)都跑了且結果上佳,那效能肯定是非常優秀的(兩個庫調參你能調好,我服,認了~~),如果只跑了一個。。(僅供參考)我比較認可的是VOT2016,因為序列都是精細標註,且評價指標我更加認可(人家畢竟是競賽,評價指標發過TPAMI的),差別最大的地方,OTB是隨機幀開始,或矩形框加隨機干擾初始化去跑,作者說這樣更加符合檢測演算法給的框框;而VOT是第一幀初始化去跑,每次跟蹤失敗(預測框和標註框不重疊)時,5幀之後再次初始化,VOT以short-term為主,且認為跟蹤檢測應該在一起永不分離,detecter會多次初始化tracker。至於哪個更好,看你,和你的需求。

目標視覺跟蹤(Visual Object Tracking),大家比較公認分為兩大類:生成(generative)模型方法和判別(discriminative)模型方法,目前比較流行的是判別類方法,也叫檢測跟蹤tracking-by-detection,為保持完整性,以下簡述。

生成類方法,在當前幀對目標區域建模,下一幀尋找與模型最相似的區域就是預測位置,比較著名的有卡爾曼濾波,粒子濾波,mean-shift等。舉個例子,從當前幀知道了目標區域80%是紅色,20%是綠色,然後在下一幀,搜尋演算法就像無頭蒼蠅,到處去找最符合這個顏色比例的區域,推薦演算法ASMSvojirt/asms

· Vojir T, Noskova J, Matas J. Robust scale-adaptive mean-shift for tracking [J]. Pattern Recognition Letters, 2014.

VOT2015的第20名,官方推薦的實時演算法,VOT2016的32名,平均幀率125FPS,在經典mean-shift框架下加入了尺度估計,經典顏色直方圖特徵,加入了兩個先驗(尺度不劇變+可能偏最大)作為正則項,和反向尺度一致性檢查,作者給了C++程式碼,在相關濾波和深度學習盛行的年代,還能看到mean-shift打榜,如此高的價效比實在不容易(已淚目~~),實測效能還不錯。(某些演算法,如果連這個你都比不過。。天台在24樓,不謝)

判別類方法,OTB50裡面的大部分方法都是這一類,經典套路影象特徵+機器學習, 當前幀以目標區域為正樣本,背景區域為負樣本,機器學習訓練分類器,下一幀用訓練好的分類器找最優區域(馬超在VALSE的slides):


與生成類方法最大的區別,是分類器訓練過程中用到了背景資訊,這樣分類器專注區分前景和背景,判別類方法普遍都比生成類好。舉個例子,在訓練時告訴tracker目標80%是紅色,20%是綠色,還告訴它背景中有橘紅色,要格外注意別搞錯了,這樣的分類器知道更多資訊,效果也肯定更好。tracking-by-detection檢測演算法非常相似,如經典行人檢測用HOG+SVM,Struck用到了haar+structured output SVM,跟蹤中為了尺度自適應也需要多尺度遍歷搜尋,區別僅在於跟蹤演算法對特徵和線上機器學習的速度要求更高,檢測範圍和尺度更小而已。這點其實並不意外,大多數情況檢測識別演算法複雜度比較高不可能每幀都做,這時候用複雜度更低的跟蹤演算法就很合適了,只需要在跟蹤失敗(drift)或一定間隔以後再次檢測去初始化tracker就可以了。其實我就想說,FPS才TMD是最重要的指標,慢的要死的演算法可以去死了(喂同學,別這麼偏激,速度可以慢慢優化嘛)。

判別類方法的最新發展就是相關濾波類方法,correlation filter簡稱CF,或discriminative correlation filter簡稱DCF(注意和後面KCF種的DCF方法區別,包括前面提到的那幾個,後面要著重介紹),和深度學習(Deep ConvNet based)類方法,因為深度學習類並不瞭解就不瞎推薦了,除了Winsty的幾篇Naiyan Wang - Home,還有VOT2015的冠軍MDNetLearning Multi-Domain Convolutional Neural Networks for Visual Tracking和VOT2016的冠軍TCNNhttp://www.votchallenge.net/vot2016/download/44_TCNN.zip ,速度方面比較突出的如80FPS的SiamFCSiameseFC tracker和100FPS的GOTURN davheld/GOTURN,注意是在GPU上。基於ResNet的SiamFC-R在VOT2016表現不錯,很看好後續發展,如果有興趣可以去VALSE聽作者自己講解VALSE-20160930-LucaBertinetto-Oxford-JackValmadre-Oxford-pu,至於GOTURN,效果那麼差,跑100FPS又有什麼用呢?

· Nam H, Han B. Learning multi-domain convolutional neural networks for visual tracking [C]// CVPR, 2016.

· Nam H, Baek M, Han B. Modeling and propagating cnns in a tree structure for visual tracking. arXiv preprint arXiv:1608.07242, 2016.

· Bertinetto L, Valmadre J, Henriques J F, et al. Fully-convolutional siamese networks for object tracking [C]// ECCV, 2016.

· Held D, Thrun S, Savarese S. Learning to track at 100 fps with deep regression networks[C]// ECCV, 2016.

還有幾篇國人大作遇到了不要驚訝:MEEM, TGPR, CLRST, MUSTer。最後,深度學習END2END的強大威力在目標跟蹤方向還遠沒有發揮出來,還沒有和相關濾波類方法拉開多大差距(速度慢是天生的我不怪你,但效果總該很高吧,不然你存在的意義是什麼呢)最後強力推薦Qiang Wang大神維護的資源benchmark_results:大量頂級方法在OTB庫上的效能對比,各種論文程式碼應有盡有,大神自己C++實現並開源的CSK, KCF和DAT,找不著路的同學請跟緊,別迷路 foolwood/benchmark_results,還有他自己最新論文DCFNet論文加原始碼,別錯過。再隆重推薦@賀輝 大神維護的資源HakaseH/CF_benchmark_results ,詳細分類和論文程式碼資源,走過路過別錯過,是我見過的最詳盡的相關濾波資源,可見大神非常之用心!(賀輝大神,看到了請來我處交一下廣告費,9折優惠,謝謝~~)

/*************************************我是分割線**********************************************/

接下來詳細介紹經典高速相關濾波類跟蹤演算法CSK, KCF/DCF, CN。很多人最早了解CF,應該和我一樣,都是被下面這張圖吸引了:


這是KCF/DCF演算法在OTB50上(那時候OTB100還沒有發表)的實驗結果,Precision和FPS碾壓了OTB50上最好的Struck,看慣了勉強實時的Struck和TLD,飆到高速的KCF/DCF突然有點讓人不敢相信,其實KCF/DCF就是在OTB上大放異彩的CSK的多通道特徵改進演算法。注意到那個超高速615FPS的MOSSE了吧(喂,嚴重超速這是您的罰單),這是目標跟蹤領域的第一篇相關濾波類方法,這其實是真正第一次顯示了相關濾波的潛力。和KCF同一時期的還有個CN,在2014'CVPR上引起劇烈反響的顏色特徵方法,其實也是CSK的多通道顏色特徵改進演算法。從MOSSE(615)到 CSK(362) 再到 KCF(172) 和 CN(152),速度雖然是越來越慢,但效果越來越好,而且始終保持在高速水平,接下來就詳細分解這四個方法:

· Bolme D S, Beveridge J R, Draper B A, et al. Visual object tracking using adaptive correlation filters [C]// CVPR, 2010.

· Henriques J F, Caseiro R, Martins P, et al. Exploiting the circulant structure of tracking-by- detection with kernels[C]// ECCV, 2012.

· Henriques J F, Rui C, Martins P, et al. High-Speed Tracking with Kernelized Correlation Filters[J]. IEEE TPAMI, 2015.

· Danelljan M, Shahbaz Khan F, Felsberg M, et al. Adaptive color attributes for real-time visual tracking [C]// CVPR, 2014.

由於CSK和KCF都是Henriques J F(牛津大學)大神先後兩篇論文,且KCF/DCF是期刊比較長內容充實,主要方法和CSK差別不大,因為單通道灰度特徵容易視覺化方便理解,我們就先從單通道灰度特徵的沒有kernel-trick的CSK開始瞭解相關濾波的演算法原理和具體流程,然後再看看它和MOSSE的差別在哪裡,最後再來看多通道特徵擴充套件的KCF/DCF和CN。

涉及演算法本身是比較枯燥,KCF好多頁都在推導,這裡分部分來看這個演算法。首先是嶺迴歸(Ridge Regression)。相關濾波也是判別類演算法,選擇了最簡單的機器學習方法嶺迴歸,雖然我一貫討厭貼公式,但這裡真的必須有幾個(真的就幾個),嶺迴歸和封閉解(closed-form solution ):


公式儘量少,所以具體引數含義和公式推導請看論文。嶺迴歸這個大家應該非常熟悉,最小二乘+二次正則項,且最大優勢是有封閉解可以快速優化。卷積操作與相關操作的區別僅在於是否將卷積核旋轉180度,如果卷積核對稱,這時候卷積與相關就是一回事了,現在CV中已經不做嚴格區分了,相關濾波的叫法來自訊號處理。

為了對嶺迴歸有深刻認識,借用CS231n(這是必讀品!)的一頁PPT來解釋線性分類器到底學到了什麼,這樣就容易理解相關濾波到底幹了什麼:


在cifar-10上訓練的線性分類器,訓練完成後的分類器引數W視覺化以後,會看到10個包含了目標物體輪廓的模糊影象,這就是分類模板(template),所以我們也可以這樣類比嶺迴歸:訓練中我們得到了目標物體的一個模子,測試過程拿測試樣本去逐個和模子對比,如果嚴絲合縫對上了,就會得到結果1;如果和模子比較相似,會得到接近1的結果;如果完全對不上,就會得到結果0。採用嶺迴歸的相關濾波也是一樣,所以相關濾波也可以叫做模板類方法,所用的特徵叫做模板類特徵。(注意區分統計類特徵,如顏色直方圖。。你可能會想到Staple~~)

接下來就是迴圈移位(Cyclic shifts)。相關濾波的訓練樣本是通過迴圈移位產生的,理由1:密集取樣得到的樣本與迴圈移位產生的樣本很像,可以用迴圈移位來近似;理由2:卷積(相關)運算在傅立葉域對應點乘運算,可以減小計算量,而迴圈矩陣經過傅立葉變換會對角化,可以進一步減小計算量。

訓練標籤是由高斯函式產生的連續值,相關濾波是迴歸而非分類,這點和以前的判別類方法區別較大。訓練樣本和標籤如下圖。原始樣本是跟蹤框加1~1.5倍padding得到的影象塊,再乘一個餘弦窗,訓練樣本集是原始樣本通過迴圈移位產生,原始影象中心(紅點)移位後對應高斯圖位置的值就是這個移位樣本的標籤(藍點):


接下來將封閉解變換到傅立葉域,結合迴圈矩陣的特性將樣本集進行化簡,得到最終的封閉解:


其實迴圈移位的樣本集是隱性的,並沒有真正產生過,只是在推導過程中用到了,所以我們也不需要真正的記憶體空間去儲存這些樣本。檢測過程也是類似,用訓練得到的分類器對檢測區域影象塊的每個迴圈移位樣本做相關操作,計算響應值,所有響應值會構成一幅響應圖,最大響應點就是跟蹤目標的中心。這個過程也可以在傅立葉域簡化,而不用真正去迴圈移位產生檢測樣本並分類,計算高效節省記憶體:


在舉個簡單例子,100*100的檢測塊,目標中心位於邊緣附近(20,20)位置,在檢測過程中會持續迴圈移位並與濾波模板比較,只有當目標移位到中心時響應最大,這個最大值會寫入響應圖(20,20)位置。

此外,作者發現如果給嶺迴歸加入kernel-trick,也可以推匯出封閉解,推薦是高斯核。至此,CSK演算法就成型了。總結一下,如果是100*100的影象塊,經過傅立葉變換和幾個簡單的元素級點乘計算,事實上已經完成了10000個樣本的訓練和10000個樣本的檢測,複雜度由 降低到了 ,這裡 是影象的高乘寬,也就是說CSK的複雜度與影象塊的畫素點總數有關,padding大小會影響複雜度。迴圈移位生成的近似樣本集結合FFT以近乎恐怖的方式降低了計算量,但是,這種近似以引入邊界效應為代價,再但是,即使存在邊界效應KCF/DCF依然碾壓了Struck。接下來,再看幾個視覺化結果,依次是某些幀的檢測響應,模板權值和跟蹤結果:


首先看第二列的分類器引數,和前面的分析一致,視覺化的模板權值就是跟蹤目標的內容(模子,建模成功)。相關響應在理想情況下呈現單峰,與訓練時的期望高斯圖比較類似,有遮擋或在變形嚴重(模板對不上號)時會呈現多峰。

在MOSSE中,過程基本類似,第一幀初始化加了隨機仿射,優化目標沒有正則項,但最大區別還是訓練和檢測都沒有加padding來擴充套件背景資訊,僅建模了目標區域。提出了一種跟蹤置信度的評價指標峰值旁瓣比PSR,更新方式是以固定學習率更新分類器引數,但形式略有區別,是濾波器的分子和分母分別更新,這種更新方式使用更加廣泛:


然後,多通道特徵擴充套件只需要頻域通道響應求和,就這麼簡單。首先來看KCF/DCF João F. Henriques,將CSK中的單通道灰度特徵擴充套件成多通道的HOG特徵,採用HOG+線性核的方法叫做DCF,採用HOG+高斯核的方法叫做KCF,依靠傅立葉變換的快速演算法FFT和HOG的快速演算法fHOG,KCF/DCF成功起飛。作者提供了一份沒有尺度更新的MATLAB程式碼,和三份C++程式碼,一份擴充套件了LAB顏色特徵和簡單的3尺度檢測,一份擴充套件了CN特徵和尺度估計,最後一份是OPENCV版本前面提到過,僅擴充套件了CN特徵沒有尺度更新。其實在這之前Hamed Kiani在MCCF中就嘗試用多通道特徵的MOSSE去做檢測,證明HOG效果比較好,之所以會提到這個是因為這個名字後面還會出現:

· Kiani Galoogahi H, Sim T, Lucey S. Multi-channel correlation filters[C]// ICCV, 2013.

同一時期, Martin Danelljan大牛(林雪平大學,這個名字還會出現很多很多次)用多通道顏色特徵Color Names(CN)去擴充套件CSK得到了不錯的效果,演算法也簡稱CNColoring Visual Tracking。將RGB的3通道影象投影到11個顏色通道,分別對應英語中常用的語言顏色分類,分別是black, blue, brown, grey, green, orange, pink, purple, red, white, yellow (對比漢語中常用的語言顏色分類:赤橙黃綠青藍紫+黑白灰,英語和漢語對顏色的認知還是略有差異的),並歸一化得到10通道顏色特徵。作者還測試了多種顏色特徵在相關濾波中的效果,發現CN最好,其次是LAB。下面是HOG特徵和8個CN特徵通道視覺化的影象,隨便畫的隨便看看:


接下來是CN的效能,作者選了41個彩色序列進行比較,簡單來說也是全面領先struck,10通道CN特徵的FPS是78.9,壓縮後兩通道CN2特徵的FPS是105,但這裡需要強調一點,論文中的幀率FPS是和作者電腦的配置密切相關的,Martin Danelljan大神的電腦配置比較差演算法普遍幀率低很多,這裡我們以吳毅老師的電腦為參考,固定struck為20FPS,其他演算法都換算到這個標準去比較,結果如下:CSK(362FPS), KCF(172FPS), DCF(292FPS), CN(152FPS), CN2(202FPS)。(後面其他演算法類似,如DSST是53.6FPS)


HOG是梯度特徵,而CN是顏色特徵,兩者可以互補,所以HOG+CN在近兩年的跟蹤演算法中成為了hand-craft特徵標配。最後,再回到KCF/DCF的實驗結果,討論兩個問題:


· 1. 為什麼只用單通道灰度特徵的KCF和用了多通道HOG特徵的KCF速度差異很小?

第一,HOG,作者用了HOG的快速演算法fHOG,來自Piotr's Computer Vision Matlab Toolbox,C程式碼而且做了SSE優化。如對fHOG有疑問,請參考論文Object Detection with Discriminatively Trained Part Based Models第12頁。 第二,HOG特徵常用cell size是4,這就意味著,100*100的影象,HOG特徵圖的維度只有25*25,而Raw pixels是灰度圖歸一化,維度依然是100*100,我們簡單算一下:27通道HOG特徵的複雜度是625log(625)*27=47250 ,而單通道灰度特徵的複雜度是10000log(10000)=40000,結果也是相差不多,符合表格(不知道這種演算法對不對,如果有誤請指出,謝謝)。

看程式碼你會發現,作者在擴充套件後目標區域面積較大時,會先對提取到的影象塊做因子2的下采樣,到50*50這樣複雜度就變成了2500log(2500)=8495 ,下降了非常多。那你可能會想,如果下采樣再多一點,複雜度就更低了,但這是以犧牲跟蹤精度為代價的,再舉個例子,如果影象塊面積為200*200,先下采樣到100*100,再提取HOG特徵,解析度降到了25*25,這就意味著響應圖的解析度也是25*25,也就實說,響應圖每位移1個畫素,原始影象中跟蹤框要移動8個畫素,這樣就降低了跟蹤精度。在精度要求不高時,你完全可以稍微犧牲下精度提高幀率(但真的不能再下采樣了)。

· 2. HOG特徵的KCF和DCF哪個更好?

大部分人都會認為KCF效果超過DCF,而且各屬性的準確度都在DCF之上,然而,如果換個角度來看,以DCF為基準,再來看加了kernel-trick的KCF,mean precision僅提高了0.4%,而FPS下降了41%,這麼看是不是挺驚訝的呢?除了影象塊畫素總數,KCF的複雜度還主要和kernel-trick相關。所以,下文中的CF方法如果沒有kernel-trick,就簡稱基於DCF,如果加了kernel-trick,就簡稱基於KCF(劇透,基本兩類各佔一半)。當然這裡的CN也有kernel-trick,但請注意,這是Martin Danelljan大神第一次使用kernel-trick,也是最後一次。。。

可能會有這樣的疑問,kernel-trick這麼強大的東西,怎麼才提高這麼點?這裡就不得不提到Winsty的另一篇大作:

· Wang N, Shi J, Yeung D Y, et al. Understanding and diagnosing visual tracking systems[C]// ICCV, 2015.

一句話,別看那些五花八門的機器學習方法,那都是虛的,目標跟蹤演算法中特徵才是最重要的。(若有曲解,以論文為準)所以對於那些僅簡單修改機器學習方法而不關注如何減小邊界效應的相關濾波,也許可能大概會有效果,但在這裡我一律不做評價討論(如果您有不同看法,非常歡迎討論),我更加關心那些速度比較快或者對邊界效應處理的比較有效的方法,以上就是前三個首先推薦的高速演算法,CSK, KCF/DCF和CN。

/*************************************我是分割線**********************************************/

這部分主要介紹多尺度檢測和更新。光陰似水如白駒過隙,已經距離OTB2013發表過去一年了,來看看VOT2014競賽 VOT2014 Benchmark 。這一年有25個精挑細選的序列,38個演算法,那時候深度學習的戰火還沒有燒到tracking,所以也只能CF獨霸一方了,下面是前幾名的具體情況:


前三名都是相關濾波CF類方法,第三名的KCF已經很熟悉了,這裡稍微有點區別就是加了多尺度檢測和子畫素峰值估計,再加上VOT序列的解析度比較高(檢測更新影象塊的解析度比較高),導致KCF的速度只有24.23(EFO換算66.6FPS)。這裡的speed指的的EFO(Equivalent Filter Operations),在VOT2015和VOT2016裡面也用這個引數衡量演算法速度,這裡一次性列出來供參考:


其實前三名除了特徵略有差異,核心都是擴充套件了多尺度檢測,概要如下:


尺度變化是跟蹤中比較基本和常見的問題,前面介紹的三個演算法都沒有尺度更新,如果目標縮小,濾波器就會學習到大量背景資訊,如果目標擴大,濾波器就跟著目標區域性紋理走了,這兩種情況都很可能出現非預期的結果,導致漂移和失敗。

首先介紹SAMF ihpdep/samf,來自浙大的工作,基於KCF,特徵是HOG+CN:

· Li Y, Zhu J. A scale adaptive kernel correlation filter tracker with feature integration [C]// ECCV, 2014.

可以看出這篇論文就在KCF和CN出來後不久,也是第一次HOG和CN結合,尺度方面用作者的原話是straightforward(論文裡出現這個詞,隱含的意思就是“這麼做就行了,沒啥創新”),類似檢測演算法裡面常用的多尺度檢測方法,1.005間隔的7個尺度縮放影象分別檢測,然後取7個響應圖的最大值點,為了看清我把間隔擴大到1.05的5個尺度


最佳尺度的目標點肯定有最大響應值,因此這種方法可以同時檢測目標中心變化尺度變化,速度是7FPS,因為速度比較慢,就介紹這麼多。VOT2014中的KCF也採用這種尺度更新方法,步長1.05的3個尺度檢測和更新。

接下來是Martin Danelljan的DSST Accurate scale estimation for visual tracking,基於DCF,特徵只有HOG,但排名卻在SAMF之前,得益於更加簡單精確的尺度方法:

· Danelljan M, Häger G, Khan F, et al. Accurate scale estimation for robust visual tracking [C]// BMVC, 2014.

· Danelljan M, Hager G, Khan F S, et al. Discriminative Scale Space Tracking[J]. IEEE TPAMI, 2017.

將目標跟蹤看成目標中心平移和目標尺度變化兩個獨立問題,首先用HOG特徵的DCF訓練相關濾波,負責檢測目標中心平移,然後用HOG特徵的MOSSE(注意區別,不加padding)訓練另一個相關濾波,負責檢測目標尺度變化,(標配)步長1.02的33個尺度,選8個示例:


尺度濾波器僅需要檢測哪個尺度最匹配而無須關心平移情況,所以DSST將特徵壓縮成一維(沒有迴圈移位),尺度檢測的響應圖也是一維的(1*33),同時為了減小計算量,DSST將尺度檢測影象塊全部縮放到512畫素以內,所以DSST能精細檢測33個尺度變化同時保持可觀的幀率(論文中是24FPS,標準化後是53.6FPS)。更新階段兩個濾波器都以固定學習率逐幀更新。DSST轉PAMI後的快速改進版本fDSST雖然效能略有下降,幀率達到了54.3(標準化後是114FPS)。最後,討論兩個問題:

· DSST和SAMF所採用的尺度檢測方法哪個更好

首先給大家講個笑話:Martin Danelljan大神提出DSST之後,他的後續論文就再沒有用過。

1. 雖然SAMF和DSST都可以跟上普通的目標尺度變化,但SAMF只有7個尺度比較粗,而DSST有33個尺度比較精細準確;

2. DSST先檢測最佳平移再檢測最佳尺度,是分佈最優,而SAMF是平移尺度一起檢測,是平移和尺度同時最優,而往往區域性最優和全域性最優是不一樣的;

3. DSST看成兩個問題可以採用不同的方法和特徵更加靈活,但需要額外訓練一個濾波器,每幀尺度檢測需要取樣33個影象塊,分別計算特徵,加窗,FFT,尺度濾波器還要額外訓練;SAMF只需要一個濾波器,不需要額外訓練和儲存,每個尺度檢測就一次提特徵和FFT,但在影象塊較大時計算量比DSST高。

所以尺度檢測DSST並不總是比SAMF好,其實,在VOT2015和VOT2016上SAMF都是超過DSST的,當然這主要是因為特徵更好,但至少說明尺度方法不差。雖然DSST比SAMF更具創新度,但SAMF也是很優秀的方法。(記得高中數學老師說過,“一個人一生能有一點點創新就非常了不起了”,所以我們才會看到那麼那麼多灌水論文,創新真的太難了,那些雖然創新力不夠但踏踏實實有效果,敢公開原始碼經得起驗證的論文同樣值得欽佩)

· DSST一定要33個尺度嗎?

如果你認真跑過實驗,就會發現DSST標配的33個尺度非常非常敏感,輕易降低尺度數量,即使你增加相應步長,尺度濾波器也會完全跟不上尺度變化。關於這一點我想到的可能解釋是,訓練尺度濾波器用的是一維樣本,而且沒有迴圈移位,這就意味著一次訓練更新只有33個樣本,如果降低樣本數量,會造成訓練不足,分類器判別力嚴重下降,不像平移濾波器有非常多的移位樣本(如果不對或您有其他看法歡迎交流)。總之,請不要輕易嘗試大幅降低尺度數量,如果非要用尺度濾波器33和1.02就好

以上就是兩種推薦的尺度檢測方法,以後簡稱為類似DSST的多尺度類似SAMF的多尺度。如果您對尺度的要求不高而更看重速度,SAMF只要3個尺度就可以粗略跟上尺度變化(比如VOT2014中的KCF);如果您需要精確尺度跟蹤,則推薦DSST但速度稍慢,且DSST的尺度數量不能輕易減少;如果尺度變化不明顯則不推薦使用。

/*************************************我是分割線**********************************************/

光陰荏苒歲月如流又過去一年,VOT2015競賽 VOT2015 Challenge | Home 如期而至,這一年有60個精挑細選的序列,62個演算法,最大看點是深度學習開始進擊tracking,MDNet直接拿下當年的冠軍,而結合深度特徵的相關濾波方法DeepSRDCF是第二名,主要解決邊界效應的SRDCF僅HOG特徵排在第四:


隨著VOT競賽的影響力擴大,舉辦方也是用心良苦,經典的和頂尖的齊聚一堂,百家爭鳴,多達62個tracker皇城PK,華山論劍。除了前面介紹的深度學習和相關濾波,還有結合object proposals(類物體區域檢測)的EBT排第三,Mean-Shift類顏色演算法ASMS是推薦實時演算法,還請注意另一個顏色演算法DAT,而第9的那個Struck已經不是原來的了。除此之外,你還能看到各種博文力推主打的張開華老師的CT(12'ECCV)STC(14 ECCV),分別排倒數第6和第8。張開華老師我還是很尊重的,這裡就事論事分析結果,不涉及張老師的其他論文方法。CT在OTB上排倒數第四希望您還記得,而同為12'ECCV的CSK也排第四,不過是正著數的,而STC和同為14'ECCV的SAMF(排28)差了很多,所以有同學反映實測CT和STC沒有論文中說的那麼好,答案就在這裡,值得參考但我不推薦深入學習和研究,更不推薦您用在產品中。(冒著被打的風險說一句大實話,如果有人向你推薦CT或STC,要麼他根本就沒做過,甚至沒跑過目標跟蹤演算法,信口胡說的,要麼。。他就是居心叵測,您最好仔細想想是不是欠他錢沒還)

接下來主要介紹相關濾波的邊界效應及解決方案,僅適合需要改進相關濾波類演算法或者需要對相關濾波演算法有更高要求的同學看,寫出來是為了全面,而且後續改進都是以犧牲幀率為代價的,效果雖好但很多演算法都無法實時了(任何演算法(人)都有優缺點,適合(你)的才是最好的),做專案或找演算法的同學就沒必要仔細看了。

總體來說,相關濾波類方法對快速變形和快速運動情況的跟蹤效果不好

快速變形主要因為CF是模板類方法。容易跟丟這個比較好理解,前面分析了相關濾波是模板類方法,如果目標快速變形,那基於HOG的梯度模板肯定就跟不上了,如果快速變色,那基於CN的顏色模板肯定也就跟不上了。這個還和模型更新策略與更新速度有關,固定學習率的線性加權更新,如果學習率太大,部分或短暫遮擋和任何檢測不準確,模型就會學習到背景資訊,積累到一定程度模型跟著背景私奔了,一去不復返。如果學習率太小,目標已經變形了而模板還是那個模板,就會變得不認識目標。(舉個例子,多年不見的同學,你很可能就認不出了,而經常見面的同學,即使變化很大你也認識,因為常見的同學在你大腦裡面的模型在持續更新,而多年不見就是很久不更新)

快速運動主要是邊界效應(Boundary Effets),而且邊界效應產生的錯誤樣本會造成分類器判別力不夠強,下面分訓練階段和檢測階段分別討論。

訓練階段,合成樣本降低了判別能力。如果不加餘弦窗,那麼移位樣本是長這樣的:


除了那個最原始樣本,其他樣本都是“合成”的,100*100的影象塊,只有1/10000的樣本是真實的,這樣的樣本集根本不能拿來訓練。如果加了餘弦窗,由於影象邊緣畫素值都是0,迴圈移位過程中只要目標保持完整那這個樣本就是合理的,只有目標中心接近邊緣時,目標跨越邊界的那些樣本是錯誤的,這樣雖不真實但合理的樣本數量增加到了大約2/3(padding= 1),即使這樣仍然有1/3(3000/10000)的樣本是不合理的,這些樣本會降低分類器的判別能力。再者,加餘弦窗也不是“免費的”,餘弦窗將影象塊的邊緣區域畫素全部變成0,大量過濾掉分類器本來非常需要學習的背景資訊,原本訓練時判別器能看到的背景資訊就非常有限,我們還加了個餘弦窗擋住了背景,這樣進一步降低了分類器的判別力(是不是上帝在我前遮住了簾。。不是上帝,是餘弦窗)。

檢測階段,相關濾波對快速運動的目標檢測比較乏力。相關濾波訓練的影象塊和檢測的影象塊大小必須是一樣的,這就是說你訓練了一個100*100的濾波器,那你也只能檢測100*100的區域,如果打算通過加更大的padding來擴充套件檢測區域,那樣除了擴充套件了複雜度,並不會有什麼好處。目標運動可能是目標自身移動,或攝像機移動,按照目標在檢測區域的位置分四種情況來看:

1. 如果目標在中心附近,檢測準確且成功。

2. 如果目標移動到了邊界附近但還沒有出邊界,加了餘弦窗以後,部分目標畫素會被過濾掉,這時候就沒法保證這裡的響應是全域性最大的,而且,這時候的檢測樣本和訓練過程中的那些不合理樣本很像,所以很可能會失敗。

3. 如果目標的一部分已經移出了這個區域,而我們還要加餘弦窗,很可能就過濾掉了僅存的目標畫素,檢測失敗。

4. 如果整個目標已經位移出了這個區域,那肯定就檢測失敗了。

以上就是邊界效應(Boundary Effets),接下來簡單介紹解決邊界效應的方法,再次強調這些方法速度比較慢,並不推薦

首先是VOT2015中最亮眼的相關濾波方法,Martin Danelljan大牛的SRDCF Learning Spatially Regularized Correlation Filters for Visual Tracking,主要思路:既然邊界效應發生在邊界附近,那就忽略所有移位樣本的邊界部分畫素,或者說邊界附近濾波器係數為0:

· Danelljan M, Hager G, Shahbaz Khan F, et al. Learning spatially regularized correlation filters for visual tracking [C]// ICCV. 2015.

SRDCF基於DCF,類SAMF多尺度,採用更大的檢測區域(padding = 4),同時加入空域正則化,懲罰邊界區域的濾波器係數,優化目標如下:


空域正則化函式,傳統DCF響應和SRDCF響應對比(來自論文)如下:


邊界效應發生在原始樣本目標中心迴圈移位到邊緣附近時,所以越靠近邊緣區域,正則化係數越大,懲罰並抑制這裡的濾波器係數(有意忽略邊界附近的樣本值)。注意區分餘弦窗是加在原始影象塊上的,之後進行移位產生樣本集;而空域正則化是加在樣本集中每個移位樣本上的。加正則項這種方法屬於傷筋動骨類方法,破壞了DCF的封閉解,所以SRDCF採用高斯-塞德爾方法迭代求解最優化,這也是是導致SRDCF比較慢的原因。padding=4檢測和訓練影象塊更大,為了減小計算量SRDCF控制濾波器的大小不超過50*50,雖然速度只有5FPS,但實測對快速運動的提升非常明顯。

另一種方法是Hamed Kiani(前面提到過他MCCF,這位大牛專注改進MOSSE,世界的塵囂和他沒有一點關係)提出的基於灰度特徵MOSSE的CFLM Correlation Filters with Limited Boundaries 和基於HOG特徵的BACF,主要思路是採用較大尺寸檢測影象塊和較小尺寸濾波器來提高真實樣本的比例,或者說濾波器填充0以保持和檢測影象一樣大:

· Kiani Galoogahi H, Sim T, Lucey S. Correlation filters with limited boundaries[C]// CVPR, 2015.

· Kiani Galoogahi H,, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual Tracking[C]// arXiv preprint arXiv:1703.04590, 2017.

首先採用更大的檢測和訓練影象塊,然後給迴圈移位樣本左乘一個0和1組成的掩膜矩陣,以使真實訓練樣本的比例增加,優化目標如下:


掩膜矩陣其實就是從大影象塊的迴圈移位樣本中裁切小影象塊,一維樣本為例來說明:


5*1的原始樣本,經過迴圈移位產生5個新樣本,只有第五個是真實的,其他都是“合成”的,真實樣本數/總樣本數 = 1/5;給所有移位樣本左乘一個掩膜矩陣P後,雖然樣本尺寸變小為3*1,但第三、四、五都是真實樣本,真實樣本數/總樣本數 = 3/5,只有第一、二樣本有邊界效應,相當於裁切出了前三行。這就是從大尺寸樣本的迴圈移位樣本集中用掩膜矩陣裁切出真實的小尺寸樣本,提升真實樣本的比例,而且這樣的掩膜矩陣不止一個,P的迴圈移位矩陣也有類似效果,即P指定裁切哪個區域,而裁切不同區域的影象塊都能提升這個真實樣本比例,而且原始樣本越大,裁切後樣本越小,則真實樣本比例越高。CFLM和BACF都屬於傷筋動骨類方法,沒有閉合解,採用Alternating Direction Method of Multipliers(ADMM)迭代求解最優化。按照論文,僅灰度特徵的CFLM是基於MOSSE的,加了2倍padding用於裁切出原始目標大小的影象塊(即相當於裁切後不加padding),雖然效能真的很差,但速度有87.1FPS,而多通道HOG特徵的BACF,加入類SAMF多尺度,效能全面超過SRDCF,在OTB50上竟然超過了VOT2016排第一名的C-COT,速度竟然有35FPS,感覺比SRDCF方法更有潛力,具體細節等作者公開程式碼實測Hamed Kiani 推薦先實測如果比較好再使用

其實可以看出來這兩個解決方案挺像的,2015年,都是用更大的檢測和更新影象塊,訓練作用域比較小的相關濾波器。VOT2015相關濾波方面還有排在第二名,結合深度特徵DeepSRDCF,因為深度特徵都非常慢,在CPU上別說高速,實時都到不了,所以放在最後面,和HCF、C-COT、最新ECO一起討論。

/*************************************我是分割線**********************************************/

彈指一揮間就到了VOT2016競賽 VOT2016 Challenge | Home,依然是VOT2015那60個序列,不過這次做了重新標註更加公平合理,今年有70位參賽選手,意料之中深度學習已經雄霸天下了,8個純CNN方法和6個結合深度特徵的CF方法大都名列前茅,還有一片的CF方法,最最最重要的是,良心舉辦方竟然公開了他們能拿到的38個tracker,部分tracker程式碼和主頁,下載地址VOT2016 Challenge | Trackers (以後媽媽再也不用擔心我找不到原始碼了),注意部分是下載連結,部分是原始碼壓縮包,部分原始碼是二進位制檔案,好不好用一試便知,方便對比和研究,需要的趕快去試試。馬上來看競賽結果(這裡僅列舉前60個):


標出來了前面介紹過的或比較重要的方法,結合多層深度特徵的相關濾波C-COT排第一名,而CNN方法TCNN是VOT2016的冠軍,作者和MDNet是同一人,純顏色方法DAT和ASMS都在中等水平,其他tracker的情況請參考論文(張開華老師的STC,排名很穩定在倒數第6)。再來看速度,SMACF沒有公開程式碼,ASMS依然那麼快,排在前10的方法中也有兩個速度比較快,分別是排第5的Staple,和其改進演算法排第9的STAPLE+,而且STAPLE+是今年的推薦實時演算法。首先恭喜Luca Bertinetto大牛的SiamFC和Staple都表現非常不錯,然後在為大牛默哀三分鐘(VOT2016的paper原文):


This was particularly obvious in case of SiamFC trackers, which runs orders higher than realtime (albeit on GPU), and Staple, which is realtime, but are incorrectly among the non-realtime trackers.

VOT2016竟然發生了烏龍事件,Staple在論文中是80FPS,怎麼EFO在這裡只有11?幸好公開程式碼有Staple和STAPLE+,有興趣您可以去實測下,雖然我電腦不如Luca Bertinetto大牛,但Staple我也能跑60-70FPS,而更可笑的是,STAPLE+比Staple慢了大約7-8倍,竟然EFO高出4倍,到底怎麼回事呢?

首先看Staple的程式碼,如果您直接下載Staple並設定params.visualization = 1來跑,Staple呼叫Computer Vision System Toolbox來顯示序列影象,而恰好如果您沒有這個工具箱,預設每幀都會用imshow(im)來顯示影象所以非常非常慢,而設定params.visualization = 0就跑的飛快(作者你是孫猴子派來的逗逼嗎),建議您將顯示影象部分程式碼替換成DSST中對應部分程式碼就可以正常跑和顯示了。

再來看STAPLE+的程式碼,改進包括額外從顏色概率圖中提取HOG特徵,特徵增加到56通道(Staple是28通道),平移檢測額外加入了大位移光流運動估計的響應,所以才會這麼慢,而且肯定會這麼慢。

所以很大可能是VOT舉辦方把Staple和STAPLE+的EFO弄反了VOT2016的實時推薦演算法應該是排第5的Staple,相關濾波結合顏色方法,沒有深度特徵更沒有CNN,跑80FPS還能排在第五,這就是接下來主要介紹的,2016年最NIUBILITY的目標跟蹤演算法之一Staple。

顏色特徵,在目標跟蹤中顏色是個非常重要的特徵,不管多少個人在一起,只要目標穿不用顏色的一幅就非常明顯。前面介紹過2014年CVPR的CN是相關濾波框架下的模板顏色方法,這裡隆重介紹統計顏色特徵方法DAT Learning, Recognition, and Surveillance @ ICG :

· Possegger H, Mauthner T, Bischof H. In defense of color-based model-free tracking [C]// CVPR, 2015.

統計前景目標和背景區域的顏色直方圖並歸一化,這就是前景和背景的概率模型,以後每幀線性插值更新顏色直方圖;檢測時對檢測區域每個畫素,根據其顏色值貝葉斯方法判別這個畫素屬於前景的概率,得到畫素級顏色概率圖,在加上高斯權值函式抑制邊緣相似顏色物體,就能得到目標的區域了:


具體定位和尺度方法請參考論文。DAT在VOT上都略高於ASMS,幀率15FPS,這就是顏色保衛戰DAT。

如果要簡單介紹Luca Bertinetto(牛津大學)的Staple Staple tracker,那就是把模板特徵方法DSST(基於DCF)和統計特徵方法DAT結合:

· Bertinetto L, Valmadre J, Golodetz S, et al. Staple: Complementary Learners for Real-Time Tracking [C]// CVPR, 2016.

前面分析了相關濾波模板類特徵(HOG)對快速變形和快速運動效果不好,但對運動模糊光照變化等情況比較好;而顏色統計特徵(顏色直方圖)對變形不敏感,而且不屬於相關濾波框架沒有邊界效應,快速運動當然也是沒問題的,但對光照變化和背景相似顏色不好。綜上,這兩類方法可以互補,也就是說DSST和DAT可以互補結合:


簡單嗎?非常不簡單,兩個框架的演算法高效無縫結合,25FPS的DSST和15FPS的DAT,而結合後速度竟然達到了80FPS。DSST框架把跟蹤劃分為兩個問題,即平移檢測和尺度檢測,DAT就加在平移檢測部分,相關濾波有一個響應圖,畫素級前景概率也有一個響應圖,兩個響應圖線性加權得到最終響應圖,其他部分與DSST類似,平移濾波器、尺度濾波器和顏色概率模型都以固定學習率線性加權更新。

· 同樣是顏色特徵,DSST+DAT換成DSST用HOG+CN一樣嗎?

肯定是不一樣的。1. CN特徵是模板類特徵,DAT中統計顏色直方圖是概率特徵,舉個例子,跟蹤目標是人,穿白色上衣,黑色褲子,CN特徵學習到上白下黑的模板,顏色直方圖學習到目標60%是白色,40%是黑色。如果這個人倒立了,CN模板對不上就認為這個不是目標,而顏色直方圖依然60%白40%黑,判定就是目標。2. HOG+CN任然在相關濾波框架中,具有相關濾波的固有缺陷,而畫素級概率顏色概率響應不受這一影響,能正確檢測快速變形和快速運動情況,某種程度上來說DAT緩解了CF的邊界效應

· Staple為什麼能控制計算量,比DSST和DAT都快還不損失效能?

首先,Staple中檢測和更新的影象塊大小限制在150*150以內,即HOG特徵解析度在38*38以內,這樣DSST的速度就會很快。但前面也分析過即使2因子下采樣精度已經比較低了,那為什麼Staple的精度不受影響呢?因為平移相關濾波響應和顏色概率響應要線性加權,而顏色概率響應得解析度在150*150左右下降不是很多,這就彌補了平移相關濾波的精度損失。舉個例子,原始檢測影象塊解析度是400*400,如果限制解析度到100*100,HOG特徵解析度是25*25,響應圖也是25*25,1畫素位移對應跟蹤框16畫素位移;而加入DAT後,顏色概率響應解析度是100*100,相關濾波響應先上取樣到100*100,再兩個響應結合,最終響應的解析度是100*100,1畫素位移對應跟蹤框4畫素位移,跟蹤精度提高了很多且保持低計算量。其次,畫素級顏色概率圖到顏色概率響應採用積分圖加速計算,積分圖是加速神器不用多說。這兩種策略分別提高了DSST和DAT的速度,而且Staple並沒有破壞封閉解,所以非常非常之NIUBILITY。

· 兩種響應圖線性加權,會不會太簡單,效果不夠好?

具體實現中採用比較簡單的線性加權,最終響應 = (0.7*相關濾波響應 + 0.3*顏色概率響應),可以看出Staple更加相信相關濾波的結果,而顏色概率只是起到輔助作用,看程式碼作者實現了另一種加權方式'fit_gaussian',可能效果不好最終沒用。


相關濾波響應值是判別器輸出的置信度,可以表示平移濾波器的可靠程度,跟蹤越可靠峰值越大;顏色概率響應值表示當前畫素點屬於前景的置信度,畫素點及附近畫素屬於前景的概率越高,響應值越大,也可以表示顏色概率模型的可靠程度。所以作者說這種線性加權是置信度加權,CF代表相關濾波的峰值點,PWP代表顏色概率響應的峰值點:

1. 如果CF和PWP大小相似時,以相關濾波響應為主,顏色響應僅微調跟蹤框的位置;

2. 如果CF比較大,PWP比較小時,說明相關濾波響應更可靠,此時顏色概率響應幾乎沒有貢獻;

3. 如果CF比較小,PWP比較大時,說明顏色響應更可靠,以顏色峰值所在區域的CF區域性峰值為主;

以上就是非常推薦而且比較快的Staple,在VOT資料庫上效能非常高,前面也提到過顏色特徵方法在OTB上不會很好,在OTB50上Staple略低於SRDCF。

Staple雖然簡單高效,但也有不足之處,例如,僅以峰值判斷置信度並不可靠,以上策略並不總是正確的。如果能有更全面可靠的指標,讓我們知道相關濾波的檢測置信度,那加權係數就可以自適應確定,在相關濾波檢測置信度較低時更多地相信顏色概率的結果,也許會更加合理(個人拙見僅供參考)。也可以用更好的模板特徵和統計特徵在這個框架中完美結合,提升效能。

另一種相關濾波結合顏色概率的方法是CSR-DCF:

· Lukežič A, Vojíř T, Čehovin L, et al. Discriminative Correlation Filter with Channel and Spatial Reliability [C]// CVPR, 2017.

CSR-DCF基於DSST(基於DCF),提出了空域和通道可靠性,空域可靠性通過前背景顏色直方圖概率和中心先驗計算空域二值約束掩膜,讓濾波器僅學習和跟蹤顏色比較顯著的目標部分,緩解邊界效應:


通道可靠性用於區分檢測時每個通道的權重,由兩個指標決定:訓練通道可靠性指標表示響應峰值越大的通道可靠性越高,檢測可靠性指標表示響應圖中第二和第一主模式之間的比值:


其實,CSR-DCF中的空域可靠性得到的二值掩膜就類似於CFLM中的淹膜矩陣P,在這裡自適應選擇更容易跟蹤的目標區域且減小邊界效應;以往多通道特徵都是直接求和,CSR-DCF中通道採用加權求和,而通道可靠性就是那個自適應加權係數。CSR-DCF也屬於傷筋動骨類方法,和CFLM一樣也用ADMM迭代優化求解。同樣是顏色方法,僅HOG+CN特徵的CSR-DCF,在OTB100上接近SRDCF,在VOT2015上超過DeepSRDCF,在VOT2016上超過C-COT,速度13FPS,感覺也是非常NIUBILITY,等程式碼實測吧,如果非常注重效能,那這個接近實時的方法也非常推薦CSR-DCF這裡簡單寫一下,這個回答已經很長了,以後開了專欄會詳細介紹和探討的

/*************************************我是分割線**********************************************/

相關濾波和long-term及跟蹤置信度指標,LCT, LMCF詳解

/*************************************我是分割線**********************************************/

深度特徵的相關濾波DeepSRDCF, HCF, C-COT, ECO詳解

/*************************************我是分割線**********************************************/

期待2017年目標跟蹤能有更大突破,靜候CVPR2017, ICCV2017和VOT2017。