Tracking-Learning-Detection(TLD)原理分析

來源:互聯網
上載者:User

標籤:

  Tracking-Learning-Detection(TLD)是Zdenek Kalal提出的一種對視頻中單個物體長時間跟蹤的演算法。我主要會根據他在2010年發表的論文《Tracking-Learning-Detection》來分析TLD演算法的原理。該項目的首頁中有幾段視頻展示了TLD即時跟蹤的效果和效能,其中的兩個視頻可以在這裡下載:similar objects,human face。作者公布了原始碼,不過需要Matlab和Visual Studio交叉編譯,在我的機器上沒能運行。GitHub上有很多C++版本的TLD,比如arthurv,注釋比較詳細,但速度很慢。

        由於我使用的外掛程式預設對所有圖片加浮水印,所以本文中使用的大多數並不是我繪製的圖片也加上了浮水印,還請諒解。

        正如名字所示,TLD演算法主要由三個模組構成:追蹤器(tracker),檢測器(detector)和機器學習(learning)。

        對於視頻追蹤來說,常用的方法有兩種,一是使用追蹤器根據物體在上一幀的位置預測它在下一幀的位置,但這樣會積累誤差,而且一旦物體在映像中消失,追蹤器就會永久失效,即使物體再出現也無法完成追蹤;另一種方法是使用檢測器,對每一幀單獨處理檢測物體的位置,但這又需要提前對檢測器離線訓練,只能用來追蹤事先已知的物體。

        TLD是對視頻中未知物體的長時間跟蹤的演算法。“未知物體”指的是任意的物體,在開始追蹤之前不知道哪個物體是目標。“長時間跟蹤”又意味著需要演算法即時計算,在追蹤中途物體可能會消失再出現,而且隨著光照、背景的變化和由於偶爾的部分遮擋,物體在像素上體現出來的“外觀”可能會發生很大的變化。從這幾點要求看來,單獨使用追蹤器或檢測器都無法勝任這樣的工作。所以作者提出把追蹤器和檢測器結合使用,同時加入機器學習來提高結果的準確度。

        追蹤器的作用是跟蹤連續幀間的運動,當物體始終可見時跟蹤器才會有效。追蹤器根據物體在前一幀已知的位置估計在當前幀的位置,這樣就會產生一條物體運動的軌跡,從這條軌跡可以為學習模組產生正樣本(Tracking->Learning)。

        檢測器的作用是估計追蹤器的誤差,如果誤差很大就改正追蹤器的結果。檢測器對每一幀映像都做全面的掃描,找到與目標物體相似的所有外觀的位置,從檢測產生的結果中產生正樣本和負樣本,交給學習模組(Detection->Learning)。演算法從所有正樣本中選出一個最可信的位置作為這一幀TLD的輸出結果,然後用這個結果更新追蹤器的起始位置(Detection->Tracking)。

        學習模組根據追蹤器和檢測器產生的正負樣本,迭代訓練分類器,改善檢測器的精度(Learning->Detection)。

