目標跟蹤是計算機視覺研究領域的熱點之一,有着很是普遍的應用,如:相機的跟蹤對焦、無人機的自動目標跟蹤等都須要用到目標跟蹤技術。此外,還有特定物體的跟蹤,好比人體跟蹤,交通監控系統中的車輛跟蹤,人臉跟蹤和智能交互系統中的手勢跟蹤等。算法
過去的幾十年來,目標跟蹤技術取得了長足的進步。特別是近幾年,隨着深度學習的目標跟蹤方法的出現,得到了使人滿意的效果,也涌現了愈來愈多的方法,這都使得目標跟蹤技術取得了突破性的進展。app
本文主要內容包括:目標跟蹤的基本流程與框架,快速目標跟蹤相關方法及其應用效果。框架
但願經過本文能幫助讀者對目標跟蹤領域有一個較爲全面的認識,對其中涉及到的方法及原理有進一步的瞭解。機器學習
目標(單目標)跟蹤任務就是在給定某視頻序列初始幀的目標大小與位置的狀況下,預測後續幀中該目標的大小與位置。學習
此基本任務大體流程能夠根據框架進行以下劃分:spa
輸入初始化目標框(初始幀),在下一幀中產生衆多候選框(Motion Model),提取這些候選框的特徵(Feature Extractor),而後對這些候選框評分(Observation Model),最後在這些評分中找一個得分最高的候選框做爲預測的目標(Prediction A),或者對多個預測值進行融合(Ensemble)獲得更優的預測目標。設計
根據如上框架,咱們能夠把目標跟蹤的主要研究內容概括爲5個方面:3d
(1)運動模型:如何產生衆多的候選樣本。orm
(2)特徵提取:利用何種特徵表示目標。視頻
(3)觀測模型:如何爲衆多候選樣本進行評分。
(4)模型更新:如何更新觀測模型使其適應目標的變化。
(5)集成方法:如何融合多個決策從而得到一個更優的決策結果。
下面分別簡要介紹這5項研究內容:
運動模型(Motion Model): 生成候選樣本的速度與質量直接決定了跟蹤系統表現的優劣。經常使用的有兩種方法:粒子濾波(Particle Filter)和滑動窗口(Sliding Window)。粒子濾波是一種序貫貝葉斯推斷方法,經過遞歸的方式推斷目標的隱含狀態。而滑動窗口是一種窮舉搜索方法,它列出目標附近的全部可能的樣本做爲候選樣本。
特徵提取(Feature Extractor): 鑑別性的特徵表示是目標跟蹤的關鍵之一。經常使用的特徵被分爲兩種類型:手工設計的特徵(Hand-crafted feature)和深度特徵(Deep feature)。經常使用的手工設計的特徵有灰度特徵(Gray),方向梯度直方圖(HOG),哈爾特徵(Haar-like),尺度不變特徵(SIFT)等。與人爲設計的特徵不一樣,深度特徵是經過大量的訓練樣本學習出來的特徵,它比手工設計的特徵更具備鑑別性。所以,利用深度特徵的跟蹤方法一般很輕鬆就能得到一個不錯的效果。
觀測模型(Observation Model): 大多數的跟蹤方法主要集中在這一塊的設計上。根據不一樣的思路,觀測模型可分爲兩類:生成式模型(Generative Model)和判別式模型(Discriminative Model)。生成式模型一般尋找與目標模板最類似的候選做爲跟蹤結果,這一過程能夠視爲模板匹配。經常使用的理論方法包括:子空間,稀疏表示,字典學習等。而判別式模型經過訓練一個分類器去區分目標與背景,選擇置信度最高的候選樣本做爲預測結果。由於有大量的機器學習方法能夠利用,判別式方法已經成爲目標跟蹤中的主流方法。經常使用的理論方法包括:邏輯迴歸,嶺迴歸,支持向量機,多示例學習,相關濾波等。
模型更新(Model Update): 模型更新主要是更新觀測模型,以適應目標表觀的變化,防止跟蹤過程發生漂移。模型更新沒有一個統一的標準,一般認爲目標的表觀連續變化,因此經常會每一幀都更新一次模型。但也有人認爲目標過去的表觀對跟蹤很重要,連續更新可能會丟失過去的表觀信息,引入過多的噪音,所以利用長短時間更新相結合的方式來解決這一問題。
集成方法(Ensemble Method): 集成方法有利於提升模型的預測精度,也經常被視爲一種提升跟蹤準確率的有效手段。集成方法能夠籠統的劃分爲兩類:在多個預測結果中選一個最好的,或是利用全部的預測加權平均。
模板匹配是目標跟蹤的經典方法,它的優勢有:簡單準確,適用面廣,抗噪性好,並且計算速度快。缺點是不能適應劇烈光照變化和目標劇烈形變。
模板匹配法,就是指在一幀圖像內尋找目標模板的位置,其中和模板最像的地方就是目標。只要把全圖的全部子區域和目標模板比較一下,找到最像目標模板的子區域,它就是目標的位置。如何度量子區域和目標模板的類似程度呢?最簡單的辦法就是計算這兩者的相關係數。
相關係數(r)是一種數學距離,能夠用來衡量兩個向量的類似程度。它起源於餘弦定理:cos(A)=(a2+c2-b2)/2bc.若是兩個向量的夾角爲0度(對應r=1),說明它們徹底類似,若是夾角爲90度(r=0),則它們徹底不類似,若是夾角爲180度(r = -1),則它們徹底相反。把餘弦定理寫成向量的形式:
cos(A) = <b,c>/(|b|*|c|),
即:cos(A) = (b1c1+b2c2+… bncn)/sqrt[(b12+b22+…+bn2) (c12+c22+…+cn2)]
其中分子表示兩個向量的內積,分母表示兩個向量的模相乘。
在實際應用中,更經常使用的是去均值相關係數,它在上式的基礎上還要在分子分母減去各個向量的均值:
這樣,兩個向量類似的部分被減掉,它們的相關性就被放大了。
假設目標模板是一個10*10的圖像,它就能夠被看做是一個100維的向量,每一維是一個像素點的灰度值。而後把這個向量和圖像中的每個子區域做比較,找出相關係數最大的子區域,目標的位置就找到了。
TLD算法主要由三個模塊構成:追蹤器(tracker),檢測器(detector)和機器學習(learning)。
對於視頻追蹤來講,經常使用的方法有兩種,一是使用追蹤器根據物體在上一幀的位置預測它在下一幀的位置,但這樣會積累偏差,並且一旦物體在圖像中消失,追蹤器就會永久失效,即便物體再出現也沒法完成追蹤;另外一種方法是使用檢測器,對每一幀單獨處理檢測物體的位置,但這又須要提早對檢測器離線訓練,只能用來追蹤事先已知的物體。
TLD是對視頻中未知物體的長時間跟蹤的算法。「未知物體」指的是任意的物體,在開始追蹤以前不知道哪一個物體是目標。「長時間跟蹤」又意味着須要算法實時計算,在追蹤中途物體可能會消失再出現,並且隨着光照、背景的變化和因爲偶爾的部分遮擋,物體在像素上體現出來的「外觀」可能會發生很大的變化。
追蹤器的做用是跟蹤連續幀間的運動,當物體始終可見時跟蹤器纔會有效。追蹤器根據物體在前一幀已知的位置估計在當前幀的位置,這樣就會產生一條物體運動的軌跡,從這條軌跡能夠爲學習模塊產生正樣本(Tracking->Learning)。
檢測器的做用是估計追蹤器的偏差,若是偏差很大就改正追蹤器的結果。檢測器對每一幀圖像都作全面的掃描,找到與目標物體類似的全部外觀的位置,從檢測產生的結果中產生正樣本和負樣本,交給學習模塊(Detection->Learning)。算法從全部正樣本中選出一個最可信的位置做爲這一幀TLD的輸出結果,而後用這個結果更新追蹤器的起始位置(Detection->Tracking)。
學習模塊根據追蹤器和檢測器產生的正負樣本,迭代訓練分類器,改善檢測器的精度(Learning->Detection)。
光流法的原理:利用圖像序列中像素在時間域上的變化以及相鄰幀之間的相關性來找到上一幀跟當前幀之間存在的對應關係,從而計算出相鄰幀之間物體的運動信息。
假設一:場景中物體被跟蹤的部分亮度保持不變;
假設二:運動相對於幀率是緩慢、連貫的數學表達指的是在上連續,可導;
假設三:相鄰的點保持近鄰δ鄰域內全部像素點的速度(U,V)相等;
對於大多數30Hz攝像機,大而不連貫的運動較多,因此LK光流法在實際中的跟蹤效果很差,一般一個大的窗口來捕獲大的運動,但每每違背運動連貫的假設,故引入圖像金字塔。
在圖像金字塔的最高層計算光流,用獲得的運動估計結果做爲下一層金字塔的起始點,重複這個過程直到到達金字塔的最底層。這樣將不知足運動假設的可能性降到最小從而實現對更快和更長的運動的跟蹤。
這個算法的不足在於它不能產生一個密度很高的流向量,例如在運動的邊緣和黑大的同質區域中的微小移動方面流信息會很快的褪去。它的優勢在於有噪聲存在的魯棒性仍是能夠的。
目標跟蹤方式 |
原圖像大小 |
1/2 |
1/4 |
1/6 |
模板匹配 |
40ms |
11ms |
3.8ms |
2ms |
TLD |
9ms |
4.5ms |
3.6ms |
3.5ms(效果不佳) |
光流法 |
4ms |
2.5ms |
1.8ms |
1.2ms(效果不佳) |
zeusee.com 智雲視圖