1. 程式人生 > >TLD視覺跟蹤演算法

TLD視覺跟蹤演算法

本文轉自:http://blog.sina.com.cn/s/blog_6163bdeb0102eh7b.html

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

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

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

原始碼資源:

1. 原作者 Zdenek Kalal

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

原始碼頁: https://github.com/zk00006/OpenTLD

程式語言:Matlab + C

TLD原始碼理解 http://t.cn/zjmBXHg

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

Random Fern 的理解 http://t.cn/SZnLpz

相關推薦

TLD視覺跟蹤演算法

本文轉自:http://blog.sina.com.cn/s/blog_6163bdeb0102eh7b.html TLD演算法好牛逼一個,這裡有個視訊,是作者展示演算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html。下面這個c

TLD目標跟蹤演算法學習(二)

  正如名字所示,TLD演算法主要由三個模組構成:追蹤器(tracker),檢測器(detector)和機器學習(learning)。   對於視訊追蹤來說,常用的方法有兩種,一是使用追蹤器根據物體在上一幀的位置預測它在下一幀的位置,但這樣會積累誤差,而且一旦物體在影象中

TLD目標跟蹤演算法學習(三)程式碼理解

(2)利用金字塔LK光流法跟蹤這些特徵點,並預測當前幀的特徵點(見下面的解釋)、計算FB error和匹配相似度sim,然後篩選出 FB_error[i] <= median(FB_error) 和 sim_error[i] > median(sim_error) 的特徵點(捨棄跟蹤結果不好的特徵

TLD目標跟蹤演算法詳解(二)學習器Learning (跟蹤器與檢測器的協調與更新)

       原文連結:http://blog.csdn.net/wood_water/article/details/9023151      在上一篇跟蹤器與檢測器(tracker and detector)中,我們已經詳細介紹了TLD中跟蹤器與檢測器的設計方案,而在具體

TLD視覺目標跟蹤框架原理與實踐

圖像 視頻 tld comm rec 計算機 認識 實踐 計算 最近花了不少時間,仔細的做了一個有關TLD視覺目標跟蹤框架的視頻課程,希望能夠幫助一些對計算機視覺感興趣的人,通過對該課程的學習,能夠對計算機視覺技術中的一些基本問題有一定的認識和理解,進而達到技術進階的目的。

影象跟蹤與識別-TLD學習筆記,TLD跟蹤演算法詳解

半自主單目標跟蹤 人工跟蹤:每一幀都需要人互動輸入 主動跟蹤:需要目標的先驗資訊初始化 半主動跟蹤:第一幀需要人互動輸入去初始化跟蹤程式 1 Tracking:

計算機視覺中,目前有哪些經典的目標跟蹤演算法

相信很多來這裡的人和我第一次到這裡一樣,都是想找一種比較好的目標跟蹤演算法,或者想對目標跟蹤這個領域有比較深入的瞭解,雖然這個問題是經典目標跟蹤演算法,但事實上,可能我們並不需要那些曾經輝煌但已被拍在沙灘上的tracker(目標跟蹤演算法),而是那些即將成為經典的,或者就目前來說最好用、速度和效能都看的過去t

計算機視覺中,目前有哪些經典的目標跟蹤演算法

目標視覺跟蹤(Visual Object Tracking),大家比較公認分為兩大類:生成(generative)模型方法和判別(discriminative)模型方法,目前比較流行的是判別類方法,也叫檢測跟蹤tracking-by-detection

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

    對於長時間跟蹤而言,一個關鍵的問題是:當目標重新出現在相機視野中時,系統應該能重新檢測到它,並開始重新跟蹤。但是,長時間跟蹤過程中,被跟蹤目標將不可避免的發生形狀變化、光照條件變化、尺度變化、遮擋等情況。傳統的跟蹤演算法,前端需要跟檢測模組相互配合,當檢測到被跟蹤目標之後,就開始進入跟蹤模組,而此後,

計算機視覺 之 在iOS上測試跟蹤演算法Visual Object Tracking Algorithm

前言 在計算機視覺CV領域,視覺跟蹤是其中一個重要的子問題。從我的角度看,視覺跟蹤就是用在機器人上,用在移動裝置上,因此,何不把一些跟蹤演算法放在iPhone上看看實際的跟蹤效果。這才是最真實的對比,使用一些視訊畢竟不實際,而且關鍵是不能很好的對比實時性。對於

TLD跟蹤演算法介紹

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

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

參考文獻:eccv14_(MEEM)_Robust Tracking via Multiple Experts using Entropy Minimization 說明:本文按照文獻中的內容,對文章進行梳理和評論;凡是有ps的地方,表示是博主自己的想法 【摘要】:作者提

雙目立體視覺匹配演算法之視差圖disparity計算——SAD演算法、SGBM演算法

一、SAD演算法 1.演算法原理         SAD(Sum of absolute differences)是一種影象匹配演算法。基本思想:差的絕對值之和。此演算法常用於影象塊匹配,將每個畫素對應數值之差的絕對值求和,據此評估兩個影象塊的相似度。該演

目標識別、目標跟蹤演算法總結

想自學影象處理的相關知識,正好實驗室師兄做過兩個關於紅外目標跟蹤的專案,因此從mean-shift 、SR、RP、PF開始學習。但是查閱資料的時候,發現對各種演算法理解非常 利用影象處理演算法,實現的功能一般包括: 目標的檢測、識別、跟蹤。常見的問題包括:人臉

python視覺演算法執行進度(含輸出格式控制函式format用法)

使用PyPrind包實現演算法的進度條功能 在演算法執行過程中,使用PyPrind建立一個進度條物件,視覺化演算法的執行進度 官方地址:https://github.com/rasbt/pyprind 可以支援多種不同樣式的進度條顯示。 import pyprind import

深度多目標跟蹤演算法綜述

導言 基於深度學習的演算法在影象和視訊識別任務中取得了廣泛的應用和突破性的進展。從影象分類問題到行人重識別問題,深度學習方法相比傳統方法表現出極大的優勢。與行人重識別問題緊密相關的是行人的多目標跟蹤問題。 在多目標跟蹤問題中,演算法需要根據每一幀影象中目標的檢測結果,匹配已有的目標軌跡;對於

目標跟蹤演算法

本文轉自:https://www.zhihu.com/question/26493945   第一部分:目標跟蹤速覽 先跟幾個SOTA的tracker混個臉熟,大概瞭解一下目標跟蹤這個方向都有些什麼。一切要從2013年的那個資料庫說起。。如果

用於視覺跟蹤的層次化卷積特性

用於視覺跟蹤的層次化卷積特性 摘要 視覺目標跟蹤是一項具有挑戰性的工作,由於目標物件的變形、突然運動、背景雜波和遮擋等因素,使目標物件的外觀發生明顯變化。本文利用在物件識別資料集上訓練的深度卷積神經網路提取的特徵來提高跟蹤準確性和魯棒性,最後一個卷積層的輸出對目標的語義資訊 (為什麼

SiamFC:基於全卷積孿生網路的目標跟蹤演算法

Abstract 本論文提出一種新的全卷積孿生網路作為基本的跟蹤演算法,這個網路在ILSVRC15的目標跟蹤視訊資料集上進行端到端的訓練。我們的跟蹤器在幀率上超過了實時性要求,儘管它非常簡單,但在多個benchmark上達到最優的效能。 1. Introduction

Opencv輪廓跟蹤演算法原始碼分析並實現單步除錯——icvFetchContour()

首先分析要除錯的圖的特性,使用畫圖工具手動定位到外輪廓的”起始點“在(77,126) 原圖如下: 呼叫的修改後的fushuwu_icvFetchContour()的實參如下: int main() { Mat img0 = imread("d:/test_co