追蹤模組

        TLD使用作者自己提出的Median-Flow追蹤演算法。

        作者假設一個“好”的追蹤演算法應該具有正反向連續性(forward-backward consistency),即無論是按照時間上的正序追蹤還是反序追蹤,產生的軌跡應該是一樣的。作者根據這個性質規定了任意一個追蹤器的FB誤差(forward-backward error):從時間t的初始位置x(t)開始追蹤產生時間t+p的位置x(t+p),再從位置x(t+p)反向追蹤產生時間t的預測位置x`(t),初始位置和預測位置之間的歐氏距離就作為追蹤器在t時間的FB誤差。

        Median-Flow追蹤演算法採用的是Lucas-Kanade追蹤器,也就是常說的光流法追蹤器。這個追蹤器的原理就不在這裡解釋了。只需要知道給定若干追蹤點,追蹤器會根據像素的運動情況確定這些追蹤點在下一幀的位置。

        追蹤點的選擇

        作者給出了一種依據FB誤差繪製誤差圖(Error Map)篩選最佳追蹤點的方法,但並不適用於即時追蹤任務,就不詳細介紹了。這裡只介紹在TLD中確定追蹤點的方法。

        首先在上一幀t的物體包圍框裡均勻地產生一些點,然後用Lucas-Kanade追蹤器正向追蹤這些點到t+1幀,再反向追蹤到t幀,計算FB誤差,篩選出FB誤差最小的一半點鐘作為最佳追蹤點。最後根據這些點的座標變化和距離的變化計算t+1幀包圍框的位置和大小(平移的尺度取中值,縮放的尺度取中值。取中值的光流法,估計這也是名稱Median-Flow的由來吧)。

        還可以用NCC(Normalized Cross Correlation,歸一化互相關)和SSD(Sum-of-Squared Differences,差值平方和)作為篩選追蹤點的衡量標準。作者的代碼中是把FB誤差和NCC結合起來的,所以篩選出的追蹤點比原來一半還要少。

        NCC:

學習模組

        TLD使用的機器學習方法是作者提出的P-N學習(P-N Learning)。P-N學習是一種半監督的機器學習演算法,它針對檢測器對樣本分類時產生的兩種錯誤提供了兩種“專家”進行糾正:

                P專家(P-expert):檢出漏檢(false negative,正樣本誤分為負樣本)的正樣本;

                N專家(N-expert):改正誤檢(false positive,負樣本誤分為正樣本)的正樣本。

        樣本的產生

        用不同尺寸的掃描窗(scanning grid)對映像進行漸進式掃描,每在一個位置就形成一個包圍框(bounding box),包圍框所確定的映像地區稱為一個映像元(patch),映像元進入機器學習的樣本集就成為一個樣本。掃描產生的樣本是未標籤樣本,需要用分類器來分類,確定它的標籤。

        如果演算法已經確定物體在t+1幀的位置(實際上是確定了相應包圍框的位置),從檢測器產生的包圍框中篩選出10個與它距離最近的包圍框(兩個包圍框的交的面積除以並的面積大於0.7),對每個包圍框做微小的仿射變換(平移10%、縮放10%、旋轉10°以內),產生20個映像元,這樣就產生200個正樣本。再選出若干距離較遠的包圍框(交的面積除以並的面積小於0.2),產生負樣本。這樣產生的樣本是已標籤的樣本,把這些樣本放入訓練集,用於更新分類器的參數。中的a圖展示的是掃描窗的例子。

        作者認為,演算法的結果應該具有“結構性”:每一幀映像內物體最多隻出現在一個位置;相鄰幀間物體的運動是連續的,連續幀的位置可以構成一條較平滑的軌跡。比如像c圖那樣每幀只有一個正的結果,而且連續幀的結果構成了一條平滑的軌跡,而不是像b圖那樣有很多結果而且無法形成軌跡。還應該注意在整個追蹤過程中,軌跡可能是分段的,因為物體有可能中途消失,之後再度出現。

        P專家的作用是尋找資料在時間上的結構性,它利用追蹤器的結果預測物體在t+1幀的位置。如果這個位置(包圍框)被檢測器分類為負,P專家就把這個位置改為正。也就是說P專家要保證物體在連續幀上出現的位置可以構成連續的軌跡;

        N專家的作用是尋找資料在空間上的結構性,它把檢測器產生的和P專家產生的所有正樣本進行比較,選擇出一個最可信的位置,保證物體最多隻出現在一個位置上,把這個位置作為TLD演算法的追蹤結果。同時這個位置也用來重新初始化追蹤器。

        比如在這個例子中,目標車輛是下面的深色車,每一幀中黑色框是檢測器檢測到的正樣本,黃色框是追蹤器產生的正樣本,紅星標記的是每一幀最後的追蹤結果。在第t幀,檢測器沒有發現深色車,但P專家根據追蹤器的結果認為深色車也是正樣本,N專家經過比較,認為深色車的樣本更可信,所以把淺色車輸出為負樣本。第t+1幀的過程與之類似。第t+2幀時,P專家產生了錯誤的結果,但經過N專家的比較,又把這個結果排除了,演算法仍然可以追蹤到正確的車輛。

檢測模組

        檢測模組使用一個級聯分類器,對從包圍框獲得的樣本進行分類。級聯分類器包含三個層級:

        映像元方差分類器(Patch Variance Classifier)。計算映像元像素灰階值的方差,把方差小於原始映像元方差一半的樣本標記為負。論文提到在這一步可以排除掉一半以上的樣本。

        整合分類器(Ensemble Classifier)。實際上是一個隨機蕨分類器(Random Ferns Classifier),類似於隨機森林(Random Forest),區別在於隨機森林的樹中每層節點判斷準則不同,而隨機蕨的“蕨”中每層只有一種判斷準則。

        如所示,把左面的樹每層節點改成相同的判斷條件,就變成了右面的蕨。所以蕨也不再是樹狀結構,而是線性結構。隨機蕨分類器根據樣本的特徵值判斷其分類。從映像元中任意選取兩點A和B,比較這兩點的亮度值,若A的亮度大於B,則特徵值為1,否則為0。每選取一對新位置,就是一個新的特徵值。蕨的每個節點就是對一對像素點進行比較。

        比如取5對點,紅色為A,藍色為B,樣本映像經過含有5個節點的蕨,每個節點的結果按順序排列起來,得到長度為5的二進位序列01011,轉化成十進位數字11。這個11就是該樣本經過這個蕨得到的結果。

        同一類的很多個樣本經過同一個蕨,得到了該類結果的分布長條圖。高度代表類的先驗機率p(F|C),F代表蕨的結果(如果蕨有s個節點,則共有1+2^s種結果)。

        不同類的樣本經過同一個蕨,得到不同的先驗機率分布。

        以上過程可以視為對分類器的訓練。當有新的未標籤樣本加入時,假設它經過這個蕨的結果為00011(即3),然後從已知的分布中尋找後驗機率最大的一個。由於樣本集固定時,右下角公式的分母是相同的,所以只要找在F=3時高度最大的那一類,就是新樣本的分類。

        只用一個蕨進行分類會有較大的偶然性。另取5個新的特徵值就可以構成新的蕨。用很多個蕨對同一樣本分類,投票數最大的類就作為新樣本的分類,這樣在很大程度上提高了分類器的準確度。

        最近鄰分類器(Nearest Neighbor Classifier)。計算新樣本的相對相似度,如大於0.6,則認為是正樣本。相似度規定如下:

        映像元pi和pj的相似度,公式裡的N是正常化的相關係數,所以S的取值範圍就在[0,1]之間,

        正最近鄰相似度,

        負最近鄰相似度,

        相對相似度,取值範圍在[0,1]之間,值越大代表相似度越高,

        所以,檢測器是追蹤器的監督者,因為檢測器要改正追蹤器的錯誤;而追蹤器是訓練檢測器時的監督者,因為要用追蹤器的結果對檢測器的分類結果進行監督。用另一段程式對訓練過程進行監督,而不是由人來監督,這也是稱P-N學習為“半監督”機器學習的原因。

        TLD的工作流程如所示。首先,檢測器由一系列包圍框產生樣本,經過級聯分類器產生正樣本,放入樣本集;然後使用追蹤器估計出物體的新位置,P專家根據這個位置又產生正樣本,N專家從這些正樣本裡選出一個最可信的,同時把其他正樣本標記為負;最後用正樣本更新檢測器的分類器參數,並確定下一幀物體包圍框的位置。

參考文獻:

1. Tracking-Learning-Detection, Zdenek Kalal, Krystian Mikolajczyk, and Jiri Matas, IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010

2. Forward-Backward Error: Automatic Detection of Tracking Failures, Zdenek Kalal, Krystian Mikolajczyk, and Jiri Matas, International Conference on Pattern Recognition, 2010

3. Tracking-Learning-Detection Documentation

4. Decision Trees, Random Forests and Random Ferns

5. Random Forests and Ferns

Tracking-Learning-Detection(TLD)原理分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.