TLD(Tracking-Learning-Detection)一種目標跟蹤算法


  原文:http://blog.csdn.net/mysniper11/article/details/8726649

  視頻介紹網址:http://www.cvchina.info/2011/04/05/tracking-learning-detection/

  TLD(Tracking-Learning-Detection)是英國薩里大學的一個捷克籍博士生Zdenek Kalal在其攻讀博士學位期間提出的一種新的單目標長時間(long term tracking)跟蹤算法。該算法與傳統跟蹤算法的顯著區別在於將傳統的跟蹤算法和傳統的檢測算法相結合來解決被跟蹤目標在被跟蹤過程中發生的形變、部分遮擋等問題。同時,通過一種改進的在線學習機制不斷更新跟蹤模塊的“顯著特征點”和檢測模塊的目標模型及相關參數,從而使得跟蹤效果更加穩定、魯棒、可靠。

  對於長時間跟蹤而言,一個關鍵的問題是:當目標重新出現在相機視野中時,系統應該能重新檢測到它,並開始重新跟蹤。但是,長時間跟蹤過程中,被跟蹤目標將不可避免的發生形狀變化、光照條件變化、尺度變化、遮擋等情況。傳統的跟蹤算法,前端需要跟檢測模塊相互配合,當檢測到被跟蹤目標之后,就開始進入跟蹤模塊,而此后,檢測模塊就不會介入到跟蹤過程中。但這種方法有一個致命的缺陷:即,當被跟蹤目標存在形狀變化或遮擋時,跟蹤就很容易失敗;因此,對於長時間跟蹤,或者被跟蹤目標存在形狀變化情況下的跟蹤,很多人采用檢測的方法來代替跟蹤。該方法雖然在某些情況下可以改進跟蹤效果,但它需要一個離線的學習過程。即:在檢測之前,需要挑選大量的被跟蹤目標的樣本來進行學習和訓練。這也就意味着,訓練樣本要涵蓋被跟蹤目標可能發生的各種形變和各種尺度、姿態變化和光照變化的情況。換言之,利用檢測的方法來達到長時間跟蹤的目的,對於訓練樣本的選擇至關重要,否則,跟蹤的魯棒性就難以保證。

推薦大家多多訪問國外作者的主頁:http://info.ee.surrey.ac.uk/Personal/Z.Kalal/

在作者網站上有相關源代碼的下載以及他的一些有用的論文的下載:

原作者的源代碼為Matlab以及C混合編程的,已經有人將C++版本的源代碼分享:http://gnebehay.github.com/OpenTLD/

Github上的源代碼也可以使用:https://github.com/arthurv/OpenTLD

CSDN上比較有用的博客有:

 

(1)《庖丁解牛TLD》系列:

http://blog.csdn.net/yang_xian521/article/details/7091587

(2)《再談PN學習》:

http://blog.csdn.net/carson2005/article/details/7647519

(3)《比微軟kinect更強的視頻跟蹤算法--TLD跟蹤算法介紹》

http://blog.csdn.net/carson2005/article/details/7647500

(4)《TLD視覺跟蹤技術解析》

http://www.asmag.com.cn/number/n-50168.shtml

(5)《TLD(Tracking-Learning-Detection)學習與源碼理解之(一)

http://blog.csdn.net/zouxy09/article/details/7893011

 

希望這些資料對希望學習TLD算法的人有幫助。

 

來自:http://blog.csdn.net/windtalkersm/article/details/8018980

 

TLD是一種算法的簡稱,原作者把它叫做Tracking-Learning-Detection。搞視覺的人看到這個名字都會嚇一跳,很ambitious的計划。是09年的工作,不算太久,不過也不太新。網上關於這個的資源其實很多,很大程度和作者開放源代碼有關。

 

 

 

學習過程中碰到的第一個問題就是資源太多---當然是相對這個領域而言,一般能找到一個忠實再現算法的源碼就已經很好了。所以把找到的list一下,雖然有點浪費時間,希望可以對其他人有所幫助。具體的細節就不多說了,有很多很棒的分析也列在下面,比如zouxy09寫的源碼注釋,實在不能再詳細了。如果硬要找茬,那就是大段的文字讓人頭暈,也沒怎么排版。我倒想畫幾個簡單的圖補充一下,不知有什么好點的畫圖程序推薦(latex, or GNUPlot?沒用過)

 

源代碼資源:

 

1. 原作者 Zdenek Kalal

 

作者主頁: http://info.ee.surrey.ac.uk/Personal/Z.Kalal/

 

源代碼頁: https://github.com/zk00006/OpenTLD

 

編程語言:Matlab + C

 

2. Alan Torres版

 

源代碼頁:https://github.com/alantrrs/OpenTLD

 

實現語言:C++

 

3. arthurv版

 

源代碼頁:https://github.com/arthurv/OpenTLD

 

實現語言:C++

 

注:和上面的沒有發現任何區別

 

4. jmfs版

 

源代碼頁:https://github.com/jmfs/OpenTLD

 

實現語言:C++

 

注:和上面兩個沒有區別,只不過加入了VS2010工程文件,理論上可以直接在Windows下編譯通過。不過opencv檢測不到作者的webcam(!!!),所以他用了另一個VideoInput類來handle攝像頭輸入。

 

 

 

