[Object Tracking] Overview of algorithms for Object Tracking


From: https://www.zhihu.com/question/26493945

可以載入史冊的知乎貼

目標跟蹤之NIUBILITY的相關濾波 - 專注於分享目標跟蹤中非常高效快速的相關濾波方法


【1】

跟蹤是一個很混亂的方向。

比如TLD、CT、Struct這些效果不錯的Tracker其實都不是單純的Tracker了。

 

09年的時候我記得比較流行的是Particle Filtering, 或者一些MeanShift/CamShift的變形,比如特征變了,比如對問題的假設變了。

后來突然出現一些tracking by detection的方法,之前的很多朋友就覺得這是耍流氓。

比如TLD,嚴格的跟蹤算法也許只是里面的Forward/Backward Opitcal Flow的部分,但是效果很Impressive,所以不管怎樣,一下就火了。

Goto: Tracking-by-detecion/learning(1): My beginning

之后所謂的跟蹤就不再是一個傳統的跟蹤問題,而是一個綜合的工程問題。online learning,random projection ,sparse learning的東西都加進來,大家其實到底是在做跟蹤還是在做檢測或者online learning,其實已經不重要,因為衡量的標准是你在某些public dataset上的精度。

 

但這些對實際的項目有沒有幫助呢?

這是個很有意思的地方,在很多時候,我們之所以需要跟蹤算法,是因為我們的檢測算法很慢,跟蹤很快。基本上當前排名前幾的跟蹤算法都很難用在這樣的情況下,因為你實際的速度已經太慢了,比如TLD,CT,還有Struct,如果目標超過十個,基本上就炸了。

況且還有些跟蹤算法自己drift掉了也不知道,比如第一版本的CT是無法處理drift的問題的,TLD是可以的,究其原因還是因為檢測算法比較魯棒啊……

 

實際中我覺得速度極快,實現也簡單的純跟蹤算法居然是NCCOverlap (山寨名字)

  • NCC很簡單,這個是對點進行的,對於區域也有很多變種,網上有一些相關的資源。
  • Overlap是我取的名字,一般用在視頻里面,假如你的攝像頭是靜止的,背景建模之后出來的前景可以是一個一個的blob,對相鄰兩幀的blob檢測是否Overlap就可以得到track。在一些真實場景下,這個算法是非常有效的。關於背景template的問題在真實的視頻里面也是很好解決的。

 

以上說的跟蹤是指給定一個視頻幀中的物體區域,然后跟蹤住這個物體。其他地方也有一些跟蹤,比如里,但是問題域不一樣。略去。
Jeff: 時間有限,本人只關心移動攝像頭的跟蹤算法。

 

 

【2】

先來混個臉熟,大概了解一下目標跟蹤這個方向都有些什么。一切要從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發到TPAMI,有100個序列,難度更大更加權威,我們這里參考OTB100的結果,首先是29個tracker的情況(標出了一些性能速度都比較好的算法):

接下來再看結果(更加詳細的情況建議您去看論文比較清晰):

直接上結論:平均來看Struck, SCM, ASLA等算法的性能比較高,排在前三。

着重強調CSK,第一次向世人展示了相關濾波的潛力,排第四還362FPS簡直逆天了。

速度排第二的是經典算法CT(64fps) (這段時間是壓縮感知大熱的時候,這里能看到很多稀疏相關算法 ~ 都是歷史)。如果對更早期的算法感興趣,推薦另一篇經典的survey(反正我是沒興趣也沒看過):

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

 

神經網絡來了!

2012年以前的算法基本就是這樣,自從2012年AlexNet問世以后,CV各個領域都有了巨大變化,

所以,我猜你肯定還想知道2013到2017年發生了什么,抱歉我也不知道(容我賣個關子),不過我們可以肯定的是,

2013年以后的論文確定以及必定都會引用OTB50這篇論文,借助谷歌學術中的被引用次數功能,得到如下結果:略。

這里僅列舉幾個排名靠前的,(注意引用量)依次是Struck轉TPAMI, 三大相關濾波方法KCF, CN, DSST,VOT競賽這里僅作示范,有興趣可以親自去試試。

Jeff: KCF是基於顏色、亮度的方法

 

