比如TLD、CT、Struct這些效果不錯的Tracker其實都不是單純的Tracker了。09年的時候我記得比較流行的是Particle Filtering, 或者壹些MeanShift/CamShift的變形,比如特征變了,比如對問題的假設變了。
後來突然出現壹些tracking by detection的方法,之前的很多朋友就覺得這是耍流氓。比如TLD,嚴格的跟蹤算法也許只是裏面的Forward/Backward Opitcal Flow的部分,但是效果很Impressive,所以不管怎樣,壹下就火了。
之後所謂的跟蹤就不再是壹個傳統的跟蹤問題,而是壹個綜合的工程問題。online learning,random projection ,sparse learning的東西都加進來,大家其實到底是在做跟蹤還是在做檢測或者online learning,其實已經不重要,因為衡量的標準是妳在某些public dataset上的精度。
但這些對實際的項目有沒有幫助呢?
這是個很有意思的地方,在很多時候,我們之所以需要跟蹤算法,是因為我們的檢測算法很慢,跟蹤很快。基本上當前排名前幾的跟蹤算法都很難用在這樣的情況下,因為妳實際的速度已經太慢了,比如TLD,CT,還有Struct,如果目標超過十個,基本上就炸了。況且還有些跟蹤算法自己drift掉了也不知道,比如第壹版本的CT是無法處理drift的問題的,TLD是可以的,究其原因還是因為檢測算法比較魯棒啊……
實際中我覺得速度極快,實現也簡單的純跟蹤算法居然是NCC和Overlap。
NCC很簡單,這個是對點進行的,對於區域也有很多變種,網上有壹些相關的資源。
Overlap是我取的名字,壹般用在視頻裏面,假如妳的攝像頭是靜止的,背景建模之後出來的前景可以是壹個壹個的blob,對相鄰兩幀的blob檢測是否Overlap就可以得到track。在壹些真實場景下,這個算法是非常有效的。關於背景template的問題在真實的視頻裏面也是很好解決的。
坐在電腦前面調試代碼tuning 各種閾值讓跟蹤算法在某壹個視頻幀下面不要drift的事情我是再也不想幹了。
順祝妳2015幸福快樂。