This is an adaptation of arthurv's fork of OpenTLD (https://github.com/arthurv/OpenTLD) 
to be immeadiately runnable in Visual Studio 2010.

 

5. Georg Nebehay版 (終於有個不一樣的了。。。。)

 

源代碼頁:http://gnebehay.github.com/OpenTLD/

 

注1:這個的好處是提供可執行文件下載(Ubuntu 10.04和Windows)。BUT, as you would expect,基本上到了你的機器上都跑不了。還是自己老老實實build吧。

 

注2:這個版本需要安裝Qt。不過好像作者關掉了Qt的選項(相關代碼還在),所以可以編譯,但無法顯示結果

 

注3:CSDN下載上有個“openTLD Qt 版“,就是這個版本。不過加了VS的工程文件---在我的機器上還是不能PnP, don't bother

 

http://download.csdn.net/download/muzi198783/4111915

 

 

6. Paul Nader版(又一個Qt 版!)

 

QOpenTLD: http://qopentld.sourceforge.net/

 

源代碼頁: http://sourceforge.net/projects/qopentld/

 

注1:需要OpenCV和Qt。 原系統要求Qt 4.3.7OpenCV 2.2。

 

注2:Windows和Linux下都提供了編譯工程或makefile。估計也是唯一一個移植到Android平台下的TLD!

 

7. Ben Pryke版(又一個student project!)

 

源代碼頁:https://github.com/Ninjakannon/BPTLD

 

注:依然是Matlab+C/C++的混合實現。亮點是有很詳細的Documentation(8頁),介紹了算法的理解和實現細節。可以幫助理解原算法

 

想說的話:

 

1. 分享:前段時間把 TLD::init(...)看完了,本想一鼓作氣,其他的事太多只好放下。不過我對detection和tracking比較熟,init中已經把learning作了一遍,看懂了剩下的就容易了。現在重新撿起,無意中發現了zouxy09的注釋,省了太多力氣,半天就看完了。很多細節不用自己去摳--- 我們常抱怨這資源那文檔太少,羡慕老外能力強,動作快,和他們願意分享關系太大。經常看到一些不錯的文章收藏起來,過幾天去看居然刪了!

 

可以理解可能是開公司要保密,但如果害怕別人知道了自己的思路就做不下去,那還是不要在這個領域做了。算法只是思想,誰也壟斷不了。算法也一定是不斷更新的, 抱着一個算法不放也存活不了幾年。原作者也基於這個技術開公司了,也沒見他們基於這個限制別人使用。SIFT,SURF都patent了也沒聽說賺了大錢,kinect告訴你算法也實現不了。要保密的是實現細節

 

2. 比較: 終於看完了實現,總的感覺這個算法還是更象工程應用(engineering)而不是理論突破(也不能要求太多了是不是)。感覺這么結合后並不一定會比單個的跟蹤(tracking)或檢測(detection-by-classification)模塊作的更好,畢竟還是沒有解決外觀(appearence)和尺度(scale)變化這兩個根本難題。 不過這種框架反而應該在實際中非常實用,因為----------可調的參數太多了!

 

TLD相信很多人都試過了,實時性很多人都在抱怨,而且拿到自己的視頻上總要調些參數效果才好。

 

比較起來更喜歡今年ECCV上Kaihua Zhang的Compressive Tracking:理論高深的嚇人(開玩笑),源碼簡單的嚇人。而且是目前為止我試過的off-the-shelf的tracker中跟蹤效果最好的,不用調任何參數,絕對實時----代碼那么少,想不實時都難吧(順便說一句作者的blog就在上面提到過)。這才是做研究的方法,有個強大的理論做支撐,實現可以很簡單卻不會影響效果。所以如果搞數學的人願意做應用,很多人都會下崗

 

http://www4.comp.polyu.edu.hk/~cslzhang/CT/CT.htm

 

另一個PWP(Pixel-Wise Posteriors),publish時間和TLD差不多,性能看上去也很美,不過作者說要開源,一直沒有兌現。是個遺憾。個人覺得level set對部分遮擋效果應該很好,做到實時也不是難事

 

http://www.robots.ox.ac.uk/~cbibby/research_pwp.shtml

 

3. 總結:TLD其實是一個非常合適的入門和進階算法:

 

a. 有理論,有高質量的paper(BMVC, CVPR, ICPR, 最后PAMI)

 

b. 有源代碼!Matlab, C++, Windows, Linux, .....你還想要啥?

 

c. 有不同大牛小牛分享的詳細的介紹和詳細的代碼注釋(幾乎每一行都解釋到了)!

 

4. 牽涉面廣,涉及到detection, tracking, classifcation,傳統的視覺技術就是這么硬梆梆的划分的三大類。研究完了對每一部分多少能有點心得。

 

The End

 TLD源碼理解

 

TLD(Tracking-Learning-Detection)學習與源碼理解之(一)

 

TLD(Tracking-Learning-Detection)學習與源碼理解之(二)

 

TLD(Tracking-Learning-Detection)學習與源碼理解之(三)

 

TLD(Tracking-Learning-Detection)學習與源碼理解之(四)

 

TLD(Tracking-Learning-Detection)學習與源碼理解之(五)

 

TLD(Tracking-Learning-Detection)學習與源碼理解之(六)

 

TLD(Tracking-Learning-Detection)學習與源碼理解之(七)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM