天天看點

計算機視覺中,究竟有哪些好用的目标跟蹤算法(下)

VOT2015競賽 VOT2015 Challenge | Home(http://votchallenge.net/vot2015/) 如期而至,這一年有60個精挑細選的序列,62個tracker,最大看點是深度學習開始進擊tracking,MDNet直接拿下當年的冠軍,而結合深度特征的相關濾波方法DeepSRDCF是第二名,主要解決邊界效應的SRDCF僅HOG特征排在第四:

随着VOT競賽的影響力擴大,舉辦方也是用心良苦,經典的和頂尖的齊聚一堂,百家争鳴,多達62個tracker皇城PK,華山論劍。除了前面介紹的深度學習和相關濾波,還有結合object proposals(類物體區域檢測)的EBT(EBT:Proposal與Tracking不得不說的秘密 - 知乎專欄)(https://zhuanlan.zhihu.com/p/26654891)排第三,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(http://www.cvl.isy.liu.se/research/objrec/visualtracking/regvistrack/index.html),主要思路:既然邊界效應發生在邊界附近,那就忽略所有移位樣本的邊界部分像素,或者說邊界附近濾波器系數為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 (http://www.hamedkiani.com/cfwlb.html)和基于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上别說高速,實時都到不了,雖然性能非常高,但這裡就不推薦,先跳過。

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

标出來了前面介紹過的或比較重要的方法,結合多層深度特征的相關濾波C-COT排第一名,而CNN方法TCNN是VOT2016的冠軍,作者和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在論文中是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(http://www.robots.ox.ac.uk/~luca/staple.html),那就是把模闆特征方法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一樣先跳過。

以前提到的很多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(https://github.com/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(http://www.cvl.isy.liu.se/research/objrec/visualtracking/),就不一一貼出了。

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層),為了應對不同卷積層分辨率不同的問題,提出了連續空間域插值轉換操作,在訓練之前通過頻域隐式插值将特征圖插值到連續空域,友善內建多分辨率特征圖,并且保持定位的高精度。目标函數通過共轭梯度下降方法疊代優化,比高斯-塞德爾方法要快,自适應樣本權值直接采用先驗權值,沒有交替凸優化過程,檢測中用牛頓法疊代優化目标位置。

注意以上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在VOT2016的結果,但其他三個都很高,而且論文給出速度是60FPS。

最後是來自Luca Bertinetto的CFNet End-to-end representation learning for Correlation Filter based tracking(http://www.robots.ox.ac.uk/~luca/cfnet.html),除了上面介紹的相關濾波結合深度特征,相關濾波也可以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. Henriques和Luca Bertinetto,代表:CSK, KCF/DCF, Staple, CFNet (其他SiamFC, Learnet)

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

本文作者:Non

繼續閱讀