(這么做的理論依據是:一篇論文,在它之前的工作可以看作它的引用文獻,之后的工作可以看誰引用了它;

雖然引用量並不能說明什么,但好的方法大家基本都會引用的(表示認可);

之后還可以通過限定時間來查看某段時間的相關論文,如2016-2017就能找到最新的論文了,至於論文質量需要仔細甄別;

其他方向的重要論文也可以這么用,順藤摸瓜,然后你就知道大牛是哪幾位,接着關注跟蹤一下他們的工作 )

 

這樣我們就大致知道目標跟蹤領域的最新進展應該就是相關濾波無疑了,再往后還能看到相關濾波類算法有SAMF, LCT, HCF, SRDCF等等。

當然,引用量也與時間有關,建議分每年來看,這里就不貼圖了(相關濾波類新論文也可以通過查引用KCF的論文去找)。

此外,最新版本OPENCV3.2除了TLD,也包括了幾個很新的跟蹤算法 OpenCV: Tracking API

TrackerKCF接口實現了KCFCN,影響力可見一斑,這一點就可以說明很多問題了,還有個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。

至於哪個更好,看你,和你的需求。

 

補充

OTB在2013年公開了,對於2013以后的算法是透明的,有調參的可能性,尤其是那些只跑OTB,而且論文中有關鍵參數直接給出還精確到小數點后兩位的算法,建議您先實測再評價(人心不古啊~被坑的多了),

VOT競賽的數據庫是每年更新,還動不動就重新標注,動不動就改變評價指標,對當年算法是不可見且難度很大的,所以結果更可靠。

如果您認可以上看法,后面會推薦很多在我看來頂尖又快速的算法。如果您不認可以上看法,后面也就沒必要看下去了,謝謝!

看每篇論文都會覺得這個工作太好太重要了,如果沒有這篇論文,必會地球爆炸,宇宙重啟~~所以就像大家都通過歷年ILSVRC競賽結果為主線了解深度學習的發展一樣,第三方的結果更具說服力,所以我也以競賽排名+是否公開源碼+實測性能為標准分析每個方法

 

 


 

目標視覺跟蹤(Visual Object Tracking)

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

 

生成類方法

在當前幀對目標區域建模,下一幀尋找與模型最相似的區域就是預測位置,比較著名的有卡爾曼濾波,粒子濾波,mean-shift等。(對下一時刻做出預測)

舉個例子,從當前幀知道了目標區域80%是紅色,20%是綠色,然后在下一幀,搜索算法就像無頭蒼蠅,到處去找最符合這個顏色比例的區域,推薦算法ASMS vojirt/asms

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

 

ASMS是VOT2015的第20名官方推薦的實時算法,VOT2016的32名(中等水平),平均幀率125FPS,在經典mean-shift框架下加入了尺度估計經典顏色直方圖特征,加入了兩個先驗(尺度不劇變+可能偏最大)作為正則項,和反向尺度一致性檢查。

作者給了C++代碼,在相關濾波和深度學習盛行的年代,還能看到mean-shift打榜還有如此高的性價比實在不容易(已淚目~~),實測性能還不錯,如果您對生成類方法情有獨鍾,這個非常推薦您去試試。

 

判別類方法

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

  

與生成類方法最大的區別,是分類器訓練過程中用到了背景信息,這樣分類器就能專注區分前景和背景,所以判別類方法普遍都比生成類好。

舉個例子,在訓練時告訴tracker目標80%是紅色,20%是綠色,還告訴它背景中有橘紅色,要格外注意別搞錯了,這樣的分類器知道更多信息,效果也肯定更好。

tracking-by-detection檢測算法 非常相似,如:

    • 經典行人檢測:HOG+SVM,
    • Struck用:haar+structured output SVM,

跟蹤中為了尺度自適應也需要多尺度遍歷搜索,區別僅在於跟蹤算法對特征和在線機器學習的速度要求更高,檢測范圍和尺度更小而已。

 

這點其實並不意外,大多數情況檢測識別算法復雜度比較高不可能每幀都做,這時候用復雜度更低的跟蹤算法就很合適了,只需要在跟蹤失敗(drift)或一定間隔以后再次檢測去初始化tracker就可以了。

其實我就想說,FPS才是最重要的指標,慢的要死的算法可以去死了(喂同學,別這么偏激,速度可以慢慢優化嘛)。

