相信很多來這里的人和我第一次到這里一樣,都是想找一種比較好的目標跟蹤算法,或者想對目標跟蹤這個領域有比較深入的了解,雖然這個問題是經典目標跟蹤算法,但事實上,可能我們并不需要那些曾經輝煌但已被拍在沙灘上的tracker(目標跟蹤算法),而是那些即將成為經典的,或者就目前來說最好用、速度和性能都看的過去tracker。我比較關注目標跟蹤中的相關濾波方向,接下來我幫您介紹下我所認識的目標跟蹤,尤其是相關濾波類方法,分享一些我認為比較好的算法,順便談談我的看法。
第一部分:目標跟蹤速覽
先跟幾個SOTA的tracker混個臉熟,大概了解一下目標跟蹤這個方向都有些什么。一切要從2013年的那個數據庫說起。如果你問別人近幾年有什么比較niubility的跟蹤算法,大部分人都會扔給你吳毅老師的論文,OTB50和OTB100(OTB50這里指OTB-2013,OTB100這里指OTB-2015,50和100分別代表視頻數量,方便記憶):
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.
頂會轉頂刊的頂級待遇,在加上引用量1480+320多,影響力不言而喻,已經是做tracking必須跑的數據庫了,測試代碼和序列都可以下載:Visual Tracker Benchmark(http://cvlab.hanyang.ac.kr/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)(與SCM, ASLA等都是那個年代最熱的稀疏表示)。如果對更早期的算法感興趣,推薦另一篇經典的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競賽,這里僅作示范,有興趣可以親自去試試。(這么做的理論依據是:一篇論文,在它之前的工作可以看它的引用文獻,之后的工作可以看誰引用了它;雖然引用量并不能說明什么,但好的方法大家基本都會引用的(表示尊重和認可);之后還可以通過限定時間來查看某段時間的相關論文,如2016-2017就能找到最新的論文了,至于論文質量需要仔細甄別;其他方向的重要論文也可以這么用,順藤摸瓜,然后你就知道大牛是哪幾位,接著關注跟蹤一下他們的工作 ) 這樣我們就大致知道目標跟蹤領域的最新進展應該就是相關濾波無疑了,再往后還能看到相關濾波類算法有SAMF, LCT, HCF, SRDCF等等。當然,引用量也與時間有關,建議分每年來看。此外,最新版本OPENCV3.2除了TLD,也包括了幾個很新的跟蹤算法OpenCV: Tracking API:
TrackerKCF接口實現了KCF和CN,影響力可見一斑,還有個GOTURN是基于深度學習的方法,速度雖快但精度略差,值得去看看。tracking方向的最新論文,可以跟進三大會議(CVPR/ICCV/ECCV) 和arXiv。
第二部分:背景介紹
接下來總體介紹下目標跟蹤。這里說的目標跟蹤,是通用單目標跟蹤,第一幀給個矩形框,這個框在數據庫里面是人工標注的,在實際情況下大多是檢測算法的結果,然后需要跟蹤算法在后續幀緊跟住這個框,以下是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%是綠色,然后在下一幀,搜索算法就像無頭蒼蠅,到處去找最符合這個顏色比例的區域,推薦算法ASMSvojirt/asms:
Vojir T, Noskova J, Matas J. Robust scale-adaptive mean-shift for tracking [J]. Pattern Recognition Letters, 2014.
ASMS與DAT并稱“顏色雙雄”(版權所有翻版必究),都是僅顏色特征的算法而且速度很快,依次是VOT2015的第20名和14名,在VOT2016分別是32名和31名(中等水平)。ASMS是VOT2015官方推薦的實時算法,平均幀率125FPS,在經典mean-shift框架下加入了尺度估計,經典顏色直方圖特征,加入了兩個先驗(尺度不劇變+可能偏最大)作為正則項,和反向尺度一致性檢查。作者給了C++代碼,在相關濾波和深度學習盛行的年代,還能看到mean-shift打榜還有如此高的性價比實在不容易(已淚目~~),實測性能還不錯,如果您對生成類方法情有獨鐘,這個非常推薦您去試試。(某些算法,如果連這個你都比不過。。天臺在24樓,不謝)
判別類方法,OTB50里面的大部分方法都是這一類,CV中的經典套路圖像特征+機器學習, 當前幀以目標區域為正樣本,背景區域為負樣本,機器學習方法訓練分類器,下一幀用訓練好的分類器找最優區域:
與生成類方法最大的區別是,分類器采用機器學習,訓練中用到了背景信息,這樣分類器就能專注區分前景和背景,所以判別類方法普遍都比生成類好。舉個例子,在訓練時告訴tracker目標80%是紅色,20%是綠色,還告訴它背景中有橘紅色,要格外注意別搞錯了,這樣的分類器知道更多信息,效果也相對更好。tracking-by-detection和檢測算法非常相似,如經典行人檢測用HOG+SVM,Struck用到了haar+structured output SVM,跟蹤中為了尺度自適應也需要多尺度遍歷搜索,區別僅在于跟蹤算法對特征和在線機器學習的速度要求更高,檢測范圍和尺度更小而已。這點其實并不意外,大多數情況檢測識別算法復雜度比較高不可能每幀都做,這時候用復雜度更低的跟蹤算法就很合適了,只需要在跟蹤失敗(drift)或一定間隔以后再次檢測去初始化tracker就可以了。其實我就想說,FPS才TMD是最重要的指標,慢的要死的算法可以去死了(同學別這么偏激,速度是可以優化的)。經典判別類方法推薦Struck和TLD,都能實時性能還行,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,注意和后面的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的GOTURNdavheld/GOTURN,注意都是在GPU上。基于ResNet的SiamFC-R(ResNet)在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.
最后,深度學習END2END的強大威力在目標跟蹤方向還遠沒有發揮出來,還沒有和相關濾波類方法拉開多大差距(速度慢是天生的我不怪你,但效果總該很好吧,不然你存在的意義是什么呢。。革命尚未成功,同志仍須努力)。另一個需要注意的問題是目標跟蹤的數據庫都沒有嚴格的訓練集和測試集,需要離線訓練的深度學習方法就要非常注意它的訓練集有沒有相似序列,而且一直到VOT2017官方才指明要限制訓練集,不能用相似序列訓練模型。
最后強力推薦兩個資源。王強@Qiang Wang維護的benchmark_results foolwood/benchmark_results:大量頂級方法在OTB庫上的性能對比,各種論文代碼應有盡有,大神自己C++實現并開源的CSK, KCF和DAT,還有他自己的DCFNet論文加源碼,找不著路的同學請跟緊。
@H Hakase維護的相關濾波類資源HakaseH/CF_benchmark_results,詳細分類和論文代碼資源,走過路過別錯過,相關濾波類算法非常全面,非常之用心!
(以上兩位,看到了請來我處交一下廣告費,9折優惠~~)
第三部分:相關濾波
介紹最經典的高速相關濾波類跟蹤算法CSK, KCF/DCF, CN。很多人最早了解CF,應該和我一樣,都是被下面這張圖吸引了:
這是KCF/DCF算法在OTB50上(2014年4月就掛arVix了, 那時候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(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得到了不錯的效果,算法也簡稱CNColoring Visual Tracking。
MOSSE是單通道灰度特征的相關濾波,CSK在MOSSE的基礎上擴展了密集采樣(加padding)和kernel-trick,KCF在CSK的基礎上擴展了多通道梯度的HOG特征,CN在CSK的基礎上擴展了多通道顏色的Color Names。HOG是梯度特征,而CN是顏色特征,兩者可以互補,所以HOG+CN在近兩年的跟蹤算法中成為了hand-craft特征標配。最后,根據KCF/DCF的實驗結果,討論兩個問題:
1. 為什么只用單通道灰度特征的KCF和用了多通道HOG特征的KCF速度差異很小?
第一,作者用了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特征的復雜度是27*625*log(625)=47180,單通道灰度特征的復雜度是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/DCF和CN,推薦。
第四部分:14年的尺度自適應
VOT與OTB一樣最早都是2013年出現的,但VOT2013序列太少,第一名的PLT代碼也找不到,沒有參考價值就直接跳過了。直接到了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實際速度要更高一些):
其實前三名除了特征略有差異,核心都是KCF為基礎擴展了多尺度檢測,概要如下:
尺度變化是跟蹤中比較基礎和常見的問題,前面介紹的KCF/DCF和CN都沒有尺度更新,如果目標縮小,濾波器就會學習到大量背景信息,如果目標擴大,濾波器就跟著目標局部紋理走了,這兩種情況都很可能出現非預期的結果,導致漂移和失敗。
SAMFihpdep/samf,浙大Yang Li的工作,基于KCF,特征是HOG+CN,多尺度方法是平移濾波器在多尺度縮放的圖像塊上進行目標檢測,取響應最大的那個平移位置及所在尺度:
Li Y, Zhu J. A scale adaptive kernel correlation filter tracker with feature integration [C]// ECCV, 2014.
Martin Danelljan的DSSTAccurate scale estimation for visual tracking,只用了HOG特征,DCF用于平移位置檢測,又專門訓練類似MOSSE的相關濾波器檢測尺度變化,開創了平移濾波+尺度濾波,之后轉TPAMI做了一系列加速的版本fDSST,非常+非常+非常推薦:
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之后,他的后續論文就再沒有用過(直到最新CVPR的ECO-HC中為了加速用了fDSST)。
雖然SAMF和DSST都可以跟上普通的目標尺度變化,但SAMF只有7個尺度比較粗,而DSST有33個尺度比較精細準確;
DSST先檢測最佳平移再檢測最佳尺度,是分步最優,而SAMF是平移尺度一起檢測,是平移和尺度同時最優,而往往局部最優和全局最優是不一樣的;
DSST將跟蹤劃分為平移跟蹤和尺度跟蹤兩個問題,可以采用不同的方法和特征,更加靈活,但需要額外訓練一個濾波器,每幀尺度檢測需要采樣33個圖像塊,之后分別計算特征、加窗、FFT等,尺度濾波器比平移濾波器慢很多;SAMF只需要一個濾波器,不需要額外訓練和存儲,每個尺度檢測就一次提特征和FFT,但在圖像塊較大時計算量比DSST高。
所以尺度檢測DSST并不總是比SAMF好,其實在VOT2015和VOT2016上SAMF都是超過DSST的,當然這主要是因為特征更好,但至少說明尺度方法不差。總的來說,DSST做法非常新穎,速度更快,SAMF同樣優秀也更加準確。
DSST一定要33個尺度嗎?
DSST標配33個尺度非常非常敏感,輕易降低尺度數量,即使你增加相應步長,尺度濾波器也會完全跟不上尺度變化。關于這一點可能解釋是,訓練尺度濾波器用的是一維樣本,而且沒有循環移位,這就意味著一次訓練更新只有33個樣本,如果降低樣本數量,會造成訓練不足,分類器判別力嚴重下降,不像平移濾波器有非常多的移位樣本(個人看法歡迎交流)。總之,請不要輕易嘗試大幅降低尺度數量,如果非要用尺度濾波器33和1.02就很好。
以上就是兩種推薦的尺度檢測方法,以后簡稱為類似DSST的多尺度和類似SAMF的多尺度。如果更看重速度,加速版的fDSST,和僅3個尺度的SAMF(如VOT2014中的KCF)就是比較好的選擇;如果更看重精確,33個尺度的DSST,及7個尺度的SAMF就比較合適。
第五部分:邊界效應
接下來到了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已經不是原來的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來擴展檢測區域,那樣除了擴展了復雜度,并不會有什么好處。目標運動可能是目標自身移動,或攝像機移動,按照目標在檢測區域的位置分四種情況來看:
如果目標在中心附近,檢測準確且成功。
如果目標移動到了邊界附近但還沒有出邊界,加了余弦窗以后,部分目標像素會被過濾掉,這時候就沒法保證這里的響應是全局最大的,而且,這時候的檢測樣本和訓練過程中的那些不合理樣本很像,所以很可能會失敗。
如果目標的一部分已經移出了這個區域,而我們還要加余弦窗,很可能就過濾掉了僅存的目標像素,檢測失敗。
如果整個目標已經位移出了這個區域,那肯定就檢測失敗了。
以上就是邊界效應(Boundary Effets),推薦兩個主流的解決邊界效應的方法,其中SRDCF速度比較慢,并不適合實時場合。
Martin Danelljan的SRDCFLearning 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),同時加入空域正則化,懲罰邊界區域的濾波器系數,由于沒有閉合解,采用高斯-塞德爾方法迭代優化。檢測區域擴大(1.5->4),迭代優化(破壞了閉合解)導致SRDCF只有5FP,但效果非常好是2015年的baseline。
另一種方法是Hamed Kiani提出的MOSSE改進算法,基于灰度特征的CFLMCorrelation Filters with Limited Boundaries和基于HOG特征的BACFLearning Background-Aware Correlation Filters for Visual Tracking,主要思路是采用較大尺寸檢測圖像塊和較小尺寸濾波器來提高真實樣本的比例,或者說濾波器填充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]// ICCV, 2017.
CFLB僅單通道灰度特征,雖然速度比較快167FPS,但性能遠不如KCF,不推薦;最新BACF將特征擴展為多通道HOG特征,性能超過了SRDCF,而且速度比較快35FPS,非常推薦。
其實這兩個解決方案挺像的,都是用更大的檢測及更新圖像塊,訓練作用域比較小的相關濾波器,不同點是SRDCF的濾波器系數從中心到邊緣平滑過渡到0,而CFLM直接用0填充濾波器邊緣。
VOT2015相關濾波方面還有排在第二名,結合深度特征的DeepSRDCF,因為深度特征都非常慢,在CPU上別說高速,實時都到不了,雖然性能非常高,但這里就不推薦,先跳過。
第六部分:顏色直方圖與相關濾波
VOT2016競賽VOT2016 Challenge | Home,依然是VOT2015那60個序列,不過這次做了重新標注更加公平合理,今年有70位參賽選手,意料之中深度學習已經雄霸天下了,8個純CNN方法和6個結合深度特征的CF方法大都名列前茅,還有一片的CF方法,最最最重要的是,良心舉辦方竟然公開了他們能拿到的38個tracker,部分tracker代碼和主頁,下載地址:VOT2016 Challenge | Trackers(以后媽媽再也不用擔心我找不到源碼了~),注意部分是下載鏈接,部分是源碼壓縮包,部分源碼是二進制文件,好不好用一試便知,方便對比和研究,需要的趕快去試試。馬上來看競賽結果(這里僅列舉前60個):
高亮標出來了前面介紹過的或比較重要的方法,結合多層深度特征的相關濾波C-COT排第一名,而CNN方法TCNN是VOT2016的冠軍,作者也是VOT2015冠軍MDNet,純顏色方法DAT和ASMS都在中等水平(其實兩種方法實測表現非常接近),其他tracker的情況請參考論文。再來看速度,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在論文中CPU上是80FPS,怎么EFO在這里只有11?幸好公開代碼有Staple和STAPLE+,實測下來,雖然我電腦不如Luca Bertinetto大牛但Staple我也能跑76FPS,而更可笑的是,STAPLE+比Staple慢了大約7-8倍,竟然EFO高出4倍,到底怎么回事呢?
首先看Staple的代碼,如果您直接下載Staple并設置params.visualization = 1,Staple默認調用Computer Vision System Toolbox來顯示序列圖像,而恰好如果您沒有這個工具箱,默認每幀都會用imshow(im)來顯示圖像,所以非常非常慢,而設置params.visualization = 0就跑的飛快(作者你是孫猴子派來的逗逼嗎),建議您將顯示圖像部分代碼替換成DSST中對應部分代碼就可以正常速度運行和顯示了。
再來看STAPLE+的代碼,對Staple的改進包括額外從顏色概率圖中提取HOG特征,特征增加到56通道(Staple是28通道),平移檢測額外加入了大位移光流運動估計的響應,所以才會這么慢,而且肯定要慢很多。
所以很大可能是VOT舉辦方把Staple和STAPLE+的EFO弄反了,VOT2016的實時推薦算法應該是排第5的Staple,相關濾波結合顏色方法,沒有深度特征更沒有CNN,跑80FPS還能排在第五,這就是接下來主要介紹的,2016年最NIUBILITY的目標跟蹤算法之一Staple (直接讓排在后面的一眾深度學習算法懷疑人生)。
顏色特征,在目標跟蹤中顏色是個非常重要的特征,不管多少個人在一起,只要目標穿不用顏色的一幅就非常明顯。前面介紹過2014年CVPR的CN是相關濾波框架下的模板顏色方法,這里隆重介紹統計顏色特征方法DATLearning, Recognition, and Surveillance @ ICG,幀率15FPS推薦:
Possegger H, Mauthner T, Bischof H. In defense of color-based model-free tracking [C]// CVPR, 2015.
DAT統計前景目標和背景區域的顏色直方圖并歸一化,這就是前景和背景的顏色概率模型,檢測階段,貝葉斯方法判別每個像素屬于前景的概率,得到像素級顏色概率圖,再加上邊緣相似顏色物體抑制就能得到目標的區域了。
如果要用一句話介紹Luca Bertinetto(牛津大學)的StapleStaple 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類似,平移濾波器、尺度濾波器和顏色概率模型都以固定學習率線性加權更新。
另一種相關濾波結合顏色概率的方法是17CVPR的CSR-DCF,提出了空域可靠性和通道可靠性,沒有深度特征性能直逼C-COT,速度可觀13FPS:
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迭代優化,可以看出CSR-DCF是DAT和CFLB的結合算法。
VOT2015相關濾波還有排第一名的C-COT(別問我第一名為什么不是冠軍,我也不知道),和DeepSRDCF一樣先跳過。
第七部分:long-term和跟蹤置信度
以前提到的很多CF算法,也包括VOT競賽,都是針對short-term的跟蹤問題,即短期(shor-term)跟蹤,我們只關注短期內(如100~500幀)跟蹤是否準確。但在實際應用場合,我們希望正確跟蹤時間長一點,如幾分鐘或十幾分鐘,這就是長期(long-term)跟蹤問題。
Long-term就是希望tracker能長期正確跟蹤,我們分析了前面介紹的方法不適合這種應用場合,必須是short-term tracker + detecter配合才能實現正確的長期跟蹤。
用一句話介紹Long-term,就是給普通tracker配一個detecter,在發現跟蹤出錯的時候調用自帶detecter重新檢測并矯正tracker。
介紹CF方向一篇比較有代表性的long-term方法,Chao Ma的LCTchaoma99/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窗,放在平移檢測之后。
如果最大響應小于第一個閾值(叫運動閾值),說明平移檢測不可靠,調用檢測模塊重新檢測。注意,重新檢測的結果并不是都采納的,只有第二次檢測的最大響應值比第一次檢測大1.5倍時才接納,否則,依然采用平移檢測的結果。
如果最大響應大于第二個閾值(叫外觀閾值),說明平移檢測足夠可信,這時候才以固定學習率在線更新第三個相關濾波器和隨機蔟分類器。注意,前兩個相關濾波的更新與DSST一樣,固定學習率在線每幀更新。
LCT加入檢測機制,對遮擋和出視野等情況理論上較好,速度27fps,實驗只跑了OTB-2013,跟蹤精度非常高,根據其他論文LCT在OTB-2015和 VOT上效果略差一點可能是兩個核心閾值沒有自適應, 關于long-term,TLD和LCT都可以參考 。
接下來介紹跟蹤置信度。 跟蹤算法需要能反映每一次跟蹤結果的可靠程度,這一點非常重要,不然就可能造成跟丟了還不知道的情況。生成類(generative)方法有相似性度量函數,判別類(discriminative)方法有機器學習方法的分類概率。有兩種指標可以反映相關濾波類方法的跟蹤置信度:前面見過的最大響應值,和沒見過的響應模式,或者綜合反映這兩點的指標。
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.
值得一提的還有Chao Ma的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層),為了應對不同卷積層分辨率不同的問題,提出了連續空間域插值轉換操作,在訓練之前通過頻域隱式插值將特征圖插值到連續空域,方便集成多分辨率特征圖,并且保持定位的高精度。目標函數通過共軛梯度下降方法迭代優化,比高斯-塞德爾方法要快,自適應樣本權值直接采用先驗權值,沒有交替凸優化過程,檢測中用牛頓法迭代優化目標位置。
注意以上SRDCF, SRDCFdecon,DeepSRDCF,C-COT都無法實時,這一系列工作雖然效果越來越好,但也越來越復雜,在相關濾波越來越慢失去速度優勢的時候,Martin Danelljan在2017CVPR的ECO來了一腳急剎車,大神來告訴我們什么叫又好又快,不忘初心:
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超過了大部分深度學習方法,而且論文給出速度是CPU上60FPS。
最后是來自Luca Bertinetto的CFNetEnd-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層的邊界效應吧,持觀望態度。
第九部分:2017年CVPR和ICCV結果
下面是CVPR 2017的目標跟蹤算法結果:可能MD大神想說,一個能打的都沒有!
仿照上面的表格,整理了ICCV 2017的相關論文結果對比ECO:哎,還是一個能打的都沒有!
第十部分:大牛推薦
湊個數,目前相關濾波方向貢獻最多的是以下兩個組(有創新有代碼):
牛津大學:Joao F. Henriques和Luca Bertinetto,代表:CSK, KCF/DCF, Staple, CFNet (其他SiamFC, Learnet).
林雪平大學:Martin Danelljan,代表:CN, DSST, SRDCF, DeepSRDCF, SRDCFdecon, C-COT, ECO.
國內也有很多高校的優秀工作就不一一列舉了。
-
算法
+關注
關注
23文章
4601瀏覽量
92673 -
計算機視覺
+關注
關注
8文章
1696瀏覽量
45930
原文標題:計算機視覺中,目前有哪些經典的目標跟蹤算法?
文章出處:【微信號:www_51qudong_com,微信公眾號:機器視覺】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論