他人總結的TLD視覺跟蹤算法(源代碼、文章、原理等)非常好的東西

TLD算法好牛逼一個,這裏有個視頻,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html。下面這個csdn博客裏有人做的相關總結,感覺挺好的,收藏了!下面有個Compressive Tracking的網址,提供的代碼很少,但實時性很好,matlab代碼下下來就能用。

 

以下博文轉自: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 (yang_xian521)

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

注1:從文章看作者是基於原作者的matlab版分析的。從函數名看上面的2/3/4應該是matlab--->C++的"直譯",函數名都沒變。這樣最好,可以和下面的對照着看,同時學matlab和C++


2.  TLD(Tracking-Learning-Detection)學習與源碼理解 (zouxy09)

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

注1: 用的是<<arthurv版>>,前面說過,不能再詳細了!

注2: 下面三個是從這篇copy的


3. 《再談PN學習》:

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

4. 《比微軟kinect更強的視頻跟蹤算法--TLD跟蹤算法介紹》

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

5. 《TLD視覺跟蹤技術解析》

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


想說的話:

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

樓下評論給的網址也很好啊:
http://blog.csdn.net/zouxy09/article/details/7893022

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章