經典判別類方法推薦StruckTLD,都能實時性能還行,Struck是2012年之前最好的方法,TLD是經典long-term的代表,即使效果差一點但思想非常值得借鑒:

    • Hare S, Golodetz S, Saffari A, et al. Struck: Structured output tracking with kernels [J]. IEEE TPAMI, 2016.
    • Kalal Z, Mikolajczyk K, Matas J. Tracking-learning-detection [J]. IEEE TPAMI, 2012.

 

長江后浪推前浪,前面的已被排在沙灘上

后浪就是:

    • 相關濾波類方法    (correlation filter簡稱CF,或discriminative correlation filter簡稱DCF,注意和后面KCF中的DCF方法區別,包括前面提到的那幾個,后面要着重介紹)
    • 深度學習(Deep ConvNet based)類方法

因為深度學習類並不了解就不瞎推薦了,除了

速度方面比較突出的如:(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,在VOT中能看到身影。

最后,深度學習End2End的強大威力在目標跟蹤方向還遠沒有發揮出來,還沒有和相關濾波類方法拉開多大差距 (速度慢是天生的我不怪你,但效果總該很高吧,不然你存在的意義是什么呢。。革命尚未成功,同志仍須努力)

 

最后強力推薦

維護的資源 benchmark_results:大量 頂級方法在OTB庫上的性能對比,各種論文代碼應有盡有,大神自己C++實現並開源的 CSK, KCFDAT,找不着路的同學請跟緊,別迷路  foolwood/benchmark_results,還有他自己最新論文DCFNet論文加源碼,別錯過。
 
再隆重推薦
維護的 相關濾波類資源  HakaseH/CF_benchmark_results ,詳細分類和論文代碼資源,走過路過別錯過,是我見過的最詳盡的相關濾波資源,可見非常之用心!

 

 

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

這是KCF/DCF算法在OTB50上(2014年4月就掛arVix了, 那時候OTB100還沒有發表)的實驗結果,Precision和FPS碾壓了OTB50上最好的Struck,

看慣了勉強實時的Struck和TLD,飆到高速的KCF/DCF突然有點讓人不敢相信,其實KCF/DCF就是在OTB上大放異彩的CSK的多通道特征改進算法。

注意到那個超高速615FPSMOSSE了吧(嚴重超速這是您的罰單),這是目標跟蹤領域的第一篇相關濾波類方法,這其實是真正第一次顯示了相關濾波的潛力。

和KCF同一時期的還有個CN,在2014'CVPR上引起劇烈反響的顏色特征方法,其實也是CSK的多通道顏色特征改進算法。

從 MOSSE(615)到 CSK(362) 再到 KCF(172FPS), DCF(292FPS), CN(152FPS), CN2(202FPS),速度雖然是越來越慢,但效果越來越好,而且始終保持在高速水平:

    • 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(牛津大學João F. Henriques 大神先后兩篇論文,影響后來很多工作的嶺回歸,循環移位的近似密集采樣,還給出了整個相關濾波算法的詳細推導。還有嶺回歸加kernel-trick的封閉解,多通道HOG特征。

Martin Danelljan大牛(林雪平大學) 用多通道顏色特征Color Names(CN) 去擴展CSK得到了不錯的效果,算法也簡稱CN Coloring Visual Tracking

MOSSE是單通道灰度特征的相關濾波,

CSKMOSSE的基礎上擴展了密集采樣(加padding)和kernel-trick,

KCFCSK的基礎上擴展了多通道梯度的HOG特征,

CNCSK的基礎上擴展了多通道顏色的Color Names。

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特征的復雜度是,而單通道灰度特征的復雜度是10000 log(10000) = 40000 ,結果也是相差不多,符合表格 (不知道這種算法對不對,如果有誤請指出,謝謝)。

看代碼你會發現,作者在擴展后目標區域面積較大時,會先對提取到的圖像塊做因子2的下采樣,到50*50這樣復雜度就變成了2500 log(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.

一句話,別看那些五花八門的機器學習方法,那都是虛的,目標跟蹤算法中特征才是最重要的(就是因為這篇文章我成了WIN叔粉絲,哈哈)。

 

以上就是前三個首先推薦的高速算法,CSK, KCF/DCFCN(Jeff: 需自己請自實驗)

 

 

2014 - 多尺度的博弈

VOT2014競賽 VOT2014 Benchmark 。這一年有25個精挑細選的序列,38個算法,那時候深度學習的戰火還沒有燒到tracking,所以也只能CF獨霸一方了,下面是前幾名的具體情況:

前三名都是相關濾波CF類方法,第三名的KCF已經很熟悉了,這里稍微有點區別就是加了多尺度檢測子像素峰值估計,再加上VOT序列的分辨率比較高(檢測更新圖像塊的分辨率比較高),導致KCF的速度只有24.23(EFO換算66.6FPS)。

這里的speed指的的EFO(Equivalent Filter Operations),在VOT2015和VOT2016里面也用這個參數衡量算法速度,這里一次性列出來供參考(MATLAB實現的tracker實際速度要更高一些):

 

 

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

 

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

推薦SAMF ihpdep/samf,來自浙大的工作,基於KCF,特征是HOG+CN,多尺度方法是平移濾波器在多尺度縮放的圖像塊上進行目標檢測,取響應最大的那個平移位置和響應所在尺度:

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

和Martin Danelljan的DSST Accurate scale estimation for visual tracking ,專門訓練類似MOSSE的尺度濾波器用於檢測尺度變化,開創了平移濾波+尺度濾波,之后轉PAMI做了一系列加速:

    • 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.

 

簡單對比下這兩種多尺度方法:

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的尺度數量不能輕易減少;
  • 如果尺度變化不明顯則不推薦使用。

 

 

 

2015 - 深度學習開始進擊tracking

VOT2015競賽 VOT2015 Challenge | Home 如期而至,這一年有60個精挑細選的序列,62個tracker,最大看點是深度學習開始進擊tracking,MDNet直接拿下當年的冠軍,而結合深度特征的相關濾波方法DeepSRDCF是第二名,

主要解決邊界效應的SRDCF僅HOG特征排在第四:

 

隨着VOT競賽的影響力擴大,舉辦方也是用心良苦,經典的和頂尖的齊聚一堂,百家爭鳴,多達62個tracker皇城PK,華山論劍。

除了前面介紹的深度學習和相關濾波,還有

  • 結合object proposals(類物體區域檢測)的EBT(EBT:Proposal與Tracking不得不說的秘密 - 知乎專欄)排第三,
  • Mean-Shift類顏色算法ASMS是推薦實時算法
  • 還請注意另一個顏色算法DAT
  • 第9的那個Struck已經不是原來的了。
  • 除此之外,還能看到經典方法如OAB, STC, CMT, CT, NCC等都排在倒數位置,

經典方法已經被遠遠拉開了距離,所以在決定用那些經典方法之前,可以先測試幾個新算法看看,說不定有驚喜。

 

在介紹SRDCF之前,先來分析下相關濾波有什么缺點。總體來說,相關濾波類方法對快速變形和快速運動情況的跟蹤效果不好

快速變形主要因為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),推薦兩個主流的解決邊界效應的方法,但速度比較慢,並不推薦用於實時場合

 

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),同時加入空域正則化,懲罰邊界區域的濾波器系數,沒有閉合解,采用高斯-塞德爾方法迭代優化。

另一種方法是Hamed Kiani提出的基於灰度特征MOSSE的CFLM Correlation Filters with Limited Boundaries 和基於HOG特征的BACF,主要思路是采用較大尺寸檢測圖像塊和較小尺寸濾波器來提高真實樣本的比例,或者說濾波器填充0以保持和檢測圖像一樣大,同樣沒有閉合解,采用ADMM迭代優化:

  • 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.

其實這兩個解決方案挺像的,都是用更大的檢測和更新圖像塊,訓練作用域比較小的相關濾波器,不同點是SRDCF的濾波器系數從中心到邊緣平滑過渡到0,而CFLM直接用0填充濾波器邊緣。

VOT2015相關濾波方面還有排在第二名,結合深度特征DeepSRDCF,因為深度特征都非常慢,在CPU上別說高速,實時都到不了,雖然性能非常高,但這里就不推薦,先跳過。

 

 

2016 - 深度學習已雄霸天下

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是同一人,純顏色方法DATASMS都在中等水平(其實兩種方法實測表現非常接近),其他tracker的情況請參考論文。

再來看速度,SMACF沒有公開代碼,ASMS依然那么快,排在前10的方法中也有兩個速度比較快,分別是排第5的Staple,和其改進算法排第9的STAPLE+,而且STAPLE+是今年的推薦實時算法

首先恭喜Luca Bertinetto大牛的SiamFCStaple都表現非常不錯,然后再為大牛默哀三分鍾(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 ,幀率15FPS:

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

如果要用一句話介紹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類似,平移濾波器、尺度濾波器和顏色概率模型都以固定學習率線性加權更新。

 

另一種相關濾波結合顏色概率的方法是CSR-DCF,提出了空域可靠性和通道可靠性,13FPS性能直逼C-COT:

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

CSR-DCF中的空域可靠性得到的二值掩膜就類似於CFLM中的掩膜矩陣P,在這里自適應選擇更容易跟蹤的目標區域且減小邊界效應;以往多通道特征都是直接求和,而CSR-DCF中通道采用加權求和,而通道可靠性就是那個自適應加權系數。采用ADMM迭代優化。

相關濾波還有第一名的C-COT,和DeepSRDCF一樣先跳過。

 

 

Long-term Tracking

以前提到的很多CF算法,也包括VOT競賽,都是針對short-term的跟蹤問題,即短期跟蹤,我們只關注短期內(如100~500幀)跟蹤是否准確。但在實際應用場合,我們希望正確跟蹤時間長一點,如幾分鍾或十幾分鍾,這就是長期跟蹤問題。

Long-term就是希望tracker能長期正確跟蹤,我們分析了前面介紹的方法不適合這種應用場合,必須是short-term tracker + detecter配合才能實現正確的長期跟蹤。

用一句話介紹Long-term,就是給普通tracker配一個detecter,在發現跟蹤出錯的時候調用自帶detecter重新檢測並矯正tracker。

 

接下來介紹CF方向一篇比較有代表性的long-term方法,馬超大神的LCT chaoma99/lct-tracker

    • Ma C, Yang X, Zhang C, et al. Long-term correlation tracking[C]// CVPR, 2015.

LCT在DSST一個平移相關濾波Rc和一個尺度相關濾波的基礎上,又加入第三個負責檢測目標置信度的相關濾波Rt,檢測模塊Online Detector是TLD中所用的隨機蔟分類器(random fern),在代碼中改為SVM。

第三個相關濾波類似MOSSE不加padding,而且特征也不加cosine窗,放在平移檢測之后。

LCT加入檢測機制,對遮擋和出視野等情況理論上較好,速度27fps,實驗只跑了OTB-2013,跟蹤精度非常高,根據其他論文LCT在OTB-2015和 VOT上效果略差一點可能是兩個核心閾值沒有自適應, 關於long-term,TLD和LCT的思想都值得參考 。

 

 

跟蹤置信度

接下來介紹跟蹤置信度。 跟蹤算法需要能反映每一次跟蹤結果的可靠程度,這一點非常重要,不然就可能造成跟丟了還不知道的情況。 有兩種指標可以反映相關濾波類方法的跟蹤置信度:前面見過的最大響應值,和沒見過的響應模式,或者綜合反映這兩點的指標。

LMCF(MM Wang的目標跟蹤專欄:目標跟蹤算法 - 知乎專欄 )提出了多峰檢測和高置信度更新:

  • Wang M, Liu Y, Huang Z. Large Margin Object Tracking with Circulant Feature Maps [C]// CVPR, 2017.

高置信度更新只有在跟蹤置信度比較高的時候才更新跟蹤模型,避免目標模型被污染,同時提升速度。

第一個置信度指標是最大響應分數Fmax,就是最大響應值(Staple和LCT中都有提到)。

第二個置信度指標是平均峰值相關能量(average peak-to correlation energy, APCE),反應響應圖的波動程度和檢測目標的置信水平,這個(可能)是目前最好的指標,推薦:

跟蹤置信度指標還有,MOSSE中的峰值旁瓣比(Peak to Sidelobe Ratio, PSR), 由相關濾波峰值,與11*11峰值窗口以外旁瓣的均值與標准差計算得到,推薦:

跟蹤置信度指標還有,在CSR-DCF的空域可靠性中,也用了兩個類似指標反映通道可靠性, 第一個指標也是每個通道的最大響應峰值,就是Fmax,第二個指標是響應圖中第二和第一主模式之間的比率,反映每個通道響應中主模式的表現力,但需要先做極大值檢測:

以上就是目前相關濾波方法中提到的比較好的跟蹤置信度指標。

 

 

結合深度特征的相關濾波方法

最后這部分是Martin Danelljan的專場,主要介紹他的一些列工作,尤其是結合深度特征的相關濾波方法,代碼都在他主頁Visual Tracking,就不一一貼出了。

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

CN中提出了非常重要的多通道顏色特征Color Names,用於CSK框架取得非常好得效果,還提出了加速算法CN2,通過類PCA的自適應降維方法,對特征通道數量降維(10 -> 2),平滑項增加跨越不同特征子空間時的代價,也就是PCA中的協方差矩陣線性更新防止降維矩陣變化太大。

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

DSST是VOT2014的第一名,開創了平移濾波+尺度濾波的方式。在fDSST中對DSST進行加速,PCA方法將平移濾波HOG特征的通道降維(31 -> 18),QR方法將尺度濾波器~1000*17的特征降維到17*17,最后用三角插值(頻域插值)將尺度數量從17插值到33以獲得更精確的尺度定位。

SRDCF是VOT2015的第四名,為了減輕邊界效應擴大檢測區域,優化目標增加了空間約束項,用高斯-塞德爾方法迭代優化,並用牛頓法迭代優化平移檢測的子網格精確目標定位。

  • Danelljan M, Hager G, Shahbaz Khan F, et al. Adaptive decontamination of the training set: A unified formulation for discriminative visual tracking [C]// CVPR, 2016.

SRDCFdecon在SRDCF的基礎上,改進了樣本和學習率問題。以前的相關濾波都是固定學習率線性加權更新模型,雖然這樣比較簡單不用保存以前樣本,但在定位不准確、遮擋、背景擾動等情況會污染模型導致漂移。SRDCFdecon選擇保存以往樣本(圖像塊包括正,負樣本),在優化目標函數中添加樣本權重參數和正則項,采用交替凸搜索,首先固定樣本權重,高斯-塞德爾方法迭代優化模型參數,然后固定模型參數,凸二次規划方法優化樣本權重。

  • Danelljan M, Hager G, Shahbaz Khan F, et al. Convolutional features for correlation filter based visual tracking [C]// ICCVW, 2015.

DeepSRDCF是VOT2015的第二名,將SRDCF中的HOG特征替換為CNN中單層卷積層的深度特征(也就是卷積網絡的激活值),效果有了極大提升。

這里用imagenet-vgg-2048 network,VGG網絡的遷移能力比較強,而且MatConvNet就是VGG組的,MATLAB調用非常方便。論文還測試了不同卷積層在目標跟蹤任務中的表現:

第1層表現最好,第2和第5次之。由於卷積層數越高語義信息越多,但紋理細節越少,從1到4層越來越差的原因之一就是特征圖的分辨率越來越低,但第5層反而很高,是因為包括完整的語義信息,判別力比較強(本來就是用來做識別的)。

 

注意區分這里的深度特征基於深度學習的方法

  • 深度特征來自ImageNet上預訓練的圖像分類網絡,沒有fine-turn這一過程,不存在過擬合的問題。
  • 基於深度學習的方法大多需要在跟蹤序列上end-to-end訓練或fine-turn,如果樣本數量和多樣性有限就很可能過擬合。
    • Ma C, Huang J B, Yang X, et al. Hierarchical convolutional features for visual tracking [C]// ICCV, 2015.
  

 

值得一提的還有馬超大神的HCF,結合多層卷積特征提升效果,用了VGG19的Conv5-4, Conv4-4和Conv3-4的激活值作為特征,所有特征都縮放到圖像塊分辨率,雖然按照論文應該是由粗到細確定目標,但代碼中比較直接,三種卷積層的響應以固定權值1, 0.5, 0.02線性加權作為最終響應。

雖然用了多層卷積特征,但沒有關注邊界效應而且線性加權的方式過於簡單,HCF在VOT2016僅排在28名(單層卷積深度特征的DeepSRDCF是第13名)。

  • Danelljan M, Robinson A, Khan F S, et al. Beyond correlation filters: Learning continuous convolution operators for visual tracking [C]// ECCV, 2016.
  

 

 

C-COT是VOT2016的第一名,綜合了SRDCF的空域正則化和SRDCFdecon的自適應樣本權重,還將DeepSRDCF的單層卷積的深度特征擴展為多成卷積的深度特征(VGG第1和5層),為了應對不同卷積層分辨率不同的問題,提出了連續空間域插值轉換操作,在訓練之前通過頻域隱式插值將特征圖插值到連續空域,方便集成多分辨率特征圖,並且保持定位的高精度。目標函數通過共軛梯度下降方法迭代優化,比高斯-塞德爾方法要快,自適應樣本權值直接采用先驗權值,沒有交替凸優化過程,檢測中用牛頓法迭代優化目標位置。

 

 

2017 - 又好又快,不忘初心

注意以上SRDCF, SRDCFdecon,DeepSRDCF,C-COT都無法實時,這一系列工作雖然效果越來越好,但也越來越復雜,在相關濾波越來越慢失去速度優勢的時候,Martin Danelljan2017CVPRECO來了一腳急剎車,大神來告訴我們什么叫又好又快,不忘初心:

  • Danelljan M, Bhat G, Khan F S, et al. ECO: Efficient Convolution Operators for Tracking [C]      // CVPR, 2017.

ECO是C-COT的加速版,從模型大小、樣本集大小和更新策略三個方便加速,速度比C-COT提升了20倍,加量還減價,EAO提升了13.3%,最最最厲害的是, hand-crafted features的ECO-HC有60FPS。。吹完了,來看看具體做法。

 

第一, 減少模型參數,定義了factorized convolution operator(分解卷積操作),效果類似PCA,用PCA初始化,然后僅在第一幀優化這個降維矩陣,以后幀都直接用,簡單來說就是有監督降維,深度特征時模型參數減少了80%。

第二, 減少樣本數量, compact generative model(緊湊的樣本集生成模型),采用Gaussian Mixture Model (GMM)合並相似樣本,建立更具代表性和多樣性的樣本集,需要保存和優化的樣本集數量降到C-COT的1/8。

 

第三, 改變更新策略,sparser updating scheme(稀疏更新策略),每隔5幀做一次優化更新模型參數,不但提高了算法速度,而且提高了對突變,遮擋等情況的穩定性。但樣本集是每幀都更新的,稀疏更新並不會錯過間隔期的樣本變化信息。

 

ECO的成功當然還有很多細節,而且有些我也看的不是很懂,總之很厲害就是了。。ECO實驗跑了四個庫(VOT2016, UAV123, OTB-2015, and TempleColor)都是第一,而且沒有過擬合的問題,僅性能來說ECO是目前最好的相關濾波算法,也有可能是最好的目標跟蹤算法。

hand-crafted features版本的ECO-HC,降維部分原來HOG+CN的42維特征降到13維,其他部分類似,實驗結果雖然沒給ECO-HC在VOT2016的結果(有跑過的告知以下。。陸然小妹妹說跑完給我結果但一直也沒給我),但其他三個都很高,而且論文給出速度是60FPS。

 

最后是來自Luca Bertinetto的CFNet End-to-end representation learning for Correlation Filter based tracking,除了上面介紹的相關濾波結合深度特征,相關濾波也可以end-to-end方式在CNN中訓練了:

  • Valmadre J, Bertinetto L, Henriques J F, et al. End-to-end representation learning for Correlation Filter based tracking [C]// CVPR, 2017.
 

 

在SiamFC的基礎上,將相關濾波也作為CNN中的一層,最重要的是cf層的前向傳播和反向傳播公式推導,兩層卷積層的CFNet在GPU上是75FPS,綜合表現並沒有很多驚艷,可能是難以處理CF層的邊界效應吧,持觀望態度。

 

目前相關濾波方向貢獻最多的是以下兩個組(有創新有代碼):

牛津大學:Joao F. HenriquesLuca Bertinetto,代表:CSK, KCF/DCF, Staple, CFNet (其他SiamFC, Learnet).

林雪平大學:Martin Danelljan,代表:CN, DSST, SRDCF, DeepSRDCF, SRDCFdecon, C-COT, ECO.

國內也有很多高校的優秀工作就不一一列舉了,大家多多關注和支持幾位老師和博士們的工作吧,反正有代碼的好論文是我來者不拒的,嘿嘿~

 

后記:筆者寫的很好,但讀完后發覺自己的方向原來不是傳說中的tracking,或者說沒有必然的關系,哈哈~


免責聲明!

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



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