1. 程式人生 > >視覺跟蹤---MEEM演算法--eccv14

視覺跟蹤---MEEM演算法--eccv14

參考文獻:eccv14_(MEEM)_Robust Tracking via Multiple Experts using Entropy Minimization

說明:本文按照文獻中的內容,對文章進行梳理和評論;凡是有ps的地方,表示是博主自己的想法

【摘要】:作者提出一種稱為multi-expert restoration scheme的方法,來解決跟蹤中出現的模型漂移問題(model drift problem

【簡介】:

       1 作者使用的是基於檢測的框架(within a tracking-by-detection framework),也就是藉助分類器來實現跟蹤

       2 作者介紹了model shift的一些原因:Model drift occurs because factors like tracking failure, occlusions and misalignment of training samples can lead to bad model updates
   3 作者又指出,目前一些文獻的解決方法,是給update增加一些判斷機制,但是這些判斷通常是基於目標運動和外形變化平滑的假設,所以在一些具有挑戰性的場景下會失效,由此導致track 跟蹤到背景,發生錯誤;(ps:所以需要非常具有魯棒性的update判斷機制,能夠達到人類的判斷能力)

       4 作者在此基礎上提出一種解決辦法:能夠在錯誤的update發生後,修正它,correct it;作者稱之為multi-expert tracking framework

       5 multi-expert tracking framework的原理:儲存之前幀的一些tracker(總數不超過4個),組成一個專家組,對當前幀,專家組中的每一個tracker給出自己的預測結果,然後根據熵損失函式選擇使用哪個tracker的預測結果,如果使用的不是當前幀的tracker,則將當前幀的tracker restore

   6 損失函式:在監督學習領域,損失函式是計算預測值與標籤之間的差值,但是在online tracking領域,是沒有label的;所以作者使用的是參考文獻10中提出的熵正則化優化函式(entropy-regularized optimization function

),來作為損失函式,也就是據此來選擇一個expert

       7 作者的圖1能很好的解釋作者的思想:作者儲存了250 300 350幀的tracker作為專家組的成員,然後根據損失函式計算374幀時4種tracker對374幀時紅綠兩個框的置信度分數,顯然250幀時擷取的目標,能夠很好的區分red和green box,作者根據判決的明晰程度決定使用250幀的expert的預測結果


       7 the base tracker:作者使用的是online SVM演算法,參考的文獻26,但是不明白作者說的employing compact prototype sets是什麼意思;作者使用的是線性核,參考文獻19使用的特徵對映技術


   8 作者總結了自己文章的貢獻:在base tracker的基礎上,使用了MEEM方法(MultiExpert Entropy Minimization (MEEM) restoration scheme),能夠在當前優秀演算法的基礎上提升15%的效果,而且不懼時間和空間初始化時的擾動

【相關工作】:作者總結下最近的一些visual tracking的相關工作

   1 Tracking-by-Detection:作者總結了一些基於檢測的跟蹤方法,文獻1的跟蹤是基於光流法,使用了一個線下訓練的SVM;文獻2 7中結合了弱分類器,使用boost演算法來update;文獻4中使用的是弱SVM分類器通過向量權重隨機的方式;文獻3中使用了多例項學習的方法;文獻11使用的是結構化SVM,也就是我另一篇部落格中介紹的struck演算法;

   2 Hybrid Multi-Tracker Methods:混合式多種跟蹤方法,作者提到了文獻29 32中的混合生成判決方法,文獻24使用了兩個SVM,文獻16 integrate decorrelated trackers via an MCMC framework

   3 Training Sample Management:樣本集的管理,有些演算法使用recent的一些固定樣本,有的演算法根據啟發式的方法篩選樣本,根據樣本的重要性去除一些不重要的樣本,(ps:有些會有長期樣本,短期樣本之分,當目標被遮擋時,來增強演算法的魯棒性);作者指出他的tracker,maintains a compact prototype set to summarize the effects of all previous training samples,, and thereby avoids hard pruning of training samples

   4 Drift Prevention:預防漂移,大多數演算法預防漂移的方式是對update增加各種約束,比如TLD方法使用了兩個expert,分別進行空間約束和時間約束;還有的演算法需要更多的目標相關的先驗知識;作者指出自己的演算法不需要先驗知識的優越性;(ps:人對目標是有很多先驗知識的,加入目標是人 車 物體,人類大腦中有該目標的很多資訊,所以我們可以使用深度學習對各種物體進行線下訓練,在online track的時候,識別目標的種類,然後根據線下訓練好的先驗知識,應該能夠很好的增強判斷能力)

【MEEM演算法說明】:

   1 專家組的產生:假設base tracker用T表示,將時刻t時的T儲存下來,記為St,這樣我們就可以得到一個tracker專家組,作者用E表示,如下面的公式


   2 專家的選擇:現在作者有了專家組E,其中T表示當前幀tracker,St1 St2...表示以往幀的tracker,所以每一幀,E會給出多個預測的結果;那麼如何決定哪個tracker給出的結果是最合理的,作者又提出需要一個損失函式,計算最近一段時間內,各個專家損失函式的最小值,決定採納哪個專家的預測結果,如下公式所示;其中△表示recent 時間窗的長度;


   3 損失函式:作者根據文獻10,做了少許修改,提出了一個損失函式,如下公式所示;如果要明白該公式的含義,需要參考文獻10;


   4 演算法的思路

         4.1 每ψ幀,更新一次專家組,專家組的專家數量控制在N個

         4.2 對於當前幀,專家組的每個專家,給出各自的預測結果

         4.3 使用公式7的loss函式,評價每一個專家的結果

         4.4 根據公式1選擇最合適的專家

         4.5 如果選擇的專家不是當前幀的專家,就restore

         4.6 輸出預測結果,同時update tracker

         4.7 作者給出的演算法流程圖如下:


         ps:這裡的稱呼專家,我是根據expert翻譯來的,其實就是一個tracker,在作者的文章裡,就是一個特定引數的SVM

         ps:這裡說明的是作者MEEM演算法的思路,至於track的做法,就是通用的track-by-detection framework的方法

【online線性SVM tracker】

   1 SVM:作者的SVM是參考的文獻26,做了一些修改

   2 SVM的訓練:作者每幀訓練SVM採用的prototype set和new data相結合的方式,損失函式如下:


   3 SVM的更新策略:作者給出的更新策略圖如下:


【實現細節】

   1 Base Tracker

         1.1 搜尋策略:作者給出了搜尋半徑和搜尋步長

         1.2 正負樣本的選擇:tracker預測的位置就是正樣本,與正樣本重合面積比例小於0.5的是負樣本

         1.3 特徵:影象被轉換到了CIE Lab彩色空間,並且為了應對劇烈的光照變化,對L通道進行了區域性秩變換;對變換得到的結果和初始的LAB三個通道,共同組成了4通道的原始影象,降取樣後再通過特徵對映,形成約2000維的特徵向量;訓練樣本一般選擇200個samples;

   2 Multi-Expert Framework

         2.1 每個專家預測值的選擇:根據下圖的公式,根據最大值選擇每個expert的預測結果

         2.1 expert數量小於4個,snapshot間隔幀數小於50幀,matlab跑的速度是10fps,一般電腦配置


【測試效果】:當然與state-of-art 演算法比較起來,肯定有大幅度的提升

ps:所謂模型漂移問題,是指online tracking方法,當目標發生遮擋、跟錯、越出螢幕邊界等時,模型update會發生錯誤的更新,從而導致錯誤的積累,越錯越多

ps:解決這個問題有幾個思路:

   1 人類是很少發生錯誤更新的,因為人類判斷是否是正確目標的能力很強,比如目標發生完全遮擋後,人類知道是發生了完全遮擋,並且能夠預計目標重新出現的可能位置;所以解決的思路之一是針對各種發生錯誤跟蹤的情況,增強判斷能力,不予以更新模型,並且針對各種錯誤跟蹤情況,演算法要有重新建立正確跟蹤的思路;

ps:人類在跟蹤目標的時候,會根據多方面不同層次的資訊來判斷

      1 根據基本特徵:

          運動資訊(運動的方向、速度)

          外形特徵(顏色、形狀)

                    目標身份屬性(人、動物、車等)

                    ...等等

      2 根據邏輯推理:

                    判斷目標是否會發生大的形變

                    判斷是否發生了遮擋                    

                    預判遮擋後目標再次出現的位置

                    ...等等

      3 根據高層次的理解:

                    場景可活動範圍理解

                    目標行為理解

                    運動關聯理解(比如track的目標是人拿著的,或者是人體的某個部分,是由整體區域性的關係的,也是有主動被動的關係的)

                    ...等等

尊重原創: