apce(關于apce的基本詳情介紹)

雷鋒網(公眾號:雷鋒網) AI科技評論按:本文源自YaqiLYU在知乎問題【計算機視覺中,目前有哪些經典的目標跟蹤算法?】下的回答,雷鋒網 AI科技評論已獲得授權發布。

上部分內容請查閱計算機視覺中,究竟有哪些好用的目標跟蹤算法(上)

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大牛的SRDCFLearning 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的CFLMCorrelation 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上別說高速,實時都到不了,雖然性能非常高,但這里就不推薦,先跳過。

標出來了前面介紹過的或比較重要的方法,結合多層深度特征的相關濾波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是相關濾波框架下的模板顏色方法,這里隆重介紹統計顏色特征方法DATLearning, Recognition, and Surveillance @ ICG,幀率15FPS:

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

如果要用一句話介紹Luca Bertinetto大牛(牛津大學)的StapleStaple 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的CFNetEnd-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

雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。

轉載注明出處:華峰博客網

內容版權聲明:除非注明,否則皆為本站原創文章。