OpenTLD 未完成 - 虎頭

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://www.pswp.cn/news/254990.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254990.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254990.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C# FileSystemWatcher 在監控文件夾和文件時的用法

********************************************************************************** 第一個文章: ********************************************************************************** 概述 最近學習FileSystemWatcher的用法,它主要是監控一個文件夾,當文件夾內的文件要…

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

TLD (Tracking-Learning-Detection)是英國薩里大學的一個捷克籍博士生在其攻讀博士學位期間提出的一種新的單目標長時間&#xff08; long term tracking &#xff09;跟蹤算法。該算法與傳統跟蹤算法的顯著區別在于將傳統的跟蹤算法和傳統的檢測算法相結合來解決被跟蹤目標在被…

HALCON示例程序measure_circuit_width_lines_gauss.hdev電路板線寬檢測

HALCON示例程序measure_circuit_width_lines_gauss.hdev電路板線寬檢測 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () dev_close_window () read_image (Image, ‘pcb_color’) get_image_size (Image, Width, Height) dev_open_window…

一張圖看懂混合云數據同步一站式解決方案

摘要&#xff1a; 針對不同數據庫間數據實時同步難的問題&#xff0c;日前&#xff0c;阿里云宣布推出混合云數據同步一站式解決方案&#xff0c;便于廣大云產品用戶實現實時數據同步的混合云支持&#xff0c;更為方便的是&#xff0c;該功能讓本地Oracle也能實現與云上數據庫的…

分布式性能測試

Jmeter分布式測試 在使用Jmeter進行性能測試時&#xff0c;如果并發數比較大(比如最近項目需要支持1000并發)&#xff0c;單臺電腦的配置(CPU和內存)可能無法支持&#xff0c;這時可以使用Jmeter提供的分布式測試的功能。 一、Jmeter分布式執行原理&#xff1a; 1、Jmeter分布式…

互斥鎖pthread_mutex_t的使用

1. 互斥鎖創建 有兩種方法創建互斥鎖&#xff0c;靜態方式和動態方式。POSIX定義了一個宏PTHREAD_MUTEX_INITIALIZER來靜態初始化互斥鎖&#xff0c;方法如下&#xff1a; pthread_mutex_t mutexPTHREAD_MUTEX_INITIALIZER; 在LinuxThreads實現中&#xff0c;pthread_…

無效設備解決辦法

touch /etc/ini.d/FirstLoadkill 殺死槍彈柜程序 或重啟reboot轉載于:https://www.cnblogs.com/yygsj/p/5634384.html

HALCON示例程序measure_grid.hdev使用XLD分割鍵盤輪廓

HALCON示例程序measure_grid.hdev使用XLD分割鍵盤輪廓 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () read_image (Image, ‘keypad’) get_image_pointer1 (Image, Pointer, Type, Width, Height) dev_close_window () dev_open_window…

[BZOJ3992]序列統計

DP一下&#xff0c;設$f_{i,j}$表示生成$i$個數且乘積$\%Mj$的方案數&#xff0c;則$f_{i1,l}\sum\limits_{jk\%Ml}[k\in S]f_{i,j}$ 我們很不希望DP式中下標的位置出現乘法&#xff0c;因為這樣不好轉移&#xff0c;考慮把乘法換成加法 因為模數$M$是質數&#xff0c;所以它有…

socket,TCP/IP的理解(轉)

TCP/IP 要想理解socket首先得熟悉一下TCP/IP協議族&#xff0c; TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff09;即傳輸控制協議/網間協議&#xff0c;定義了主機如何連入因特網及數據如何再它們之間傳輸的標準&#xff0c; 從字面意思來看TCP…

最小中間和

題目描述 給定一個正整數序列a1,a2,...,an&#xff0c;不改變序列中的每個元素在序列中的位置&#xff0c;把它們相加&#xff0c;并用括號記每次加法所得的和&#xff0c;稱為中間和。編程&#xff1a;找到一種方法&#xff0c;添上n-1對括號&#xff0c;加法運算依括號順序進…

HALCON示例程序measure_metal_part_extended.hdev金屬零件尺寸測量

HALCON示例程序measure_metal_part_extended.hdev金屬零件尺寸測量 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () read_image (Image, ‘metal-parts/metal-parts-01’) init_visualization (Image, 3, ‘white’, ‘margin’, Width, …

雙目匹配與視差計算

立體匹配主要是通過找出每對圖像間的對應關系&#xff0c;根據三角測量原理&#xff0c;得到視差圖&#xff1b;在獲得了視差信息后&#xff0c;根據投影模型很容易地可以得到原始圖像的深度信息和三維信息。立體匹配技術被普遍認為是立體視覺中最困難也是最關鍵的問題&#xf…

JavaEE 銀聯支付之網站支付-消費類交易

以銀聯網站支付 - 消費類交易 為例 0. 大致邏輯 前端request->后臺封裝參數->后臺進行簽名->生成跳轉頁面&#xff08;包含表單提交內容&#xff09;->響應前端&#xff08;將生成的html寫到瀏覽器中完成自動跳轉打開銀聯支付頁面&#xff09; 復制代碼1.acp_sdk.p…

react 開發知識準備

react react使用教程 babel babel 可用于ES6轉換為ES5&#xff0c;jsx轉換為原生js。 ES6 ES6 語法 webpack webpack打包工具&#xff0c;它把不同的、相互依賴的靜態資源都視作模塊&#xff0c;并且打包成我們想要的靜態資源。讓代碼組織更清晰&#xff0c;一個文件就是一個模…

Linux多線程編程(不限Linux)

——本文一個例子展開&#xff0c;介紹Linux下面線程的操作、多線程的同步和互斥。 前言 線程&#xff1f;為什么有了進程還需要線程呢&#xff0c;他們有什么區別&#xff1f;使用線程有什么優勢呢&#xff1f;還有多線程編程的一些細節問題&#xff0c;如線程之間怎樣同步、…

概率論與數理統計-ch8-假設檢驗

1、假設檢驗 在總體的分布函數未知或只知其形式、不知其參數的情況下&#xff0c;為了推斷總體的某些未知特性&#xff0c;提出關于總體的假設&#xff0c;然后根據樣本數據對提出的假設做出接受或拒絕的決策。 步驟&#xff1a; 提出原假設--確定建立在樣本基礎上的檢驗統計量…

HALCON示例程序measure_metal_part_first_example.hdev通過擬合邊緣進行尺寸測量

HALCON示例程序measure_metal_part_first_example.hdev通過擬合邊緣進行尺寸測量 示例程序源碼&#xff08;加注釋&#xff09; 關于顯示類函數解釋 dev_update_off () read_image (Image, ‘metal-parts/metal-parts-01’) get_image_size (Image, Width, Height) dev_close…

簡單實現仿某寶地址選擇三級聯動樣式

內容簡單介紹實現步驟第一步 找準方向第二步 開干總結還是題外話內容簡單介紹 簡單看一下須要實現的效果&#xff0c;如圖&#xff1a; 實現步驟 第一步 找準方向 事實上就是想好要用recyclerview而不是listview。假設要問我recyclerview是什么的話。。 第二步 開干 首先須要先…

opencv雙目測距實現

雖然最近注意力已經不可遏制地被神經科學、大腦記憶機制和各種畢業活動吸引過去了&#xff0c;但是還是覺得有必要把這段時間雙目視覺方面的進展總結一下。畢竟從上一篇博文發表之后&#xff0c;很多同仁發E-mail來與我討論&#xff0c;很多原來的疑團&#xff0c;也在討論和一…